#include <alib/list> #include "compareTest.h" #include "string/naive/ExactEqual.h" #include "string/naive/ExactCompare.h" #include "string/simplify/NormalizeRotation.h" #include "string/LinearString.h" #include "string/CyclicString.h" #include "string/Epsilon.h" CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( compareTest, "string" ); CPPUNIT_TEST_SUITE_REGISTRATION( compareTest ); void compareTest::setUp() { } void compareTest::tearDown() { } void compareTest::testCyclicStringCompareBoolean() { string::CyclicString < > str1("alfa"); string::CyclicString < > str2("aalf"); str2.extendAlphabet(str1.getAlphabet()); str1.extendAlphabet(str2.getAlphabet()); CPPUNIT_ASSERT(string::naive::ExactEqual::equals(str1, str2)); } void compareTest::testCyclicStringCompareInt() { string::CyclicString < > str1("alfa"); string::CyclicString < > str2("aalf"); str2.extendAlphabet(str1.getAlphabet()); str1.extendAlphabet(str2.getAlphabet()); CPPUNIT_ASSERT(string::naive::ExactCompare::compare(str1, str2) == 0); string::CyclicString < > str3("ccbcccb"); string::CyclicString < > str4("cbcccbc"); str2.extendAlphabet(str1.getAlphabet()); str1.extendAlphabet(str2.getAlphabet()); CPPUNIT_ASSERT(string::naive::ExactCompare::compare(str3, str4) == 0); } void compareTest::testCompareCyclic() { string::CyclicString < > cyclic1({DefaultSymbolType(0), DefaultSymbolType(1), DefaultSymbolType(2)}); string::CyclicString < > cyclic2({DefaultSymbolType(1), DefaultSymbolType(2), DefaultSymbolType(0)}); string::CyclicString < > cyclic3({DefaultSymbolType(2), DefaultSymbolType(0), DefaultSymbolType(1)}); string::CyclicString < > cyclic4({DefaultSymbolType(2), DefaultSymbolType(1), DefaultSymbolType(0)}); string::CyclicString < > cyclic1n = string::simplify::NormalizeRotation::normalize(cyclic1); string::CyclicString < > cyclic2n = string::simplify::NormalizeRotation::normalize(cyclic2); string::CyclicString < > cyclic3n = string::simplify::NormalizeRotation::normalize(cyclic3); string::CyclicString < > cyclic4n = string::simplify::NormalizeRotation::normalize(cyclic4); CPPUNIT_ASSERT(cyclic1 == cyclic1n); CPPUNIT_ASSERT(cyclic1n == cyclic2n); CPPUNIT_ASSERT(cyclic1n == cyclic3n); CPPUNIT_ASSERT(cyclic2n == cyclic3n); CPPUNIT_ASSERT(cyclic4n != cyclic1n); CPPUNIT_ASSERT(cyclic4n != cyclic2n); CPPUNIT_ASSERT(cyclic4n != cyclic3n); string::CyclicString < > cyclic5({DefaultSymbolType(62), DefaultSymbolType(62), DefaultSymbolType(100), DefaultSymbolType(62)}); string::CyclicString < > cyclic5n = string::simplify::NormalizeRotation::normalize(cyclic5); string::CyclicString < > cyclic5r({DefaultSymbolType(62), DefaultSymbolType(62), DefaultSymbolType(62), DefaultSymbolType(100)}); CPPUNIT_ASSERT(cyclic5n == cyclic5r); }