Skip to content
Snippets Groups Projects
Commit 6b7780bb authored by Semyon Krestyaninov's avatar Semyon Krestyaninov :dog2:
Browse files

wip

parent f474f2fc
No related branches found
No related tags found
No related merge requests found
...@@ -11,7 +11,9 @@ import ( ...@@ -11,7 +11,9 @@ import (
// при кодировании или декодировании JSON. // при кодировании или декодировании JSON.
const bufferSize = 4096 const bufferSize = 4096
var JSON = &jsonCodec{} func JSONCodec() Codec {
return &jsonCodec{}
}
type jsonCodec struct{} type jsonCodec struct{}
......
...@@ -15,7 +15,7 @@ func TestReader(t *testing.T) { ...@@ -15,7 +15,7 @@ func TestReader(t *testing.T) {
} }
t.Run("json", func(t *testing.T) { t.Run("json", func(t *testing.T) {
t.Run("primitive", 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() next := reader.Next()
assert.True(t, next) assert.True(t, next)
...@@ -27,7 +27,7 @@ func TestReader(t *testing.T) { ...@@ -27,7 +27,7 @@ func TestReader(t *testing.T) {
assert.Equal(t, 5, current) assert.Equal(t, 5, current)
}) })
t.Run("struct", func(t *testing.T) { 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() next := reader.Next()
assert.True(t, next) assert.True(t, next)
...@@ -39,7 +39,7 @@ func TestReader(t *testing.T) { ...@@ -39,7 +39,7 @@ func TestReader(t *testing.T) {
assert.Equal(t, user{"Gopher"}, current) assert.Equal(t, user{"Gopher"}, current)
}) })
t.Run("valid array", func(t *testing.T) { 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 var result []int
for reader.Next() { for reader.Next() {
result = append(result, reader.Current()) result = append(result, reader.Current())
...@@ -49,7 +49,7 @@ func TestReader(t *testing.T) { ...@@ -49,7 +49,7 @@ func TestReader(t *testing.T) {
assert.Equal(t, []int{1, 2, 3}, result) assert.Equal(t, []int{1, 2, 3}, result)
}) })
t.Run("invalid array", func(t *testing.T) { 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 var result []int
for reader.Next() { for reader.Next() {
result = append(result, reader.Current()) result = append(result, reader.Current())
...@@ -61,7 +61,7 @@ func TestReader(t *testing.T) { ...@@ -61,7 +61,7 @@ func TestReader(t *testing.T) {
}) })
t.Run("yaml", func(t *testing.T) { t.Run("yaml", func(t *testing.T) {
t.Run("struct", 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() next := reader.Next()
assert.True(t, next) assert.True(t, next)
err := reader.Err() err := reader.Err()
...@@ -73,7 +73,7 @@ func TestReader(t *testing.T) { ...@@ -73,7 +73,7 @@ func TestReader(t *testing.T) {
input := `name: "Gopher" input := `name: "Gopher"
--- ---
name: "John"` name: "John"`
reader := encode.NewReader[user](encode.YAML, strings.NewReader(input)) reader := encode.NewReader[user](encode.YAMLCodec(), strings.NewReader(input))
var result []user var result []user
for reader.Next() { for reader.Next() {
result = append(result, reader.Current()) result = append(result, reader.Current())
......
...@@ -16,7 +16,7 @@ func TestWriter(t *testing.T) { ...@@ -16,7 +16,7 @@ func TestWriter(t *testing.T) {
t.Run("json", func(t *testing.T) { t.Run("json", func(t *testing.T) {
t.Run("valid array", func(t *testing.T) { t.Run("valid array", func(t *testing.T) {
buf := &bytes.Buffer{} buf := &bytes.Buffer{}
writer := encode.NewWriter[int](encode.JSON, buf) writer := encode.NewWriter[int](encode.JSONCodec(), buf)
err := writer.Write(1, 2, 3) err := writer.Write(1, 2, 3)
require.NoError(t, err) require.NoError(t, err)
...@@ -31,7 +31,7 @@ func TestWriter(t *testing.T) { ...@@ -31,7 +31,7 @@ func TestWriter(t *testing.T) {
}) })
t.Run("struct", func(t *testing.T) { t.Run("struct", func(t *testing.T) {
buf := &bytes.Buffer{} buf := &bytes.Buffer{}
writer := encode.NewWriter[user](encode.JSON, buf) writer := encode.NewWriter[user](encode.JSONCodec(), buf)
err := writer.Write(user{"Gopher"}, user{"John"}) err := writer.Write(user{"Gopher"}, user{"John"})
require.NoError(t, err) require.NoError(t, err)
...@@ -45,7 +45,7 @@ func TestWriter(t *testing.T) { ...@@ -45,7 +45,7 @@ func TestWriter(t *testing.T) {
t.Run("yaml", func(t *testing.T) { t.Run("yaml", func(t *testing.T) {
t.Run("valid array", func(t *testing.T) { t.Run("valid array", func(t *testing.T) {
buf := &bytes.Buffer{} buf := &bytes.Buffer{}
writer := encode.NewWriter[user](encode.YAML, buf) writer := encode.NewWriter[user](encode.YAMLCodec(), buf)
err := writer.Write( err := writer.Write(
user{Name: "Gopher"}, user{Name: "Gopher"},
......
...@@ -8,7 +8,9 @@ import ( ...@@ -8,7 +8,9 @@ import (
"gopkg.in/yaml.v3" "gopkg.in/yaml.v3"
) )
var YAML = &yamlCodec{} func YAMLCodec() Codec {
return &yamlCodec{}
}
type yamlCodec struct{} type yamlCodec struct{}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment