public void TestMatchesUnsatisfiable()
        {
            using (var ctx = new Context())
            {
                int protocolNumber  = 6;
                var networkProtocol = new NetworkProtocol
                {
                    Any            = false,
                    ProtocolNumber = protocolNumber
                };

                string     protocolVariableName = "protocol";
                BitVecExpr protocolVariable     = ctx.MkConst(protocolVariableName, ctx.MkBitVecSort(8)) as BitVecExpr;
                Solver     s = ctx.MkSolver();
                s.Assert(ctx.MkNot(networkProtocol.Matches(ctx, protocolVariable)));
                Status result = s.Check();
                Assert.AreEqual(Status.SATISFIABLE, result);
                int binding;
                Assert.IsTrue(RetrieveModelValue.TryRetrieveInteger(protocolVariableName, s.Model, out binding));
                Assert.AreNotEqual(protocolNumber, binding);
            }
        }
Beispiel #2
0
        public void TestSingle()
        {
            using (var ctx = new Context())
            {
                int single = 64;
                var range  = new PortRange
                {
                    Low  = single,
                    High = single
                };

                string     portVariableName = "port";
                BitVecExpr variable         = ctx.MkConst(portVariableName, ctx.MkBitVecSort(16)) as BitVecExpr;
                Solver     s = ctx.MkSolver();
                s.Assert(range.Contains(ctx, variable));
                Status result = s.Check();
                Assert.AreEqual(Status.SATISFIABLE, result);
                int binding;
                Assert.IsTrue(RetrieveModelValue.TryRetrieveInteger(portVariableName, s.Model, out binding));
                Assert.AreEqual(single, binding);
            }
        }