package pgtype_test import ( "bytes" "testing" "github.com/jackc/pgx/pgtype" ) func TestUuidTranscode(t *testing.T) { testSuccessfulTranscode(t, "uuid", []interface{}{ pgtype.Uuid{Bytes: [16]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, Status: pgtype.Present}, pgtype.Uuid{Status: pgtype.Null}, }) } func TestUuidSet(t *testing.T) { successfulTests := []struct { source interface{} result pgtype.Uuid }{ { source: [16]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, result: pgtype.Uuid{Bytes: [16]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, Status: pgtype.Present}, }, { source: []byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, result: pgtype.Uuid{Bytes: [16]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, Status: pgtype.Present}, }, { source: "00010203-0405-0607-0809-0a0b0c0d0e0f", result: pgtype.Uuid{Bytes: [16]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, Status: pgtype.Present}, }, } for i, tt := range successfulTests { var r pgtype.Uuid err := r.Set(tt.source) if err != nil { t.Errorf("%d: %v", i, err) } if r != tt.result { t.Errorf("%d: expected %v to convert to %v, but it was %v", i, tt.source, tt.result, r) } } } func TestUuidAssignTo(t *testing.T) { { src := pgtype.Uuid{Bytes: [16]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, Status: pgtype.Present} var dst [16]byte expected := [16]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15} err := src.AssignTo(&dst) if err != nil { t.Error(err) } if dst != expected { t.Errorf("expected %v to assign %v, but result was %v", src, expected, dst) } } { src := pgtype.Uuid{Bytes: [16]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, Status: pgtype.Present} var dst []byte expected := []byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15} err := src.AssignTo(&dst) if err != nil { t.Error(err) } if bytes.Compare(dst, expected) != 0 { t.Errorf("expected %v to assign %v, but result was %v", src, expected, dst) } } { src := pgtype.Uuid{Bytes: [16]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, Status: pgtype.Present} var dst string expected := "00010203-0405-0607-0809-0a0b0c0d0e0f" err := src.AssignTo(&dst) if err != nil { t.Error(err) } if dst != expected { t.Errorf("expected %v to assign %v, but result was %v", src, expected, dst) } } }