github.com/wtfutil/wtf@v0.43.0/utils/text_test.go (about) 1 package utils 2 3 import ( 4 "testing" 5 6 "github.com/rivo/tview" 7 "github.com/stretchr/testify/assert" 8 "golang.org/x/text/language" 9 "golang.org/x/text/message" 10 ) 11 12 func Test_CenterText(t *testing.T) { 13 assert.Equal(t, "cat", CenterText("cat", -9)) 14 assert.Equal(t, "cat", CenterText("cat", 0)) 15 assert.Equal(t, " cat ", CenterText("cat", 9)) 16 } 17 18 func Test_FindBetween(t *testing.T) { 19 tests := []struct { 20 name string 21 input string 22 left string 23 right string 24 expected []string 25 }{ 26 { 27 name: "with empty params", 28 input: "", 29 left: "", 30 right: "", 31 expected: []string{}, 32 }, 33 { 34 name: "with empty input", 35 input: "", 36 left: "{", 37 right: "}", 38 expected: []string{}, 39 }, 40 { 41 name: "with empty bounds", 42 input: "{cat}{dog}", 43 left: "", 44 right: "", 45 expected: []string{}, 46 }, 47 { 48 name: "with no match left", 49 input: "{cat}{dog}", 50 left: "[", 51 right: "}", 52 expected: []string{}, 53 }, 54 { 55 name: "with no match right", 56 input: "{cat}{dog}", 57 left: "{", 58 right: "]", 59 expected: []string{}, 60 }, 61 { 62 name: "with right before left", 63 input: "{cat}{dog}", 64 left: "}", 65 right: "{", 66 expected: []string{}, 67 }, 68 { 69 name: "with no match", 70 input: "{cat}{dog}", 71 left: "[", 72 right: "]", 73 expected: []string{}, 74 }, 75 { 76 name: "with valid input", 77 input: "{cat}{dog}", 78 left: "{", 79 right: "}", 80 expected: []string{"cat", "dog"}, 81 }, 82 } 83 84 for _, tt := range tests { 85 t.Run(tt.name, func(t *testing.T) { 86 actual := FindBetween(tt.input, tt.left, tt.right) 87 assert.Equal(t, tt.expected, actual) 88 }) 89 } 90 } 91 92 func Test_HighlightableHelper(t *testing.T) { 93 view := tview.NewTextView() 94 actual := HighlightableHelper(view, "cats", 0, 5) 95 96 assert.Equal(t, "[\"0\"][\"\"]cats [\"\"]\n", actual) 97 } 98 99 func Test_RowPadding(t *testing.T) { 100 assert.Equal(t, "", RowPadding(0, 0)) 101 assert.Equal(t, "", RowPadding(5, 2)) 102 assert.Equal(t, " ", RowPadding(1, 2)) 103 assert.Equal(t, " ", RowPadding(0, 5)) 104 } 105 106 func Test_Truncate(t *testing.T) { 107 assert.Equal(t, "", Truncate("cat", 0, false)) 108 assert.Equal(t, "c", Truncate("cat", 1, false)) 109 assert.Equal(t, "ca", Truncate("cat", 2, false)) 110 assert.Equal(t, "cat", Truncate("cat", 3, false)) 111 assert.Equal(t, "cat", Truncate("cat", 4, false)) 112 113 assert.Equal(t, "", Truncate("cat", 0, true)) 114 assert.Equal(t, "c", Truncate("cat", 1, true)) 115 assert.Equal(t, "cā¦", Truncate("cat", 2, true)) 116 assert.Equal(t, "cat", Truncate("cat", 3, true)) 117 assert.Equal(t, "cat", Truncate("cat", 4, true)) 118 119 // Only supports non-ellipsed emoji 120 assert.Equal(t, "š®š", Truncate("š®šš„š¾", 2, false)) 121 } 122 123 func Test_PrettyNumber(t *testing.T) { 124 locPrinter := message.NewPrinter(language.English) 125 126 assert.Equal(t, "1,000,000", PrettyNumber(locPrinter, 1000000)) 127 assert.Equal(t, "1,000,000.99", PrettyNumber(locPrinter, 1000000.99)) 128 assert.Equal(t, "1,000,000", PrettyNumber(locPrinter, 1000000.00)) 129 assert.Equal(t, "100,000", PrettyNumber(locPrinter, 100000)) 130 assert.Equal(t, "100,000.01", PrettyNumber(locPrinter, 100000.009)) 131 assert.Equal(t, "10,000", PrettyNumber(locPrinter, 10000)) 132 assert.Equal(t, "1,000", PrettyNumber(locPrinter, 1000)) 133 assert.Equal(t, "1,000", PrettyNumber(locPrinter, 1000)) 134 assert.Equal(t, "100", PrettyNumber(locPrinter, 100)) 135 assert.Equal(t, "0", PrettyNumber(locPrinter, 0)) 136 assert.Equal(t, "0.10", PrettyNumber(locPrinter, 0.1)) 137 }