@@ -2,11 +2,69 @@ package clickhouse
22
33import (
44 "fmt"
5- "github.com/stretchr/testify/assert"
65 "runtime"
76 "testing"
7+
8+ "github.com/stretchr/testify/assert"
9+ "github.com/stretchr/testify/require"
810)
911
12+ func TestClientInfoAppend (t * testing.T ) {
13+ a := ClientInfo {
14+ Products : []struct {
15+ Name string
16+ Version string
17+ }{
18+ {
19+ Name : "product" ,
20+ Version : "1.0.0" ,
21+ },
22+ },
23+ Comment : []string {"comment_a" },
24+ }
25+
26+ b := ClientInfo {
27+ Products : []struct {
28+ Name string
29+ Version string
30+ }{
31+ {
32+ Name : "product2" ,
33+ Version : "2.0.0" ,
34+ },
35+ },
36+ Comment : []string {"comment_b" },
37+ }
38+
39+ c := a .Append (b )
40+
41+ // Check first ClientInfo unchanged
42+ require .Len (t , a .Products , 1 )
43+ require .Equal (t , "product" , a .Products [0 ].Name )
44+ require .Equal (t , "1.0.0" , a .Products [0 ].Version )
45+ require .Len (t , a .Comment , 1 )
46+ require .Equal (t , "comment_a" , a .Comment [0 ])
47+
48+ // Check second ClientInfo unchanged
49+ require .Len (t , b .Products , 1 )
50+ require .Equal (t , "product2" , b .Products [0 ].Name )
51+ require .Equal (t , "2.0.0" , b .Products [0 ].Version )
52+ require .Len (t , b .Comment , 1 )
53+ require .Equal (t , "comment_b" , b .Comment [0 ])
54+
55+ // Verify third ClientInfo is merged correctly
56+ require .Len (t , c .Products , 2 )
57+ require .Equal (t , "product" , c .Products [0 ].Name )
58+ require .Equal (t , "1.0.0" , c .Products [0 ].Version )
59+ require .Equal (t , "product2" , c .Products [1 ].Name )
60+ require .Equal (t , "2.0.0" , c .Products [1 ].Version )
61+
62+ require .Len (t , c .Comment , 2 )
63+ require .Equal (t , "comment_a" , c .Comment [0 ])
64+ require .Equal (t , "comment_b" , c .Comment [1 ])
65+
66+ }
67+
1068func TestClientInfoString (t * testing.T ) {
1169 // e.g. clickhouse-go/2.5.1
1270 expectedClientProduct := fmt .Sprintf ("%s/%d.%d.%d" , ClientName , ClientVersionMajor , ClientVersionMinor , ClientVersionPatch )
@@ -25,7 +83,7 @@ func TestClientInfoString(t *testing.T) {
2583 },
2684 "client with comment" : {
2785 ClientInfo {
28- comment : []string {"database/sql" },
86+ Comment : []string {"database/sql" },
2987 },
3088 // e.g. clickhouse-go/2.5.1 (database/sql; lv:go/1.19.5; os:darwin)
3189 fmt .Sprintf ("%s (database/sql; %s)" , expectedClientProduct , expectedDefaultMeta ),
@@ -51,7 +109,7 @@ func TestClientInfoString(t *testing.T) {
51109 {Name : "grafana" , Version : "6.1" },
52110 {Name : "grafana-datasource" , Version : "0.1.1" },
53111 },
54- comment : []string {"database/sql" },
112+ Comment : []string {"database/sql" },
55113 },
56114 // e.g. grafana/6.1 grafana-datasource/0.1.1 clickhouse-go/2.5.1 (database/sql; lv:go/1.19.5; os:darwin)
57115 fmt .Sprintf ("grafana/6.1 grafana-datasource/0.1.1 %s (database/sql; %s)" , expectedClientProduct , expectedDefaultMeta ),
0 commit comments