@@ -124,29 +124,48 @@ func TestQueryBuild(t *testing.T) {
124124 assert .Equal (t , "" , string (QueryBuild ()))
125125 assert .Equal (t , "" , string (QueryBuild ("a" , nil , "b" , false , "c" , 0 , "d" , "" )))
126126 assert .Equal (t , "a=1&b=true" , string (QueryBuild ("a" , 1 , "b" , "true" )))
127+
128+ // path with query parameters
129+ assert .Equal (t , "/?k=1" , string (QueryBuild ("/" , "k" , 1 )))
130+ assert .Equal (t , "/" , string (QueryBuild ("/?k=a" , "k" , 0 )))
131+
132+ // no path but question mark with query parameters
127133 assert .Equal (t , "?k=1" , string (QueryBuild ("?" , "k" , 1 )))
128- assert .Equal (t , "path?a=b&k=1" , string (QueryBuild ("path?a=b" , "k" , 1 )))
134+ assert .Equal (t , "?" , string (QueryBuild ("?" , "k" , 0 )))
135+ assert .Equal (t , "path?k=1" , string (QueryBuild ("path?" , "k" , 1 )))
136+ assert .Equal (t , "path" , string (QueryBuild ("path?" , "k" , 0 )))
137+
138+ // only query parameters
129139 assert .Equal (t , "&k=1" , string (QueryBuild ("&" , "k" , 1 )))
130- assert .Equal (t , "&a=b&k=1" , string (QueryBuild ("&a=b" , "k" , 1 )))
140+ assert .Equal (t , "" , string (QueryBuild ("&" , "k" , 0 )))
141+ assert .Equal (t , "" , string (QueryBuild ("&k=a" , "k" , 0 )))
142+ assert .Equal (t , "" , string (QueryBuild ("k=a&" , "k" , 0 )))
143+ assert .Equal (t , "a=1&b=2" , string (QueryBuild ("a=1" , "b" , 2 )))
144+ assert .Equal (t , "&a=1&b=2" , string (QueryBuild ("&a=1" , "b" , 2 )))
145+ assert .Equal (t , "a=1&b=2&" , string (QueryBuild ("a=1&" , "b" , 2 )))
131146 })
147+
132148 t .Run ("replace" , func (t * testing.T ) {
133149 assert .Equal (t , "a=1&c=d&e=f" , string (QueryBuild ("a=b&c=d&e=f" , "a" , 1 )))
134150 assert .Equal (t , "a=b&c=1&e=f" , string (QueryBuild ("a=b&c=d&e=f" , "c" , 1 )))
135151 assert .Equal (t , "a=b&c=d&e=1" , string (QueryBuild ("a=b&c=d&e=f" , "e" , 1 )))
136152 assert .Equal (t , "a=b&c=d&e=f&k=1" , string (QueryBuild ("a=b&c=d&e=f" , "k" , 1 )))
137153 })
154+
138155 t .Run ("replace-&" , func (t * testing.T ) {
139156 assert .Equal (t , "&a=1&c=d&e=f" , string (QueryBuild ("&a=b&c=d&e=f" , "a" , 1 )))
140157 assert .Equal (t , "&a=b&c=1&e=f" , string (QueryBuild ("&a=b&c=d&e=f" , "c" , 1 )))
141158 assert .Equal (t , "&a=b&c=d&e=1" , string (QueryBuild ("&a=b&c=d&e=f" , "e" , 1 )))
142159 assert .Equal (t , "&a=b&c=d&e=f&k=1" , string (QueryBuild ("&a=b&c=d&e=f" , "k" , 1 )))
143160 })
161+
144162 t .Run ("delete" , func (t * testing.T ) {
145163 assert .Equal (t , "c=d&e=f" , string (QueryBuild ("a=b&c=d&e=f" , "a" , "" )))
146164 assert .Equal (t , "a=b&e=f" , string (QueryBuild ("a=b&c=d&e=f" , "c" , "" )))
147165 assert .Equal (t , "a=b&c=d" , string (QueryBuild ("a=b&c=d&e=f" , "e" , "" )))
148166 assert .Equal (t , "a=b&c=d&e=f" , string (QueryBuild ("a=b&c=d&e=f" , "k" , "" )))
149167 })
168+
150169 t .Run ("delete-&" , func (t * testing.T ) {
151170 assert .Equal (t , "&c=d&e=f" , string (QueryBuild ("&a=b&c=d&e=f" , "a" , "" )))
152171 assert .Equal (t , "&a=b&e=f" , string (QueryBuild ("&a=b&c=d&e=f" , "c" , "" )))
0 commit comments