github.com/jackc/pgx/v5@v5.5.5/pgtype/bool_test.go (about) 1 package pgtype_test 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/jackc/pgx/v5/pgtype" 8 "github.com/jackc/pgx/v5/pgxtest" 9 ) 10 11 func TestBoolCodec(t *testing.T) { 12 pgxtest.RunValueRoundTripTests(context.Background(), t, defaultConnTestRunner, nil, "bool", []pgxtest.ValueRoundTripTest{ 13 {true, new(bool), isExpectedEq(true)}, 14 {false, new(bool), isExpectedEq(false)}, 15 {true, new(pgtype.Bool), isExpectedEq(pgtype.Bool{Bool: true, Valid: true})}, 16 {pgtype.Bool{}, new(pgtype.Bool), isExpectedEq(pgtype.Bool{})}, 17 {nil, new(*bool), isExpectedEq((*bool)(nil))}, 18 }) 19 } 20 21 func TestBoolMarshalJSON(t *testing.T) { 22 successfulTests := []struct { 23 source pgtype.Bool 24 result string 25 }{ 26 {source: pgtype.Bool{}, result: "null"}, 27 {source: pgtype.Bool{Bool: true, Valid: true}, result: "true"}, 28 {source: pgtype.Bool{Bool: false, Valid: true}, result: "false"}, 29 } 30 for i, tt := range successfulTests { 31 r, err := tt.source.MarshalJSON() 32 if err != nil { 33 t.Errorf("%d: %v", i, err) 34 } 35 36 if string(r) != tt.result { 37 t.Errorf("%d: expected %v to convert to %v, but it was %v", i, tt.source, tt.result, string(r)) 38 } 39 } 40 } 41 42 func TestBoolUnmarshalJSON(t *testing.T) { 43 successfulTests := []struct { 44 source string 45 result pgtype.Bool 46 }{ 47 {source: "null", result: pgtype.Bool{}}, 48 {source: "true", result: pgtype.Bool{Bool: true, Valid: true}}, 49 {source: "false", result: pgtype.Bool{Bool: false, Valid: true}}, 50 } 51 for i, tt := range successfulTests { 52 var r pgtype.Bool 53 err := r.UnmarshalJSON([]byte(tt.source)) 54 if err != nil { 55 t.Errorf("%d: %v", i, err) 56 } 57 58 if r != tt.result { 59 t.Errorf("%d: expected %v to convert to %v, but it was %v", i, tt.source, tt.result, r) 60 } 61 } 62 }