i18n: Add plural tests (spec)
parent
67d2635e41
commit
2a156e7313
@ -0,0 +1,208 @@
|
|||||||
|
require "spec"
|
||||||
|
require "../src/invidious/helpers/i18next.cr"
|
||||||
|
|
||||||
|
resolver = I18next::Plurals::RESOLVER
|
||||||
|
|
||||||
|
FORM_TESTS = {
|
||||||
|
"ach" => I18next::Plurals::PluralForms::Single_gt_one,
|
||||||
|
"ar" => I18next::Plurals::PluralForms::Special_Arabic,
|
||||||
|
"be" => I18next::Plurals::PluralForms::Dual_Slavic,
|
||||||
|
"cy" => I18next::Plurals::PluralForms::Special_Welsh,
|
||||||
|
"en" => I18next::Plurals::PluralForms::Single_not_one,
|
||||||
|
"fr" => I18next::Plurals::PluralForms::Single_gt_one,
|
||||||
|
"ga" => I18next::Plurals::PluralForms::Special_Irish,
|
||||||
|
"gd" => I18next::Plurals::PluralForms::Special_Scottish_Gaelic,
|
||||||
|
"he" => I18next::Plurals::PluralForms::Special_Hebrew,
|
||||||
|
"is" => I18next::Plurals::PluralForms::Special_Icelandic,
|
||||||
|
"jv" => I18next::Plurals::PluralForms::Special_Javanese,
|
||||||
|
"kw" => I18next::Plurals::PluralForms::Special_Cornish,
|
||||||
|
"lt" => I18next::Plurals::PluralForms::Special_Lithuanian,
|
||||||
|
"lv" => I18next::Plurals::PluralForms::Special_Latvian,
|
||||||
|
"mk" => I18next::Plurals::PluralForms::Special_Macedonian,
|
||||||
|
"mnk" => I18next::Plurals::PluralForms::Special_Mandinka,
|
||||||
|
"mt" => I18next::Plurals::PluralForms::Special_Maltese,
|
||||||
|
"or" => I18next::Plurals::PluralForms::Special_Odia,
|
||||||
|
"pl" => I18next::Plurals::PluralForms::Special_Polish_Kashubian,
|
||||||
|
"pt" => I18next::Plurals::PluralForms::Single_gt_one,
|
||||||
|
"pt-PT" => I18next::Plurals::PluralForms::Single_not_one,
|
||||||
|
"pt-BR" => I18next::Plurals::PluralForms::Single_gt_one,
|
||||||
|
"ro" => I18next::Plurals::PluralForms::Special_Romanian,
|
||||||
|
"su" => I18next::Plurals::PluralForms::None,
|
||||||
|
"sk" => I18next::Plurals::PluralForms::Special_Czech_Slovak,
|
||||||
|
"sl" => I18next::Plurals::PluralForms::Special_Slovenian,
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
SUFFIX_TESTS = {
|
||||||
|
"ach" => [
|
||||||
|
{num: 0, suffix: ""},
|
||||||
|
{num: 1, suffix: ""},
|
||||||
|
{num: 10, suffix: "_plural"},
|
||||||
|
],
|
||||||
|
"ar" => [
|
||||||
|
{num: 0, suffix: "_0"},
|
||||||
|
{num: 1, suffix: "_1"},
|
||||||
|
{num: 2, suffix: "_2"},
|
||||||
|
{num: 3, suffix: "_3"},
|
||||||
|
{num: 4, suffix: "_3"},
|
||||||
|
{num: 104, suffix: "_3"},
|
||||||
|
{num: 11, suffix: "_4"},
|
||||||
|
{num: 99, suffix: "_4"},
|
||||||
|
{num: 199, suffix: "_4"},
|
||||||
|
{num: 100, suffix: "_5"},
|
||||||
|
],
|
||||||
|
"be" => [
|
||||||
|
{num: 0, suffix: "_2"},
|
||||||
|
{num: 1, suffix: "_0"},
|
||||||
|
{num: 5, suffix: "_2"},
|
||||||
|
],
|
||||||
|
"cy" => [
|
||||||
|
{num: 0, suffix: "_2"},
|
||||||
|
{num: 1, suffix: "_0"},
|
||||||
|
{num: 3, suffix: "_2"},
|
||||||
|
{num: 8, suffix: "_3"},
|
||||||
|
],
|
||||||
|
"en" => [
|
||||||
|
{num: 0, suffix: "_plural"},
|
||||||
|
{num: 1, suffix: ""},
|
||||||
|
{num: 10, suffix: "_plural"},
|
||||||
|
],
|
||||||
|
"fr" => [
|
||||||
|
{num: 0, suffix: ""},
|
||||||
|
{num: 1, suffix: ""},
|
||||||
|
{num: 10, suffix: "_plural"},
|
||||||
|
],
|
||||||
|
"ga" => [
|
||||||
|
{num: 1, suffix: "_0"},
|
||||||
|
{num: 2, suffix: "_1"},
|
||||||
|
{num: 3, suffix: "_2"},
|
||||||
|
{num: 7, suffix: "_3"},
|
||||||
|
{num: 11, suffix: "_4"},
|
||||||
|
],
|
||||||
|
"gd" => [
|
||||||
|
{num: 1, suffix: "_0"},
|
||||||
|
{num: 2, suffix: "_1"},
|
||||||
|
{num: 3, suffix: "_2"},
|
||||||
|
{num: 20, suffix: "_3"},
|
||||||
|
],
|
||||||
|
"he" => [
|
||||||
|
{num: 0, suffix: "_3"},
|
||||||
|
{num: 1, suffix: "_0"},
|
||||||
|
{num: 2, suffix: "_1"},
|
||||||
|
{num: 3, suffix: "_3"},
|
||||||
|
{num: 20, suffix: "_2"},
|
||||||
|
{num: 21, suffix: "_3"},
|
||||||
|
{num: 30, suffix: "_2"},
|
||||||
|
{num: 100, suffix: "_2"},
|
||||||
|
{num: 101, suffix: "_3"},
|
||||||
|
],
|
||||||
|
"is" => [
|
||||||
|
{num: 1, suffix: ""},
|
||||||
|
{num: 2, suffix: "_plural"},
|
||||||
|
],
|
||||||
|
"jv" => [
|
||||||
|
{num: 0, suffix: "_0"},
|
||||||
|
{num: 1, suffix: "_1"},
|
||||||
|
],
|
||||||
|
"kw" => [
|
||||||
|
{num: 1, suffix: "_0"},
|
||||||
|
{num: 2, suffix: "_1"},
|
||||||
|
{num: 3, suffix: "_2"},
|
||||||
|
{num: 4, suffix: "_3"},
|
||||||
|
],
|
||||||
|
"lt" => [
|
||||||
|
{num: 1, suffix: "_0"},
|
||||||
|
{num: 2, suffix: "_1"},
|
||||||
|
{num: 10, suffix: "_2"},
|
||||||
|
],
|
||||||
|
"lv" => [
|
||||||
|
{num: 1, suffix: "_0"},
|
||||||
|
{num: 2, suffix: "_1"},
|
||||||
|
{num: 0, suffix: "_2"},
|
||||||
|
],
|
||||||
|
"mk" => [
|
||||||
|
{num: 1, suffix: ""},
|
||||||
|
{num: 2, suffix: "_plural"},
|
||||||
|
{num: 0, suffix: "_plural"},
|
||||||
|
{num: 11, suffix: "_plural"},
|
||||||
|
{num: 21, suffix: ""},
|
||||||
|
{num: 31, suffix: ""},
|
||||||
|
{num: 311, suffix: "_plural"},
|
||||||
|
],
|
||||||
|
"mnk" => [
|
||||||
|
{num: 0, suffix: "_0"},
|
||||||
|
{num: 1, suffix: "_1"},
|
||||||
|
{num: 2, suffix: "_2"},
|
||||||
|
],
|
||||||
|
"mt" => [
|
||||||
|
{num: 1, suffix: "_0"},
|
||||||
|
{num: 2, suffix: "_1"},
|
||||||
|
{num: 11, suffix: "_2"},
|
||||||
|
{num: 20, suffix: "_3"},
|
||||||
|
],
|
||||||
|
"or" => [
|
||||||
|
{num: 2, suffix: "_1"},
|
||||||
|
{num: 1, suffix: "_0"},
|
||||||
|
],
|
||||||
|
"pl" => [
|
||||||
|
{num: 0, suffix: "_2"},
|
||||||
|
{num: 1, suffix: "_0"},
|
||||||
|
{num: 5, suffix: "_2"},
|
||||||
|
],
|
||||||
|
"pt" => [
|
||||||
|
{num: 0, suffix: ""},
|
||||||
|
{num: 1, suffix: ""},
|
||||||
|
{num: 10, suffix: "_plural"},
|
||||||
|
],
|
||||||
|
"pt-PT" => [
|
||||||
|
{num: 0, suffix: "_plural"},
|
||||||
|
{num: 1, suffix: ""},
|
||||||
|
{num: 10, suffix: "_plural"},
|
||||||
|
],
|
||||||
|
"pt-BR" => [
|
||||||
|
{num: 0, suffix: ""},
|
||||||
|
{num: 1, suffix: ""},
|
||||||
|
{num: 10, suffix: "_plural"},
|
||||||
|
],
|
||||||
|
"ro" => [
|
||||||
|
{num: 0, suffix: "_1"},
|
||||||
|
{num: 1, suffix: "_0"},
|
||||||
|
{num: 20, suffix: "_2"},
|
||||||
|
],
|
||||||
|
"su" => [
|
||||||
|
{num: 0, suffix: "_0"},
|
||||||
|
{num: 1, suffix: "_0"},
|
||||||
|
{num: 10, suffix: "_0"},
|
||||||
|
],
|
||||||
|
"sk" => [
|
||||||
|
{num: 0, suffix: "_2"},
|
||||||
|
{num: 1, suffix: "_0"},
|
||||||
|
{num: 5, suffix: "_2"},
|
||||||
|
],
|
||||||
|
"sl" => [
|
||||||
|
{num: 5, suffix: "_0"},
|
||||||
|
{num: 1, suffix: "_1"},
|
||||||
|
{num: 2, suffix: "_2"},
|
||||||
|
{num: 3, suffix: "_3"},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
describe "i18next_Plural_Resolver" do
|
||||||
|
describe "get_plural_form" do
|
||||||
|
FORM_TESTS.each do |locale, form|
|
||||||
|
it "returns the right plural form for locale '#{locale}'" do
|
||||||
|
resolver.get_plural_form(locale).should eq(form)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "get_suffix" do
|
||||||
|
SUFFIX_TESTS.each do |locale, data|
|
||||||
|
it "returns the right suffix for locale '#{locale}'" do
|
||||||
|
data.each do |d|
|
||||||
|
resolver.get_suffix(locale, d[:num]).should eq(d[:suffix])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue