gopkg.in/essentialkaos/ek.v3@v3.5.1/strutil/strutil_test.go (about) 1 package strutil 2 3 // ////////////////////////////////////////////////////////////////////////////////// // 4 // // 5 // Copyright (c) 2009-2016 Essential Kaos // 6 // Essential Kaos Open Source License <http://essentialkaos.com/ekol?en> // 7 // // 8 // ////////////////////////////////////////////////////////////////////////////////// // 9 10 import ( 11 "testing" 12 13 . "pkg.re/check.v1" 14 ) 15 16 // ////////////////////////////////////////////////////////////////////////////////// // 17 18 func Test(t *testing.T) { TestingT(t) } 19 20 type StrUtilSuite struct{} 21 22 // ////////////////////////////////////////////////////////////////////////////////// // 23 24 var _ = Suite(&StrUtilSuite{}) 25 26 // ////////////////////////////////////////////////////////////////////////////////// // 27 28 func (s *StrUtilSuite) TestConcat(c *C) { 29 s1 := "abcdef" 30 s2 := "123456" 31 s3 := "ABCDEF" 32 s4 := "!@#$%^" 33 34 c.Assert(Concat(s1, s2, s3, s4), Equals, s1+s2+s3+s4) 35 } 36 37 func (s *StrUtilSuite) TestSubstr(c *C) { 38 c.Assert(Substr("", 1, 2), Equals, "") 39 c.Assert(Substr("test1234TEST", 30, 32), Equals, "") 40 c.Assert(Substr("test1234TEST", 0, 8), Equals, "test1234") 41 c.Assert(Substr("test1234TEST", 0, 999), Equals, "test1234TEST") 42 c.Assert(Substr("test1234TEST", 4, 8), Equals, "1234") 43 c.Assert(Substr("test1234TEST", 8, 16), Equals, "TEST") 44 c.Assert(Substr("test1234TEST", -1, 4), Equals, "test") 45 } 46 47 func (s *StrUtilSuite) BenchmarkSubstr(c *C) { 48 for i := 0; i < c.N; i++ { 49 Substr("test1234TEST", 4, 8) 50 } 51 } 52 53 func (s *StrUtilSuite) TestEllipsis(c *C) { 54 c.Assert(Ellipsis("Test1234", 8), Equals, "Test1234") 55 c.Assert(Ellipsis("Test1234test", 8), Equals, "Test1...") 56 } 57 58 func (s *StrUtilSuite) BenchmarkEllipsis(c *C) { 59 for i := 0; i < c.N; i++ { 60 Ellipsis("Test1234test", 8) 61 } 62 } 63 64 func (s *StrUtilSuite) TestHead(c *C) { 65 c.Assert(Head("", 1), Equals, "") 66 c.Assert(Head("ABCD1234", 0), Equals, "") 67 c.Assert(Head("ABCD1234", -10), Equals, "") 68 c.Assert(Head("ABCD1234", 1), Equals, "A") 69 c.Assert(Head("ABCD1234", 4), Equals, "ABCD") 70 c.Assert(Head("ABCD1234", 100), Equals, "ABCD1234") 71 } 72 73 func (s *StrUtilSuite) BenchmarkHead(c *C) { 74 for i := 0; i < c.N; i++ { 75 Head("ABCD1234ABCD1234", 4) 76 } 77 } 78 79 func (s *StrUtilSuite) TestTail(c *C) { 80 c.Assert(Tail("", 1), Equals, "") 81 c.Assert(Tail("ABCD1234", 0), Equals, "") 82 c.Assert(Tail("ABCD1234", -10), Equals, "") 83 c.Assert(Tail("ABCD1234", 1), Equals, "4") 84 c.Assert(Tail("ABCD1234", 4), Equals, "1234") 85 c.Assert(Tail("ABCD1234", 100), Equals, "ABCD1234") 86 } 87 88 func (s *StrUtilSuite) BenchmarkTail(c *C) { 89 for i := 0; i < c.N; i++ { 90 Tail("ABCD1234ABCD1234", 4) 91 } 92 } 93 94 func (s *StrUtilSuite) TestSize(c *C) { 95 c.Assert(PrefixSize("", ' '), Equals, 0) 96 c.Assert(PrefixSize("abcd", ' '), Equals, 0) 97 c.Assert(PrefixSize(" abcd", ' '), Equals, 4) 98 c.Assert(PrefixSize(" ", ' '), Equals, 4) 99 100 c.Assert(SuffixSize("", ' '), Equals, 0) 101 c.Assert(SuffixSize("abcd", ' '), Equals, 0) 102 c.Assert(SuffixSize("abcd ", ' '), Equals, 4) 103 c.Assert(SuffixSize(" ", ' '), Equals, 4) 104 } 105 106 func (s *StrUtilSuite) BenchmarkSize(c *C) { 107 for i := 0; i < c.N; i++ { 108 PrefixSize(" abcd", ' ') 109 } 110 } 111 func (s *StrUtilSuite) TestReplaceAll(c *C) { 112 c.Assert(ReplaceAll("ABCDABCD12341234", "AB12", "?"), Equals, "??CD??CD??34??34") 113 c.Assert(ReplaceAll("", "AB12", "?"), Equals, "") 114 } 115 116 func (s *StrUtilSuite) TestFields(c *C) { 117 c.Assert(Fields(""), IsNil) 118 c.Assert(Fields(""), HasLen, 0) 119 c.Assert(Fields("1 2 3 4 5"), DeepEquals, []string{"1", "2", "3", "4", "5"}) 120 c.Assert(Fields("1,2,3,4,5"), DeepEquals, []string{"1", "2", "3", "4", "5"}) 121 c.Assert(Fields("1, 2, 3, 4, 5"), DeepEquals, []string{"1", "2", "3", "4", "5"}) 122 c.Assert(Fields("\"1 2\" 3 \"4 5\""), DeepEquals, []string{"1 2", "3", "4 5"}) 123 c.Assert(Fields("'1 2' 3 '4 5'"), DeepEquals, []string{"1 2", "3", "4 5"}) 124 } 125 126 func (s *StrUtilSuite) BenchmarkFields(c *C) { 127 for i := 0; i < c.N; i++ { 128 Fields("\"1 2\" 3 \"4 5\"") 129 } 130 } 131 132 func (s *StrUtilSuite) TestLen(c *C) { 133 c.Assert(Len("ABCDABCD12341234"), Equals, 16) 134 c.Assert(Len(""), Equals, 0) 135 c.Assert(Len("✶✈12AB例例子예"), Equals, 10) 136 } 137 138 func (s *StrUtilSuite) BenchmarkLen(c *C) { 139 for i := 0; i < c.N; i++ { 140 Len("✶✈12AB例例子예") 141 } 142 }