summaryrefslogtreecommitdiff
path: root/vendor/golang.org/x/text/number/number_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/golang.org/x/text/number/number_test.go')
-rw-r--r--vendor/golang.org/x/text/number/number_test.go190
1 files changed, 190 insertions, 0 deletions
diff --git a/vendor/golang.org/x/text/number/number_test.go b/vendor/golang.org/x/text/number/number_test.go
new file mode 100644
index 0000000..3dcac36
--- /dev/null
+++ b/vendor/golang.org/x/text/number/number_test.go
@@ -0,0 +1,190 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package number
+
+import (
+ "strings"
+ "testing"
+
+ "golang.org/x/text/language"
+ "golang.org/x/text/message"
+)
+
+func TestFormatter(t *testing.T) {
+ overrides := map[string]string{
+ "en": "*e#######0",
+ "nl": "*n#######0",
+ }
+ testCases := []struct {
+ desc string
+ tag string
+ f Formatter
+ want string
+ }{{
+ desc: "decimal",
+ f: Decimal(3),
+ want: "3",
+ }, {
+ desc: "decimal fraction",
+ f: Decimal(0.123),
+ want: "0.123",
+ }, {
+ desc: "separators",
+ f: Decimal(1234.567),
+ want: "1,234.567",
+ }, {
+ desc: "no separators",
+ f: Decimal(1234.567, NoSeparator()),
+ want: "1234.567",
+ }, {
+ desc: "max integer",
+ f: Decimal(1973, MaxIntegerDigits(2)),
+ want: "73",
+ }, {
+ desc: "max integer overflow",
+ f: Decimal(1973, MaxIntegerDigits(1000)),
+ want: "1,973",
+ }, {
+ desc: "min integer",
+ f: Decimal(12, MinIntegerDigits(5)),
+ want: "00,012",
+ }, {
+ desc: "max fraction zero",
+ f: Decimal(0.12345, MaxFractionDigits(0)),
+ want: "0",
+ }, {
+ desc: "max fraction 2",
+ f: Decimal(0.12, MaxFractionDigits(2)),
+ want: "0.12",
+ }, {
+ desc: "min fraction 2",
+ f: Decimal(0.12, MaxFractionDigits(2)),
+ want: "0.12",
+ }, {
+ desc: "max fraction overflow",
+ f: Decimal(0.125, MaxFractionDigits(1e6)),
+ want: "0.125",
+ }, {
+ desc: "min integer overflow",
+ f: Decimal(0, MinIntegerDigits(1e6)),
+ want: strings.Repeat("000,", 255/3-1) + "000",
+ }, {
+ desc: "min fraction overflow",
+ f: Decimal(0, MinFractionDigits(1e6)),
+ want: "0." + strings.Repeat("0", 255), // TODO: fraction separators
+ }, {
+ desc: "format width",
+ f: Decimal(123, FormatWidth(10)),
+ want: " 123",
+ }, {
+ desc: "format width pad option before",
+ f: Decimal(123, Pad('*'), FormatWidth(10)),
+ want: "*******123",
+ }, {
+ desc: "format width pad option after",
+ f: Decimal(123, FormatWidth(10), Pad('*')),
+ want: "*******123",
+ }, {
+ desc: "format width illegal",
+ f: Decimal(123, FormatWidth(-1)),
+ want: "123",
+ }, {
+ desc: "increment",
+ f: Decimal(10.33, IncrementString("0.5")),
+ want: "10.5",
+ }, {
+ desc: "increment",
+ f: Decimal(10, IncrementString("ppp")),
+ want: "10",
+ }, {
+ desc: "increment and scale",
+ f: Decimal(10.33, IncrementString("0.5"), Scale(2)),
+ want: "10.50",
+ }, {
+ desc: "pattern overrides en",
+ tag: "en",
+ f: Decimal(101, PatternOverrides(overrides)),
+ want: "eeeee101",
+ }, {
+ desc: "pattern overrides nl",
+ tag: "nl",
+ f: Decimal(101, PatternOverrides(overrides)),
+ want: "nnnnn101",
+ }, {
+ desc: "pattern overrides de",
+ tag: "de",
+ f: Decimal(101, PatternOverrides(overrides)),
+ want: "101",
+ }, {
+ desc: "language selection",
+ tag: "bn",
+ f: Decimal(123456.78, Scale(2)),
+ want: "১,২৩,৪৫৬.৭৮",
+ }, {
+ desc: "scale",
+ f: Decimal(1234.567, Scale(2)),
+ want: "1,234.57",
+ }, {
+ desc: "scientific",
+ f: Scientific(3.00),
+ want: "3\u202f×\u202f10⁰",
+ }, {
+ desc: "scientific",
+ f: Scientific(1234),
+ want: "1.234\u202f×\u202f10³",
+ }, {
+ desc: "scientific",
+ f: Scientific(1234, Scale(2)),
+ want: "1.23\u202f×\u202f10³",
+ }, {
+ desc: "engineering",
+ f: Engineering(12345),
+ want: "12.345\u202f×\u202f10³",
+ }, {
+ desc: "engineering scale",
+ f: Engineering(12345, Scale(2)),
+ want: "12.34\u202f×\u202f10³",
+ }, {
+ desc: "engineering precision(4)",
+ f: Engineering(12345, Precision(4)),
+ want: "12.34\u202f×\u202f10³",
+ }, {
+ desc: "engineering precision(2)",
+ f: Engineering(1234.5, Precision(2)),
+ want: "1.2\u202f×\u202f10³",
+ }, {
+ desc: "percent",
+ f: Percent(0.12),
+ want: "12%",
+ }, {
+ desc: "permille",
+ f: PerMille(0.123),
+ want: "123‰",
+ }, {
+ desc: "percent rounding",
+ f: PerMille(0.12345),
+ want: "123‰",
+ }, {
+ desc: "percent fraction",
+ f: PerMille(0.12345, Scale(2)),
+ want: "123.45‰",
+ }, {
+ desc: "percent fraction",
+ f: PerMille(0.12344, Scale(1)),
+ want: "123.4‰",
+ }}
+ for _, tc := range testCases {
+ t.Run(tc.desc, func(t *testing.T) {
+ tag := language.Und
+ if tc.tag != "" {
+ tag = language.MustParse(tc.tag)
+ }
+ got := message.NewPrinter(tag).Sprint(tc.f)
+ if got != tc.want {
+ t.Errorf("got %q; want %q", got, tc.want)
+ }
+ })
+ }
+}