public void TestSymbolicExecutionIfThenElse() { var f = new ZenFunction <int, int, int, int>((x, y, z) => { return(If(x > 10, 1, If(y > x, If <int>(z > 10, 2, 3), If <int>(z > y, 4, 5)))); }); var values = f.GenerateInputs().ToList(); var outputs = values.Select(x => f.Evaluate(x.Item1, x.Item2, x.Item3)); Assert.AreEqual(5, values.Count); Assert.IsTrue(outputs.Contains(1)); Assert.IsTrue(outputs.Contains(2)); Assert.IsTrue(outputs.Contains(3)); Assert.IsTrue(outputs.Contains(4)); Assert.IsTrue(outputs.Contains(5)); }
public void TestInputGeneration() { var initialState = Create <SwitchState>( ("WatchdogDropPackets1", Constant(false)), ("WatchdogDropPackets2", Constant(false)), ("WatchdogStartDropTime1", Constant <ushort>(0)), ("WatchdogStartDropTime2", Constant <ushort>(0)), ("StormStartedTime1", Constant <ushort>(0)), ("StormStartedTime2", Constant <ushort>(0)), ("StormEndedTime1", Constant <ushort>(0)), ("StormEndedTime2", Constant <ushort>(0))); var f = new ZenFunction <IList <Event>, SwitchState>(es => ProcessEvents(es, initialState)); foreach (var x in f.GenerateInputs(precondition: IsValidSequence, listSize: 3, checkSmallerLists: false).Take(10)) { Console.WriteLine($"[{string.Join(",", x)}]"); } }
/// <summary> /// Gets the Zen function for the model. /// </summary> /// <returns>An input if one exists.</returns> public static IEnumerable <IList <Event> > GenerateTests() { var f = new ZenFunction <IList <Event>, SwitchState>(es => ProcessEvents(es, InitialState())); return(f.GenerateInputs(precondition: IsValidSequence, listSize: 2, checkSmallerLists: false)); }
public void TestSymbolicExecutionListSorting() { var f = new ZenFunction <IList <int>, IList <int> >(x => x.Sort()); Assert.AreEqual(6, f.GenerateInputs(listSize: 3, checkSmallerLists: false).Count()); }
public void TestSymbolicExecutionListContains() { var f = new ZenFunction <IList <int>, bool>(x => x.Contains(3)); Assert.AreEqual(6, f.GenerateInputs().Count()); }
public void TestSymbolicExecutionStringOperations() { var f = new ZenFunction <string, string, string, string, bool>((w, x, y, z) => If(w.EndsWith(x), True(), If(w.StartsWith(y), True(), w.Contains(z)))); Assert.AreEqual(3, f.GenerateInputs().Count()); }
public void TestSymbolicExecutionBitvectors() { var f1 = new ZenFunction <int, int, int, int>((x, y, z) => ((x | y) & z) ^ x); Assert.AreEqual(1, f1.GenerateInputs().Count()); }
public void TestSymbolicExecutionBigIntegers() { var f = new ZenFunction <BigInteger, int>(x => If(x == new BigInteger(10), 1, If <int>(x == new BigInteger(20), 2, 3))); Assert.AreEqual(3, f.GenerateInputs().Count()); }
public void TestSymbolicExecutionPreconditionInvalid() { var f = new ZenFunction <int, bool>(x => true); Assert.AreEqual(0, f.GenerateInputs(precondition: x => false).Count()); }
public void TestSymbolicExecutionStrings() { var f = new ZenFunction <string, int>(x => If(x.Contains("a"), 1, If <int>(x.Contains("b"), 2, 3))); Assert.AreEqual(3, f.GenerateInputs().Count()); }
public void TestSymbolicExecutionStringIndexOf() { var f = new ZenFunction <string, bool, BigInteger>((s, b) => s.IndexOf(If <string>(b, "hello", "world)"))); Assert.AreEqual(2, f.GenerateInputs().Count()); }
public void TestSymbolicExecutionStringReplace() { var f = new ZenFunction <string, bool, string>((s, b) => s.ReplaceFirst("hello", If <string>(b, "x", "y"))); Assert.AreEqual(2, f.GenerateInputs().Count()); }
public void TestSymbolicExecutionStringSubstring() { var f = new ZenFunction <string, bool, string>((s, b) => s.Substring(new BigInteger(0), If <BigInteger>(b, new BigInteger(1), new BigInteger(2)))); Assert.AreEqual(2, f.GenerateInputs().Count()); }
public void TestSymbolicExecutionOptions() { var f = new ZenFunction <Option <int>, Option <int> >(x => x.Where(v => v == 1)); Assert.AreEqual(2, f.GenerateInputs().Count()); }