diff --git a/encode/json.go b/encode/json.go index ce5916205f754b1c5ccd9e0bafc25ba4678fc11b..7c6087568351431f545f6aeb89277f8dfcfe85bb 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 f023937ec1b11be327e7e5aafaad1d1421f828cf..a83b1cc3489ac09612d88e7f8cc89dba9ef525ec 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 10ee250cac526b53e8a305e4f5b9d5ffa4e4e377..3364f8e4db9f121d60df5ac431bcaa7c88d3282c 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 d85ec2ad18eb41e333b05aac8b23cc89fb50962e..54dd3cfdd83f48ab09cbde8268950d95766a9791 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{}