| // 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 main |
| |
| import ( |
| "path" |
| "testing" |
| |
| "golang.org/x/text/message" |
| ) |
| |
| func TestCatalog(t *testing.T) { |
| args := func(a ...interface{}) []interface{} { return a } |
| testCases := []struct { |
| lang string |
| key string |
| args []interface{} |
| want string |
| }{{ |
| lang: "en", |
| key: "Hello world!\n", |
| want: "Hello world!\n", |
| }, { |
| lang: "en", |
| key: "non-existing-key\n", |
| want: "non-existing-key\n", |
| }, { |
| lang: "de", |
| key: "Hello world!\n", |
| want: "Hallo Welt!\n", |
| }, { |
| lang: "en", |
| key: "%d more files remaining!", |
| args: args(1), |
| want: "One file remaining!", |
| }, { |
| lang: "en-u-nu-fullwide", |
| key: "%d more files remaining!", |
| args: args(5), |
| want: "There are 5 more files remaining!", |
| }} |
| for _, tc := range testCases { |
| t.Run(path.Join(tc.lang, tc.key), func(t *testing.T) { |
| p := message.NewPrinter(message.MatchLanguage(tc.lang)) |
| got := p.Sprintf(tc.key, tc.args...) |
| if got != tc.want { |
| t.Errorf("got %q; want %q", got, tc.want) |
| } |
| }) |
| } |
| } |