public void TestMatchAny() { using (var ctx = new Context()) { var networkProtocol = new NetworkProtocol { Any = true }; 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.UNSATISFIABLE, result); } }
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); } }