src.dualinventive.com/go/dinet/rpc/objects_test.go

45 lines
1.1 KiB
Go

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})
}