Пример #1
0
        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));
        }
Пример #2
0
        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)}]");
            }
        }
Пример #3
0
        /// <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));
        }
Пример #4
0
        public void TestSymbolicExecutionListSorting()
        {
            var f = new ZenFunction <IList <int>, IList <int> >(x => x.Sort());

            Assert.AreEqual(6, f.GenerateInputs(listSize: 3, checkSmallerLists: false).Count());
        }
Пример #5
0
        public void TestSymbolicExecutionListContains()
        {
            var f = new ZenFunction <IList <int>, bool>(x => x.Contains(3));

            Assert.AreEqual(6, f.GenerateInputs().Count());
        }
Пример #6
0
        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());
        }
Пример #7
0
        public void TestSymbolicExecutionBitvectors()
        {
            var f1 = new ZenFunction <int, int, int, int>((x, y, z) => ((x | y) & z) ^ x);

            Assert.AreEqual(1, f1.GenerateInputs().Count());
        }
Пример #8
0
        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());
        }
Пример #9
0
        public void TestSymbolicExecutionPreconditionInvalid()
        {
            var f = new ZenFunction <int, bool>(x => true);

            Assert.AreEqual(0, f.GenerateInputs(precondition: x => false).Count());
        }
Пример #10
0
        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());
        }
Пример #11
0
        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());
        }
Пример #12
0
        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());
        }
Пример #13
0
        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());
        }
Пример #14
0
        public void TestSymbolicExecutionOptions()
        {
            var f = new ZenFunction <Option <int>, Option <int> >(x => x.Where(v => v == 1));

            Assert.AreEqual(2, f.GenerateInputs().Count());
        }