86 lines
2 KiB
Go
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())
|
|
}
|