github.com/liquid-dev/text@v0.3.3-liquid/currency/format_test.go (about)

     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  
     5  package currency
     6  
     7  import (
     8  	"testing"
     9  
    10  	"github.com/liquid-dev/text/language"
    11  	"github.com/liquid-dev/text/message"
    12  )
    13  
    14  var (
    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  
    23  func 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  }