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  }