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)); }
public void TestTransformerSetIsEmpty() { var t = new ZenFunction <bool, bool>(b => true).Transformer(); var set = t.InputSet().Complement(); Assert.IsTrue(set.IsEmpty()); }
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); }
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)); }
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()); }
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); }