Browse Source

Add Number Test + minor tweaks

joeybloggs 9 years ago
parent
commit
42322d983d
4 changed files with 144 additions and 8 deletions
  1. 1 0
      README.md
  2. 1 1
      calendar_test.go
  3. 2 2
      number.go
  4. 140 5
      number_test.go

+ 1 - 0
README.md

@@ -1,2 +1,3 @@
 # universal-translator
 i18n Translator for Go/Golang using CLDR data
+

+ 1 - 1
calendar_test.go

@@ -23,7 +23,7 @@ import (
 
 var dateTimeString = "Jan 2, 2006 at 3:04:05pm"
 
-func TestDateTime(t *testing.T) {
+func TestDateTimeEn(t *testing.T) {
 
 	en, err := ut.GetTranslator("en")
 	Equal(t, err, nil)

+ 2 - 2
number.go

@@ -67,7 +67,6 @@ func (n Number) FmtCurrency(typ CurrencyType, currency string, number float64) s
 	formatted, err := n.FmtCurrencySafe(typ, currency, number)
 	if err != nil {
 		fmt.Println(err)
-		return ""
 	}
 
 	return formatted
@@ -88,6 +87,7 @@ func (n Number) FmtCurrencySafe(typ CurrencyType, currency string, number float6
 		s := "**** WARNING **** unknown currency: " + currency
 		err = errors.New(s)
 		log.Println(s)
+		formatted = strings.Replace(result, "¤", currency, -1)
 		return
 	}
 
@@ -104,7 +104,6 @@ func (n Number) FmtCurrencyWhole(typ CurrencyType, currency string, number float
 	formatted, err := n.FmtCurrencyWholeSafe(typ, currency, number)
 	if err != nil {
 		fmt.Println(err)
-		return ""
 	}
 
 	return formatted
@@ -121,6 +120,7 @@ func (n Number) FmtCurrencyWholeSafe(typ CurrencyType, currency string, number f
 		s := "**** WARNING **** unknown currency: " + currency
 		err = errors.New(s)
 		log.Println(s)
+		formatted = strings.Replace(result, "¤", currency, -1)
 		return
 	}
 

+ 140 - 5
number_test.go

@@ -20,7 +20,7 @@ import (
 // go test -coverprofile cover.out && go tool cover -html=cover.out -o cover.html
 //
 
-func TestCurrency(t *testing.T) {
+func TestCurrencyEn(t *testing.T) {
 
 	en, err := ut.GetTranslator("en")
 	Equal(t, err, nil)
@@ -58,14 +58,14 @@ func TestCurrency(t *testing.T) {
 	Equal(t, err.Error(), "**** WARNING **** unknown currency: WHAT???")
 
 	result = en.FmtCurrency(ut.CurrencyStandard, "WHAT???", 12345.6789)
-	Equal(t, result, "")
+	Equal(t, result, "WHAT???12,345.68")
 
 	result, err = en.FmtCurrencySafe(ut.CurrencyAccounting, "WHAT???", 12345.6789)
 	NotEqual(t, err, nil)
 	Equal(t, err.Error(), "**** WARNING **** unknown currency: WHAT???")
 
 	result = en.FmtCurrency(ut.CurrencyAccounting, "WHAT???", 12345.6789)
-	Equal(t, result, "")
+	Equal(t, result, "WHAT???12,345.68")
 
 	// try some really big numbers to make sure weird floaty stuff doesn't
 	// happen
@@ -100,7 +100,6 @@ func TestCurrency(t *testing.T) {
 	saq, err := ut.GetTranslator("saq")
 	Equal(t, err, nil)
 
-	// Try something that needs a partial fallback
 	// no Formatting or symbols for "saq" in locales
 	result, err = saq.FmtCurrencySafe(ut.CurrencyStandard, "USD", 12345.6789)
 	Equal(t, err, nil)
@@ -119,7 +118,6 @@ func TestCurrency(t *testing.T) {
 	ar, err := ut.GetTranslator("ar")
 	Equal(t, err, nil)
 
-	// // And one more for with some unusual symbols for good measure
 	result, err = ar.FmtCurrencySafe(ut.CurrencyStandard, "USD", -12345.6789)
 	Equal(t, err, nil)
 	Equal(t, result, "\u200F-US$\u00A012٬345٫68")
@@ -142,3 +140,140 @@ func TestCurrency(t *testing.T) {
 	result = en.FmtCurrency(ut.CurrencyStandard, "USD", 0.0084)
 	Equal(t, result, "$0.01")
 }
+
+func TestCurrencyWholeEn(t *testing.T) {
+
+	en, err := ut.GetTranslator("en")
+	Equal(t, err, nil)
+
+	result, err := en.FmtCurrencyWholeSafe(ut.CurrencyStandard, "USD", 12345.6789)
+	Equal(t, err, nil)
+	Equal(t, result, "$12,346")
+
+	result = en.FmtCurrencyWhole(ut.CurrencyStandard, "USD", 12345.6789)
+	Equal(t, result, "$12,346")
+
+	result, err = en.FmtCurrencyWholeSafe(ut.CurrencyAccounting, "USD", 12345.6789)
+	Equal(t, err, nil)
+	Equal(t, result, "$12,346")
+
+	result = en.FmtCurrencyWhole(ut.CurrencyAccounting, "USD", 12345.6789)
+	Equal(t, result, "$12,346")
+
+	result, err = en.FmtCurrencyWholeSafe(ut.CurrencyStandard, "USD", -12345.6789)
+	Equal(t, err, nil)
+	Equal(t, result, "-$12,346")
+
+	result = en.FmtCurrencyWhole(ut.CurrencyStandard, "USD", -12345.6789)
+	Equal(t, result, "-$12,346")
+
+	result, err = en.FmtCurrencyWholeSafe(ut.CurrencyAccounting, "USD", -12345.6789)
+	Equal(t, err, nil)
+	Equal(t, result, "($12,346)")
+
+	result = en.FmtCurrencyWhole(ut.CurrencyAccounting, "USD", -12345.6789)
+	Equal(t, result, "($12,346)")
+
+	result, err = en.FmtCurrencyWholeSafe(ut.CurrencyStandard, "WHAT???", 12345.6789)
+	NotEqual(t, err, nil)
+	Equal(t, result, "WHAT???12,346")
+
+	result = en.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 = en.FmtCurrencyWholeSafe(ut.CurrencyStandard, "USD", 12345000000000.6789)
+	Equal(t, err, nil)
+	Equal(t, result, "$12,345,000,000,001")
+
+	result, err = en.FmtCurrencyWholeSafe(ut.CurrencyAccounting, "USD", 12345000000000.6789)
+	Equal(t, err, nil)
+	Equal(t, result, "$12,345,000,000,001")
+
+	result, err = en.FmtCurrencyWholeSafe(ut.CurrencyStandard, "USD", -12345000000000.6789)
+	Equal(t, err, nil)
+	Equal(t, result, "-$12,345,000,000,001")
+
+	result = en.FmtCurrencyWhole(ut.CurrencyStandard, "USD", -12345000000000.6789)
+	Equal(t, result, "-$12,345,000,000,001")
+
+	result, err = en.FmtCurrencyWholeSafe(ut.CurrencyAccounting, "USD", -12345000000000.6789)
+	Equal(t, err, nil)
+	Equal(t, result, "($12,345,000,000,001)")
+
+	result = en.FmtCurrencyWhole(ut.CurrencyAccounting, "USD", -12345000000000.6789)
+	Equal(t, result, "($12,345,000,000,001)")
+}
+
+func TestNumberEn(t *testing.T) {
+
+	en, err := ut.GetTranslator("en")
+	Equal(t, err, nil)
+
+	// check basic english
+	result := en.FmtNumber(12345.6789)
+	Equal(t, result, "12,345.679")
+
+	result = en.FmtNumber(-12345.6789)
+	Equal(t, result, "-12,345.679")
+
+	result = en.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 TestNumberWholeEn(t *testing.T) {
+
+	en, err := ut.GetTranslator("en")
+	Equal(t, err, nil)
+
+	result := en.FmtNumberWhole(12345.6789)
+	Equal(t, result, "12,346")
+
+	result = en.FmtNumberWhole(-12345.6789)
+	Equal(t, result, "-12,346")
+}
+
+func TestPercentEn(t *testing.T) {
+
+	en, err := ut.GetTranslator("en")
+	Equal(t, err, nil)
+
+	result := en.FmtPercent(0.01234)
+	Equal(t, result, "1%")
+
+	result = en.FmtPercent(0.1234)
+	Equal(t, result, "12%")
+
+	result = en.FmtPercent(1.234)
+	Equal(t, result, "123%")
+
+	result = en.FmtPercent(12.34)
+	Equal(t, result, "1,234%")
+}