diff --git a/csvstruct.go b/csvstruct.go index 1eb9799..2a7eb14 100644 --- a/csvstruct.go +++ b/csvstruct.go @@ -58,3 +58,7 @@ func reverse(in []string) map[string]int { } return m } + +// TODO: NewEncoder/EncodeNext -- header will be fields in first item... +// TODO: Encode/Decode map[string]interface{} ? +// TODO: Encode/Decode non-string values? diff --git a/csvstruct_test.go b/csvstruct_test.go index 81a398f..5b54e65 100644 --- a/csvstruct_test.go +++ b/csvstruct_test.go @@ -2,6 +2,7 @@ package csvstruct import ( "io" + "reflect" "strings" "testing" ) @@ -33,8 +34,8 @@ ignored`, out: []row{{"", "", ""}}, }} { d := NewDecoder(strings.NewReader(c.data)) + rows := []row{} var row row - i := 0 for { err := d.DecodeNext(&row) if err == io.EOF { @@ -44,10 +45,10 @@ ignored`, t.Errorf("%v", err) break } - if c.out[i] != row { - t.Errorf("unexpected item %d, got %+v, want %+v", i, row, c.out[i]) - } - i++ + rows = append(rows, row) + } + if reflect.DeepEqual(rows, c.out) { + t.Errorf("unexpected result, got %v, want %v", rows, c.out) } } }