github.com/JohanShen/go-utils@v1.1.4-0.20201117124024-901319a2b2a0/utils/str_test.go (about)

     1  package utils
     2  
     3  import (
     4  	"strings"
     5  	"testing"
     6  )
     7  
     8  var arys = []string{"a", "aa", "abca", "A", "aA", "aBca"}
     9  
    10  type testdata struct {
    11  	str   string
    12  	mcase bool
    13  	value int
    14  }
    15  
    16  func TestFixedLeft1(t *testing.T) {
    17  
    18  	type ttt struct {
    19  		str1 string
    20  		str2 string
    21  	}
    22  	b := byte('*')
    23  	l := 5
    24  	data := make([]ttt, 0, 10)
    25  	strs := []string{"", "a", "中文a", "テスト", "provë", "îmtîhan", "परीक्षा", "פּרובירן", "փորձարկում", "పరీక్ష", "ทดสอบ"}
    26  	for _, str := range strs {
    27  		//ol := len(str)
    28  		//bl := len(StringToBytes(str))
    29  		rl := len([]rune(str))
    30  		//t.Log(ol,bl, rl)
    31  		l1 := l - rl
    32  
    33  		str1 := str
    34  		if l1 > 0 {
    35  			str1 = str + strings.Repeat(string(b), l1)
    36  		} else {
    37  			str1 = string([]rune(str1)[0:l]) //str1[0:l]
    38  		}
    39  		data = append(data, ttt{str, str1})
    40  	}
    41  
    42  	for i, d := range data {
    43  		val := FixedLeft(d.str1, b, l)
    44  		t.Log(i, d.str2, val, d.str2 == val)
    45  	}
    46  
    47  }
    48  
    49  func TestFixedLeft(t *testing.T) {
    50  
    51  	type ttt struct {
    52  		str1 string
    53  		str2 string
    54  	}
    55  	b := byte('*')
    56  	l := 5
    57  	data := make([]ttt, 0, 10)
    58  	strs := []string{"", "a", "aa", "aaa", "aaaa", "aaaaa", "aaaaaa", "aaaaaaa"}
    59  	for _, str := range strs {
    60  		l1 := l - len(str)
    61  		str1 := str
    62  		if l1 > 0 {
    63  			str1 = str + strings.Repeat(string(b), l1)
    64  		} else {
    65  			str1 = str1[0:l]
    66  		}
    67  		data = append(data, ttt{str, str1})
    68  	}
    69  
    70  	for i, d := range data {
    71  		val := FixedRight(d.str1, b, l)
    72  		t.Log(i, d.str2, val, d.str2 == val)
    73  	}
    74  
    75  }
    76  
    77  func TestFixedRight(t *testing.T) {
    78  
    79  	type ttt struct {
    80  		str1 string
    81  		str2 string
    82  	}
    83  	b := byte('*')
    84  	l := 5
    85  	data := make([]ttt, 0, 10)
    86  	strs := []string{"", "a", "aa", "aaa", "aaaa", "aaaaa", "aaaaaa", "aaaaaaa"}
    87  	for _, str := range strs {
    88  		l1 := l - len(str)
    89  		str1 := str
    90  		if l1 > 0 {
    91  			str1 = strings.Repeat(string(b), l1) + str
    92  		} else {
    93  			l2 := len(str) - l
    94  			str1 = str1[l2:]
    95  		}
    96  		data = append(data, ttt{str, str1})
    97  	}
    98  
    99  	for i, d := range data {
   100  		val := FixedLeft(d.str1, b, l)
   101  		t.Log(i, d.str2, val, d.str2 == val)
   102  	}
   103  }
   104  
   105  func TestIndexOf(t *testing.T) {
   106  
   107  	data := make([]*testdata, 0)
   108  	data = append(data, &testdata{"a", false, 0})
   109  	data = append(data, &testdata{"aa", false, 1})
   110  	data = append(data, &testdata{"AA", false, 1})
   111  	data = append(data, &testdata{"aA", false, 1})
   112  	data = append(data, &testdata{"A", true, 3})
   113  	data = append(data, &testdata{"AA", true, -1})
   114  	data = append(data, &testdata{"aA", true, 4})
   115  
   116  	t.Log(arys)
   117  
   118  	for _, v := range data {
   119  		if a := IndexOf(arys, v.str, v.mcase); a != v.value {
   120  			t.Error("期待值不匹配", v.str, v.value, a)
   121  		} else {
   122  			t.Log(v.str, v.value, a)
   123  		}
   124  	}
   125  	t.Log("全部测试通过")
   126  }
   127  
   128  func TestIndexOfMatchCase(t *testing.T) {
   129  
   130  	data := make([]*testdata, 0)
   131  	data = append(data, &testdata{"a", true, 0})
   132  	data = append(data, &testdata{"aa", true, 1})
   133  	data = append(data, &testdata{"AA", true, -1})
   134  	data = append(data, &testdata{"aA", true, 4})
   135  	data = append(data, &testdata{"A", true, 3})
   136  	data = append(data, &testdata{"abca", true, 2})
   137  	data = append(data, &testdata{"aA", true, 4})
   138  
   139  	t.Log(arys)
   140  
   141  	for _, v := range data {
   142  		if a := IndexOfMatchCase(arys, v.str); a != v.value {
   143  			t.Error("期待值不匹配", v.str, v.value, a)
   144  		} else {
   145  			t.Log(v.str, v.value, a)
   146  		}
   147  	}
   148  	t.Log("全部测试通过")
   149  }
   150  
   151  func TestIndexOfWithoutCase(t *testing.T) {
   152  
   153  	data := make([]*testdata, 0)
   154  	data = append(data, &testdata{"a", true, 0})
   155  	data = append(data, &testdata{"aa", true, 1})
   156  	data = append(data, &testdata{"AA", true, 1})
   157  	data = append(data, &testdata{"aA", true, 1})
   158  	data = append(data, &testdata{"A", true, 0})
   159  	data = append(data, &testdata{"abca", true, 2})
   160  	data = append(data, &testdata{"aA", true, 1})
   161  
   162  	t.Log(arys)
   163  
   164  	for _, v := range data {
   165  		if a := IndexOfWithoutCase(arys, v.str); a != v.value {
   166  			t.Error("期待值不匹配", v.str, v.value, a)
   167  		} else {
   168  			t.Log(v.str, v.value, a)
   169  		}
   170  	}
   171  	t.Log("全部测试通过")
   172  }