Files
record/record_test.go
2026-07-04 01:42:34 +01:00

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)
})
}