239 lines
4.8 KiB
Go
239 lines
4.8 KiB
Go
package record
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
// TODO
|
|
func TestRecord(t *testing.T) {
|
|
t.Run("bool value", func(t *testing.T) {
|
|
r := Record{"a": true, "b": false}
|
|
var value any
|
|
|
|
// Case A: value is true
|
|
value, ok := r.BoolSafe("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, true, value)
|
|
|
|
_, ok = r.ByteSafe("a")
|
|
assert.False(t, ok)
|
|
|
|
_, ok = r.Float32Safe("a")
|
|
assert.False(t, ok)
|
|
|
|
_, ok = r.Float64Safe("a")
|
|
assert.False(t, ok)
|
|
|
|
value, ok = r.IntSafe("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, 1, value)
|
|
|
|
value, ok = r.Int16Safe("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, int16(1), value)
|
|
|
|
value, ok = r.Int32Safe("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, int32(1), value)
|
|
|
|
value, ok = r.Int64Safe("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, int64(1), value)
|
|
|
|
value, ok = r.StringSafe("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, "true", value)
|
|
|
|
value, ok = r.UintSafe("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, uint(1), value)
|
|
|
|
value, ok = r.Uint8Safe("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, uint8(1), value)
|
|
|
|
value, ok = r.Uint16Safe("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, uint16(1), value)
|
|
|
|
value, ok = r.Uint32Safe("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, uint32(1), value)
|
|
|
|
value, ok = r.Uint64Safe("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, uint64(1), value)
|
|
|
|
// Case B: value is false
|
|
value, ok = r.BoolSafe("b")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, false, value)
|
|
|
|
_, ok = r.ByteSafe("b")
|
|
assert.False(t, ok)
|
|
|
|
_, ok = r.Float32Safe("b")
|
|
assert.False(t, ok)
|
|
|
|
_, ok = r.Float64Safe("b")
|
|
assert.False(t, ok)
|
|
|
|
value, ok = r.IntSafe("b")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, 0, value)
|
|
|
|
value, ok = r.Int16Safe("b")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, int16(0), value)
|
|
|
|
value, ok = r.Int32Safe("b")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, int32(0), value)
|
|
|
|
value, ok = r.Int64Safe("b")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, int64(0), value)
|
|
|
|
value, ok = r.StringSafe("b")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, "false", value)
|
|
|
|
value, ok = r.UintSafe("b")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, uint(0), value)
|
|
|
|
value, ok = r.Uint8Safe("b")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, uint8(0), value)
|
|
|
|
value, ok = r.Uint16Safe("b")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, uint16(0), value)
|
|
|
|
value, ok = r.Uint32Safe("b")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, uint32(0), value)
|
|
|
|
value, ok = r.Uint64Safe("b")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, uint64(0), value)
|
|
})
|
|
|
|
t.Run("byte value", func(t *testing.T) {
|
|
r := Record{"a": byte(1), "b": byte(0)}
|
|
var value any
|
|
|
|
// Case A: value is true
|
|
value, ok := r.BoolSafe("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, true, value)
|
|
|
|
value, ok = r.ByteSafe("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, byte(1), value)
|
|
|
|
_, ok = r.Float32Safe("a")
|
|
assert.False(t, ok)
|
|
|
|
_, ok = r.Float64Safe("a")
|
|
assert.False(t, ok)
|
|
|
|
value, ok = r.IntSafe("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, 1, value)
|
|
|
|
value, ok = r.Int16Safe("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, int16(1), value)
|
|
|
|
value, ok = r.Int32Safe("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, int32(1), value)
|
|
|
|
value, ok = r.Int64Safe("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, int64(1), value)
|
|
|
|
value, ok = r.StringSafe("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, "1", value)
|
|
|
|
value, ok = r.UintSafe("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, uint(1), value)
|
|
|
|
value, ok = r.Uint8Safe("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, uint8(1), value)
|
|
|
|
value, ok = r.Uint16Safe("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, uint16(1), value)
|
|
|
|
value, ok = r.Uint32Safe("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, uint32(1), value)
|
|
|
|
value, ok = r.Uint64Safe("a")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, uint64(1), value)
|
|
|
|
// Case B: value is false
|
|
value, ok = r.BoolSafe("b")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, false, value)
|
|
|
|
value, ok = r.ByteSafe("b")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, byte(0), value)
|
|
|
|
_, ok = r.Float32Safe("b")
|
|
assert.False(t, ok)
|
|
|
|
_, ok = r.Float64Safe("b")
|
|
assert.False(t, ok)
|
|
|
|
value, ok = r.IntSafe("b")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, 0, value)
|
|
|
|
value, ok = r.Int16Safe("b")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, int16(0), value)
|
|
|
|
value, ok = r.Int32Safe("b")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, int32(0), value)
|
|
|
|
value, ok = r.Int64Safe("b")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, int64(0), value)
|
|
|
|
value, ok = r.StringSafe("b")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, "0", value)
|
|
|
|
value, ok = r.UintSafe("b")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, uint(0), value)
|
|
|
|
value, ok = r.Uint8Safe("b")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, uint8(0), value)
|
|
|
|
value, ok = r.Uint16Safe("b")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, uint16(0), value)
|
|
|
|
value, ok = r.Uint32Safe("b")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, uint32(0), value)
|
|
|
|
value, ok = r.Uint64Safe("b")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, uint64(0), value)
|
|
})
|
|
}
|