github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/text/currency/tables_test.go (about) 1 package currency 2 3 import ( 4 "flag" 5 "strings" 6 "testing" 7 8 "golang.org/x/text/internal/gen" 9 "golang.org/x/text/internal/testtext" 10 "golang.org/x/text/language" 11 "golang.org/x/text/message" 12 "golang.org/x/text/unicode/cldr" 13 ) 14 15 var draft = flag.String("draft", 16 "contributed", 17 `Minimal draft requirements (approved, contributed, provisional, unconfirmed).`) 18 19 func TestTables(t *testing.T) { 20 testtext.SkipIfNotLong(t) 21 22 // Read the CLDR zip file. 23 r := gen.OpenCLDRCoreZip() 24 defer r.Close() 25 26 d := &cldr.Decoder{} 27 d.SetDirFilter("supplemental", "main") 28 d.SetSectionFilter("numbers") 29 data, err := d.DecodeZip(r) 30 if err != nil { 31 t.Fatalf("DecodeZip: %v", err) 32 } 33 34 dr, err := cldr.ParseDraft(*draft) 35 if err != nil { 36 t.Fatalf("filter: %v", err) 37 } 38 39 for _, lang := range data.Locales() { 40 p := message.NewPrinter(language.MustParse(lang)) 41 42 ldml := data.RawLDML(lang) 43 if ldml.Numbers == nil || ldml.Numbers.Currencies == nil { 44 continue 45 } 46 for _, c := range ldml.Numbers.Currencies.Currency { 47 syms := cldr.MakeSlice(&c.Symbol) 48 syms.SelectDraft(dr) 49 50 for _, sym := range c.Symbol { 51 cur, err := ParseISO(c.Type) 52 if err != nil { 53 continue 54 } 55 formatter := Symbol 56 switch sym.Alt { 57 case "": 58 case "narrow": 59 formatter = NarrowSymbol 60 default: 61 continue 62 } 63 want := sym.Data() 64 if got := p.Sprint(formatter(cur)); got != want { 65 t.Errorf("%s:%sSymbol(%s) = %s; want %s", lang, strings.Title(sym.Alt), c.Type, got, want) 66 } 67 } 68 } 69 } 70 }