summaryrefslogtreecommitdiff
path: root/vendor/golang.org/x/text/currency/query_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/golang.org/x/text/currency/query_test.go')
-rw-r--r--vendor/golang.org/x/text/currency/query_test.go107
1 files changed, 107 insertions, 0 deletions
diff --git a/vendor/golang.org/x/text/currency/query_test.go b/vendor/golang.org/x/text/currency/query_test.go
new file mode 100644
index 0000000..6caea9d
--- /dev/null
+++ b/vendor/golang.org/x/text/currency/query_test.go
@@ -0,0 +1,107 @@
+// Copyright 2016 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 currency
+
+import (
+ "testing"
+ "time"
+
+ "golang.org/x/text/language"
+)
+
+func TestQuery(t *testing.T) {
+ r := func(region string) language.Region {
+ return language.MustParseRegion(region)
+ }
+ t1800, _ := time.Parse("2006-01-02", "1800-01-01")
+ type result struct {
+ region language.Region
+ unit Unit
+ isTender bool
+ from, to string
+ }
+ testCases := []struct {
+ name string
+ opts []QueryOption
+ results []result
+ }{{
+ name: "XA",
+ opts: []QueryOption{Region(r("XA"))},
+ results: []result{},
+ }, {
+ name: "AC",
+ opts: []QueryOption{Region(r("AC"))},
+ results: []result{
+ {r("AC"), MustParseISO("SHP"), true, "1976-01-01", ""},
+ },
+ }, {
+ name: "US",
+ opts: []QueryOption{Region(r("US"))},
+ results: []result{
+ {r("US"), MustParseISO("USD"), true, "1792-01-01", ""},
+ },
+ }, {
+ name: "US-hist",
+ opts: []QueryOption{Region(r("US")), Historical},
+ results: []result{
+ {r("US"), MustParseISO("USD"), true, "1792-01-01", ""},
+ },
+ }, {
+ name: "US-non-tender",
+ opts: []QueryOption{Region(r("US")), NonTender},
+ results: []result{
+ {r("US"), MustParseISO("USD"), true, "1792-01-01", ""},
+ {r("US"), MustParseISO("USN"), false, "", ""},
+ },
+ }, {
+ name: "US-historical+non-tender",
+ opts: []QueryOption{Region(r("US")), Historical, NonTender},
+ results: []result{
+ {r("US"), MustParseISO("USD"), true, "1792-01-01", ""},
+ {r("US"), MustParseISO("USN"), false, "", ""},
+ {r("US"), MustParseISO("USS"), false, "", "2014-03-01"},
+ },
+ }, {
+ name: "1800",
+ opts: []QueryOption{Date(t1800)},
+ results: []result{
+ {r("CH"), MustParseISO("CHF"), true, "1799-03-17", ""},
+ {r("GB"), MustParseISO("GBP"), true, "1694-07-27", ""},
+ {r("GI"), MustParseISO("GIP"), true, "1713-01-01", ""},
+ // The date for IE and PR seem wrong, so these may be updated at
+ // some point causing the tests to fail.
+ {r("IE"), MustParseISO("GBP"), true, "1800-01-01", "1922-01-01"},
+ {r("PR"), MustParseISO("ESP"), true, "1800-01-01", "1898-12-10"},
+ {r("US"), MustParseISO("USD"), true, "1792-01-01", ""},
+ },
+ }}
+ for _, tc := range testCases {
+ n := 0
+ for it := Query(tc.opts...); it.Next(); n++ {
+ if n < len(tc.results) {
+ got := result{
+ it.Region(),
+ it.Unit(),
+ it.IsTender(),
+ getTime(it.From()),
+ getTime(it.To()),
+ }
+ if got != tc.results[n] {
+ t.Errorf("%s:%d: got %v; want %v", tc.name, n, got, tc.results[n])
+ }
+ }
+ }
+ if n != len(tc.results) {
+ t.Errorf("%s: unexpected number of results: got %d; want %d", tc.name, n, len(tc.results))
+ }
+ }
+}
+
+func getTime(t time.Time, ok bool) string {
+ if !ok {
+ return ""
+ }
+ return t.Format("2006-01-02")
+}