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

Function TestReducerCollectCountDistinct

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

Source from the content-addressed store, hash-verified

167}
168
169func TestReducerCollectCountDistinct(t *testing.T) {
170 tests := []struct {
171 rows [][]ast.Constant
172 want ast.Constant
173 }{
174 {
175 rows: [][]ast.Constant{
176 {ast.Number(1)},
177 {ast.Number(1)},
178 {ast.Number(3)},
179 },
180 want: ast.List([]ast.Constant{
181 ast.Number(1),
182 ast.Number(3),
183 }),
184 },
185 {
186 rows: [][]ast.Constant{
187 {ast.Number(1), ast.Number(2)},
188 {ast.Number(1), ast.Number(2)},
189 {ast.Number(3), ast.Number(4)},
190 },
191 want: ast.List([]ast.Constant{
192 *pair(ast.Number(1), ast.Number(2)),
193 *pair(ast.Number(3), ast.Number(4)),
194 }),
195 },
196 {
197 rows: [][]ast.Constant{
198 {ast.Number(1), ast.Number(2), ast.Number(7)},
199 {ast.Number(3), ast.Number(4), ast.Number(7)},
200 },
201 want: ast.List([]ast.Constant{
202 *pair(ast.Number(1), *pair(ast.Number(2), ast.Number(7))),
203 *pair(ast.Number(3), *pair(ast.Number(4), ast.Number(7))),
204 }),
205 },
206 }
207 for _, test := range tests {
208 var rows []ast.ConstSubstList
209 width := len(test.rows[0])
210 for _, row := range test.rows {
211 rows = append(rows, makeConstSubstList(makeVarList(width), row))
212 }
213 expr := ast.ApplyFn{symbols.CollectDistinct, makeVarBaseTerms(width)}
214 got, err := EvalReduceFn(expr, rows)
215 if err != nil {
216 t.Fatalf("EvalReduceFn(%v,%v) failed with %v", expr, rows, err)
217 }
218 if !got.Equals(test.want) {
219 t.Errorf("EvalReduceFn(%v,%v)=%v want %v", expr, rows, got, test.want)
220 }
221 expr = ast.ApplyFn{symbols.CountDistinct, makeVarBaseTerms(width)}
222 got, err = EvalReduceFn(expr, rows)
223 if err != nil {
224 t.Fatalf("EvalReduceFn(%v,%v) count_distinct failed with %v", expr, rows, err)
225 }
226 iter, _ := test.want.ListSeq()

Callers

nothing calls this directly

Calls 9

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

Tested by

no test coverage detected