| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413 |
- package ut_test
- import (
- "testing"
- "time"
- "github.com/go-playground/universal-translator"
- _ "github.com/go-playground/universal-translator/resources/locales"
- . "gopkg.in/go-playground/assert.v1"
- )
- // NOTES:
- // - Run "go test" to run tests
- // - Run "gocov test | gocov report" to report on test converage by file
- // - Run "gocov test | gocov annotate -" to report on all code and functions, those ,marked with "MISS" were never called
- //
- // or
- //
- // -- may be a good idea to change to output path to somewherelike /tmp
- // go test -coverprofile cover.out && go tool cover -html=cover.out -o cover.html
- //
- func TestDateTimeTh(t *testing.T) {
- th, err := ut.GetTranslator("th")
- Equal(t, err, nil)
- datetime, err := time.Parse(dateTimeString, dateTimeString)
- Equal(t, err, nil)
- // test the public method
- dt, err := th.FmtDateFullSafe(datetime)
- Equal(t, err, nil)
- Equal(t, dt, "วันจันทร์ที่ 2 มกราคม คริสต์ศักราช 2006")
- dt, err = th.FmtDateFullSafe(bc300DateTime)
- Equal(t, err, nil)
- Equal(t, dt, "วันเสาร์ที่ 2 มกราคม 300 ปีก่อนคริสต์ศักราช")
- dt = th.FmtDateFull(datetime)
- Equal(t, dt, "วันจันทร์ที่ 2 มกราคม คริสต์ศักราช 2006")
- dt = th.FmtDateFull(bc300DateTime)
- Equal(t, dt, "วันเสาร์ที่ 2 มกราคม 300 ปีก่อนคริสต์ศักราช")
- dt, err = th.FmtDateLongSafe(datetime)
- Equal(t, err, nil)
- Equal(t, dt, "2 มกราคม ค.ศ. 2006")
- dt, err = th.FmtDateLongSafe(bc300DateTime)
- Equal(t, err, nil)
- Equal(t, dt, "2 มกราคม 300 ปีก่อน ค.ศ.")
- dt = th.FmtDateLong(datetime)
- Equal(t, dt, "2 มกราคม ค.ศ. 2006")
- dt = th.FmtDateLong(bc300DateTime)
- Equal(t, dt, "2 มกราคม 300 ปีก่อน ค.ศ.")
- dt, err = th.FmtDateMediumSafe(datetime)
- Equal(t, err, nil)
- Equal(t, dt, "2 ม.ค. 2006")
- dt = th.FmtDateMedium(datetime)
- Equal(t, dt, "2 ม.ค. 2006")
- dt, err = th.FmtDateShortSafe(datetime)
- Equal(t, err, nil)
- Equal(t, dt, "2/1/06")
- dt = th.FmtDateShort(datetime)
- Equal(t, dt, "2/1/06")
- dt, err = th.FmtTimeFullSafe(datetime)
- Equal(t, err, nil)
- Equal(t, dt, "15 นาฬิกา 04 นาที 05 วินาที")
- dt = th.FmtTimeFull(datetime)
- Equal(t, dt, "15 นาฬิกา 04 นาที 05 วินาที")
- dt, err = th.FmtTimeLongSafe(datetime)
- Equal(t, err, nil)
- Equal(t, dt, "15 นาฬิกา 04 นาที 05 วินาที")
- dt = th.FmtTimeLong(datetime)
- Equal(t, dt, "15 นาฬิกา 04 นาที 05 วินาที")
- dt, err = th.FmtTimeMediumSafe(datetime)
- Equal(t, err, nil)
- Equal(t, dt, "15:04:05")
- dt = th.FmtTimeMedium(datetime)
- Equal(t, dt, "15:04:05")
- dt, err = th.FmtTimeShortSafe(datetime)
- Equal(t, err, nil)
- Equal(t, dt, "15:04")
- dt = th.FmtTimeShort(datetime)
- Equal(t, dt, "15:04")
- dt, err = th.FmtDateTimeFullSafe(datetime)
- Equal(t, err, nil)
- Equal(t, dt, "วันจันทร์ที่ 2 มกราคม คริสต์ศักราช 2006 15 นาฬิกา 04 นาที 05 วินาที")
- dt, err = th.FmtDateTimeFullSafe(bc300DateTime)
- Equal(t, err, nil)
- Equal(t, dt, "วันเสาร์ที่ 2 มกราคม 300 ปีก่อนคริสต์ศักราช 3 นาฬิกา 04 นาที 05 วินาที")
- dt = th.FmtDateTimeFull(datetime)
- Equal(t, dt, "วันจันทร์ที่ 2 มกราคม คริสต์ศักราช 2006 15 นาฬิกา 04 นาที 05 วินาที")
- dt = th.FmtDateTimeFull(bc300DateTime)
- Equal(t, dt, "วันเสาร์ที่ 2 มกราคม 300 ปีก่อนคริสต์ศักราช 3 นาฬิกา 04 นาที 05 วินาที")
- dt, err = th.FmtDateTimeLongSafe(datetime)
- Equal(t, err, nil)
- Equal(t, dt, "2 มกราคม ค.ศ. 2006 15 นาฬิกา 04 นาที 05 วินาที")
- dt, err = th.FmtDateTimeLongSafe(bc300DateTime)
- Equal(t, err, nil)
- Equal(t, dt, "2 มกราคม 300 ปีก่อน ค.ศ. 3 นาฬิกา 04 นาที 05 วินาที")
- dt = th.FmtDateTimeLong(datetime)
- Equal(t, dt, "2 มกราคม ค.ศ. 2006 15 นาฬิกา 04 นาที 05 วินาที")
- dt = th.FmtDateTimeLong(bc300DateTime)
- Equal(t, dt, "2 มกราคม 300 ปีก่อน ค.ศ. 3 นาฬิกา 04 นาที 05 วินาที")
- dt, err = th.FmtDateTimeMediumSafe(datetime)
- Equal(t, err, nil)
- Equal(t, dt, "2 ม.ค. 2006 15:04:05")
- dt = th.FmtDateTimeMedium(datetime)
- Equal(t, dt, "2 ม.ค. 2006 15:04:05")
- dt, err = th.FmtDateTimeShortSafe(datetime)
- Equal(t, err, nil)
- Equal(t, dt, "2/1/06 15:04")
- dt = th.FmtDateTimeShort(datetime)
- Equal(t, dt, "2/1/06 15:04")
- dt, err = th.FmtDateTimeSafe(datetime, "MMMM d yy")
- Equal(t, err, nil)
- Equal(t, dt, "มกราคม 2 06")
- dt = th.FmtDateTime(datetime, "MMMM d yy")
- Equal(t, err, nil)
- Equal(t, dt, "มกราคม 2 06")
- dt, err = th.FmtDateTimeSafe(datetime, "not a date pattern")
- NotEqual(t, err, nil)
- Equal(t, dt, "")
- Equal(t, err.Error(), "unknown datetime format unit: n")
- }
- func TestCurrencyTh(t *testing.T) {
- th, err := ut.GetTranslator("th")
- Equal(t, err, nil)
- result, err := th.FmtCurrencySafe(ut.CurrencyStandard, "THB", 12345.6789)
- Equal(t, err, nil)
- Equal(t, result, "THB12,345.68")
- result = th.FmtCurrency(ut.CurrencyStandard, "THB", 12345.6789)
- Equal(t, result, "THB12,345.68")
- result, err = th.FmtCurrencySafe(ut.CurrencyAccounting, "THB", 12345.6789)
- Equal(t, err, nil)
- Equal(t, result, "THB12,345.68")
- result = th.FmtCurrency(ut.CurrencyAccounting, "THB", 12345.6789)
- Equal(t, result, "THB12,345.68")
- result, err = th.FmtCurrencySafe(ut.CurrencyStandard, "THB", -12345.6789)
- Equal(t, err, nil)
- Equal(t, result, "-THB12,345.68")
- result = th.FmtCurrency(ut.CurrencyStandard, "THB", -12345.6789)
- Equal(t, result, "-THB12,345.68")
- result, err = th.FmtCurrencySafe(ut.CurrencyAccounting, "THB", -12345.6789)
- Equal(t, err, nil)
- Equal(t, result, "(THB12,345.68)")
- result = th.FmtCurrency(ut.CurrencyAccounting, "THB", -12345.6789)
- Equal(t, result, "(THB12,345.68)")
- result, err = th.FmtCurrencySafe(ut.CurrencyStandard, "WHAT???", 12345.6789)
- NotEqual(t, err, nil)
- Equal(t, err.Error(), "**** WARNING **** unknown currency: WHAT???")
- result = th.FmtCurrency(ut.CurrencyStandard, "WHAT???", 12345.6789)
- Equal(t, result, "WHAT???12,345.68")
- result, err = th.FmtCurrencySafe(ut.CurrencyAccounting, "WHAT???", 12345.6789)
- NotEqual(t, err, nil)
- Equal(t, err.Error(), "**** WARNING **** unknown currency: WHAT???")
- result = th.FmtCurrency(ut.CurrencyAccounting, "WHAT???", 12345.6789)
- Equal(t, result, "WHAT???12,345.68")
- // try some really big numbers to make sure weird floaty stuff doesn't
- // happen
- result, err = th.FmtCurrencySafe(ut.CurrencyStandard, "THB", 12345000000000.6789)
- Equal(t, err, nil)
- Equal(t, result, "THB12,345,000,000,000.68")
- result = th.FmtCurrency(ut.CurrencyStandard, "THB", 12345000000000.6789)
- Equal(t, result, "THB12,345,000,000,000.68")
- result, err = th.FmtCurrencySafe(ut.CurrencyAccounting, "THB", 12345000000000.6789)
- Equal(t, err, nil)
- Equal(t, result, "THB12,345,000,000,000.68")
- result = th.FmtCurrency(ut.CurrencyAccounting, "THB", 12345000000000.6789)
- Equal(t, result, "THB12,345,000,000,000.68")
- result, err = th.FmtCurrencySafe(ut.CurrencyStandard, "THB", -12345000000000.6789)
- Equal(t, err, nil)
- Equal(t, result, "-THB12,345,000,000,000.68")
- result = th.FmtCurrency(ut.CurrencyStandard, "THB", -12345000000000.6789)
- Equal(t, result, "-THB12,345,000,000,000.68")
- result, err = th.FmtCurrencySafe(ut.CurrencyAccounting, "THB", -12345000000000.6789)
- Equal(t, err, nil)
- Equal(t, result, "(THB12,345,000,000,000.68)")
- result = th.FmtCurrency(ut.CurrencyAccounting, "THB", -12345000000000.6789)
- Equal(t, result, "(THB12,345,000,000,000.68)")
- en, err := ut.GetTranslator("en")
- Equal(t, err, nil)
- result, err = en.FmtCurrencySafe(ut.CurrencyStandard, "THB", 12345.6789)
- Equal(t, err, nil)
- Equal(t, result, "12,345.68")
- result = en.FmtCurrency(ut.CurrencyStandard, "THB", 12345.6789)
- Equal(t, result, "12,345.68")
- result, err = en.FmtCurrencySafe(ut.CurrencyAccounting, "THB", 12345.6789)
- Equal(t, err, nil)
- Equal(t, result, "12,345.68")
- result = en.FmtCurrency(ut.CurrencyAccounting, "THB", 12345.6789)
- Equal(t, result, "12,345.68")
- ar, err := ut.GetTranslator("ar")
- Equal(t, err, nil)
- result, err = ar.FmtCurrencySafe(ut.CurrencyStandard, "THB", -12345.6789)
- Equal(t, err, nil)
- Equal(t, result, "\u200F-฿\u00A012٬345٫68")
- result = ar.FmtCurrency(ut.CurrencyStandard, "THB", -12345.6789)
- Equal(t, result, "\u200F-฿\u00A012٬345٫68")
- result, err = ar.FmtCurrencySafe(ut.CurrencyAccounting, "THB", -12345.6789)
- Equal(t, err, nil)
- Equal(t, result, "\u200F-฿\u00A012٬345٫68")
- result = ar.FmtCurrency(ut.CurrencyAccounting, "THB", -12345.6789)
- Equal(t, result, "\u200F-฿\u00A012٬345٫68")
- // And one more for with some unusual symbols for good measure
- result, err = th.FmtCurrencySafe(ut.CurrencyStandard, "THB", 0.0084)
- Equal(t, err, nil)
- Equal(t, result, "THB0.01")
- result = th.FmtCurrency(ut.CurrencyStandard, "THB", 0.0084)
- Equal(t, result, "THB0.01")
- }
- func TestCurrencyWholeTh(t *testing.T) {
- th, err := ut.GetTranslator("th")
- Equal(t, err, nil)
- result, err := th.FmtCurrencyWholeSafe(ut.CurrencyStandard, "THB", 12345.6789)
- Equal(t, err, nil)
- Equal(t, result, "THB12,346")
- result = th.FmtCurrencyWhole(ut.CurrencyStandard, "THB", 12345.6789)
- Equal(t, result, "THB12,346")
- result, err = th.FmtCurrencyWholeSafe(ut.CurrencyAccounting, "THB", 12345.6789)
- Equal(t, err, nil)
- Equal(t, result, "THB12,346")
- result = th.FmtCurrencyWhole(ut.CurrencyAccounting, "THB", 12345.6789)
- Equal(t, result, "THB12,346")
- result, err = th.FmtCurrencyWholeSafe(ut.CurrencyStandard, "THB", -12345.6789)
- Equal(t, err, nil)
- Equal(t, result, "-THB12,346")
- result = th.FmtCurrencyWhole(ut.CurrencyStandard, "THB", -12345.6789)
- Equal(t, result, "-THB12,346")
- result, err = th.FmtCurrencyWholeSafe(ut.CurrencyAccounting, "THB", -12345.6789)
- Equal(t, err, nil)
- Equal(t, result, "(THB12,346)")
- result = th.FmtCurrencyWhole(ut.CurrencyAccounting, "THB", -12345.6789)
- Equal(t, result, "(THB12,346)")
- result, err = th.FmtCurrencyWholeSafe(ut.CurrencyStandard, "WHAT???", 12345.6789)
- NotEqual(t, err, nil)
- Equal(t, result, "WHAT???12,346")
- result = th.FmtCurrencyWhole(ut.CurrencyStandard, "WHAT???", 12345.6789)
- Equal(t, result, "WHAT???12,346")
- // try some really big numbers to make sure weird floaty stuff doesn't
- // happen
- result, err = th.FmtCurrencyWholeSafe(ut.CurrencyStandard, "THB", 12345000000000.6789)
- Equal(t, err, nil)
- Equal(t, result, "THB12,345,000,000,001")
- result, err = th.FmtCurrencyWholeSafe(ut.CurrencyAccounting, "THB", 12345000000000.6789)
- Equal(t, err, nil)
- Equal(t, result, "THB12,345,000,000,001")
- result, err = th.FmtCurrencyWholeSafe(ut.CurrencyStandard, "THB", -12345000000000.6789)
- Equal(t, err, nil)
- Equal(t, result, "-THB12,345,000,000,001")
- result = th.FmtCurrencyWhole(ut.CurrencyStandard, "THB", -12345000000000.6789)
- Equal(t, result, "-THB12,345,000,000,001")
- result, err = th.FmtCurrencyWholeSafe(ut.CurrencyAccounting, "THB", -12345000000000.6789)
- Equal(t, err, nil)
- Equal(t, result, "(THB12,345,000,000,001)")
- result = th.FmtCurrencyWhole(ut.CurrencyAccounting, "THB", -12345000000000.6789)
- Equal(t, result, "(THB12,345,000,000,001)")
- }
- func TestNumberTh(t *testing.T) {
- th, err := ut.GetTranslator("th")
- Equal(t, err, nil)
- // check basic english
- result := th.FmtNumber(12345.6789)
- Equal(t, result, "12,345.679")
- result = th.FmtNumber(-12345.6789)
- Equal(t, result, "-12,345.679")
- result = th.FmtNumber(123456789)
- Equal(t, result, "123,456,789")
- hi, err := ut.GetTranslator("hi")
- Equal(t, err, nil)
- // check Hindi - different group sizes
- result = hi.FmtNumber(12345.6789)
- Equal(t, result, "12,345.679")
- result = hi.FmtNumber(-12345.6789)
- Equal(t, result, "-12,345.679")
- result = hi.FmtNumber(123456789)
- Equal(t, result, "12,34,56,789")
- uz, err := ut.GetTranslator("uz")
- Equal(t, err, nil)
- // check Uzbek - something with a partial fallback
- result = uz.FmtNumber(12345.6789)
- Equal(t, result, "12٬345٫679")
- result = uz.FmtNumber(-12345.6789)
- Equal(t, result, "-12٬345٫679")
- result = uz.FmtNumber(123456789)
- Equal(t, result, "123٬456٬789")
- }
- func TestNumberWholeTh(t *testing.T) {
- th, err := ut.GetTranslator("th")
- Equal(t, err, nil)
- result := th.FmtNumberWhole(12345.6789)
- Equal(t, result, "12,346")
- result = th.FmtNumberWhole(-12345.6789)
- Equal(t, result, "-12,346")
- }
- func TestPercentTh(t *testing.T) {
- th, err := ut.GetTranslator("th")
- Equal(t, err, nil)
- result := th.FmtPercent(0.01234)
- Equal(t, result, "1%")
- result = th.FmtPercent(0.1234)
- Equal(t, result, "12%")
- result = th.FmtPercent(1.234)
- Equal(t, result, "123%")
- result = th.FmtPercent(12.34)
- Equal(t, result, "1,234%")
- }
|