// Ten przykład celowo łamie reguły dobrego stylu kodowania.
#include "tst.h"
#include <cassert>
#include <iostream>
#include <stdexcept>
#include <string>
void
example1()
{
TST <> t1;
auto t2 = t1 + "dog";
assert(t2.exist("dog"));
std::cout << "End of example 1.\n";
}
void
example2()
{
TST<> tst;
assert(!tst.exist(""));
auto tst2 = tst + "";
assert(!tst2.exist(""));
std::cout << "End of example 2.\n";
}
void
example3()
{
TST<> tst{"a"};
assert(tst.center().empty());
std::cout << "End of example 3.\n";
}
void
example4()
{
TST<> tst{ std::string{ "category" } };
assert((tst + std::string{ "functor" } + std::string{ "theory" }).prefix("theology") == "theo");
assert((tst + std::string{ "functor" } + std::string{ "theory" }).prefix("cftheology") == "c");
auto tst2{ tst + std::string{ "functor" } + std::string{ "theory" } };
auto tst3{ tst + std::string{ "functor" } + std::string{ "cftheory" } };
assert(tst2.prefix("cftheology") == "c");
assert(tst3.prefix("cftheology") == "cftheo");
assert(tst2.prefix("theology") == "theo");
assert(tst3.prefix("theology").empty());
std::cout << "End of example 4.\n";
}
void
example5()
{
TST<int> t1;
auto t2 = t1 + std::basic_string<int>{1, 2, 3};
auto t3 = t2 + std::basic_string<int>{1, 2};
assert(t2.value() == 1);
assert(t2.center().value() == 2);
assert(t2.center().center().value() == 3);
assert(t3.value() == 1);
assert(t3.center().value() == 2);
assert(t3.center().center().value() == 3);
assert(!t2.word());
assert(!t2.center().word());
assert(t2.center().center().word());
assert(!t3.word());
assert(t3.center().word());
assert(t3.center().center().word());
assert(t2.left().empty());
assert(!t2.center().empty());
assert(t2.right().empty());
assert(t2.center().left().empty());
assert(!t2.center().center().empty());
assert(t2.center().right().empty());
assert(t2.center().center().left().empty());
assert(t2.center().center().center().empty());
assert(t2.center().center().right().empty());
assert(t3.left().empty());
assert(!t3.center().empty());
assert(t3.right().empty());
assert(t3.center().left().empty());
assert(!t3.center().center().empty());
assert(t3.center().right().empty());
assert(t3.center().center().left().empty());
assert(t3.center().center().center().empty());
assert(t3.center().center().right().empty());
std::cout << "End of example 5.\n";
}
int
main()
{
example1();
example2();
example3();
example4();
example5();
}