3 Commits

Author SHA1 Message Date
fe9568d7ae test: add tests for csv reader and writer 2025-08-31 15:20:52 +03:00
454c632462 feat: revise API, add README.md, LICENSE (#2)
Co-authored-by: Dmitry Fedotov <dmitry@uint32.ru>
Co-committed-by: Dmitry Fedotov <dmitry@uint32.ru>
2025-08-31 13:38:54 +03:00
858cae9547 fix: obey main context 2025-08-31 00:25:58 +03:00
4 changed files with 73 additions and 0 deletions

29
input_csv_test.go Normal file
View File

@@ -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)
}
}
}

42
output_csv_test.go Normal file
View File

@@ -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))
}
}

2
testdata/sample_csv.csv vendored Normal file
View File

@@ -0,0 +1,2 @@
one,two,three
one,two,three
1 one two three
2 one two three