1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00
wtf/utils/text_test.go
Chris Cummer fcdb4988f9 Add support for user-configuration language tag specification.
Adds a new top-level configuration key called "language":

```yaml
wtf:
  langauge: "ja-JP"
```

Users can now define which BCP 47 language tag to use to format any
text or numbers that currently support localization. Defaults to
"en-CA".

Acceptible values: any BCP 47 language tag recognized by the Go
"language" package.

Good luck to you figuring out what that cannonical list is. After a
morning of trying to suss it out, I have no idea.

Signed-off-by: Chris Cummer <chriscummer@me.com>
2020-12-29 12:04:17 -08:00

64 lines
2.1 KiB
Go

package utils
import (
"testing"
"github.com/rivo/tview"
"github.com/stretchr/testify/assert"
"golang.org/x/text/language"
"golang.org/x/text/message"
)
func Test_CenterText(t *testing.T) {
assert.Equal(t, "cat", CenterText("cat", -9))
assert.Equal(t, "cat", CenterText("cat", 0))
assert.Equal(t, " cat ", CenterText("cat", 9))
}
func Test_HighlightableHelper(t *testing.T) {
view := tview.NewTextView()
actual := HighlightableHelper(view, "cats", 0, 5)
assert.Equal(t, "[\"0\"][\"\"]cats [\"\"]\n", actual)
}
func Test_RowPadding(t *testing.T) {
assert.Equal(t, "", RowPadding(0, 0))
assert.Equal(t, "", RowPadding(5, 2))
assert.Equal(t, " ", RowPadding(1, 2))
assert.Equal(t, " ", RowPadding(0, 5))
}
func Test_Truncate(t *testing.T) {
assert.Equal(t, "", Truncate("cat", 0, false))
assert.Equal(t, "c", Truncate("cat", 1, false))
assert.Equal(t, "ca", Truncate("cat", 2, false))
assert.Equal(t, "cat", Truncate("cat", 3, false))
assert.Equal(t, "cat", Truncate("cat", 4, false))
assert.Equal(t, "", Truncate("cat", 0, true))
assert.Equal(t, "c", Truncate("cat", 1, true))
assert.Equal(t, "c…", Truncate("cat", 2, true))
assert.Equal(t, "cat", Truncate("cat", 3, true))
assert.Equal(t, "cat", Truncate("cat", 4, true))
// Only supports non-ellipsed emoji
assert.Equal(t, "šŸŒ®šŸš™", Truncate("šŸŒ®šŸš™šŸ’„šŸ‘¾", 2, false))
}
func Test_PrettyNumber(t *testing.T) {
locPrinter := message.NewPrinter(language.English)
assert.Equal(t, "1,000,000", PrettyNumber(locPrinter, 1000000))
assert.Equal(t, "1,000,000.99", PrettyNumber(locPrinter, 1000000.99))
assert.Equal(t, "1,000,000", PrettyNumber(locPrinter, 1000000.00))
assert.Equal(t, "100,000", PrettyNumber(locPrinter, 100000))
assert.Equal(t, "100,000.01", PrettyNumber(locPrinter, 100000.009))
assert.Equal(t, "10,000", PrettyNumber(locPrinter, 10000))
assert.Equal(t, "1,000", PrettyNumber(locPrinter, 1000))
assert.Equal(t, "1,000", PrettyNumber(locPrinter, 1000))
assert.Equal(t, "100", PrettyNumber(locPrinter, 100))
assert.Equal(t, "0", PrettyNumber(locPrinter, 0))
assert.Equal(t, "0.10", PrettyNumber(locPrinter, 0.1))
}