From fe9568d7aef23c14109c4b6d8d2b9ef4c46c4251 Mon Sep 17 00:00:00 2001 From: Dmitry Fedotov Date: Sun, 31 Aug 2025 15:20:52 +0300 Subject: [PATCH] test: add tests for csv reader and writer --- input_scv.go => input_csv.go | 0 input_csv_test.go | 29 +++++++++++++++++++++++++ output_csv_test.go | 42 ++++++++++++++++++++++++++++++++++++ testdata/sample_csv.csv | 2 ++ 4 files changed, 73 insertions(+) rename input_scv.go => input_csv.go (100%) create mode 100644 input_csv_test.go create mode 100644 output_csv_test.go create mode 100644 testdata/sample_csv.csv 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