| 52 | } |
| 53 | |
| 54 | func TestStructArray(t *testing.T) { |
| 55 | type T struct { |
| 56 | Foo string |
| 57 | } |
| 58 | |
| 59 | emptyTSlice := []T{} |
| 60 | |
| 61 | testData := []struct { |
| 62 | csdata []byte |
| 63 | accepter []T |
| 64 | value []T |
| 65 | }{ |
| 66 | { |
| 67 | []byte(`[{"foo": "bar"}]`), |
| 68 | emptyTSlice, |
| 69 | []T{{Foo: "bar"}}, |
| 70 | }, |
| 71 | } |
| 72 | |
| 73 | for idx, test := range testData { |
| 74 | values, err := newValues(&source.ChangeSet{ |
| 75 | Data: test.csdata, |
| 76 | }) |
| 77 | if err != nil { |
| 78 | t.Fatal(err) |
| 79 | } |
| 80 | |
| 81 | v, err := values.Get() |
| 82 | if err != nil { |
| 83 | t.Fatal(err) |
| 84 | } |
| 85 | err = v.Scan(&test.accepter) |
| 86 | if err != nil { |
| 87 | t.Fatal(err) |
| 88 | } |
| 89 | if !reflect.DeepEqual(test.accepter, test.value) { |
| 90 | t.Fatalf("No.%d Expected %v got %v", idx, test.value, test.accepter) |
| 91 | } |
| 92 | } |
| 93 | } |