30 Test CombinatorialUnionList and CombinatorialCrossList

 30.1 Test Grammar

In this file we test src/parse.as.nw and src/interp.as.nw.

728* 13+   704  733
-------------------------------------------------------------------
----
---- Combinat
---- Copyright (C) Ralf Hemmecke <ralf@hemmecke.de>
---- Copyright (C) Martin Rubey <martin.rubey@univie.ac.at>
---- svn co svn://svn.risc.uni-linz.ac.at/hemmecke/combinat/
----
-------------------------------------------------------------------

#assert DontNeedLibraryTestCases
#include "testcases"

TestUnionCrossList: TestCaseType with {
#include "grammar.signatures.as"
} == add {
        import from TestCaseTools, Integer;
        auxiliary 628
        test Parse 730
        test Evaluate 731
        test Grammar 732
}

Defines:
TestUnionCrossList, never used.

Uses Integer 66.
729auxiliary 628+   (626 660 669 728)  670
checkExpOrd(
    S: (L: LabelType) -> CombinatorialSpecies L,
    expExpected: Array Integer,
    ordExpected: Array Integer
): () == {
        import from Integer, Array Integer, S Integer;
        import from MachineInteger;
        egs: ExponentialGeneratingSeries == generatingSeries;
        computed: Array Integer := [
            count(egs, n) for n in 0 .. prev #expExpected
        ];
        assertEquals(Array Integer, expExpected, computed);

        ogs: OrdinaryGeneratingSeries == isomorphismTypeGeneratingSeries;
        computed := [
            coefficient(ogs, n) for n in 0 .. prev #ordExpected
        ];
        assertEquals(Array Integer, ordExpected, computed);
}

Uses Array 599, CombinatorialSpecies 71, ExponentialGeneratingSeries 316, Integer 66, LabelType 62, MachineInteger 67, and OrdinaryGeneratingSeries 311.
730test Parse 730  (728)
testParse(): () == {
        import from ExpressionTree, ExpressionTreeLeaf, List ExpressionTree,
                    String, InterpretingTools, MyParser;
        import from Symbol;
        assertEquals(ExpressionTree,
            extree leaf "a",
            parse("a"));

        op := ExpressionTreePrefix( - "f");
        args := [extree leaf "a", extree leaf "b"];
        assertEquals(ExpressionTree,
            op.args,
            parse("f(a,b )"));

        op := ExpressionTreePrefix( - "f");
        args := [parse "g(h(c,d))"];
        assertEquals(ExpressionTree,
            op.args,
            parse("f(g(h( c,d) ))"));

        op := ExpressionTreePrefix( - "f");
        args := [extree leaf "a", extree leaf "b", parse "g(c,d)", extree leaf "e"];
        assertEquals(ExpressionTree,
            op.args,
            parse("f(a, b,   g(c,d),e)"));

        op := ExpressionTreePrefix( - "f");
        args := [extree leaf "a", extree leaf "b", parse("g(c,d)")];
        assertEquals(ExpressionTree,
            op.args,
            parse("f(a,b,g(c,d))"));
}

Uses ExpressionTree 624a, ExpressionTreeLeaf 623, ExpressionTreePrefix 622, InterpretingTools 453, MyParser 445, and String 65.
731test Evaluate 731  (728)
testEvaluate(): () == {
        import from Integer, Array Integer, String,
                    LabelSpecies, List LabelSpecies,
                    MyParser, InterpretingTools;
        s: String
          == "Plus ( Plus(SingletonSpecies, SingletonSpecies), SingletonSpecies)";
        S: LabelSpecies
          == evaluate(parse s, []);
        checkExpOrd(coerce S, [0, 3, 0, 0, 0], [0, 3, 0, 0, 0]);
}

Uses Array 599, Integer 66, InterpretingTools 453, LabelSpecies 452, MyParser 445, Plus 166a, SingletonSpecies 84, and String 65.