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  }