45 lines
1.1 KiB
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})
|
|
}
|