diff --git a/input_scv.go b/input_csv.go similarity index 100% rename from input_scv.go rename to input_csv.go diff --git a/input_csv_test.go b/input_csv_test.go new file mode 100644 index 0000000..fd1aed0 --- /dev/null +++ b/input_csv_test.go @@ -0,0 +1,29 @@ +package script_test + +import ( + "slices" + "testing" + + "code.uint32.ru/dmitry/script" +) + +func TestCSVReader(t *testing.T) { + t.Parallel() + r, err := script.NewCSVReader("testdata/sample_csv.csv") + if err != nil { + t.Fatal(err) + } + + want := []string{"one", "two", "three"} + + for range 2 { + row, err := r.Read() + if err != nil { + t.Fatal(err) + } + + if !slices.Equal(row, want) { + t.Fatalf("rows not equal, want: %v, have: %v", want, row) + } + } +} diff --git a/output_csv_test.go b/output_csv_test.go new file mode 100644 index 0000000..6a23385 --- /dev/null +++ b/output_csv_test.go @@ -0,0 +1,42 @@ +package script + +import ( + "bytes" + "os" + "testing" +) + +func TestCSVWriter(t *testing.T) { + path := "testdata/output_csv.csv" + + os.Remove(path) + defer os.Remove(path) + + w, err := newCSVwriter(path) + if err != nil { + t.Fatal(err) + } + + want := []byte("one,two,three\none,two,three\n") + + row := []string{"one", "two", "three"} + + for range 2 { + if err := w.Write(row); err != nil { + t.Fatal(err) + } + } + + if err := w.Close(); err != nil { + t.Fatal(err) + } + + b, err := os.ReadFile(path) + if err != nil { + t.Fatalf("err reading output file: %s", err) + } + + if !bytes.Equal(want, b) { + t.Errorf("incorrect result, want: %s, have: %s", string(want), string(b)) + } +} diff --git a/testdata/sample_csv.csv b/testdata/sample_csv.csv new file mode 100644 index 0000000..42753f1 --- /dev/null +++ b/testdata/sample_csv.csv @@ -0,0 +1,2 @@ +one,two,three +one,two,three