github.com/go-kivik/kivik/v4@v4.3.2/x/fsdb/cdb/util_test.go (about) 1 // Licensed under the Apache License, Version 2.0 (the "License"); you may not 2 // use this file except in compliance with the License. You may obtain a copy of 3 // the License at 4 // 5 // http://www.apache.org/licenses/LICENSE-2.0 6 // 7 // Unless required by applicable law or agreed to in writing, software 8 // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 9 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 10 // License for the specific language governing permissions and limitations under 11 // the License. 12 13 package cdb 14 15 import ( 16 "testing" 17 18 "gitlab.com/flimzy/testy" 19 ) 20 21 func TestEscape(t *testing.T) { 22 type tt struct { 23 in string 24 want string 25 } 26 tests := testy.NewTable() 27 tests.Add("simple", tt{"simple", "simple"}) 28 tests.Add("non-ascii", tt{"fóò", "fóò"}) 29 tests.Add("ddoc", tt{"_design/foo", "_design%2Ffoo"}) 30 tests.Add("percent", tt{"100%", "100%"}) 31 tests.Add("escaped slash", tt{"foo%2fbar", "foo%252fbar"}) 32 tests.Add("empty", tt{"", ""}) 33 34 tests.Run(t, func(t *testing.T, tt tt) { 35 got := EscapeID(tt.in) 36 if got != tt.want { 37 t.Errorf("Unexpected escape output: %s", got) 38 } 39 final := UnescapeID(got) 40 if final != tt.in { 41 t.Errorf("Unexpected unescape output: %s", final) 42 } 43 }) 44 }