diff --git a/testdata/test.en.toml b/testdata/test.en.toml new file mode 100644 index 0000000..930627c --- /dev/null +++ b/testdata/test.en.toml @@ -0,0 +1,7 @@ +[[translation]] +id = 458405366 +value = 'First test' + +[[translation]] +id = 2703638123 +value = 'Second test' diff --git a/testdata/test.ru.toml b/testdata/test.ru.toml new file mode 100644 index 0000000..ada8941 --- /dev/null +++ b/testdata/test.ru.toml @@ -0,0 +1,4 @@ +[[translation]] +id = 458405366 +value = 'Первая проверка' + diff --git a/translate_test.go b/translate_test.go new file mode 100644 index 0000000..1384c07 --- /dev/null +++ b/translate_test.go @@ -0,0 +1,57 @@ +package translate + +import ( + "reflect" + "testing" + + "golang.org/x/text/language" +) + +var catalog = Catalog{ + language.English: Dictionary{ + 458405366: "First test", + 2703638123: "Second test", + }, + language.Russian: Dictionary{ + 458405366: "Первая проверка", + }, +} + +func TestNewFromDir(t *testing.T) { + tr, err := NewFromDir("testdata") + if err != nil { + t.Fatalf("Expected no error, got %s", err) + } + + if !reflect.DeepEqual(tr.cat, catalog) { + t.Fatalf("Expected catalog %v, got %v", catalog, tr.cat) + } +} + +func TestTranslate(t *testing.T) { + type testCase struct { + name string + str string + lang language.Tag + exp string + } + + var cases = []testCase{ + {"English1", "First test", language.English, "First test"}, + {"English2", "Second test", language.English, "Second test"}, + {"NotFound", "test", language.English, "test"}, + {"Russian", "First test", language.Russian, "Первая проверка"}, + {"InvalidTag", "Hello", language.Tag{}, "Hello"}, + } + + tr := New(catalog) + + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + out := tr.TranslateTo(tc.str, tc.lang) + if out != tc.exp { + t.Errorf("Expected '%s', got '%s'", tc.exp, out) + } + }) + } +}