123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- // 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 (
- "fmt"
- "testing"
- "golang.org/x/text/feature/plural"
- "golang.org/x/text/language"
- "golang.org/x/text/message"
- )
- func TestWrongVerb(t *testing.T) {
- testCases := []struct {
- f Formatter
- fmt string
- want string
- }{{
- f: Decimal(12),
- fmt: "%e",
- want: "%!e(int=12)",
- }, {
- f: Scientific(12),
- fmt: "%f",
- want: "%!f(int=12)",
- }, {
- f: Engineering(12),
- fmt: "%f",
- want: "%!f(int=12)",
- }, {
- f: Percent(12),
- fmt: "%e",
- want: "%!e(int=12)",
- }}
- for _, tc := range testCases {
- t.Run("", func(t *testing.T) {
- tag := language.Und
- got := message.NewPrinter(tag).Sprintf(tc.fmt, tc.f)
- if got != tc.want {
- t.Errorf("got %q; want %q", got, tc.want)
- }
- })
- }
- }
- func TestDigits(t *testing.T) {
- testCases := []struct {
- f Formatter
- scale int
- want string
- }{{
- f: Decimal(3),
- scale: 0,
- want: "digits:[3] exp:1 comma:0 end:1",
- }, {
- f: Decimal(3.1),
- scale: 0,
- want: "digits:[3] exp:1 comma:0 end:1",
- }, {
- f: Scientific(3.1),
- scale: 0,
- want: "digits:[3] exp:1 comma:1 end:1",
- }, {
- f: Scientific(3.1),
- scale: 3,
- want: "digits:[3 1] exp:1 comma:1 end:4",
- }}
- for _, tc := range testCases {
- t.Run("", func(t *testing.T) {
- d := tc.f.Digits(nil, language.Croatian, tc.scale)
- got := fmt.Sprintf("digits:%d exp:%d comma:%d end:%d", d.Digits, d.Exp, d.Comma, d.End)
- if got != tc.want {
- t.Errorf("got %v; want %v", got, tc.want)
- }
- })
- }
- }
- func TestPluralIntegration(t *testing.T) {
- testCases := []struct {
- f Formatter
- want string
- }{{
- f: Decimal(1),
- want: "one: 1",
- }, {
- f: Decimal(5),
- want: "other: 5",
- }}
- for _, tc := range testCases {
- t.Run("", func(t *testing.T) {
- message.Set(language.English, "num %f", plural.Selectf(1, "%f",
- "one", "one: %f",
- "other", "other: %f"))
- p := message.NewPrinter(language.English)
- // Indirect the call to p.Sprintf through the variable f
- // to avoid Go tip failing a vet check.
- // TODO: remove once vet check has been fixed. See Issue #22936.
- f := p.Sprintf
- got := f("num %f", tc.f)
- if got != tc.want {
- t.Errorf("got %q; want %q", got, tc.want)
- }
- })
- }
- }
|