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); } }
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); } }