From 621e49bb465f500cc46d47e39e828cf76d6381d7 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 24 Jul 2018 14:35:44 +0200 Subject: update vendor --- vendor/golang.org/x/text/date/gen_test.go | 241 ++++++++++++++++++++++++++++++ 1 file changed, 241 insertions(+) create mode 100644 vendor/golang.org/x/text/date/gen_test.go (limited to 'vendor/golang.org/x/text/date/gen_test.go') diff --git a/vendor/golang.org/x/text/date/gen_test.go b/vendor/golang.org/x/text/date/gen_test.go new file mode 100644 index 0000000..798cb4f --- /dev/null +++ b/vendor/golang.org/x/text/date/gen_test.go @@ -0,0 +1,241 @@ +// 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 date + +import ( + "strconv" + "strings" + "testing" + + "golang.org/x/text/internal/cldrtree" + "golang.org/x/text/internal/gen" + "golang.org/x/text/internal/testtext" + "golang.org/x/text/language" + "golang.org/x/text/unicode/cldr" +) + +func TestTables(t *testing.T) { + testtext.SkipIfNotLong(t) + + r := gen.OpenCLDRCoreZip() + defer r.Close() + + d := &cldr.Decoder{} + d.SetDirFilter("supplemental", "main") + d.SetSectionFilter("dates") + data, err := d.DecodeZip(r) + if err != nil { + t.Fatalf("DecodeZip: %v", err) + } + + count := 0 + for _, lang := range data.Locales() { + ldml := data.RawLDML(lang) + if ldml.Dates == nil { + continue + } + tag, _ := language.CompactIndex(language.MustParse(lang)) + + test := func(want cldrtree.Element, path ...string) { + if count > 30 { + return + } + t.Run(lang+"/"+strings.Join(path, "/"), func(t *testing.T) { + p := make([]uint16, len(path)) + for i, s := range path { + if v, err := strconv.Atoi(s); err == nil { + p[i] = uint16(v) + } else if v, ok := enumMap[s]; ok { + p[i] = v + } else { + count++ + t.Fatalf("Unknown key %q", s) + } + } + wantStr := want.GetCommon().Data() + if got := tree.Lookup(tag, p...); got != wantStr { + count++ + t.Errorf("got %q; want %q", got, wantStr) + } + }) + } + + width := func(s string) string { return "width" + strings.Title(s) } + + if ldml.Dates.Calendars != nil { + for _, cal := range ldml.Dates.Calendars.Calendar { + if cal.Months != nil { + for _, mc := range cal.Months.MonthContext { + for _, mw := range mc.MonthWidth { + for _, m := range mw.Month { + test(m, "calendars", cal.Type, "months", mc.Type, width(mw.Type), m.Yeartype+m.Type) + } + } + } + } + if cal.MonthPatterns != nil { + for _, mc := range cal.MonthPatterns.MonthPatternContext { + for _, mw := range mc.MonthPatternWidth { + for _, m := range mw.MonthPattern { + test(m, "calendars", cal.Type, "monthPatterns", mc.Type, width(mw.Type)) + } + } + } + } + if cal.CyclicNameSets != nil { + for _, cns := range cal.CyclicNameSets.CyclicNameSet { + for _, cc := range cns.CyclicNameContext { + for _, cw := range cc.CyclicNameWidth { + for _, c := range cw.CyclicName { + test(c, "calendars", cal.Type, "cyclicNameSets", cns.Type+"CycleType", cc.Type, width(cw.Type), c.Type) + + } + } + } + } + } + if cal.Days != nil { + for _, dc := range cal.Days.DayContext { + for _, dw := range dc.DayWidth { + for _, d := range dw.Day { + test(d, "calendars", cal.Type, "days", dc.Type, width(dw.Type), d.Type) + } + } + } + } + if cal.Quarters != nil { + for _, qc := range cal.Quarters.QuarterContext { + for _, qw := range qc.QuarterWidth { + for _, q := range qw.Quarter { + test(q, "calendars", cal.Type, "quarters", qc.Type, width(qw.Type), q.Type) + } + } + } + } + if cal.DayPeriods != nil { + for _, dc := range cal.DayPeriods.DayPeriodContext { + for _, dw := range dc.DayPeriodWidth { + for _, d := range dw.DayPeriod { + test(d, "calendars", cal.Type, "dayPeriods", dc.Type, width(dw.Type), d.Type, d.Alt) + } + } + } + } + if cal.Eras != nil { + if cal.Eras.EraNames != nil { + for _, e := range cal.Eras.EraNames.Era { + test(e, "calendars", cal.Type, "eras", "widthWide", e.Alt, e.Type) + } + } + if cal.Eras.EraAbbr != nil { + for _, e := range cal.Eras.EraAbbr.Era { + test(e, "calendars", cal.Type, "eras", "widthAbbreviated", e.Alt, e.Type) + } + } + if cal.Eras.EraNarrow != nil { + for _, e := range cal.Eras.EraNarrow.Era { + test(e, "calendars", cal.Type, "eras", "widthNarrow", e.Alt, e.Type) + } + } + } + if cal.DateFormats != nil { + for _, dfl := range cal.DateFormats.DateFormatLength { + for _, df := range dfl.DateFormat { + for _, p := range df.Pattern { + test(p, "calendars", cal.Type, "dateFormats", dfl.Type, p.Alt) + } + } + } + } + if cal.TimeFormats != nil { + for _, tfl := range cal.TimeFormats.TimeFormatLength { + for _, tf := range tfl.TimeFormat { + for _, p := range tf.Pattern { + test(p, "calendars", cal.Type, "timeFormats", tfl.Type, p.Alt) + } + } + } + } + if cal.DateTimeFormats != nil { + for _, dtfl := range cal.DateTimeFormats.DateTimeFormatLength { + for _, dtf := range dtfl.DateTimeFormat { + for _, p := range dtf.Pattern { + test(p, "calendars", cal.Type, "dateTimeFormats", dtfl.Type, p.Alt) + } + } + } + // TODO: + // - appendItems + // - intervalFormats + } + } + } + // TODO: this is a lot of data and is probably relatively little used. + // Store this somewhere else. + if ldml.Dates.Fields != nil { + for _, f := range ldml.Dates.Fields.Field { + field := f.Type + "Field" + for _, d := range f.DisplayName { + test(d, "fields", field, "displayName", d.Alt) + } + for _, r := range f.Relative { + i, _ := strconv.Atoi(r.Type) + v := []string{"before2", "before1", "current", "after1", "after2", "after3"}[i+2] + test(r, "fields", field, "relative", v) + } + for _, rt := range f.RelativeTime { + for _, p := range rt.RelativeTimePattern { + test(p, "fields", field, "relativeTime", rt.Type, p.Count) + } + } + for _, rp := range f.RelativePeriod { + test(rp, "fields", field, "relativePeriod", rp.Alt) + } + } + } + if ldml.Dates.TimeZoneNames != nil { + for _, h := range ldml.Dates.TimeZoneNames.HourFormat { + test(h, "timeZoneNames", "zoneFormat", h.Element()) + } + for _, g := range ldml.Dates.TimeZoneNames.GmtFormat { + test(g, "timeZoneNames", "zoneFormat", g.Element()) + } + for _, g := range ldml.Dates.TimeZoneNames.GmtZeroFormat { + test(g, "timeZoneNames", "zoneFormat", g.Element()) + } + for _, r := range ldml.Dates.TimeZoneNames.RegionFormat { + s := r.Type + if s == "" { + s = "generic" + } + test(r, "timeZoneNames", "regionFormat", s+"Time") + } + + testZone := func(zoneType, zoneWidth, zone string, a ...[]*cldr.Common) { + for _, e := range a { + for _, n := range e { + test(n, "timeZoneNames", zoneType, zoneWidth, n.Element()+"Time", zone) + } + } + } + for _, z := range ldml.Dates.TimeZoneNames.Zone { + for _, l := range z.Long { + testZone("zone", l.Element(), z.Type, l.Generic, l.Standard, l.Daylight) + } + for _, l := range z.Short { + testZone("zone", l.Element(), z.Type, l.Generic, l.Standard, l.Daylight) + } + } + for _, z := range ldml.Dates.TimeZoneNames.Metazone { + for _, l := range z.Long { + testZone("metaZone", l.Element(), z.Type, l.Generic, l.Standard, l.Daylight) + } + for _, l := range z.Short { + testZone("metaZone", l.Element(), z.Type, l.Generic, l.Standard, l.Daylight) + } + } + } + } +} -- cgit v1.2.3