42 lines
1.0 KiB
Go
42 lines
1.0 KiB
Go
package js
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
"src.dualinventive.com/go/devsim/simulator/testdata"
|
|
"src.dualinventive.com/go/dinet/rpc"
|
|
)
|
|
|
|
// Test publish without result and with result map and array
|
|
func TestInterval(t *testing.T) {
|
|
m, tt := model(t)
|
|
s, err := newSimulator(m, &testdata.Info{IPath: "testdata/interval"})
|
|
require.Nil(t, err)
|
|
|
|
s.Start()
|
|
defer s.Stop()
|
|
|
|
msg1, err := tt.Dequeue(context.Background())
|
|
testIntervalMsg(t, msg1, err)
|
|
|
|
msg2, err := tt.Dequeue(context.Background())
|
|
testIntervalMsg(t, msg2, err)
|
|
|
|
require.InDelta(t, 10*time.Millisecond, msg2.Time.Sub(msg1.Time), 10e6)
|
|
}
|
|
|
|
func testIntervalMsg(t *testing.T, msg *rpc.Msg, err error) {
|
|
require.Nil(t, err)
|
|
require.NotNil(t, msg)
|
|
require.Nil(t, msg.Error)
|
|
require.Nil(t, msg.Params)
|
|
require.Nil(t, msg.Result)
|
|
require.Zero(t, msg.ID)
|
|
// TODO: the simulator transport adds the deviceUID
|
|
require.Equal(t, "", msg.DeviceUID)
|
|
require.Equal(t, rpc.ClassMethodDevicePing, msg.ClassMethod)
|
|
}
|