107 lines
3.0 KiB
Go
107 lines
3.0 KiB
Go
//go:build !i18n_extra
|
|
|
|
package i18n_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
"golang.org/x/text/language"
|
|
|
|
. "github.com/derfenix/goi18n"
|
|
"github.com/derfenix/goi18n/internal"
|
|
)
|
|
|
|
var supportedLanguages = []language.Tag{language.Russian, language.English}
|
|
|
|
func TestPrinter(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
require.NoError(t, Init(internal.TestFS))
|
|
|
|
t.Run("translation engaged", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
t.Run("russian", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
printer := GetPrinter(language.Russian)
|
|
require.Equal(t, "Тест пива", printer.Sprintf("test", "пива"))
|
|
assert.Equal(t, "111,223", printer.Sprint(111.223))
|
|
})
|
|
|
|
t.Run("russian (extended)", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
printer := GetPrinter(language.MustParse("ru_RU"))
|
|
require.Equal(t, "Тест пива", printer.Sprintf("test", "пива"))
|
|
assert.Equal(t, "111,223", printer.Sprint(111.223))
|
|
})
|
|
|
|
t.Run("russian (extended kz)", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
printer := GetPrinter(language.MustParse("ru_KZ"))
|
|
require.Equal(t, "Тест пива", printer.Sprintf("test", "пива"))
|
|
assert.Equal(t, "111,223", printer.Sprint(111.223))
|
|
})
|
|
|
|
t.Run("english (exactly)", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
printer := GetPrinter(language.English)
|
|
require.Equal(t, "Test of the beer", printer.Sprintf("test", "beer"))
|
|
assert.Equal(t, "111.223", printer.Sprint(111.223))
|
|
})
|
|
|
|
t.Run("english (dialect)", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
printer := GetPrinter(language.AmericanEnglish)
|
|
require.Equal(t, "Test of the gun", printer.Sprintf("test", "gun"))
|
|
assert.Equal(t, "111.223", printer.Sprint(111.223))
|
|
})
|
|
|
|
t.Run("unsupported language", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
printer := GetPrinter(language.Albanian)
|
|
require.Equal(t, "Тест пива", printer.Sprintf("test", "пива"))
|
|
assert.Equal(t, "111,223", printer.Sprint(111.223))
|
|
})
|
|
|
|
t.Run("plural", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
t.Run("russian", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
printer := GetPrinter(language.Russian)
|
|
assert.Equal(t, "всего 100 пауков", printer.Sprintf("test plural", 100))
|
|
assert.Equal(t, "нет пауков", printer.Sprintf("test plural", 0))
|
|
assert.Equal(t, "паучок", printer.Sprintf("test plural", 1))
|
|
assert.Equal(t, "всего пара пауков", printer.Sprintf("test plural", 2))
|
|
})
|
|
|
|
t.Run("english", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
printer := GetPrinter(language.English)
|
|
assert.Equal(t, "exactly 100 spiders", printer.Sprintf("test plural", 100))
|
|
assert.Equal(t, "no spiders", printer.Sprintf("test plural", 0))
|
|
assert.Equal(t, "spider", printer.Sprintf("test plural", 1))
|
|
assert.Equal(t, "just pair of spiders", printer.Sprintf("test plural", 2))
|
|
})
|
|
})
|
|
})
|
|
|
|
t.Run("languages ok", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
languages := GetLanguages()
|
|
require.Len(t, languages, len(supportedLanguages))
|
|
require.ElementsMatch(t, supportedLanguages, languages)
|
|
})
|
|
}
|