1 // Copyright 2016 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
11 "golang.org/x/text/language"
14 func TestQuery(t *testing.T) {
15 r := func(region string) language.Region {
16 return language.MustParseRegion(region)
18 t1800, _ := time.Parse("2006-01-02", "1800-01-01")
20 region language.Region
25 testCases := []struct {
31 opts: []QueryOption{Region(r("XA"))},
35 opts: []QueryOption{Region(r("AC"))},
37 {r("AC"), MustParseISO("SHP"), true, "1976-01-01", ""},
41 opts: []QueryOption{Region(r("US"))},
43 {r("US"), MustParseISO("USD"), true, "1792-01-01", ""},
47 opts: []QueryOption{Region(r("US")), Historical},
49 {r("US"), MustParseISO("USD"), true, "1792-01-01", ""},
52 name: "US-non-tender",
53 opts: []QueryOption{Region(r("US")), NonTender},
55 {r("US"), MustParseISO("USD"), true, "1792-01-01", ""},
56 {r("US"), MustParseISO("USN"), false, "", ""},
59 name: "US-historical+non-tender",
60 opts: []QueryOption{Region(r("US")), Historical, NonTender},
62 {r("US"), MustParseISO("USD"), true, "1792-01-01", ""},
63 {r("US"), MustParseISO("USN"), false, "", ""},
64 {r("US"), MustParseISO("USS"), false, "", "2014-03-01"},
68 opts: []QueryOption{Date(t1800)},
70 {r("CH"), MustParseISO("CHF"), true, "1799-03-17", ""},
71 {r("GB"), MustParseISO("GBP"), true, "1694-07-27", ""},
72 {r("GI"), MustParseISO("GIP"), true, "1713-01-01", ""},
73 // The date for IE and PR seem wrong, so these may be updated at
74 // some point causing the tests to fail.
75 {r("IE"), MustParseISO("GBP"), true, "1800-01-01", "1922-01-01"},
76 {r("PR"), MustParseISO("ESP"), true, "1800-01-01", "1898-12-10"},
77 {r("US"), MustParseISO("USD"), true, "1792-01-01", ""},
80 for _, tc := range testCases {
82 for it := Query(tc.opts...); it.Next(); n++ {
83 if n < len(tc.results) {
91 if got != tc.results[n] {
92 t.Errorf("%s:%d: got %v; want %v", tc.name, n, got, tc.results[n])
96 if n != len(tc.results) {
97 t.Errorf("%s: unexpected number of results: got %d; want %d", tc.name, n, len(tc.results))
102 func getTime(t time.Time, ok bool) string {
106 return t.Format("2006-01-02")