mirror of
https://github.com/empayre/fleet.git
synced 2024-11-07 01:15:22 +00:00
48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
|
package kolide
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"reflect"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
func TestOptionMarshaller(t *testing.T) {
|
||
|
tests := []struct {
|
||
|
value interface{}
|
||
|
typ OptionType
|
||
|
expected interface{}
|
||
|
}{
|
||
|
{23, OptionTypeInt, float64(23)},
|
||
|
{true, OptionTypeBool, true},
|
||
|
{"foobar", OptionTypeString, "foobar"},
|
||
|
}
|
||
|
|
||
|
for _, test := range tests {
|
||
|
optIn := &Option{1, "foo", test.typ, OptionValue{test.value}, true}
|
||
|
buff, err := json.Marshal(optIn)
|
||
|
require.Nil(t, err)
|
||
|
optOut := &Option{}
|
||
|
err = json.Unmarshal(buff, optOut)
|
||
|
require.Nil(t, err)
|
||
|
assert.Equal(t, optIn.ID, optOut.ID)
|
||
|
assert.Equal(t, optIn.Name, optOut.Name)
|
||
|
assert.Equal(t, optIn.ReadOnly, optOut.ReadOnly)
|
||
|
assert.Equal(t, optIn.Type, optOut.Type)
|
||
|
assert.Equal(t, test.expected, optOut.Value.Val)
|
||
|
|
||
|
}
|
||
|
|
||
|
// test nil
|
||
|
optIn := &Option{1, "bar", OptionTypeString, OptionValue{nil}, true}
|
||
|
buff, err := json.Marshal(optIn)
|
||
|
require.Nil(t, err)
|
||
|
optOut := &Option{}
|
||
|
err = json.Unmarshal(buff, optOut)
|
||
|
require.Nil(t, err)
|
||
|
assert.True(t, reflect.DeepEqual(optIn, optOut))
|
||
|
|
||
|
}
|