MCPcopy
hub / github.com/google/mangle / TestUnifyPositive

Function TestUnifyPositive

unionfind/unionfind_test.go:37–86  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

35}
36
37func TestUnifyPositive(t *testing.T) {
38 tests := []struct {
39 name string
40 left []ast.BaseTerm
41 right []ast.BaseTerm
42 want map[ast.Variable]ast.BaseTerm
43 }{
44 {name: "empty"},
45 {
46 name: "basic",
47 left: []ast.BaseTerm{term("X")},
48 right: []ast.BaseTerm{term("/bar")},
49 want: map[ast.Variable]ast.BaseTerm{ast.Variable{"X"}: term("/bar")},
50 },
51 {
52 name: "basic wildcard",
53 left: []ast.BaseTerm{term("_")},
54 right: []ast.BaseTerm{term("/bar")},
55 },
56 {
57 name: "two vars",
58 left: []ast.BaseTerm{term("X"), term("Y")},
59 right: []ast.BaseTerm{term("Y"), term("/bar")},
60 want: map[ast.Variable]ast.BaseTerm{
61 ast.Variable{"X"}: term("/bar"),
62 ast.Variable{"Y"}: term("/bar"),
63 },
64 },
65 {
66 name: "two vars wildcard",
67 left: []ast.BaseTerm{term("_"), term("_")},
68 right: []ast.BaseTerm{term("Y"), term("/bar")},
69 },
70 }
71 for _, test := range tests {
72 uf, err := UnifyTerms(test.left, test.right)
73 if err != nil {
74 t.Errorf("%s: UnifyTerms(%v, %v) failed %v", test.name, test.left, test.right, err)
75 continue
76 }
77 for key, val := range test.want {
78 res := uf.Get(key)
79 if res == nil {
80 t.Errorf("%s: UnifyTerms(%v, %v)=%v missing %s", test.name, test.left, test.right, uf, key)
81 } else if !res.Equals(val) {
82 t.Errorf("%s: UnifyTerms(%v, %v)=%v want %v -> %v", test.name, test.left, test.right, uf, key, val)
83 }
84 }
85 }
86}
87
88func TestUnifyNegative(t *testing.T) {
89 tests := []struct {

Callers

nothing calls this directly

Calls 4

termFunction · 0.85
UnifyTermsFunction · 0.85
GetMethod · 0.65
EqualsMethod · 0.65

Tested by

no test coverage detected