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  }