diff --git a/alib2/test-src/alphabet/SymbolTest.cpp b/alib2/test-src/alphabet/SymbolTest.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e668769a3c10df82098db0c8063baea71513c591
--- /dev/null
+++ b/alib2/test-src/alphabet/SymbolTest.cpp
@@ -0,0 +1,528 @@
+#include <list>
+#include "SymbolTest.h"
+
+#include "sax/SaxParseInterface.h"
+#include "sax/SaxComposeInterface.h"
+
+#include "alphabet/Symbol.h"
+#include "alphabet/LabeledSymbol.h"
+#include "alphabet/SymbolFromStringParser.h"
+#include "alphabet/SymbolToStringComposer.h"
+#include "alphabet/SymbolFromXMLParser.h"
+#include "alphabet/SymbolToXMLComposer.h"
+
+#include "factory/SymbolFactory.h"
+
+#include "label/StringLabel.h"
+#include "label/Label.h"
+
+#define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
+
+CPPUNIT_TEST_SUITE_REGISTRATION( SymbolTest );
+
+void SymbolTest::setUp() {
+}
+
+void SymbolTest::tearDown() {
+}
+
+void SymbolTest::testCopyConstruct() {
+  alphabet::Symbol symbol(alphabet::LabeledSymbol(label::Label(label::StringLabel("1"))));
+  
+  alphabet::Symbol symbol2(symbol);
+  
+  CPPUNIT_ASSERT( symbol == symbol2 );
+  
+  alphabet::Symbol symbol3(std::move(symbol));
+  
+  CPPUNIT_ASSERT( symbol2 == symbol3 );
+}
+
+void SymbolTest::testEqual() {
+/*  std::string input = "a+a";
+  
+  string::StringFromStringParser parser(input);
+  string::String string = parser.parse();
+
+  string::SymbolToStringComposer composer;
+  std::string output = composer.compose(string);
+  
+  string::StringFromStringParser parser2(input);
+  string::String string2 = parser2.parse();
+  
+  CPPUNIT_ASSERT( string == string2 );*/
+}
+
+void SymbolTest::testXMLParser() {
+/*
+  string::String string;
+  string.setAlphabet({alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::StringLabel("1")))), alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::StringLabel("2")))), alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::StringLabel("3"))))});
+  string.setString(string::Alternation(
+		string::Concatenation(
+			string::StringSymbol(alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::StringLabel("1"))))),
+			string::StringSymbol(alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::StringLabel("2")))))
+				     ),
+		string::Iteration(
+			string::StringSymbol(alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::StringLabel("1")))))
+				 )
+			   )
+		       );
+
+  {
+	string::SymbolToXMLComposer composer;
+	std::list<sax::Token> tokens = composer.compose(string);
+	std::string tmp;
+	sax::SaxComposeInterface::printMemory(tmp, tokens);
+  
+	std::list<sax::Token> tokens2;
+	sax::SaxParseInterface::parseMemory(tmp, tokens2);
+	string::StringFromXMLParser parser;
+	string::String string2 = parser.parse(tokens2);
+  
+	CPPUNIT_ASSERT( string == string2 );
+  }
+  {
+	std::string tmp = string::StringFactory::toString(string);
+	string::String string2 = string::StringFactory::fromString(tmp);
+  
+	CPPUNIT_ASSERT( string == string2 );
+  }*/
+}
+
+void SymbolTest::testOrder() {
+/*  string::StringSymbol s1(alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::StringLabel("1")))));
+  string::StringEmpty e1;
+  string::StringEpsilon e2;
+  string::Iteration i1(s1);
+
+  string::String alt1(string::Alternation(s1, s1));
+  string::String con1(string::Concatenation (s1, s1));
+  string::String ite1(i1);
+  string::String emp1(e1);
+  string::String eps1(e2);
+  string::String sym1(s1);
+  
+  CPPUNIT_IMPLY( alt1 < con1 && con1 < ite1, alt1 < ite1 );
+  CPPUNIT_IMPLY( alt1 < con1 && con1 < emp1, alt1 < emp1 );
+  CPPUNIT_IMPLY( alt1 < con1 && con1 < eps1, alt1 < eps1 );
+  CPPUNIT_IMPLY( alt1 < con1 && con1 < sym1, alt1 < sym1 );
+  
+  CPPUNIT_IMPLY( alt1 < ite1 && ite1 < con1, alt1 < con1 );
+  CPPUNIT_IMPLY( alt1 < ite1 && ite1 < emp1, alt1 < emp1 );
+  CPPUNIT_IMPLY( alt1 < ite1 && ite1 < eps1, alt1 < eps1 );
+  CPPUNIT_IMPLY( alt1 < ite1 && ite1 < sym1, alt1 < sym1 );
+ 
+  CPPUNIT_IMPLY( alt1 < emp1 && emp1 < con1, alt1 < con1 );
+  CPPUNIT_IMPLY( alt1 < emp1 && emp1 < ite1, alt1 < ite1 );
+  CPPUNIT_IMPLY( alt1 < emp1 && emp1 < eps1, alt1 < eps1 );
+  CPPUNIT_IMPLY( alt1 < emp1 && emp1 < sym1, alt1 < sym1 );
+  
+  CPPUNIT_IMPLY( alt1 < eps1 && eps1 < con1, alt1 < con1 );
+  CPPUNIT_IMPLY( alt1 < eps1 && eps1 < ite1, alt1 < ite1 );
+  CPPUNIT_IMPLY( alt1 < eps1 && eps1 < emp1, alt1 < emp1 );
+  CPPUNIT_IMPLY( alt1 < eps1 && eps1 < sym1, alt1 < sym1 );
+  
+  CPPUNIT_IMPLY( alt1 < sym1 && sym1 < con1, alt1 < con1 );
+  CPPUNIT_IMPLY( alt1 < sym1 && sym1 < ite1, alt1 < ite1 );
+  CPPUNIT_IMPLY( alt1 < sym1 && sym1 < emp1, alt1 < emp1 );
+  CPPUNIT_IMPLY( alt1 < sym1 && sym1 < eps1, alt1 < eps1 );
+  
+  
+  
+  CPPUNIT_IMPLY( con1 < alt1 && alt1 < ite1, con1 < ite1 );
+  CPPUNIT_IMPLY( con1 < alt1 && alt1 < emp1, con1 < emp1 );
+  CPPUNIT_IMPLY( con1 < alt1 && alt1 < eps1, con1 < eps1 );
+  CPPUNIT_IMPLY( con1 < alt1 && alt1 < sym1, con1 < sym1 );
+  
+  CPPUNIT_IMPLY( con1 < ite1 && ite1 < alt1, con1 < alt1 );
+  CPPUNIT_IMPLY( con1 < ite1 && ite1 < emp1, con1 < emp1 );
+  CPPUNIT_IMPLY( con1 < ite1 && ite1 < eps1, con1 < eps1 );
+  CPPUNIT_IMPLY( con1 < ite1 && ite1 < sym1, con1 < sym1 );
+  
+  CPPUNIT_IMPLY( con1 < emp1 && emp1 < alt1, con1 < alt1 );
+  CPPUNIT_IMPLY( con1 < emp1 && emp1 < ite1, con1 < ite1 );
+  CPPUNIT_IMPLY( con1 < emp1 && emp1 < eps1, con1 < eps1 );
+  CPPUNIT_IMPLY( con1 < emp1 && emp1 < sym1, con1 < sym1 );
+  
+  CPPUNIT_IMPLY( con1 < eps1 && eps1 < alt1, con1 < alt1 );
+  CPPUNIT_IMPLY( con1 < eps1 && eps1 < ite1, con1 < ite1 );
+  CPPUNIT_IMPLY( con1 < eps1 && eps1 < emp1, con1 < emp1 );
+  CPPUNIT_IMPLY( con1 < eps1 && eps1 < sym1, con1 < sym1 );
+  
+  CPPUNIT_IMPLY( con1 < sym1 && sym1 < alt1, con1 < alt1 );
+  CPPUNIT_IMPLY( con1 < sym1 && sym1 < ite1, con1 < ite1 );
+  CPPUNIT_IMPLY( con1 < sym1 && sym1 < emp1, con1 < emp1 );
+  CPPUNIT_IMPLY( con1 < sym1 && sym1 < eps1, con1 < eps1 );
+  
+
+  
+  CPPUNIT_IMPLY( ite1 < alt1 && alt1 < con1, ite1 < con1 );
+  CPPUNIT_IMPLY( ite1 < alt1 && alt1 < emp1, ite1 < emp1 );
+  CPPUNIT_IMPLY( ite1 < alt1 && alt1 < eps1, ite1 < eps1 );
+  CPPUNIT_IMPLY( ite1 < alt1 && alt1 < sym1, ite1 < sym1 );
+  
+  CPPUNIT_IMPLY( ite1 < con1 && con1 < alt1, ite1 < alt1 );
+  CPPUNIT_IMPLY( ite1 < con1 && con1 < emp1, ite1 < emp1 );
+  CPPUNIT_IMPLY( ite1 < con1 && con1 < eps1, ite1 < eps1 );
+  CPPUNIT_IMPLY( ite1 < con1 && con1 < sym1, ite1 < sym1 );
+  
+  CPPUNIT_IMPLY( ite1 < emp1 && emp1 < alt1, ite1 < alt1 );
+  CPPUNIT_IMPLY( ite1 < emp1 && emp1 < con1, ite1 < con1 );
+  CPPUNIT_IMPLY( ite1 < emp1 && emp1 < eps1, ite1 < eps1 );
+  CPPUNIT_IMPLY( ite1 < emp1 && emp1 < sym1, ite1 < sym1 );
+  
+  CPPUNIT_IMPLY( ite1 < eps1 && eps1 < alt1, ite1 < alt1 );
+  CPPUNIT_IMPLY( ite1 < eps1 && eps1 < con1, ite1 < con1 );
+  CPPUNIT_IMPLY( ite1 < eps1 && eps1 < emp1, ite1 < emp1 );
+  CPPUNIT_IMPLY( ite1 < eps1 && eps1 < sym1, ite1 < sym1 );
+  
+  CPPUNIT_IMPLY( ite1 < sym1 && sym1 < alt1, ite1 < alt1 );
+  CPPUNIT_IMPLY( ite1 < sym1 && sym1 < con1, ite1 < con1 );
+  CPPUNIT_IMPLY( ite1 < sym1 && sym1 < emp1, ite1 < emp1 );
+  CPPUNIT_IMPLY( ite1 < sym1 && sym1 < eps1, ite1 < eps1 );
+  
+  
+  
+  CPPUNIT_IMPLY( emp1 < alt1 && alt1 < con1, emp1 < con1 );
+  CPPUNIT_IMPLY( emp1 < alt1 && alt1 < ite1, emp1 < ite1 );
+  CPPUNIT_IMPLY( emp1 < alt1 && alt1 < eps1, emp1 < eps1 );
+  CPPUNIT_IMPLY( emp1 < alt1 && alt1 < sym1, emp1 < sym1 );
+  
+  CPPUNIT_IMPLY( emp1 < con1 && con1 < alt1, emp1 < alt1 );
+  CPPUNIT_IMPLY( emp1 < con1 && con1 < ite1, emp1 < ite1 );
+  CPPUNIT_IMPLY( emp1 < con1 && con1 < eps1, emp1 < eps1 );
+  CPPUNIT_IMPLY( emp1 < con1 && con1 < sym1, emp1 < sym1 );
+  
+  CPPUNIT_IMPLY( emp1 < ite1 && ite1 < alt1, emp1 < alt1 );
+  CPPUNIT_IMPLY( emp1 < ite1 && ite1 < con1, emp1 < con1 );
+  CPPUNIT_IMPLY( emp1 < ite1 && ite1 < eps1, emp1 < eps1 );
+  CPPUNIT_IMPLY( emp1 < ite1 && ite1 < sym1, emp1 < sym1 );
+  
+  CPPUNIT_IMPLY( emp1 < eps1 && eps1 < alt1, emp1 < alt1 );
+  CPPUNIT_IMPLY( emp1 < eps1 && eps1 < con1, emp1 < con1 );
+  CPPUNIT_IMPLY( emp1 < eps1 && eps1 < ite1, emp1 < ite1 );
+  CPPUNIT_IMPLY( emp1 < eps1 && eps1 < sym1, emp1 < sym1 );
+  
+  CPPUNIT_IMPLY( emp1 < sym1 && sym1 < alt1, emp1 < alt1 );
+  CPPUNIT_IMPLY( emp1 < sym1 && sym1 < con1, emp1 < con1 );
+  CPPUNIT_IMPLY( emp1 < sym1 && sym1 < ite1, emp1 < ite1 );
+  CPPUNIT_IMPLY( emp1 < sym1 && sym1 < eps1, emp1 < eps1 );
+  
+  
+    
+  CPPUNIT_IMPLY( eps1 < alt1 && alt1 < con1, eps1 < con1 );
+  CPPUNIT_IMPLY( eps1 < alt1 && alt1 < ite1, eps1 < ite1 );
+  CPPUNIT_IMPLY( eps1 < alt1 && alt1 < emp1, eps1 < emp1 );
+  CPPUNIT_IMPLY( eps1 < alt1 && alt1 < sym1, eps1 < sym1 );
+  
+  CPPUNIT_IMPLY( eps1 < con1 && con1 < alt1, eps1 < alt1 );
+  CPPUNIT_IMPLY( eps1 < con1 && con1 < ite1, eps1 < ite1 );
+  CPPUNIT_IMPLY( eps1 < con1 && con1 < emp1, eps1 < emp1 );
+  CPPUNIT_IMPLY( eps1 < con1 && con1 < sym1, eps1 < sym1 );
+  
+  CPPUNIT_IMPLY( eps1 < ite1 && ite1 < alt1, eps1 < alt1 );
+  CPPUNIT_IMPLY( eps1 < ite1 && ite1 < con1, eps1 < con1 );
+  CPPUNIT_IMPLY( eps1 < ite1 && ite1 < emp1, eps1 < emp1 );
+  CPPUNIT_IMPLY( eps1 < ite1 && ite1 < sym1, eps1 < sym1 );
+  
+  CPPUNIT_IMPLY( eps1 < emp1 && emp1 < alt1, eps1 < alt1 );
+  CPPUNIT_IMPLY( eps1 < emp1 && emp1 < con1, eps1 < con1 );
+  CPPUNIT_IMPLY( eps1 < emp1 && emp1 < ite1, eps1 < ite1 );
+  CPPUNIT_IMPLY( eps1 < emp1 && emp1 < sym1, eps1 < sym1 );
+  
+  CPPUNIT_IMPLY( eps1 < sym1 && sym1 < alt1, eps1 < alt1 );
+  CPPUNIT_IMPLY( eps1 < sym1 && sym1 < con1, eps1 < con1 );
+  CPPUNIT_IMPLY( eps1 < sym1 && sym1 < ite1, eps1 < ite1 );
+  CPPUNIT_IMPLY( eps1 < sym1 && sym1 < emp1, eps1 < emp1 );
+  
+  
+      
+  CPPUNIT_IMPLY( sym1 < alt1 && alt1 < con1, sym1 < con1 );
+  CPPUNIT_IMPLY( sym1 < alt1 && alt1 < ite1, sym1 < ite1 );
+  CPPUNIT_IMPLY( sym1 < alt1 && alt1 < emp1, sym1 < emp1 );
+  CPPUNIT_IMPLY( sym1 < alt1 && alt1 < eps1, sym1 < eps1 );
+  
+  CPPUNIT_IMPLY( sym1 < con1 && con1 < alt1, sym1 < alt1 );
+  CPPUNIT_IMPLY( sym1 < con1 && con1 < ite1, sym1 < ite1 );
+  CPPUNIT_IMPLY( sym1 < con1 && con1 < emp1, sym1 < emp1 );
+  CPPUNIT_IMPLY( sym1 < con1 && con1 < eps1, sym1 < eps1 );
+  
+  CPPUNIT_IMPLY( sym1 < ite1 && ite1 < alt1, sym1 < alt1 );
+  CPPUNIT_IMPLY( sym1 < ite1 && ite1 < con1, sym1 < con1 );
+  CPPUNIT_IMPLY( sym1 < ite1 && ite1 < emp1, sym1 < emp1 );
+  CPPUNIT_IMPLY( sym1 < ite1 && ite1 < eps1, sym1 < eps1 );
+  
+  CPPUNIT_IMPLY( sym1 < emp1 && emp1 < alt1, sym1 < alt1 );
+  CPPUNIT_IMPLY( sym1 < emp1 && emp1 < con1, sym1 < con1 );
+  CPPUNIT_IMPLY( sym1 < emp1 && emp1 < ite1, sym1 < ite1 );
+  CPPUNIT_IMPLY( sym1 < emp1 && emp1 < eps1, sym1 < eps1 );
+  
+  CPPUNIT_IMPLY( sym1 < eps1 && eps1 < alt1, sym1 < alt1 );
+  CPPUNIT_IMPLY( sym1 < eps1 && eps1 < con1, sym1 < con1 );
+  CPPUNIT_IMPLY( sym1 < eps1 && eps1 < ite1, sym1 < ite1 );
+  CPPUNIT_IMPLY( sym1 < eps1 && eps1 < emp1, sym1 < emp1 );*/
+}
+
+void SymbolTest::testOrder2() {
+/*  string::StringSymbol s1(alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::StringLabel("1")))));
+  string::StringSymbol s2(alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::StringLabel("2")))));
+  string::StringSymbol s3(alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::StringLabel("3")))));
+  
+  string::StringEmpty e1;
+  string::StringEpsilon e2;
+  
+  string::Iteration i1(s1);
+  string::Iteration i2(s2);
+  string::Iteration i3(s3);
+
+  string::String alt1(string::Alternation(s1, s1));
+  string::String alt2(string::Alternation(s1, s2));
+  string::String alt3(string::Alternation(s1, s3));
+  string::String alt4(string::Alternation(s2, s1));
+  string::String alt5(string::Alternation(s2, s2));
+  string::String alt6(string::Alternation(s2, s3));
+  string::String alt7(string::Alternation(s3, s1));
+  string::String alt8(string::Alternation(s3, s2));
+  string::String alt9(string::Alternation(s3, s3));
+  
+  string::String con1(string::Concatenation (s1, s1));
+  string::String con2(string::Concatenation (s1, s2));
+  string::String con3(string::Concatenation (s1, s3));
+  string::String con4(string::Concatenation (s2, s1));
+  string::String con5(string::Concatenation (s2, s2));
+  string::String con6(string::Concatenation (s2, s3));
+  string::String con7(string::Concatenation (s3, s1));
+  string::String con8(string::Concatenation (s3, s2));
+  string::String con9(string::Concatenation (s3, s3));
+  
+  string::String ite1(i1);
+  string::String ite2(i2);
+  string::String ite3(i3);
+  
+  string::String emp1(e1);
+  string::String eps1(e2);
+  
+  string::String sym1(s1);
+  string::String sym2(s2);
+  string::String sym3(s3);
+  
+
+  
+  CPPUNIT_ASSERT(alt1 == alt1);
+  CPPUNIT_ASSERT(alt1 < alt2);
+  CPPUNIT_ASSERT(alt1 < alt3);
+  CPPUNIT_ASSERT(alt1 < alt4);
+  CPPUNIT_ASSERT(alt1 < alt5);
+  CPPUNIT_ASSERT(alt1 < alt6);
+  CPPUNIT_ASSERT(alt1 < alt7);
+  CPPUNIT_ASSERT(alt1 < alt8);
+  CPPUNIT_ASSERT(alt1 < alt9);
+  
+  CPPUNIT_ASSERT(alt2 > alt1);
+  CPPUNIT_ASSERT(alt2 == alt2);
+  CPPUNIT_ASSERT(alt2 < alt3);
+  CPPUNIT_ASSERT(alt2 < alt4);
+  CPPUNIT_ASSERT(alt2 < alt5);
+  CPPUNIT_ASSERT(alt2 < alt6);
+  CPPUNIT_ASSERT(alt2 < alt7);
+  CPPUNIT_ASSERT(alt2 < alt8);
+  CPPUNIT_ASSERT(alt2 < alt9);
+  
+  CPPUNIT_ASSERT(alt3 > alt1);
+  CPPUNIT_ASSERT(alt3 > alt2);
+  CPPUNIT_ASSERT(alt3 == alt3);
+  CPPUNIT_ASSERT(alt3 < alt4);
+  CPPUNIT_ASSERT(alt3 < alt5);
+  CPPUNIT_ASSERT(alt3 < alt6);
+  CPPUNIT_ASSERT(alt3 < alt7);
+  CPPUNIT_ASSERT(alt3 < alt8);
+  CPPUNIT_ASSERT(alt3 < alt9);
+  
+  CPPUNIT_ASSERT(alt4 > alt1);
+  CPPUNIT_ASSERT(alt4 > alt2);
+  CPPUNIT_ASSERT(alt4 > alt3);
+  CPPUNIT_ASSERT(alt4 == alt4);
+  CPPUNIT_ASSERT(alt4 < alt5);
+  CPPUNIT_ASSERT(alt4 < alt6);
+  CPPUNIT_ASSERT(alt4 < alt7);
+  CPPUNIT_ASSERT(alt4 < alt8);
+  CPPUNIT_ASSERT(alt4 < alt9);
+  
+  CPPUNIT_ASSERT(alt5 > alt1);
+  CPPUNIT_ASSERT(alt5 > alt2);
+  CPPUNIT_ASSERT(alt5 > alt3);
+  CPPUNIT_ASSERT(alt5 > alt4);
+  CPPUNIT_ASSERT(alt5 == alt5);
+  CPPUNIT_ASSERT(alt5 < alt6);
+  CPPUNIT_ASSERT(alt5 < alt7);
+  CPPUNIT_ASSERT(alt5 < alt8);
+  CPPUNIT_ASSERT(alt5 < alt9);
+  
+  CPPUNIT_ASSERT(alt6 > alt1);
+  CPPUNIT_ASSERT(alt6 > alt2);
+  CPPUNIT_ASSERT(alt6 > alt3);
+  CPPUNIT_ASSERT(alt6 > alt4);
+  CPPUNIT_ASSERT(alt6 > alt5);
+  CPPUNIT_ASSERT(alt6 == alt6);
+  CPPUNIT_ASSERT(alt6 < alt7);
+  CPPUNIT_ASSERT(alt6 < alt8);
+  CPPUNIT_ASSERT(alt6 < alt9);
+  
+  CPPUNIT_ASSERT(alt7 > alt1);
+  CPPUNIT_ASSERT(alt7 > alt2);
+  CPPUNIT_ASSERT(alt7 > alt3);
+  CPPUNIT_ASSERT(alt7 > alt4);
+  CPPUNIT_ASSERT(alt7 > alt5);
+  CPPUNIT_ASSERT(alt7 > alt6);
+  CPPUNIT_ASSERT(alt7 == alt7);
+  CPPUNIT_ASSERT(alt7 < alt8);
+  CPPUNIT_ASSERT(alt7 < alt9);
+  
+  CPPUNIT_ASSERT(alt8 > alt1);
+  CPPUNIT_ASSERT(alt8 > alt2);
+  CPPUNIT_ASSERT(alt8 > alt3);
+  CPPUNIT_ASSERT(alt8 > alt4);
+  CPPUNIT_ASSERT(alt8 > alt5);
+  CPPUNIT_ASSERT(alt8 > alt6);
+  CPPUNIT_ASSERT(alt8 > alt7);
+  CPPUNIT_ASSERT(alt8 == alt8);
+  CPPUNIT_ASSERT(alt8 < alt9);
+  
+  CPPUNIT_ASSERT(alt9 > alt1);
+  CPPUNIT_ASSERT(alt9 > alt2);
+  CPPUNIT_ASSERT(alt9 > alt3);
+  CPPUNIT_ASSERT(alt9 > alt4);
+  CPPUNIT_ASSERT(alt9 > alt5);
+  CPPUNIT_ASSERT(alt9 > alt6);
+  CPPUNIT_ASSERT(alt9 > alt7);
+  CPPUNIT_ASSERT(alt9 > alt8);
+  CPPUNIT_ASSERT(alt9 == alt9);
+  
+  
+  
+  CPPUNIT_ASSERT(con1 == con1);
+  CPPUNIT_ASSERT(con1 < con2);
+  CPPUNIT_ASSERT(con1 < con3);
+  CPPUNIT_ASSERT(con1 < con4);
+  CPPUNIT_ASSERT(con1 < con5);
+  CPPUNIT_ASSERT(con1 < con6);
+  CPPUNIT_ASSERT(con1 < con7);
+  CPPUNIT_ASSERT(con1 < con8);
+  CPPUNIT_ASSERT(con1 < con9);
+  
+  CPPUNIT_ASSERT(con2 > con1);
+  CPPUNIT_ASSERT(con2 == con2);
+  CPPUNIT_ASSERT(con2 < con3);
+  CPPUNIT_ASSERT(con2 < con4);
+  CPPUNIT_ASSERT(con2 < con5);
+  CPPUNIT_ASSERT(con2 < con6);
+  CPPUNIT_ASSERT(con2 < con7);
+  CPPUNIT_ASSERT(con2 < con8);
+  CPPUNIT_ASSERT(con2 < con9);
+  
+  CPPUNIT_ASSERT(con3 > con1);
+  CPPUNIT_ASSERT(con3 > con2);
+  CPPUNIT_ASSERT(con3 == con3);
+  CPPUNIT_ASSERT(con3 < con4);
+  CPPUNIT_ASSERT(con3 < con5);
+  CPPUNIT_ASSERT(con3 < con6);
+  CPPUNIT_ASSERT(con3 < con7);
+  CPPUNIT_ASSERT(con3 < con8);
+  CPPUNIT_ASSERT(con3 < con9);
+  
+  CPPUNIT_ASSERT(con4 > con1);
+  CPPUNIT_ASSERT(con4 > con2);
+  CPPUNIT_ASSERT(con4 > con3);
+  CPPUNIT_ASSERT(con4 == con4);
+  CPPUNIT_ASSERT(con4 < con5);
+  CPPUNIT_ASSERT(con4 < con6);
+  CPPUNIT_ASSERT(con4 < con7);
+  CPPUNIT_ASSERT(con4 < con8);
+  CPPUNIT_ASSERT(con4 < con9);
+  
+  CPPUNIT_ASSERT(con5 > con1);
+  CPPUNIT_ASSERT(con5 > con2);
+  CPPUNIT_ASSERT(con5 > con3);
+  CPPUNIT_ASSERT(con5 > con4);
+  CPPUNIT_ASSERT(con5 == con5);
+  CPPUNIT_ASSERT(con5 < con6);
+  CPPUNIT_ASSERT(con5 < con7);
+  CPPUNIT_ASSERT(con5 < con8);
+  CPPUNIT_ASSERT(con5 < con9);
+  
+  CPPUNIT_ASSERT(con6 > con1);
+  CPPUNIT_ASSERT(con6 > con2);
+  CPPUNIT_ASSERT(con6 > con3);
+  CPPUNIT_ASSERT(con6 > con4);
+  CPPUNIT_ASSERT(con6 > con5);
+  CPPUNIT_ASSERT(con6 == con6);
+  CPPUNIT_ASSERT(con6 < con7);
+  CPPUNIT_ASSERT(con6 < con8);
+  CPPUNIT_ASSERT(con6 < con9);
+  
+  CPPUNIT_ASSERT(con7 > con1);
+  CPPUNIT_ASSERT(con7 > con2);
+  CPPUNIT_ASSERT(con7 > con3);
+  CPPUNIT_ASSERT(con7 > con4);
+  CPPUNIT_ASSERT(con7 > con5);
+  CPPUNIT_ASSERT(con7 > con6);
+  CPPUNIT_ASSERT(con7 == con7);
+  CPPUNIT_ASSERT(con7 < con8);
+  CPPUNIT_ASSERT(con7 < con9);
+  
+  CPPUNIT_ASSERT(con8 > con1);
+  CPPUNIT_ASSERT(con8 > con2);
+  CPPUNIT_ASSERT(con8 > con3);
+  CPPUNIT_ASSERT(con8 > con4);
+  CPPUNIT_ASSERT(con8 > con5);
+  CPPUNIT_ASSERT(con8 > con6);
+  CPPUNIT_ASSERT(con8 > con7);
+  CPPUNIT_ASSERT(con8 == con8);
+  CPPUNIT_ASSERT(con8 < con9);
+  
+  CPPUNIT_ASSERT(con9 > con1);
+  CPPUNIT_ASSERT(con9 > con2);
+  CPPUNIT_ASSERT(con9 > con3);
+  CPPUNIT_ASSERT(con9 > con4);
+  CPPUNIT_ASSERT(con9 > con5);
+  CPPUNIT_ASSERT(con9 > con6);
+  CPPUNIT_ASSERT(con9 > con7);
+  CPPUNIT_ASSERT(con9 > con8);
+  CPPUNIT_ASSERT(con9 == con9);
+  
+  
+  CPPUNIT_ASSERT(ite1 == ite1);
+  CPPUNIT_ASSERT(ite1 < ite2);
+  CPPUNIT_ASSERT(ite1 < ite3);
+  
+  CPPUNIT_ASSERT(ite2 > ite1);
+  CPPUNIT_ASSERT(ite2 == ite2);
+  CPPUNIT_ASSERT(ite2 < ite3);
+  
+  CPPUNIT_ASSERT(ite3 > ite1);
+  CPPUNIT_ASSERT(ite3 > ite2);
+  CPPUNIT_ASSERT(ite3 == ite3);
+  
+
+
+  CPPUNIT_ASSERT(emp1 == emp1);
+  
+  
+  
+  CPPUNIT_ASSERT(eps1 == eps1);
+
+
+
+  CPPUNIT_ASSERT(sym1 == sym1);
+  CPPUNIT_ASSERT(sym1 < sym2);
+  CPPUNIT_ASSERT(sym1 < sym3);
+  
+  CPPUNIT_ASSERT(sym2 > sym1);
+  CPPUNIT_ASSERT(sym2 == sym2);
+  CPPUNIT_ASSERT(sym2 < sym3);
+  
+  CPPUNIT_ASSERT(sym3 > sym1);
+  CPPUNIT_ASSERT(sym3 > sym2);
+  CPPUNIT_ASSERT(sym3 == sym3);*/
+}
+
diff --git a/alib2/test-src/alphabet/SymbolTest.h b/alib2/test-src/alphabet/SymbolTest.h
new file mode 100644
index 0000000000000000000000000000000000000000..b7c7ef5f73e1bc2be3d90eacc171d0a72699daa1
--- /dev/null
+++ b/alib2/test-src/alphabet/SymbolTest.h
@@ -0,0 +1,26 @@
+#ifndef SYMBOL_TEST_H_
+#define SYMBOL_TEST_H_
+
+#include <cppunit/extensions/HelperMacros.h>
+
+class SymbolTest : public CppUnit::TestFixture
+{
+  CPPUNIT_TEST_SUITE( SymbolTest );
+  CPPUNIT_TEST( testEqual );
+  CPPUNIT_TEST( testXMLParser );
+  CPPUNIT_TEST( testOrder );
+  CPPUNIT_TEST( testOrder2 );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  void setUp();
+  void tearDown();
+
+  void testCopyConstruct();
+  void testEqual();
+  void testXMLParser();
+  void testOrder();
+  void testOrder2();
+};
+
+#endif  // SYMBOL_TEST_H_