Automata.Z3.Tests.Z3_TreeTransducerTests.TestErrorCases C# (CSharp) Method

TestErrorCases() private method

private TestErrorCases ( ) : void
return void
        public void TestErrorCases()
        {
            Z3Provider Z = new Z3Provider();
            var A = (Z.TT.MkRankedAlphabet("A", Z.IntSort, new string[] { "zero", "one", "two" }, new int[] { 0, 1, 2 }));

            //two(1+x0,one(x1),one(x2))
            var b = A.MkTree("two",
                        Z.MkAdd(Z.MkInt(1), A.AttrVar),
                        A.MkTree("one", Z.MkAdd(Z.MkInt(1), A.AttrVar), A.ChildVar(1)),
                        A.MkTree("one", Z.MkAdd(Z.MkInt(2), A.AttrVar), A.ChildVar(2)));

            //add 100 to the attribute of a zero-node
            var rule0 = Z.TT.MkTreeRule(A, A, 0, "zero", Z.True, A.MkTree("zero", Z.MkAdd(Z.MkInt(100), A.AttrVar)));
            //keep one-nodes unchanged
            var rule1 = Z.TT.MkTreeRule(A, A, 0, "one", Z.True, A.MkTree("one", A.AttrVar, A.ChildVar(1)));
            //apply transformation to the second child and swap it with the first child
            var rule2 = Z.TT.MkTreeRule(A, A, 0, "two", Z.True, A.MkTree("two", A.AttrVar, A.MkTrans(A, 1, 2), A.ChildVar(1)));

            try
            {
                var F = Z.TT.MkTreeAutomaton(0, A, A, new TreeRule[] { rule0, rule1, rule2 });
                Assert.IsTrue(false, "must not reach this line");
            }
            catch (AutomataException e)
            {
                Assert.AreEqual(AutomataExceptionKind.TreeTransducer_InvalidStateId, e.kind);
            }

            try
            {
                var rule2b = Z.TT.MkTreeRule(A, A, 0, "two", Z.True, A.MkTree("two", A.AttrVar, A.MkTrans(A, 0, 3), A.ChildVar(1)));
                var F = Z.TT.MkTreeAutomaton(0, A, A, new TreeRule[] { rule0, rule1, rule2b });
                Assert.IsTrue(false, "must not reach this line");
            }
            catch (AutomataException e)
            {
                Assert.AreEqual(AutomataExceptionKind.RankedAlphabet_ChildAccessorIsOutOufBounds, e.kind);
            }
        }