示例#1
0
        public void TestTransformerFixedWidthInteger()
        {
            var t   = new ZenFunction <Int5, bool>(i => i <= new Int5(0)).Transformer();
            var set = t.InputSet((x, y) => y);

            Assert.IsTrue(set.Element() <= new Int5(0));
        }
示例#2
0
        public void TestTransformerSetIsEmpty()
        {
            var t   = new ZenFunction <bool, bool>(b => true).Transformer();
            var set = t.InputSet().Complement();

            Assert.IsTrue(set.IsEmpty());
        }
示例#3
0
        public void TestMultipleArguments()
        {
            var t   = new ZenFunction <Pair <IpHeader, IpHeader>, bool>(x => x.Item1() == x.Item2()).Transformer();
            var set = t.InputSet((x, b) => b);
            var e   = set.Element();

            Assert.AreEqual(e.Item1.DstIp, e.Item2.DstIp);
            Assert.AreEqual(e.Item1.SrcIp, e.Item2.SrcIp);
            Assert.AreEqual(e.Item1.SrcPort, e.Item2.DstPort);
            Assert.AreEqual(e.Item1.DstPort, e.Item2.DstPort);
        }
示例#4
0
        public void TestTransformerSetEquality()
        {
            var t1 = new ZenFunction <bool, bool>(b => true).Transformer();
            var t2 = new ZenFunction <bool, bool>(b => true).Transformer();

            var set1 = t1.InputSet((x, y) => Not(x));
            var set2 = t2.InputSet((x, y) => Not(x));

            Assert.IsTrue(set1.Equals(set2));
            Assert.IsFalse(set1.Equals(2));
        }
示例#5
0
        public void TestMultipleTransformers()
        {
            var t1   = new ZenFunction <IpHeader, bool>(p => true).Transformer();
            var set1 = t1.InputSet((p, v) => v);
            var t2   = new ZenFunction <IpHeader, bool>(p => p.GetDstIp().GetValue() == 1).Transformer();
            var set2 = t2.InputSet((p, v) => v);
            var t3   = new ZenFunction <uint, bool>(u => u == 2).Transformer();
            var set3 = t3.InputSet((u, v) => v);

            Assert.IsTrue(set1.IsFull());
            Assert.AreEqual(1U, set2.Element().DstIp.Value);
            Assert.AreEqual(2U, set3.Element());
        }
示例#6
0
        public void TestTransformerFieldAccesses()
        {
            var t1 = new ZenFunction <IpHeader, Ip>(x => x.GetDstIp()).Transformer();
            var t2 = new ZenFunction <IpHeader, Ip>(x => x.GetSrcIp()).Transformer();
            var t3 = new ZenFunction <IpHeader, ushort>(x => x.GetDstPort()).Transformer();
            var t4 = new ZenFunction <IpHeader, ushort>(x => x.GetSrcPort()).Transformer();
            var t5 = new ZenFunction <IpHeader, byte>(x => x.GetProtocol()).Transformer();

            var allHeaders = new ZenFunction <IpHeader, bool>(x => true).Transformer().InputSet();
            var s1         = t1.InputSet((x, ip) => true);
            var s2         = t2.InputSet((x, ip) => true);
            var s3         = t3.InputSet((x, ip) => true);
            var s4         = t4.InputSet((x, ip) => true);
            var s5         = t5.InputSet((x, ip) => true);
            var all        = s1.Intersect(s2).Intersect(s3).Intersect(s4).Intersect(s5);

            Assert.AreEqual(allHeaders, all);
        }