Automata.Z3.Tests.Z3_STTests.TestIdempotenceOfDecode3 C# (CSharp) Method

TestIdempotenceOfDecode3() static private method

static private TestIdempotenceOfDecode3 ( Microsoft.Automata.STBuilder stb, Microsoft.Z3.Sort charSort ) : void
stb Microsoft.Automata.STBuilder
charSort Microsoft.Z3.Sort
return void
        static void TestIdempotenceOfDecode3(STBuilderZ3 stb, Sort charSort)
        {
            var z3p = stb.Solver;
            z3p.MainSolver.Push();
            STz3 st = MkDecode(stb, charSort);
            st.AssertTheory();

            //st.ShowAsGraph();

            Expr input = z3p.MkFreshConst("input", z3p.MkListSort(charSort));
            Expr output1 = z3p.MkFreshConst("output1", z3p.MkListSort(charSort));
            Expr output2 = z3p.MkFreshConst("output2", z3p.MkListSort(charSort));

            string i;
            string o1;
            string o2;

            var model = z3p.MainSolver.GetModel(z3p.MkAnd(st.MkAccept(input, output1), z3p.MkAnd(st.MkAccept(output1, output2), z3p.MkNeq(output1, output2))), input, output1, output2);

            i = model[input].GetStringValue(false);
            o1 = model[output1].GetStringValue(false);
            o2 = model[output2].GetStringValue(false);

            Assert.AreEqual(o1, System.Net.WebUtility.HtmlDecode(i));
            Assert.AreEqual(o2, System.Net.WebUtility.HtmlDecode(System.Net.WebUtility.HtmlDecode(i)));
            Assert.AreNotEqual(o1, o2);
            z3p.MainSolver.Pop();
        }