48 lines
1.3 KiB
Go
48 lines
1.3 KiB
Go
package types
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestRegisterNext(t *testing.T) {
|
|
codespacer := NewCodespacer()
|
|
// unregistered, allow
|
|
code1 := codespacer.RegisterNext(CodespaceType(2))
|
|
require.Equal(t, code1, CodespaceType(2))
|
|
// registered, pick next
|
|
code2 := codespacer.RegisterNext(CodespaceType(2))
|
|
require.Equal(t, code2, CodespaceType(3))
|
|
// pick next
|
|
code3 := codespacer.RegisterNext(CodespaceType(2))
|
|
require.Equal(t, code3, CodespaceType(4))
|
|
// skip 1
|
|
code4 := codespacer.RegisterNext(CodespaceType(6))
|
|
require.Equal(t, code4, CodespaceType(6))
|
|
code5 := codespacer.RegisterNext(CodespaceType(2))
|
|
require.Equal(t, code5, CodespaceType(5))
|
|
code6 := codespacer.RegisterNext(CodespaceType(2))
|
|
require.Equal(t, code6, CodespaceType(7))
|
|
// panic on maximum
|
|
defer func() {
|
|
r := recover()
|
|
require.NotNil(t, r, "Did not panic on maximum codespace")
|
|
}()
|
|
codespacer.RegisterNext(MaximumCodespace - 1)
|
|
codespacer.RegisterNext(MaximumCodespace - 1)
|
|
}
|
|
|
|
func TestRegisterOrPanic(t *testing.T) {
|
|
codespacer := NewCodespacer()
|
|
// unregistered, allow
|
|
code1 := codespacer.RegisterNext(CodespaceType(2))
|
|
require.Equal(t, code1, CodespaceType(2))
|
|
// panic on duplicate
|
|
defer func() {
|
|
r := recover()
|
|
require.NotNil(t, r, "Did not panic on duplicate codespace")
|
|
}()
|
|
codespacer.RegisterOrPanic(CodespaceType(2))
|
|
}
|