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