diff --git a/codego/aussagenlogik/recursion/recursion_test.go b/codego/aussagenlogik/recursion/recursion_test.go index fb43757..0961767 100644 --- a/codego/aussagenlogik/recursion/recursion_test.go +++ b/codego/aussagenlogik/recursion/recursion_test.go @@ -23,25 +23,124 @@ func TestEvalLiteral(test *testing.T) { var val int var fml formulae.Formula var I []string + fml = schema.ParseExpr("A0") I = []string{"A0"} val = recursion.Eval(fml, I) assert.Equal(1, val) + fml = schema.ParseExpr("A0") I = []string{} val = recursion.Eval(fml, I) assert.Equal(0, val) + fml = schema.ParseExpr("! A0") I = []string{"A0"} val = recursion.Eval(fml, I) assert.Equal(0, val) + fml = schema.ParseExpr("! A0") I = []string{} val = recursion.Eval(fml, I) assert.Equal(1, val) } -func TestEvalComplex1(test *testing.T) { +func TestEvalNegation(test *testing.T) { + var assert = assert.New(test) + var val int + var fml formulae.Formula + var I []string + + fml = schema.ParseExpr("A4 || ! A4") + I = []string{} + val = recursion.Eval(fml, I) + assert.Equal(1, val) + + fml = schema.ParseExpr("A4 && ! A4") + I = []string{} + val = recursion.Eval(fml, I) + assert.Equal(0, val) +} + +func TestEvalConjunction(test *testing.T) { + var assert = assert.New(test) + var val int + var fml formulae.Formula + var I []string + + fml = schema.ParseExpr("A0 && A1") + I = []string{"A0"} + val = recursion.Eval(fml, I) + assert.Equal(0, val) + + fml = schema.ParseExpr("A0 && A1") + I = []string{"A0", "A1"} + val = recursion.Eval(fml, I) + assert.Equal(1, val) +} + +func TestEvalDisjunction(test *testing.T) { + var assert = assert.New(test) + var val int + var fml formulae.Formula + var I []string + + fml = schema.ParseExpr("A0 || A1") + I = []string{"A0"} + val = recursion.Eval(fml, I) + assert.Equal(1, val) + + fml = schema.ParseExpr("A0 || A1") + I = []string{"A7"} + val = recursion.Eval(fml, I) + assert.Equal(0, val) +} + +func TestEvalImplication(test *testing.T) { + var assert = assert.New(test) + var val int + var fml formulae.Formula + var I []string + + fml = schema.ParseExpr("A0 -> A1") + I = []string{"A0"} + val = recursion.Eval(fml, I) + assert.Equal(0, val) + + fml = schema.ParseExpr("A0 -> A1") + I = []string{"A0", "A1"} + val = recursion.Eval(fml, I) + assert.Equal(1, val) + + fml = schema.ParseExpr("A0 -> A1") + I = []string{"A7"} + val = recursion.Eval(fml, I) + assert.Equal(1, val) +} + +func TestEvalIff(test *testing.T) { + var assert = assert.New(test) + var val int + var fml formulae.Formula + var I []string + + fml = schema.ParseExpr("A0 <-> A1") + I = []string{"A0"} + val = recursion.Eval(fml, I) + assert.Equal(0, val) + + fml = schema.ParseExpr("A0 <-> A1") + I = []string{"A0", "A1"} + val = recursion.Eval(fml, I) + assert.Equal(1, val) + + fml = schema.ParseExpr("A0 <-> A1") + I = []string{"A7"} + val = recursion.Eval(fml, I) + assert.Equal(1, val) +} + +func TestEvalComplex(test *testing.T) { var assert = assert.New(test) var val int var fml formulae.Formula @@ -50,26 +149,24 @@ func TestEvalComplex1(test *testing.T) { I = []string{"A0", "A2"} val = recursion.Eval(fml, I) assert.Equal(1, val) + I = []string{"A0", "A3"} val = recursion.Eval(fml, I) assert.Equal(1, val) + I = []string{"A0"} val = recursion.Eval(fml, I) assert.Equal(0, val) + I = []string{"A4", "A8"} val = recursion.Eval(fml, I) assert.Equal(1, val) -} -func TestEvalComplex2(test *testing.T) { - var assert = assert.New(test) - var val int - var fml formulae.Formula - var I []string fml = schema.ParseExpr("( ! A0 || (( A0 && A3 ) || ! A2 ))") I = []string{"A0", "A2"} val = recursion.Eval(fml, I) assert.Equal(0, val) + I = []string{"A0", "A3"} val = recursion.Eval(fml, I) assert.Equal(1, val) @@ -298,12 +395,14 @@ func TestNNFatoms(test *testing.T) { nnf_expected = formulae.Atom("A7") fml = schema.ParseExpr("A7") assert.Equal(nnf_expected.GetExpr(), recursion.NNF(fml).GetExpr()) + fml = schema.ParseExpr("!! A7") assert.Equal(nnf_expected.GetExpr(), recursion.NNF(fml).GetExpr()) nnf_expected = formulae.NegatedAtom("A7") fml = schema.ParseExpr("! A7") assert.Equal(nnf_expected.GetExpr(), recursion.NNF(fml).GetExpr()) + fml = schema.ParseExpr("!!! A7") assert.Equal(nnf_expected.GetExpr(), recursion.NNF(fml).GetExpr()) }