package utils import ( "github.com/stretchr/testify/assert" "testing" ) func Test_DefaultSequenceNumberGenerator(t *testing.T) { t.Run("next", func(t *testing.T) { var sequenceGenerator = NewDefaultSequenceNumberGenerator() assert.Equal(t, uint64(0), (*sequenceGenerator).Next()) }) t.Run("revert", func(t *testing.T) { var sequenceGenerator = NewDefaultSequenceNumberGenerator() assert.Equal(t, uint64(0), (*sequenceGenerator).Next()) assert.Equal(t, uint64(1), (*sequenceGenerator).Next()) (*sequenceGenerator).Revert(uint64(1)) assert.Equal(t, uint64(1), (*sequenceGenerator).Next()) }) t.Run("revert first", func(t *testing.T) { var sequenceGenerator = NewDefaultSequenceNumberGenerator() assert.Equal(t, uint64(0), (*sequenceGenerator).Next()) assert.Equal(t, uint64(1), (*sequenceGenerator).Next()) (*sequenceGenerator).Revert(uint64(0)) assert.Equal(t, uint64(0), (*sequenceGenerator).Next()) }) t.Run("revert same value multiple times", func(t *testing.T) { var sequenceGenerator = NewDefaultSequenceNumberGenerator() assert.Equal(t, uint64(0), (*sequenceGenerator).Next()) assert.Equal(t, uint64(1), (*sequenceGenerator).Next()) assert.Equal(t, uint64(2), (*sequenceGenerator).Next()) (*sequenceGenerator).Revert(uint64(1)) (*sequenceGenerator).Revert(uint64(1)) assert.Equal(t, uint64(1), (*sequenceGenerator).Next()) assert.Equal(t, uint64(3), (*sequenceGenerator).Next()) }) t.Run("get and revert multiple", func(t *testing.T) { var sequenceGenerator = NewDefaultSequenceNumberGenerator() assert.Equal(t, uint64(0), (*sequenceGenerator).Next()) assert.Equal(t, uint64(1), (*sequenceGenerator).Next()) (*sequenceGenerator).Revert(uint64(1)) assert.Equal(t, uint64(1), (*sequenceGenerator).Next()) assert.Equal(t, uint64(2), (*sequenceGenerator).Next()) assert.Equal(t, uint64(3), (*sequenceGenerator).Next()) assert.Equal(t, uint64(4), (*sequenceGenerator).Next()) (*sequenceGenerator).Revert(uint64(2)) (*sequenceGenerator).Revert(uint64(3)) assert.Equal(t, uint64(2), (*sequenceGenerator).Next()) assert.Equal(t, uint64(3), (*sequenceGenerator).Next()) assert.Equal(t, uint64(5), (*sequenceGenerator).Next()) assert.Equal(t, uint64(6), (*sequenceGenerator).Next()) }) }