...
1 package pgconn
2
3 import (
4 "strings"
5 "testing"
6 )
7
8 func BenchmarkCommandTagRowsAffected(b *testing.B) {
9 benchmarks := []struct {
10 commandTag string
11 rowsAffected int64
12 }{
13 {"UPDATE 1", 1},
14 {"UPDATE 123456789", 123456789},
15 {"INSERT 0 1", 1},
16 {"INSERT 0 123456789", 123456789},
17 }
18
19 for _, bm := range benchmarks {
20 ct := CommandTag{s: bm.commandTag}
21 b.Run(bm.commandTag, func(b *testing.B) {
22 var n int64
23 for i := 0; i < b.N; i++ {
24 n = ct.RowsAffected()
25 }
26 if n != bm.rowsAffected {
27 b.Errorf("expected %d got %d", bm.rowsAffected, n)
28 }
29 })
30 }
31 }
32
33 func BenchmarkCommandTagTypeFromString(b *testing.B) {
34 ct := CommandTag{s: "UPDATE 1"}
35
36 var update bool
37 for i := 0; i < b.N; i++ {
38 update = strings.HasPrefix(ct.String(), "UPDATE")
39 }
40 if !update {
41 b.Error("expected update")
42 }
43 }
44
45 func BenchmarkCommandTagInsert(b *testing.B) {
46 benchmarks := []struct {
47 commandTag string
48 is bool
49 }{
50 {"INSERT 1", true},
51 {"INSERT 1234567890", true},
52 {"UPDATE 1", false},
53 {"UPDATE 1234567890", false},
54 {"DELETE 1", false},
55 {"DELETE 1234567890", false},
56 {"SELECT 1", false},
57 {"SELECT 1234567890", false},
58 {"UNKNOWN 1234567890", false},
59 }
60
61 for _, bm := range benchmarks {
62 ct := CommandTag{s: bm.commandTag}
63 b.Run(bm.commandTag, func(b *testing.B) {
64 var is bool
65 for i := 0; i < b.N; i++ {
66 is = ct.Insert()
67 }
68 if is != bm.is {
69 b.Errorf("expected %v got %v", bm.is, is)
70 }
71 })
72 }
73 }
74
View as plain text