forked from Rhymond/go-money
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathformatter_test.go
89 lines (79 loc) · 3.25 KB
/
formatter_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package money
import (
"testing"
"github.com/shopspring/decimal"
)
func TestFormatter_Format(t *testing.T) {
tcs := []struct {
fraction int32
decimal string
thousand string
grapheme string
template string
amount float64
expected string
}{
{2, ".", ",", "$", "1 $", 0, "0.00 $"},
{2, ".", ",", "$", "1 $", 0.01, "0.01 $"},
{2, ".", ",", "$", "1 $", .12, "0.12 $"},
{2, ".", ",", "$", "1 $", 1.23, "1.23 $"},
{2, ".", ",", "$", "1 $", 12.34, "12.34 $"},
{2, ".", ",", "$", "1 $", 123.45, "123.45 $"},
{2, ".", ",", "$", "1 $", 1234.56, "1,234.56 $"},
{2, ".", ",", "$", "1 $", 12345.67, "12,345.67 $"},
{2, ".", ",", "$", "1 $", 123456.78, "123,456.78 $"},
{2, ".", ",", "$", "1 $", 1234567.89, "1,234,567.89 $"},
{2, ".", ",", "$", "1 $", -0.01, "-0.01 $"},
{2, ".", ",", "$", "1 $", -.12, "-0.12 $"},
{2, ".", ",", "$", "1 $", -1.23, "-1.23 $"},
{2, ".", ",", "$", "1 $", -12.34, "-12.34 $"},
{2, ".", ",", "$", "1 $", -123.45, "-123.45 $"},
{2, ".", ",", "$", "1 $", -1234.56, "-1,234.56 $"},
{2, ".", ",", "$", "1 $", -12345.67, "-12,345.67 $"},
{2, ".", ",", "$", "1 $", -123456.78, "-123,456.78 $"},
{2, ".", ",", "$", "1 $", -1234567.89, "-1,234,567.89 $"},
{3, ".", "", "$", "1 $", .001, "0.001 $"},
{3, ".", "", "$", "1 $", .012, "0.012 $"},
{3, ".", "", "$", "1 $", .123, "0.123 $"},
{3, ".", "", "$", "1 $", 1.234, "1.234 $"},
{3, ".", "", "$", "1 $", 12.345, "12.345 $"},
{3, ".", "", "$", "1 $", 123.456, "123.456 $"},
{3, ".", "", "$", "1 $", 1234.567, "1234.567 $"},
{3, ".", "", "$", "1 $", 12345.678, "12345.678 $"},
{3, ".", "", "$", "1 $", 123456.789, "123456.789 $"},
{2, ".", ",", "£", "$1", .01, "£0.01"},
{2, ".", ",", "£", "$1", .12, "£0.12"},
{2, ".", ",", "£", "$1", 1.23, "£1.23"},
{2, ".", ",", "£", "$1", 12.34, "£12.34"},
{2, ".", ",", "£", "$1", 123.45, "£123.45"},
{2, ".", ",", "£", "$1", 1234.56, "£1,234.56"},
{2, ".", ",", "£", "$1", 12345.67, "£12,345.67"},
{2, ".", ",", "£", "$1", 123456.78, "£123,456.78"},
{2, ".", ",", "£", "$1", 1234567.89, "£1,234,567.89"},
{0, ".", ",", "NT$", "$1", 1, "NT$1"},
{0, ".", ",", "NT$", "$1", 12, "NT$12"},
{0, ".", ",", "NT$", "$1", 123, "NT$123"},
{0, ".", ",", "NT$", "$1", 1234, "NT$1,234"},
{0, ".", ",", "NT$", "$1", 12345, "NT$12,345"},
{0, ".", ",", "NT$", "$1", 123456, "NT$123,456"},
{0, ".", ",", "NT$", "$1", 1234567, "NT$1,234,567"},
{0, ".", ",", "NT$", "$1", 12345678, "NT$12,345,678"},
{0, ".", ",", "NT$", "$1", 123456789, "NT$123,456,789"},
{0, ".", ",", "NT$", "$1", -1, "-NT$1"},
{0, ".", ",", "NT$", "$1", -12, "-NT$12"},
{0, ".", ",", "NT$", "$1", -123, "-NT$123"},
{0, ".", ",", "NT$", "$1", -1234, "-NT$1,234"},
{0, ".", ",", "NT$", "$1", -12345, "-NT$12,345"},
{0, ".", ",", "NT$", "$1", -123456, "-NT$123,456"},
{0, ".", ",", "NT$", "$1", -1234567, "-NT$1,234,567"},
{0, ".", ",", "NT$", "$1", -12345678, "-NT$12,345,678"},
{0, ".", ",", "NT$", "$1", -123456789, "-NT$123,456,789"},
}
for _, tc := range tcs {
formatter := NewFormatter(tc.fraction, tc.decimal, tc.thousand, tc.grapheme, tc.template)
r := formatter.Format(decimal.NewFromFloat(tc.amount))
if r != tc.expected {
t.Errorf("Expected %f formatted to be %s got %s", tc.amount, tc.expected, r)
}
}
}