diff options
author | Ujjwal Goyal <importujjwal@gmail.com> | 2021-03-07 00:08:10 +0530 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2021-05-09 13:14:14 +0200 |
commit | c46fc838a9320adfc6532b1b543e903c48b3b4cb (patch) | |
tree | 9d751a342893dc1d84e98006a8d024f857ded894 /tpl/collections/collections_test.go | |
parent | 504c78da4b5020e1fd13a1195ad38a9e85f8289a (diff) |
tpl: Allow 'Querify' to take lone slice/interface argument
Querify can now take a lone string/interface slice (with string
keys) as a parameter, or multiple string parameters, to build
URL queries.
Querify earlier used 'Dictionary' to add key/value pairs to a
map to build URL queries. Changed to dynamically generate ordered
key/value pairs. Cannot take string slice as key (earlier
possible due to Dictionary).
Added tests and benchmarks for querify.
Closes #6735
Diffstat (limited to 'tpl/collections/collections_test.go')
-rw-r--r-- | tpl/collections/collections_test.go | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tpl/collections/collections_test.go b/tpl/collections/collections_test.go index a9bf9a09b..1e0569751 100644 --- a/tpl/collections/collections_test.go +++ b/tpl/collections/collections_test.go @@ -564,9 +564,16 @@ func TestQuerify(t *testing.T) { }{ {[]interface{}{"a", "b"}, "a=b"}, {[]interface{}{"a", "b", "c", "d", "f", " &"}, `a=b&c=d&f=+%26`}, + {[]interface{}{[]string{"a", "b"}}, "a=b"}, + {[]interface{}{[]string{"a", "b", "c", "d", "f", " &"}}, `a=b&c=d&f=+%26`}, + {[]interface{}{[]interface{}{"x", "y"}}, `x=y`}, + {[]interface{}{[]interface{}{"x", 5}}, `x=5`}, // errors {[]interface{}{5, "b"}, false}, {[]interface{}{"a", "b", "c"}, false}, + {[]interface{}{[]string{"a", "b", "c"}}, false}, + {[]interface{}{[]string{"a", "b"}, "c"}, false}, + {[]interface{}{[]interface{}{"c", "d", "e"}}, false}, } { errMsg := qt.Commentf("[%d] %v", i, test.params) @@ -582,6 +589,32 @@ func TestQuerify(t *testing.T) { } } +func BenchmarkQuerify(b *testing.B) { + ns := New(&deps.Deps{}) + params := []interface{}{"a", "b", "c", "d", "f", " &"} + + b.ResetTimer() + for i := 0; i < b.N; i++ { + _, err := ns.Querify(params...) + if err != nil { + b.Fatal(err) + } + } +} + +func BenchmarkQuerifySlice(b *testing.B) { + ns := New(&deps.Deps{}) + params := []string{"a", "b", "c", "d", "f", " &"} + + b.ResetTimer() + for i := 0; i < b.N; i++ { + _, err := ns.Querify(params) + if err != nil { + b.Fatal(err) + } + } +} + func TestSeq(t *testing.T) { t.Parallel() c := qt.New(t) |