blob: 5911eccac2c180a502343e5ffcbb2754bfb79c83 [file] [log] [blame]
Serge Bazanskide097942023-06-27 13:55:10 +02001package cartesian
2
3import (
4 "fmt"
5 "testing"
6
7 "github.com/google/go-cmp/cmp"
8)
9
10func TestProduct(t *testing.T) {
11 for i, te := range []struct {
12 data [][]string
13 want [][]string
14 }{
15 {
16 data: [][]string{
17 {"a", "b"},
18 {"c", "d"},
19 },
20 want: [][]string{
21 {"a", "c"},
22 {"a", "d"},
23 {"b", "c"},
24 {"b", "d"},
25 },
26 },
27 {
28 data: [][]string{
29 {"a", "b"},
30 },
31 want: [][]string{
32 {"a"},
33 {"b"},
34 },
35 },
36 {
37 data: [][]string{},
38 want: nil,
39 },
40 } {
41 t.Run(fmt.Sprintf("%d", i), func(t *testing.T) {
42 got := Product(te.data...)
43 if diff := cmp.Diff(te.want, got); diff != "" {
44 t.Fatalf("Diff:\n%s", diff)
45 }
46 })
47 }
48}