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

Function TestReducerCollect

functional/functional_test.go:112–167  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

110}
111
112func TestReducerCollect(t *testing.T) {
113 tests := []struct {
114 rows [][]ast.Constant
115 want ast.Constant
116 }{
117 {
118 rows: [][]ast.Constant{
119 {ast.Number(1)},
120 {ast.Number(1)},
121 {ast.Number(3)},
122 },
123 want: ast.List([]ast.Constant{
124 ast.Number(1),
125 ast.Number(1),
126 ast.Number(3),
127 }),
128 },
129 {
130 rows: [][]ast.Constant{
131 {ast.Number(1), ast.Number(2)},
132 {ast.Number(1), ast.Number(2)},
133 {ast.Number(3), ast.Number(4)},
134 },
135 want: ast.List([]ast.Constant{
136 *pair(ast.Number(1), ast.Number(2)),
137 *pair(ast.Number(1), ast.Number(2)),
138 *pair(ast.Number(3), ast.Number(4)),
139 }),
140 },
141 {
142 rows: [][]ast.Constant{
143 {ast.Number(1), ast.Number(2), ast.Number(7)},
144 {ast.Number(3), ast.Number(4), ast.Number(7)},
145 },
146 want: ast.List([]ast.Constant{
147 *pair(ast.Number(1), *pair(ast.Number(2), ast.Number(7))),
148 *pair(ast.Number(3), *pair(ast.Number(4), ast.Number(7))),
149 }),
150 },
151 }
152 for _, test := range tests {
153 var rows []ast.ConstSubstList
154 width := len(test.rows[0])
155 for _, row := range test.rows {
156 rows = append(rows, makeConstSubstList(makeVarList(width), row))
157 }
158 expr := ast.ApplyFn{symbols.Collect, makeVarBaseTerms(width)}
159 got, err := EvalReduceFn(expr, rows)
160 if err != nil {
161 t.Fatalf("EvalReduceFn(%v,%v) failed with %v", expr, rows, err)
162 }
163 if !got.Equals(test.want) {
164 t.Errorf("EvalReduceFn(%v,%v)=%v want %v", expr, rows, got, test.want)
165 }
166 }
167}
168
169func TestReducerCollectCountDistinct(t *testing.T) {

Callers

nothing calls this directly

Calls 8

NumberFunction · 0.92
ListFunction · 0.92
makeConstSubstListFunction · 0.85
makeVarListFunction · 0.85
makeVarBaseTermsFunction · 0.85
EvalReduceFnFunction · 0.85
pairFunction · 0.70
EqualsMethod · 0.65

Tested by

no test coverage detected