package utils import ( "testing" "github.com/stretchr/testify/assert" ) 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()) }) }