فهرست منبع

split out locale tests into separate files.

joeybloggs 9 سال پیش
والد
کامیت
0f17777994
4فایلهای تغییر یافته به همراه550 افزوده شده و 536 حذف شده
  1. 1 278
      calendar_test.go
  2. 0 1
      cmd/resources/generate_resources.go
  3. 136 257
      ut_en_test.go
  4. 413 0
      ut_th_test.go

+ 1 - 278
calendar_test.go

@@ -1,14 +1,6 @@
 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"
-)
+import "time"
 
 // NOTES:
 // - Run "go test" to run tests
@@ -25,272 +17,3 @@ var (
 	dateTimeString = "Jan 2, 2006 at 3:04:05pm"
 	bc300DateTime  = time.Date(-300, 1, 2, 3, 4, 5, 0, time.UTC)
 )
-
-func TestDateTimeEn(t *testing.T) {
-
-	en, err := ut.GetTranslator("en")
-	Equal(t, err, nil)
-
-	datetime, err := time.Parse(dateTimeString, dateTimeString)
-	Equal(t, err, nil)
-
-	// test the public method
-	dt, err := en.FmtDateFullSafe(datetime)
-	Equal(t, err, nil)
-	Equal(t, dt, "Monday, January 2, 2006")
-
-	dt, err = en.FmtDateFullSafe(bc300DateTime)
-	Equal(t, err, nil)
-	Equal(t, dt, "Saturday, January 2, 300 Before Christ")
-
-	dt = en.FmtDateFull(datetime)
-	Equal(t, dt, "Monday, January 2, 2006")
-
-	dt = en.FmtDateFull(bc300DateTime)
-	Equal(t, dt, "Saturday, January 2, 300 Before Christ")
-
-	dt, err = en.FmtDateLongSafe(datetime)
-	Equal(t, err, nil)
-	Equal(t, dt, "January 2, 2006")
-
-	dt, err = en.FmtDateLongSafe(bc300DateTime)
-	Equal(t, err, nil)
-	Equal(t, dt, "January 2, 300 BC")
-
-	dt = en.FmtDateLong(datetime)
-	Equal(t, dt, "January 2, 2006")
-
-	dt = en.FmtDateLong(bc300DateTime)
-	Equal(t, dt, "January 2, 300 BC")
-
-	dt, err = en.FmtDateMediumSafe(datetime)
-	Equal(t, err, nil)
-	Equal(t, dt, "Jan 2, 2006")
-
-	dt = en.FmtDateMedium(datetime)
-	Equal(t, dt, "Jan 2, 2006")
-
-	dt, err = en.FmtDateShortSafe(datetime)
-	Equal(t, err, nil)
-	Equal(t, dt, "1/2/06")
-
-	dt = en.FmtDateShort(datetime)
-	Equal(t, dt, "1/2/06")
-
-	dt, err = en.FmtTimeFullSafe(datetime)
-	Equal(t, err, nil)
-	Equal(t, dt, "3:04:05 PM")
-
-	dt = en.FmtTimeFull(datetime)
-	Equal(t, dt, "3:04:05 PM")
-
-	dt, err = en.FmtTimeLongSafe(datetime)
-	Equal(t, err, nil)
-	Equal(t, dt, "3:04:05 PM")
-
-	dt = en.FmtTimeLong(datetime)
-	Equal(t, dt, "3:04:05 PM")
-
-	dt, err = en.FmtTimeMediumSafe(datetime)
-	Equal(t, err, nil)
-	Equal(t, dt, "3:04:05 PM")
-
-	dt = en.FmtTimeMedium(datetime)
-	Equal(t, dt, "3:04:05 PM")
-
-	dt, err = en.FmtTimeShortSafe(datetime)
-	Equal(t, err, nil)
-	Equal(t, dt, "3:04 PM")
-
-	dt = en.FmtTimeShort(datetime)
-	Equal(t, dt, "3:04 PM")
-
-	dt, err = en.FmtDateTimeFullSafe(datetime)
-	Equal(t, err, nil)
-	Equal(t, dt, "Monday, January 2, 2006 at 3:04:05 PM")
-
-	dt, err = en.FmtDateTimeFullSafe(bc300DateTime)
-	Equal(t, err, nil)
-	Equal(t, dt, "Saturday, January 2, 300 Before Christ at 3:04:05 AM")
-
-	dt = en.FmtDateTimeFull(datetime)
-	Equal(t, dt, "Monday, January 2, 2006 at 3:04:05 PM")
-
-	dt = en.FmtDateTimeFull(bc300DateTime)
-	Equal(t, dt, "Saturday, January 2, 300 Before Christ at 3:04:05 AM")
-
-	dt, err = en.FmtDateTimeLongSafe(datetime)
-	Equal(t, err, nil)
-	Equal(t, dt, "January 2, 2006 at 3:04:05 PM")
-
-	dt, err = en.FmtDateTimeLongSafe(bc300DateTime)
-	Equal(t, err, nil)
-	Equal(t, dt, "January 2, 300 BC at 3:04:05 AM")
-
-	dt = en.FmtDateTimeLong(datetime)
-	Equal(t, dt, "January 2, 2006 at 3:04:05 PM")
-
-	dt = en.FmtDateTimeLong(bc300DateTime)
-	Equal(t, dt, "January 2, 300 BC at 3:04:05 AM")
-
-	dt, err = en.FmtDateTimeMediumSafe(datetime)
-	Equal(t, err, nil)
-	Equal(t, dt, "Jan 2, 2006, 3:04:05 PM")
-
-	dt = en.FmtDateTimeMedium(datetime)
-	Equal(t, dt, "Jan 2, 2006, 3:04:05 PM")
-
-	dt, err = en.FmtDateTimeShortSafe(datetime)
-	Equal(t, err, nil)
-	Equal(t, dt, "1/2/06, 3:04 PM")
-
-	dt = en.FmtDateTimeShort(datetime)
-	Equal(t, dt, "1/2/06, 3:04 PM")
-
-	dt, err = en.FmtDateTimeSafe(datetime, "MMMM d yy")
-	Equal(t, err, nil)
-	Equal(t, dt, "January 2 06")
-
-	dt = en.FmtDateTime(datetime, "MMMM d yy")
-	Equal(t, err, nil)
-	Equal(t, dt, "January 2 06")
-
-	dt, err = en.FmtDateTimeSafe(datetime, "not a date pattern")
-	NotEqual(t, err, nil)
-	Equal(t, dt, "")
-	Equal(t, err.Error(), "unknown datetime format unit: n")
-}
-
-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")
-}

+ 0 - 1
cmd/resources/generate_resources.go

@@ -906,7 +906,6 @@ func main() {
 
 	wg.Wait()
 
-	// TODO: make switch with all of the locales + function to return new!
 	localesFile, err := os.Create("../../resources/locales/all.go")
 	if err != nil {
 		panic(err)

+ 136 - 257
number_test.go → ut_en_test.go

@@ -2,6 +2,7 @@ package ut_test
 
 import (
 	"testing"
+	"time"
 
 	"github.com/go-playground/universal-translator"
 	_ "github.com/go-playground/universal-translator/resources/locales"
@@ -20,6 +21,141 @@ import (
 // go test -coverprofile cover.out && go tool cover -html=cover.out -o cover.html
 //
 
+func TestDateTimeEn(t *testing.T) {
+
+	en, err := ut.GetTranslator("en")
+	Equal(t, err, nil)
+
+	datetime, err := time.Parse(dateTimeString, dateTimeString)
+	Equal(t, err, nil)
+
+	// test the public method
+	dt, err := en.FmtDateFullSafe(datetime)
+	Equal(t, err, nil)
+	Equal(t, dt, "Monday, January 2, 2006")
+
+	dt, err = en.FmtDateFullSafe(bc300DateTime)
+	Equal(t, err, nil)
+	Equal(t, dt, "Saturday, January 2, 300 Before Christ")
+
+	dt = en.FmtDateFull(datetime)
+	Equal(t, dt, "Monday, January 2, 2006")
+
+	dt = en.FmtDateFull(bc300DateTime)
+	Equal(t, dt, "Saturday, January 2, 300 Before Christ")
+
+	dt, err = en.FmtDateLongSafe(datetime)
+	Equal(t, err, nil)
+	Equal(t, dt, "January 2, 2006")
+
+	dt, err = en.FmtDateLongSafe(bc300DateTime)
+	Equal(t, err, nil)
+	Equal(t, dt, "January 2, 300 BC")
+
+	dt = en.FmtDateLong(datetime)
+	Equal(t, dt, "January 2, 2006")
+
+	dt = en.FmtDateLong(bc300DateTime)
+	Equal(t, dt, "January 2, 300 BC")
+
+	dt, err = en.FmtDateMediumSafe(datetime)
+	Equal(t, err, nil)
+	Equal(t, dt, "Jan 2, 2006")
+
+	dt = en.FmtDateMedium(datetime)
+	Equal(t, dt, "Jan 2, 2006")
+
+	dt, err = en.FmtDateShortSafe(datetime)
+	Equal(t, err, nil)
+	Equal(t, dt, "1/2/06")
+
+	dt = en.FmtDateShort(datetime)
+	Equal(t, dt, "1/2/06")
+
+	dt, err = en.FmtTimeFullSafe(datetime)
+	Equal(t, err, nil)
+	Equal(t, dt, "3:04:05 PM")
+
+	dt = en.FmtTimeFull(datetime)
+	Equal(t, dt, "3:04:05 PM")
+
+	dt, err = en.FmtTimeLongSafe(datetime)
+	Equal(t, err, nil)
+	Equal(t, dt, "3:04:05 PM")
+
+	dt = en.FmtTimeLong(datetime)
+	Equal(t, dt, "3:04:05 PM")
+
+	dt, err = en.FmtTimeMediumSafe(datetime)
+	Equal(t, err, nil)
+	Equal(t, dt, "3:04:05 PM")
+
+	dt = en.FmtTimeMedium(datetime)
+	Equal(t, dt, "3:04:05 PM")
+
+	dt, err = en.FmtTimeShortSafe(datetime)
+	Equal(t, err, nil)
+	Equal(t, dt, "3:04 PM")
+
+	dt = en.FmtTimeShort(datetime)
+	Equal(t, dt, "3:04 PM")
+
+	dt, err = en.FmtDateTimeFullSafe(datetime)
+	Equal(t, err, nil)
+	Equal(t, dt, "Monday, January 2, 2006 at 3:04:05 PM")
+
+	dt, err = en.FmtDateTimeFullSafe(bc300DateTime)
+	Equal(t, err, nil)
+	Equal(t, dt, "Saturday, January 2, 300 Before Christ at 3:04:05 AM")
+
+	dt = en.FmtDateTimeFull(datetime)
+	Equal(t, dt, "Monday, January 2, 2006 at 3:04:05 PM")
+
+	dt = en.FmtDateTimeFull(bc300DateTime)
+	Equal(t, dt, "Saturday, January 2, 300 Before Christ at 3:04:05 AM")
+
+	dt, err = en.FmtDateTimeLongSafe(datetime)
+	Equal(t, err, nil)
+	Equal(t, dt, "January 2, 2006 at 3:04:05 PM")
+
+	dt, err = en.FmtDateTimeLongSafe(bc300DateTime)
+	Equal(t, err, nil)
+	Equal(t, dt, "January 2, 300 BC at 3:04:05 AM")
+
+	dt = en.FmtDateTimeLong(datetime)
+	Equal(t, dt, "January 2, 2006 at 3:04:05 PM")
+
+	dt = en.FmtDateTimeLong(bc300DateTime)
+	Equal(t, dt, "January 2, 300 BC at 3:04:05 AM")
+
+	dt, err = en.FmtDateTimeMediumSafe(datetime)
+	Equal(t, err, nil)
+	Equal(t, dt, "Jan 2, 2006, 3:04:05 PM")
+
+	dt = en.FmtDateTimeMedium(datetime)
+	Equal(t, dt, "Jan 2, 2006, 3:04:05 PM")
+
+	dt, err = en.FmtDateTimeShortSafe(datetime)
+	Equal(t, err, nil)
+	Equal(t, dt, "1/2/06, 3:04 PM")
+
+	dt = en.FmtDateTimeShort(datetime)
+	Equal(t, dt, "1/2/06, 3:04 PM")
+
+	dt, err = en.FmtDateTimeSafe(datetime, "MMMM d yy")
+	Equal(t, err, nil)
+	Equal(t, dt, "January 2 06")
+
+	dt = en.FmtDateTime(datetime, "MMMM d yy")
+	Equal(t, err, nil)
+	Equal(t, dt, "January 2 06")
+
+	dt, err = en.FmtDateTimeSafe(datetime, "not a date pattern")
+	NotEqual(t, err, nil)
+	Equal(t, dt, "")
+	Equal(t, err.Error(), "unknown datetime format unit: n")
+}
+
 func TestCurrencyEn(t *testing.T) {
 
 	en, err := ut.GetTranslator("en")
@@ -277,260 +413,3 @@ func TestPercentEn(t *testing.T) {
 	result = en.FmtPercent(12.34)
 	Equal(t, result, "1,234%")
 }
-
-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%")
-}

+ 413 - 0
ut_th_test.go

@@ -0,0 +1,413 @@
+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%")
+}