示例#1
0
        public void TestTransformerNoElement()
        {
            var f        = new ZenFunction <uint, uint>(i => i + 1);
            var t        = f.Transformer();
            var emptySet = t.InputSet((x, y) => x + 2 == y);

            emptySet.Element();
        }
示例#2
0
        public void TestTransformerTransformForward()
        {
            var f         = new ZenFunction <uint, bool>(i => i >= 10);
            var t         = f.Transformer();
            var inputSet1 = t.InputSet((i, b) => b);
            var outputSet = t.TransformForward(inputSet1);
            var inputSet2 = t.TransformBackwards(outputSet);

            Assert.AreEqual(inputSet1, inputSet2);
        }
示例#3
0
        public void TestTransformerArbitrary()
        {
            var b    = Arbitrary <bool>();
            var f1   = new ZenFunction <uint, bool>(i => Or(b, i <= 10));
            var f2   = new ZenFunction <bool, uint>(b => 3);
            var t1   = f1.Transformer();
            var t2   = f2.Transformer();
            var set1 = t1.InputSet();
            var set2 = t2.OutputSet();

            t1.TransformForward(set2);
        }
示例#4
0
        public void TestTransformerVariablesAlign()
        {
            var f1   = new ZenFunction <uint, uint>(i => i + 1);
            var f2   = new ZenFunction <uint, uint>(i => i + 2);
            var t1   = f1.Transformer();
            var t2   = f2.Transformer();
            var set1 = t1.InputSet((x, y) => y == 10);
            var set2 = t2.InputSet((x, y) => y == 11);
            var set3 = set1.Intersect(set2);

            Assert.AreEqual(set1, set2);
            Assert.AreEqual(9U, set3.Element());
        }
示例#5
0
        public void TestTransformerInputSets()
        {
            var f      = new ZenFunction <uint, uint>(i => i + 1);
            var t      = f.Transformer();
            var inSet1 = t.InputSet((x, y) => y == 10);
            var inSet2 = t.InputSet((x, y) => y == 11);
            var inSet3 = inSet1.Intersect(inSet2);
            var inSet4 = inSet1.Union(inSet2);

            Assert.AreEqual(9U, inSet1.Element());
            Assert.AreEqual(10U, inSet2.Element());
            Assert.IsTrue(inSet3.IsEmpty());
            Assert.IsFalse(inSet4.IsEmpty());
        }
示例#6
0
        public void TestTransformerCombinations()
        {
            var f1   = new ZenFunction <uint, bool>(i => i < 10);
            var f2   = new ZenFunction <bool, uint>(b => If <uint>(b, 11, 9));
            var t1   = f1.Transformer();
            var t2   = f2.Transformer();
            var set1 = t1.InputSet((i, b) => b);
            var set2 = t1.TransformForward(set1);
            var set3 = t2.TransformForward(set2);
            var set4 = t2.OutputSet((b, i) => b);

            Assert.AreEqual(11U, set3.Element());
            Assert.AreEqual(11U, set4.Element());
        }
示例#7
0
        public void TestTransformerObject()
        {
            var f = new ZenFunction <IpHeader, bool>(p => And(p.GetDstIp().GetValue() <= 4, p.GetSrcIp().GetValue() <= 5));
            var t = f.Transformer();

            /* var set = t.InputSet((p, b) => Not(b));
             * Assert.IsFalse(set.Element().Value.DstIp.Value <= 4 && set.Element().Value.SrcIp.Value <= 5);
             *
             * var outputSet = t.TransformForward(set);
             * Assert.AreEqual(false, outputSet.Element().Value);
             *
             * var inputSet = t.TransformBackwards(outputSet);
             * Assert.IsFalse(set.Element().Value.DstIp.Value <= 4 && set.Element().Value.SrcIp.Value <= 5); */
        }
示例#8
0
        public void TestPacketSet()
        {
            var rnd = new System.Random();

            for (int j = 0; j < 2; j++)
            {
                var i = (uint)rnd.Next();
                var f = new ZenFunction <IpHeader, bool>(p =>
                {
                    return(p.GetDstIp().GetValue() == i);
                });

                StateSetTransformer <IpHeader, bool> transformer = f.Transformer();
                var set = transformer.InputSet((pkt, matches) => matches);
                Assert.AreEqual(i, set.Element().DstIp.Value);
            }
        }
示例#9
0
        public void TestDiagramBackendException3()
        {
            var f = new ZenFunction <string, string>(s => s + "a");

            f.Transformer();
        }