(t *testing.T)
| 167 | } |
| 168 | |
| 169 | func 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() |
nothing calls this directly
no test coverage detected