package object import ( "strconv" "testing" "github.com/stretchr/testify/require" ) func TestSetNotification(t *testing.T) { o := new(Object) ni := NotificationInfo{ epoch: 10, topic: "test", } WriteNotificationInfo(o, ni) var foundEpoch, foundTopic bool for _, attr := range o.GetHeader().GetAttributes() { switch key := attr.GetKey(); key { case SysAttributeTickEpoch: require.Equal(t, false, foundEpoch) uEpoch, err := strconv.ParseUint(attr.GetValue(), 10, 64) require.NoError(t, err) require.Equal(t, ni.Epoch(), uEpoch) foundEpoch = true case SysAttributeTickTopic: require.Equal(t, false, foundTopic) require.Equal(t, ni.Topic(), attr.GetValue()) foundTopic = true } } require.Equal(t, true, foundEpoch && foundTopic) } func TestGetNotification(t *testing.T) { o := new(Object) attr := []Attribute{ {SysAttributeTickEpoch, "10"}, {SysAttributeTickTopic, "test"}, } h := new(Header) h.SetAttributes(attr) o.SetHeader(h) t.Run("No error", func(t *testing.T) { ni, err := GetNotificationInfo(o) require.NoError(t, err) require.Equal(t, uint64(10), ni.Epoch()) require.Equal(t, "test", ni.Topic()) }) } func TestIntegration(t *testing.T) { o := new(Object) var ( ni1 = NotificationInfo{ epoch: 10, topic: "", } ni2 = NotificationInfo{ epoch: 11, topic: "test", } ) WriteNotificationInfo(o, ni1) WriteNotificationInfo(o, ni2) t.Run("double set", func(t *testing.T) { ni, err := GetNotificationInfo(o) require.NoError(t, err) require.Equal(t, ni2.epoch, ni.Epoch()) require.Equal(t, ni2.topic, ni.Topic()) require.Equal(t, 2, len(o.GetHeader().GetAttributes())) }) }