diff options
author | Dean Karn <Dean.Karn@metricaid.com> | 2016-09-12 04:59:11 +0300 |
---|---|---|
committer | Dean Karn <Dean.Karn@metricaid.com> | 2016-09-12 04:59:11 +0300 |
commit | 6616ab2bf0b439eca1f2266c2ba7ea74d79ebce2 (patch) | |
tree | 57a1ba8f5954dc97dc4cde81027532b9d66b3083 | |
parent | e113a824946153c0acb4eae2e53d72356619e547 (diff) |
increase locale 'en' test coverage to 100%
-rw-r--r-- | en/en_test.go | 378 |
1 files changed, 368 insertions, 10 deletions
diff --git a/en/en_test.go b/en/en_test.go index fc1a3924..f96c27ff 100644 --- a/en/en_test.go +++ b/en/en_test.go @@ -4,9 +4,230 @@ import ( "testing" "time" + "github.com/go-playground/locales" "github.com/go-playground/locales/currency" ) +func TestLocale(t *testing.T) { + + trans := New() + expected := "en" + + if trans.Locale() != expected { + t.Errorf("Expected '%s' Got '%s'", expected, trans.Locale()) + } +} + +func TestPluralsRange(t *testing.T) { + + trans := New() + + tests := []struct { + expected locales.PluralRule + }{ + { + expected: locales.PluralRuleOther, + }, + } + + rules := trans.PluralsRange() + expected := 1 + if len(rules) != expected { + t.Errorf("Expected '%d' Got '%d'", expected, len(rules)) + } + + for _, tt := range tests { + + r := locales.PluralRuleUnknown + + for i := 0; i < len(rules); i++ { + if rules[i] == tt.expected { + r = rules[i] + break + } + } + if r == locales.PluralRuleUnknown { + t.Errorf("Expected '%s' Got '%s'", tt.expected, r) + } + } +} + +func TestPluralsOrdinal(t *testing.T) { + + trans := New() + + tests := []struct { + expected locales.PluralRule + }{ + { + expected: locales.PluralRuleOne, + }, + { + expected: locales.PluralRuleTwo, + }, + { + expected: locales.PluralRuleFew, + }, + { + expected: locales.PluralRuleOther, + }, + } + + rules := trans.PluralsOrdinal() + expected := 4 + if len(rules) != expected { + t.Errorf("Expected '%d' Got '%d'", expected, len(rules)) + } + + for _, tt := range tests { + + r := locales.PluralRuleUnknown + + for i := 0; i < len(rules); i++ { + if rules[i] == tt.expected { + r = rules[i] + break + } + } + if r == locales.PluralRuleUnknown { + t.Errorf("Expected '%s' Got '%s'", tt.expected, r) + } + } +} + +func TestPluralsCardinal(t *testing.T) { + + trans := New() + + tests := []struct { + expected locales.PluralRule + }{ + { + expected: locales.PluralRuleOne, + }, + { + expected: locales.PluralRuleOther, + }, + } + + rules := trans.PluralsCardinal() + expected := 2 + if len(rules) != expected { + t.Errorf("Expected '%d' Got '%d'", expected, len(rules)) + } + + for _, tt := range tests { + + r := locales.PluralRuleUnknown + + for i := 0; i < len(rules); i++ { + if rules[i] == tt.expected { + r = rules[i] + break + } + } + if r == locales.PluralRuleUnknown { + t.Errorf("Expected '%s' Got '%s'", tt.expected, r) + } + } +} + +func TestRangePlurals(t *testing.T) { + + trans := New() + + tests := []struct { + num1 float64 + v1 uint64 + num2 float64 + v2 uint64 + expected locales.PluralRule + }{ + { + num1: 1, + v1: 1, + num2: 2, + v2: 2, + expected: locales.PluralRuleOther, + }, + } + + for _, tt := range tests { + rule := trans.RangePluralRule(tt.num1, tt.v1, tt.num2, tt.v2) + if rule != tt.expected { + t.Errorf("Expected '%s' Got '%s'", tt.expected, rule) + } + } +} + +func TestOrdinalPlurals(t *testing.T) { + + trans := New() + + tests := []struct { + num float64 + v uint64 + expected locales.PluralRule + }{ + { + num: 1, + v: 0, + expected: locales.PluralRuleOne, + }, + { + num: 2, + v: 0, + expected: locales.PluralRuleTwo, + }, + { + num: 3, + v: 0, + expected: locales.PluralRuleFew, + }, + { + num: 4, + v: 0, + expected: locales.PluralRuleOther, + }, + } + + for _, tt := range tests { + rule := trans.OrdinalPluralRule(tt.num, tt.v) + if rule != tt.expected { + t.Errorf("Expected '%s' Got '%s'", tt.expected, rule) + } + } +} + +func TestCardinalPlurals(t *testing.T) { + + trans := New() + + tests := []struct { + num float64 + v uint64 + expected locales.PluralRule + }{ + { + num: 1, + v: 0, + expected: locales.PluralRuleOne, + }, + { + num: 4, + v: 0, + expected: locales.PluralRuleOther, + }, + } + + for _, tt := range tests { + rule := trans.CardinalPluralRule(tt.num, tt.v) + if rule != tt.expected { + t.Errorf("Expected '%s' Got '%s'", tt.expected, rule) + } + } +} + func TestDaysAbbreviated(t *testing.T) { trans := New() @@ -445,13 +666,15 @@ func TestMonthsWide(t *testing.T) { } } -func TestFullTime(t *testing.T) { +func TestFmtTimeFull(t *testing.T) { loc, err := time.LoadLocation("America/Toronto") if err != nil { t.Errorf("Expected '<nil>' Got '%s'", err) } + fixed := time.FixedZone("OTHER", -4) + tests := []struct { t time.Time expected string @@ -460,6 +683,10 @@ func TestFullTime(t *testing.T) { t: time.Date(2016, 02, 03, 9, 5, 1, 0, loc), expected: "9:05:01 am Eastern Standard Time", }, + { + t: time.Date(2016, 02, 03, 20, 5, 1, 0, fixed), + expected: "8:05:01 pm OTHER", + }, } trans := New() @@ -472,7 +699,7 @@ func TestFullTime(t *testing.T) { } } -func TestLongTime(t *testing.T) { +func TestFmtTimeLong(t *testing.T) { loc, err := time.LoadLocation("America/Toronto") if err != nil { @@ -487,6 +714,10 @@ func TestLongTime(t *testing.T) { t: time.Date(2016, 02, 03, 9, 5, 1, 0, loc), expected: "9:05:01 am EST", }, + { + t: time.Date(2016, 02, 03, 20, 5, 1, 0, loc), + expected: "8:05:01 pm EST", + }, } trans := New() @@ -499,7 +730,7 @@ func TestLongTime(t *testing.T) { } } -func TestMediumTime(t *testing.T) { +func TestFmtTimeMedium(t *testing.T) { tests := []struct { t time.Time @@ -509,6 +740,10 @@ func TestMediumTime(t *testing.T) { t: time.Date(2016, 02, 03, 9, 5, 1, 0, time.UTC), expected: "9:05:01 am", }, + { + t: time.Date(2016, 02, 03, 20, 5, 1, 0, time.UTC), + expected: "8:05:01 pm", + }, } trans := New() @@ -521,7 +756,7 @@ func TestMediumTime(t *testing.T) { } } -func TestShortTime(t *testing.T) { +func TestFmtTimeShort(t *testing.T) { tests := []struct { t time.Time @@ -531,6 +766,10 @@ func TestShortTime(t *testing.T) { t: time.Date(2016, 02, 03, 9, 5, 1, 0, time.UTC), expected: "9:05 am", }, + { + t: time.Date(2016, 02, 03, 20, 5, 1, 0, time.UTC), + expected: "8:05 pm", + }, } trans := New() @@ -543,7 +782,7 @@ func TestShortTime(t *testing.T) { } } -func TestFullDate(t *testing.T) { +func TestFmtDateFull(t *testing.T) { tests := []struct { t time.Time @@ -565,7 +804,7 @@ func TestFullDate(t *testing.T) { } } -func TestLongDate(t *testing.T) { +func TestFmtDateLong(t *testing.T) { tests := []struct { t time.Time @@ -587,7 +826,7 @@ func TestLongDate(t *testing.T) { } } -func TestMediumDate(t *testing.T) { +func TestFmtDateMedium(t *testing.T) { tests := []struct { t time.Time @@ -609,7 +848,7 @@ func TestMediumDate(t *testing.T) { } } -func TestShortDate(t *testing.T) { +func TestFmtDateShort(t *testing.T) { tests := []struct { t time.Time @@ -619,6 +858,10 @@ func TestShortDate(t *testing.T) { t: time.Date(2016, 02, 03, 9, 0, 1, 0, time.UTC), expected: "2/3/16", }, + { + t: time.Date(-500, 02, 03, 9, 0, 1, 0, time.UTC), + expected: "2/3/500", + }, } trans := New() @@ -631,7 +874,66 @@ func TestShortDate(t *testing.T) { } } -func TestCurrency(t *testing.T) { +func TestFmtNumber(t *testing.T) { + + tests := []struct { + num float64 + v uint64 + expected string + }{ + { + num: 1123456.5643, + v: 2, + expected: "1,123,456.56", + }, + { + num: 1123456.5643, + v: 1, + expected: "1,123,456.6", + }, + { + num: 221123456.5643, + v: 3, + expected: "221,123,456.564", + }, + { + num: -221123456.5643, + v: 3, + expected: "-221,123,456.564", + }, + { + num: -221123456.5643, + v: 3, + expected: "-221,123,456.564", + }, + { + num: 0, + v: 2, + expected: "0.00", + }, + { + num: -0, + v: 2, + expected: "0.00", + }, + { + num: -0, + v: 2, + expected: "0.00", + }, + } + + trans := New() + + for _, tt := range tests { + s := trans.FmtNumber(tt.num, tt.v) + if s != tt.expected { + t.Errorf("Expected '%s' Got '%s'", tt.expected, s) + } + } +} + +func TestFmtCurrency(t *testing.T) { tests := []struct { num float64 @@ -687,6 +989,12 @@ func TestCurrency(t *testing.T) { currency: currency.CAD, expected: "CAD 0.00", }, + { + num: 1.23, + v: 0, + currency: currency.USD, + expected: "$1.00", + }, } trans := New() @@ -699,7 +1007,7 @@ func TestCurrency(t *testing.T) { } } -func TestAccounting(t *testing.T) { +func TestFmtAccounting(t *testing.T) { tests := []struct { num float64 @@ -749,6 +1057,12 @@ func TestAccounting(t *testing.T) { currency: currency.CAD, expected: "CAD 0.00", }, + { + num: 1.23, + v: 0, + currency: currency.USD, + expected: "$1.00", + }, } trans := New() @@ -760,3 +1074,47 @@ func TestAccounting(t *testing.T) { } } } + +func TestFmtPercent(t *testing.T) { + + tests := []struct { + num float64 + v uint64 + expected string + }{ + { + num: 15, + v: 0, + expected: "15%", + }, + { + num: 15, + v: 2, + expected: "15.00%", + }, + { + num: 434.45, + v: 0, + expected: "434%", + }, + { + num: 34.4, + v: 2, + expected: "34.40%", + }, + { + num: -34, + v: 0, + expected: "-34%", + }, + } + + trans := New() + + for _, tt := range tests { + s := trans.FmtPercent(tt.num, tt.v) + if s != tt.expected { + t.Errorf("Expected '%s' Got '%s'", tt.expected, s) + } + } +} |