From 6b7780bb69289f7c463c36780611059fa118f5d8 Mon Sep 17 00:00:00 2001 From: Semyon Krestyaninov <krestyaninov@perx.ru> Date: Wed, 19 Feb 2025 08:47:27 +0300 Subject: [PATCH] wip --- encode/json.go | 4 +++- encode/reader_test.go | 12 ++++++------ encode/writer_test.go | 6 +++--- encode/yaml.go | 4 +++- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/encode/json.go b/encode/json.go index ce591620..7c608756 100644 --- a/encode/json.go +++ b/encode/json.go @@ -11,7 +11,9 @@ import ( // при кодировании или декодировании JSON. const bufferSize = 4096 -var JSON = &jsonCodec{} +func JSONCodec() Codec { + return &jsonCodec{} +} type jsonCodec struct{} diff --git a/encode/reader_test.go b/encode/reader_test.go index f023937e..a83b1cc3 100644 --- a/encode/reader_test.go +++ b/encode/reader_test.go @@ -15,7 +15,7 @@ func TestReader(t *testing.T) { } t.Run("json", func(t *testing.T) { t.Run("primitive", func(t *testing.T) { - reader := encode.NewReader[int](encode.JSON, strings.NewReader("5")) + reader := encode.NewReader[int](encode.JSONCodec(), strings.NewReader("5")) next := reader.Next() assert.True(t, next) @@ -27,7 +27,7 @@ func TestReader(t *testing.T) { assert.Equal(t, 5, current) }) t.Run("struct", func(t *testing.T) { - reader := encode.NewReader[user](encode.JSON, strings.NewReader(`{"name":"Gopher"}`)) + reader := encode.NewReader[user](encode.JSONCodec(), strings.NewReader(`{"name":"Gopher"}`)) next := reader.Next() assert.True(t, next) @@ -39,7 +39,7 @@ func TestReader(t *testing.T) { assert.Equal(t, user{"Gopher"}, current) }) t.Run("valid array", func(t *testing.T) { - reader := encode.NewReader[int](encode.JSON, strings.NewReader("[1, 2, 3]")) + reader := encode.NewReader[int](encode.JSONCodec(), strings.NewReader("[1, 2, 3]")) var result []int for reader.Next() { result = append(result, reader.Current()) @@ -49,7 +49,7 @@ func TestReader(t *testing.T) { assert.Equal(t, []int{1, 2, 3}, result) }) t.Run("invalid array", func(t *testing.T) { - reader := encode.NewReader[int](encode.JSON, strings.NewReader(`[1, 2, "3", 4]`)) + reader := encode.NewReader[int](encode.JSONCodec(), strings.NewReader(`[1, 2, "3", 4]`)) var result []int for reader.Next() { result = append(result, reader.Current()) @@ -61,7 +61,7 @@ func TestReader(t *testing.T) { }) t.Run("yaml", func(t *testing.T) { t.Run("struct", func(t *testing.T) { - reader := encode.NewReader[user](encode.YAML, strings.NewReader(`name: "Gopher"`)) + reader := encode.NewReader[user](encode.YAMLCodec(), strings.NewReader(`name: "Gopher"`)) next := reader.Next() assert.True(t, next) err := reader.Err() @@ -73,7 +73,7 @@ func TestReader(t *testing.T) { input := `name: "Gopher" --- name: "John"` - reader := encode.NewReader[user](encode.YAML, strings.NewReader(input)) + reader := encode.NewReader[user](encode.YAMLCodec(), strings.NewReader(input)) var result []user for reader.Next() { result = append(result, reader.Current()) diff --git a/encode/writer_test.go b/encode/writer_test.go index 10ee250c..3364f8e4 100644 --- a/encode/writer_test.go +++ b/encode/writer_test.go @@ -16,7 +16,7 @@ func TestWriter(t *testing.T) { t.Run("json", func(t *testing.T) { t.Run("valid array", func(t *testing.T) { buf := &bytes.Buffer{} - writer := encode.NewWriter[int](encode.JSON, buf) + writer := encode.NewWriter[int](encode.JSONCodec(), buf) err := writer.Write(1, 2, 3) require.NoError(t, err) @@ -31,7 +31,7 @@ func TestWriter(t *testing.T) { }) t.Run("struct", func(t *testing.T) { buf := &bytes.Buffer{} - writer := encode.NewWriter[user](encode.JSON, buf) + writer := encode.NewWriter[user](encode.JSONCodec(), buf) err := writer.Write(user{"Gopher"}, user{"John"}) require.NoError(t, err) @@ -45,7 +45,7 @@ func TestWriter(t *testing.T) { t.Run("yaml", func(t *testing.T) { t.Run("valid array", func(t *testing.T) { buf := &bytes.Buffer{} - writer := encode.NewWriter[user](encode.YAML, buf) + writer := encode.NewWriter[user](encode.YAMLCodec(), buf) err := writer.Write( user{Name: "Gopher"}, diff --git a/encode/yaml.go b/encode/yaml.go index d85ec2ad..54dd3cfd 100644 --- a/encode/yaml.go +++ b/encode/yaml.go @@ -8,7 +8,9 @@ import ( "gopkg.in/yaml.v3" ) -var YAML = &yamlCodec{} +func YAMLCodec() Codec { + return &yamlCodec{} +} type yamlCodec struct{} -- GitLab