示例#1
0
        public static void AreEqual(BitVecExpr expr, Tv[] expectedTvArray, State state)
        {
            Contract.Requires(expr != null);
            Contract.Requires(expectedTvArray != null);
            Contract.Requires(state != null);

            int nBits = (int)expr.SortSize;

            Assert.AreEqual(nBits, expectedTvArray.Length);
            Tv[] actualTvArray = ToolsZ3.GetTvArray(expr, (int)expr.SortSize, state.Solver, state.Solver_U, state.Ctx);
            Assert.AreEqual(actualTvArray.Length, nBits);
            Assert.AreEqual(expectedTvArray.Length, nBits);

            ulong?actualLong   = ToolsZ3.ToUlong(actualTvArray);
            ulong?expectedLong = ToolsZ3.ToUlong(expectedTvArray);

            if (actualLong.HasValue && expectedLong.HasValue)
            {
                Assert.AreEqual(actualLong.Value, expectedLong.Value, "Expr " + expr + ": Expected value " + expectedLong.Value + " while actual value is " + actualLong.Value);
            }
            else
            {
                for (int i = 0; i < nBits; ++i)
                {
                    Assert.AreEqual(expectedTvArray[i], actualTvArray[i], "Expr " + expr + ": Pos " + i + ": expected value " + ToolsZ3.ToStringBin(expectedTvArray) + " while actual value is " + ToolsZ3.ToStringBin(actualTvArray));
                }
            }
        }
示例#2
0
        public static void AreEqual(Rn name, Tv[] expectedTvArray, State state)
        {
            Contract.Requires(state != null);
            Contract.Requires(expectedTvArray != null);

            Assert.IsNotNull(state);

            int nBits = RegisterTools.NBits(name);

            Assert.AreEqual(nBits, expectedTvArray.Length);
            Tv[] actualTvArray = state.GetTvArray(name);
            Assert.AreEqual(nBits, actualTvArray.Length);

            ulong?actualLong   = ToolsZ3.ToUlong(actualTvArray);
            ulong?expectedLong = ToolsZ3.ToUlong(expectedTvArray);

            if (actualLong.HasValue && expectedLong.HasValue)
            {
                Assert.AreEqual(expectedLong.Value, actualLong.Value, "Reg " + name + ": Expected value " + expectedLong.Value + " while actual value is " + actualLong.Value);
            }
            else
            {
                AreEqual(expectedTvArray, actualTvArray);
            }
        }