1// Copyright 2015 The Go Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style 3// license that can be found in the LICENSE file. 4 5package currency 6 7import ( 8 "testing" 9 10 "golang.org/x/text/language" 11 "golang.org/x/text/message" 12) 13 14var ( 15 en = language.English 16 fr = language.French 17 en_US = language.AmericanEnglish 18 en_GB = language.BritishEnglish 19 en_AU = language.MustParse("en-AU") 20 und = language.Und 21) 22 23func TestFormatting(t *testing.T) { 24 testCases := []struct { 25 tag language.Tag 26 value interface{} 27 format Formatter 28 want string 29 }{ 30 0: {en, USD.Amount(0.1), nil, "USD 0.10"}, 31 1: {en, XPT.Amount(1.0), Symbol, "XPT 1.00"}, 32 33 2: {en, USD.Amount(2.0), ISO, "USD 2.00"}, 34 3: {und, USD.Amount(3.0), Symbol, "US$ 3.00"}, 35 4: {en, USD.Amount(4.0), Symbol, "$ 4.00"}, 36 37 5: {en, USD.Amount(5.20), NarrowSymbol, "$ 5.20"}, 38 6: {en, AUD.Amount(6.20), Symbol, "A$ 6.20"}, 39 40 7: {en_AU, AUD.Amount(7.20), Symbol, "$ 7.20"}, 41 8: {en_GB, USD.Amount(8.20), Symbol, "US$ 8.20"}, 42 43 9: {en, 9.0, Symbol.Default(EUR), "€ 9.00"}, 44 10: {en, 10.123, Symbol.Default(KRW), "₩ 10"}, 45 11: {fr, 11.52, Symbol.Default(TWD), "TWD 11.52"}, 46 12: {en, 12.123, Symbol.Default(czk), "CZK 12.12"}, 47 13: {en, 13.123, Symbol.Default(czk).Kind(Cash), "CZK 13"}, 48 14: {en, 14.12345, ISO.Default(MustParseISO("CLF")), "CLF 14.1235"}, 49 15: {en, USD.Amount(15.00), ISO.Default(TWD), "USD 15.00"}, 50 16: {en, KRW.Amount(16.00), ISO.Kind(Cash), "KRW 16"}, 51 52 // TODO: support integers as well. 53 54 17: {en, USD, nil, "USD"}, 55 18: {en, USD, ISO, "USD"}, 56 19: {en, USD, Symbol, "$"}, 57 20: {en_GB, USD, Symbol, "US$"}, 58 21: {en_AU, USD, NarrowSymbol, "$"}, 59 } 60 for i, tc := range testCases { 61 p := message.NewPrinter(tc.tag) 62 v := tc.value 63 if tc.format != nil { 64 v = tc.format(v) 65 } 66 if got := p.Sprint(v); got != tc.want { 67 t.Errorf("%d: got %q; want %q", i, got, tc.want) 68 } 69 } 70} 71