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