123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- // 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")
- }
|