1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
/*
* Copyright (c) 2013-2017, Jeremy Bingham (<jeremy@goiardi.gl>)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package util
import (
"sort"
"testing"
)
func TestStringTrimming(t *testing.T) {
s := "12345"
u := "12345678901234567890"
l := 8
s = TrimStringMax(s, 8)
u = TrimStringMax(u, 8)
if len(s) != 5 {
t.Errorf("post-trim len for s should have been 5, somehow got %d", len(s))
}
if len(u) != l {
t.Errorf("post-trim len for u should have been %d, got %d (%s)", l, len(u), u)
}
}
func TestStringTrimmingNoTrim(t *testing.T) {
faz := "hello there"
boo := "oogety boogety"
l := 0
fazlen := len(faz)
boolen := len(boo)
faz = TrimStringMax(faz, l)
boo = TrimStringMax(boo, l)
if len(faz) != fazlen {
t.Errorf("post-trim len for 'faz' should have been the same at %d, but instead we got %d", fazlen, len(faz))
}
if len(boo) != boolen {
t.Errorf("post-trim len for 'boo' should have been the same at %d, but instead we got %d", boolen, len(boo))
}
}
func TestStringTrimmingUTF8(t *testing.T) {
u := "123456üøöß≈ç"
q := "öåπi"
l := 8
u = TrimStringMax(u, l)
if len(u) == l {
t.Errorf("post-trim len for u with unicode characters should not be %d", l)
}
if len([]rune(u)) != l {
t.Errorf("trimmed string length in runes should have been %d, but was %d", l, len([]rune(u)))
}
oq := len(q)
orq := len([]rune(q))
q = TrimStringMax(q, l)
if len(q) != oq {
t.Errorf("post-trim len for q with unicode characters shorter than the specified length '%d' should have stayed the same, but changed. Expected %d, got %d.", l, oq, len(q))
}
if len([]rune(q)) != orq {
t.Errorf("post-trim rune array len for q with unicode characters shorter than the specified length '%d' should have stayed the same, but changed. Expected %d, got %d.", l, orq, len([]rune(q)))
}
}
func TestDupRemoval(t *testing.T) {
strs := []string{"This", "", "has", "", "some", "", "some", "dupes"}
sort.Strings(strs)
strs = RemoveDupStrings(strs)
chkmap := make(map[string]uint8)
for _, v := range strs {
chkmap[v]++
}
for k, v := range chkmap {
if v > 1 {
t.Errorf("string '%s' had %d elements, should have had 1", k, v)
}
}
}
|