public void Test(int rootNumber, string exprString) { Entity expr = exprString; var vars = expr.Vars.ToArray(); var res = MathS.SolveBooleanTable(expr, vars); if (res is null && rootNumber == 0) { return; // success } // null case should explicitly quit the scope if (res is null) { Assert.True(false, $"0 roots instead of {rootNumber}"); return; } Assert.Equal(rootNumber, res.RowCount); var dict = new Dictionary <Variable, Entity>(); var count = vars.Length; for (int i = 0; i < res.RowCount; i++) { for (int j = 0; j < count; j++) { dict[vars[j]] = res[i, j]; } Assert.True(expr.Substitute(dict).EvalBoolean()); } }
[Fact] public void InvalidNumberOfArguments1() => Assert.Throws <WrongNumberOfArgumentsException>(() => MathS.SolveBooleanTable("a + b", "a"));