mirror of
https://github.com/jackc/pgx.git
synced 2025-04-27 13:14:32 +00:00
As recommended by go-staticcheck, but also might be a bit more efficient for the compiler to implement, since we don't care about which slice of bytes is greater than the other one.
58 lines
1.8 KiB
Go
58 lines
1.8 KiB
Go
package pgtype_test
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/jackc/pgx/v5/pgtype"
|
|
"github.com/jackc/pgx/v5/pgxtest"
|
|
)
|
|
|
|
func isExpectedEqBits(a any) func(any) bool {
|
|
return func(v any) bool {
|
|
ab := a.(pgtype.Bits)
|
|
vb := v.(pgtype.Bits)
|
|
return bytes.Equal(ab.Bytes, vb.Bytes) && ab.Len == vb.Len && ab.Valid == vb.Valid
|
|
}
|
|
}
|
|
|
|
func TestBitsCodecBit(t *testing.T) {
|
|
pgxtest.RunValueRoundTripTests(context.Background(), t, defaultConnTestRunner, nil, "bit(40)", []pgxtest.ValueRoundTripTest{
|
|
{
|
|
pgtype.Bits{Bytes: []byte{0, 0, 0, 0, 0}, Len: 40, Valid: true},
|
|
new(pgtype.Bits),
|
|
isExpectedEqBits(pgtype.Bits{Bytes: []byte{0, 0, 0, 0, 0}, Len: 40, Valid: true}),
|
|
},
|
|
{
|
|
pgtype.Bits{Bytes: []byte{0, 1, 128, 254, 255}, Len: 40, Valid: true},
|
|
new(pgtype.Bits),
|
|
isExpectedEqBits(pgtype.Bits{Bytes: []byte{0, 1, 128, 254, 255}, Len: 40, Valid: true}),
|
|
},
|
|
{pgtype.Bits{}, new(pgtype.Bits), isExpectedEqBits(pgtype.Bits{})},
|
|
{nil, new(pgtype.Bits), isExpectedEqBits(pgtype.Bits{})},
|
|
})
|
|
}
|
|
|
|
func TestBitsCodecVarbit(t *testing.T) {
|
|
pgxtest.RunValueRoundTripTests(context.Background(), t, defaultConnTestRunner, nil, "varbit", []pgxtest.ValueRoundTripTest{
|
|
{
|
|
pgtype.Bits{Bytes: []byte{}, Len: 0, Valid: true},
|
|
new(pgtype.Bits),
|
|
isExpectedEqBits(pgtype.Bits{Bytes: []byte{}, Len: 0, Valid: true}),
|
|
},
|
|
{
|
|
pgtype.Bits{Bytes: []byte{0, 1, 128, 254, 255}, Len: 40, Valid: true},
|
|
new(pgtype.Bits),
|
|
isExpectedEqBits(pgtype.Bits{Bytes: []byte{0, 1, 128, 254, 255}, Len: 40, Valid: true}),
|
|
},
|
|
{
|
|
pgtype.Bits{Bytes: []byte{0, 1, 128, 254, 128}, Len: 33, Valid: true},
|
|
new(pgtype.Bits),
|
|
isExpectedEqBits(pgtype.Bits{Bytes: []byte{0, 1, 128, 254, 128}, Len: 33, Valid: true}),
|
|
},
|
|
{pgtype.Bits{}, new(pgtype.Bits), isExpectedEqBits(pgtype.Bits{})},
|
|
{nil, new(pgtype.Bits), isExpectedEqBits(pgtype.Bits{})},
|
|
})
|
|
}
|