Arrays support

This commit is contained in:
Thomas Pelletier
2021-03-24 20:21:55 -04:00
parent a25f636a07
commit a0d031abec
6 changed files with 152 additions and 66 deletions
+15 -10
View File
@@ -39,9 +39,10 @@ func TestStructTarget_Ensure(t *testing.T) {
for _, e := range examples {
t.Run(e.desc, func(t *testing.T) {
target, _, err := scopeTableTarget(false, valueTarget(e.input), e.name)
d := decoder{}
target, _, err := d.scopeTableTarget(false, valueTarget(e.input), e.name)
require.NoError(t, err)
err = ensureSlice(target)
err = ensureValueIndexable(target)
v := target.get()
e.test(v, err)
})
@@ -86,7 +87,8 @@ func TestStructTarget_SetString(t *testing.T) {
for _, e := range examples {
t.Run(e.desc, func(t *testing.T) {
target, _, err := scopeTableTarget(false, valueTarget(e.input), e.name)
d := decoder{}
target, _, err := d.scopeTableTarget(false, valueTarget(e.input), e.name)
require.NoError(t, err)
err = setString(target, str)
v := target.get()
@@ -102,15 +104,16 @@ func TestPushNew(t *testing.T) {
}
d := Doc{}
x, _, err := scopeTableTarget(false, valueTarget(reflect.ValueOf(&d).Elem()), "A")
dec := decoder{}
x, _, err := dec.scopeTableTarget(false, valueTarget(reflect.ValueOf(&d).Elem()), "A")
require.NoError(t, err)
n, err := pushNew(x)
n, err := elementAt(x, 0)
require.NoError(t, err)
require.NoError(t, n.setString("hello"))
require.Equal(t, []string{"hello"}, d.A)
n, err = pushNew(x)
n, err = elementAt(x, 1)
require.NoError(t, err)
require.NoError(t, n.setString("world"))
require.Equal(t, []string{"hello", "world"}, d.A)
@@ -122,15 +125,16 @@ func TestPushNew(t *testing.T) {
}
d := Doc{}
x, _, err := scopeTableTarget(false, valueTarget(reflect.ValueOf(&d).Elem()), "A")
dec := decoder{}
x, _, err := dec.scopeTableTarget(false, valueTarget(reflect.ValueOf(&d).Elem()), "A")
require.NoError(t, err)
n, err := pushNew(x)
n, err := elementAt(x, 0)
require.NoError(t, err)
require.NoError(t, setString(n, "hello"))
require.Equal(t, []interface{}{"hello"}, d.A)
n, err = pushNew(x)
n, err = elementAt(x, 1)
require.NoError(t, err)
require.NoError(t, setString(n, "world"))
require.Equal(t, []interface{}{"hello", "world"}, d.A)
@@ -164,7 +168,8 @@ func TestScope_Struct(t *testing.T) {
for _, e := range examples {
t.Run(e.desc, func(t *testing.T) {
x, found, err := scopeTableTarget(false, valueTarget(e.input), e.name)
dec := decoder{}
x, found, err := dec.scopeTableTarget(false, valueTarget(e.input), e.name)
assert.Equal(t, e.found, found)
if e.err {
assert.Error(t, err)