package rpc import ( "encoding/json" "testing" "time" "src.dualinventive.com/go/dinet/ditime" "github.com/stretchr/testify/require" ) func TestResultValueItems(t *testing.T) { var rvi ResultValueItem require.Equal(t, ErrMsgNoData, rvi.GetValue(nil)) js := `{"uid": 1, "time": 2, "value": 5.5}` require.Nil(t, json.Unmarshal([]byte(js), &rvi)) require.Equal(t, uint16(1), rvi.UID) require.Equal(t, ditime.Time(2), rvi.Time) var str struct { Hello string } require.NotNil(t, rvi.GetValue(&str)) var f float64 require.Nil(t, rvi.GetValue(&f)) require.Equal(t, 5.5, f) } func TestResultValuesItems(t *testing.T) { var rvi ResultValueItem js := `{"uid": 1, "time": 1535546718115, "values": {"interval": 312500, "samples" : [1, 2, 3, 4]}}` require.Nil(t, json.Unmarshal([]byte(js), &rvi)) require.Equal(t, uint16(1), rvi.UID) require.Equal(t, ditime.Time(1535546718115), rvi.Time) require.NotNil(t, rvi.Values) require.Equal(t, 312*time.Microsecond+500*time.Nanosecond, rvi.Values.Interval) require.ElementsMatch(t, rvi.Values.Samples, []float64{1, 2, 3, 4}) }