cli/internal/jsonmerge/array_test.go
2024-04-04 01:20:57 -07:00

86 lines
2 KiB
Go

package jsonmerge
import (
"bytes"
"io"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestArrayMerger_singleEmptyArray(t *testing.T) {
merger := NewArrayMerger()
w := &bytes.Buffer{}
r1 := bytes.NewBufferString(`[]`)
p1 := merger.NewPage(r1, true)
n, err := io.Copy(w, p1)
require.NoError(t, err)
assert.Equal(t, int64(2), n)
assert.NoError(t, p1.Close())
assert.Equal(t, `[]`, w.String())
require.NoError(t, merger.Close())
}
func TestArrayMerger_finalEmptyArray(t *testing.T) {
merger := NewArrayMerger()
w := &bytes.Buffer{}
r1 := bytes.NewBufferString(`["a","b"]`)
p1 := merger.NewPage(r1, false)
n, err := io.Copy(w, p1)
require.NoError(t, err)
assert.Equal(t, int64(8), n)
assert.NoError(t, p1.Close())
assert.Equal(t, `["a","b"`, w.String())
r2 := bytes.NewBufferString(`[]`)
p2 := merger.NewPage(r2, true)
n, err = io.Copy(w, p2)
require.NoError(t, err)
assert.Equal(t, int64(2), n)
assert.NoError(t, p2.Close())
assert.Equal(t, `["a","b" ]`, w.String())
require.NoError(t, merger.Close())
}
func TestArrayMerger_multiplePages(t *testing.T) {
merger := NewArrayMerger()
w := &bytes.Buffer{}
r1 := bytes.NewBufferString(`["a","b"]`)
p1 := merger.NewPage(r1, false)
n, err := io.Copy(w, p1)
require.NoError(t, err)
assert.Equal(t, int64(8), n)
assert.NoError(t, p1.Close())
assert.Equal(t, `["a","b"`, w.String())
r2 := bytes.NewBufferString(`["c","d"]`)
p2 := merger.NewPage(r2, true)
n, err = io.Copy(w, p2)
require.NoError(t, err)
assert.Equal(t, int64(9), n)
assert.NoError(t, p2.Close())
assert.Equal(t, `["a","b","c","d"]`, w.String())
require.NoError(t, merger.Close())
}
func TestArrayMerger_emptyObject(t *testing.T) {
merger := NewArrayMerger()
w := &bytes.Buffer{}
r1 := bytes.NewBufferString(`{}`)
p1 := merger.NewPage(r1, true)
n, err := io.Copy(w, p1)
require.NoError(t, err)
assert.Equal(t, int64(2), n)
assert.NoError(t, p1.Close())
assert.Equal(t, `{}`, w.String())
require.NoError(t, merger.Close())
}