public void testAddASolution(){
        try{
            Identifier id1 = new Identifier("A", 1);
            Identifier id2 = new Identifier("B", 1);
            Identifier id3 = new Identifier("C", 1);

            Constant const1 = new Constant("1", 1);
            Constant const2 = new Constant("2", 1);
            Constant const3 = new Constant("3", 1);

            Identifier[] ids1 = {id1};
            Identifier[] ids2 = {id1, id2, id3};

            Constant[] sub0 = {};

            Constant[] suba = {const1};
            Constant[] subb = {const2};
            Constant[] subc = {const3};
            Constant[] subd = {const3};

	    Constant[] sub1 = {const1, const2, const3};
	    Constant[] sub2 = {const3, const2, const1};
            Constant[] sub3 = {const1, const3, const2};
            Constant[] sub4 = {const1, const3, const2};

            ExtendedSOS l = new ExtendedSOS(ids1);

            try{
                l.addSolution(null);
                assertTrue(false);
            }catch(AssertionError e){
                assertTrue(true);
            };

            try{
                l.addSolution(sub0);
                assertTrue(false);
            }catch(AssertionError e){
                assertTrue(true);
            };

            try{
                l.addSolution(sub1);
                assertTrue(false);
            }catch(AssertionError e){
                assertTrue(true);
            };

            l.addSolution(suba);
            assertTrue(l.getSolutions().size() == 1);
            assertTrue(l.getSolutions().get(0) == suba);
            l.addSolution(subb);
            assertTrue(l.getSolutions().size() == 2);
            assertTrue(l.getSolutions().get(0) == suba);
            assertTrue(l.getSolutions().get(1) == subb);
            l.addSolution(subc);
            assertTrue(l.getSolutions().size() == 3);
            assertTrue(l.getSolutions().get(0) == suba);
            assertTrue(l.getSolutions().get(1) == subb);
            assertTrue(l.getSolutions().get(2) == subc);
            l.addSolution(suba);
            assertTrue(l.getSolutions().size() == 3);
            assertTrue(l.getSolutions().get(0) == suba);
            assertTrue(l.getSolutions().get(1) == subb);
            assertTrue(l.getSolutions().get(2) == subc);
            l.addSolution(subb);
            assertTrue(l.getSolutions().size() == 3);
            assertTrue(l.getSolutions().get(0) == suba);
            assertTrue(l.getSolutions().get(1) == subb);
            assertTrue(l.getSolutions().get(2) == subc);
            l.addSolution(subc);
            assertTrue(l.getSolutions().size() == 3);
            assertTrue(l.getSolutions().get(0) == suba);
            assertTrue(l.getSolutions().get(1) == subb);
            assertTrue(l.getSolutions().get(2) == subc);

            try{
                l.addSolution(sub4);
                assertTrue(false);
            }catch(AssertionError e){
                assertTrue(true);
            };

            l = new ExtendedSOS(ids2);

            try{
                l.addSolution(suba);
                assertTrue(false);
            }catch(AssertionError e){
                assertTrue(true);
            };

            l.addSolution(sub1);
            assertTrue(l.getSolutions().size() == 1);
            assertTrue(l.getSolutions().get(0) == sub1);
            l.addSolution(sub2);
            assertTrue(l.getSolutions().size() == 2);
            assertTrue(l.getSolutions().get(0) == sub1);
            assertTrue(l.getSolutions().get(1) == sub2);
            l.addSolution(sub3);
            assertTrue(l.getSolutions().size() == 3);
            assertTrue(l.getSolutions().get(0) == sub1);
            assertTrue(l.getSolutions().get(1) == sub2);
            assertTrue(l.getSolutions().get(2) == sub3);
            l.addSolution(sub1);
            l.addSolution(sub2);
            l.addSolution(sub3);
            assertTrue(l.getSolutions().size() == 3);
            assertTrue(l.getSolutions().get(0) == sub1);
            assertTrue(l.getSolutions().get(1) == sub2);
            assertTrue(l.getSolutions().get(2) == sub3);

        }catch(ParserException e){
            System.out.println(
                "Parser ERROR in SetOfSolutionsTest." +
                "addSolution(Constant[])\n" +
                "    should not get here.\n" +
                "    error = " + e.getMessage());
        }catch(AssertionError e){
            System.out.println(
                "Assertion ERROR in SetOfSolutionsTest." +
                "addSolution(Constant[])\n" +
                "    should not get here.\n" +
                "    error = " + e.getMessage());
        };
    }