diff --git a/alib2/test-src/regexp/RegExpTest.cpp b/alib2/test-src/regexp/RegExpTest.cpp
index 62f44971d6304d779069627d88dbc34674a0bb0c..1bcdf9cd82eaae4a243d767bf4e419573fc6e088 100644
--- a/alib2/test-src/regexp/RegExpTest.cpp
+++ b/alib2/test-src/regexp/RegExpTest.cpp
@@ -10,6 +10,8 @@
 #include "regexp/RegExpFromXMLParser.h"
 #include "regexp/RegExpToXMLComposer.h"
 
+#define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
+
 CPPUNIT_TEST_SUITE_REGISTRATION( RegExpTest );
 
 void RegExpTest::setUp() {
@@ -64,4 +66,441 @@ void RegExpTest::testXMLParser() {
   
   CPPUNIT_ASSERT( regexp == regexp2 );
   
+}
+
+void RegExpTest::testOrder() {
+  regexp::RegExpSymbol s1("1");
+  regexp::RegExpEmpty e1;
+  regexp::RegExpEpsilon e2;
+  regexp::Iteration i1(s1);
+
+  regexp::RegExp alt1(regexp::Alternation(s1, s1));
+  regexp::RegExp con1(regexp::Concatenation (s1, s1));
+  regexp::RegExp ite1(i1);
+  regexp::RegExp emp1(e1);
+  regexp::RegExp eps1(e2);
+  regexp::RegExp 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 RegExpTest::testOrder2() {
+  regexp::RegExpSymbol s1("1");
+  regexp::RegExpSymbol s2("2");
+  regexp::RegExpSymbol s3("3");
+  
+  regexp::RegExpEmpty e1;
+  regexp::RegExpEpsilon e2;
+  
+  regexp::Iteration i1(s1);
+  regexp::Iteration i2(s2);
+  regexp::Iteration i3(s3);
+
+  regexp::RegExp alt1(regexp::Alternation(s1, s1));
+  regexp::RegExp alt2(regexp::Alternation(s1, s2));
+  regexp::RegExp alt3(regexp::Alternation(s1, s3));
+  regexp::RegExp alt4(regexp::Alternation(s2, s1));
+  regexp::RegExp alt5(regexp::Alternation(s2, s2));
+  regexp::RegExp alt6(regexp::Alternation(s2, s3));
+  regexp::RegExp alt7(regexp::Alternation(s3, s1));
+  regexp::RegExp alt8(regexp::Alternation(s3, s2));
+  regexp::RegExp alt9(regexp::Alternation(s3, s3));
+  
+  regexp::RegExp con1(regexp::Concatenation (s1, s1));
+  regexp::RegExp con2(regexp::Concatenation (s1, s2));
+  regexp::RegExp con3(regexp::Concatenation (s1, s3));
+  regexp::RegExp con4(regexp::Concatenation (s2, s1));
+  regexp::RegExp con5(regexp::Concatenation (s2, s2));
+  regexp::RegExp con6(regexp::Concatenation (s2, s3));
+  regexp::RegExp con7(regexp::Concatenation (s3, s1));
+  regexp::RegExp con8(regexp::Concatenation (s3, s2));
+  regexp::RegExp con9(regexp::Concatenation (s3, s3));
+  
+  regexp::RegExp ite1(i1);
+  regexp::RegExp ite2(i2);
+  regexp::RegExp ite3(i3);
+  
+  regexp::RegExp emp1(e1);
+  regexp::RegExp eps1(e2);
+  
+  regexp::RegExp sym1(s1);
+  regexp::RegExp sym2(s2);
+  regexp::RegExp 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);
 }
\ No newline at end of file
diff --git a/alib2/test-src/regexp/RegExpTest.h b/alib2/test-src/regexp/RegExpTest.h
index c7c19a84a826a865f197a799c07bcfd62ca34d93..bb02c48b90cd05d2a313bec631833071acd1380c 100644
--- a/alib2/test-src/regexp/RegExpTest.h
+++ b/alib2/test-src/regexp/RegExpTest.h
@@ -8,6 +8,8 @@ class RegExpTest : public CppUnit::TestFixture
   CPPUNIT_TEST_SUITE( RegExpTest );
   CPPUNIT_TEST( testEqual );
   CPPUNIT_TEST( testXMLParser );
+  CPPUNIT_TEST( testOrder );
+  CPPUNIT_TEST( testOrder2 );
   CPPUNIT_TEST_SUITE_END();
 
 public:
@@ -16,6 +18,8 @@ public:
 
   void testEqual();
   void testXMLParser();
+  void testOrder();
+  void testOrder2();
 };
 
 #endif  // REG_EXP_TEST_H_