123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- // Copyright 2015 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 htmlindex
- import (
- "testing"
- "golang.org/x/text/encoding"
- "golang.org/x/text/encoding/charmap"
- "golang.org/x/text/encoding/internal/identifier"
- "golang.org/x/text/encoding/unicode"
- "golang.org/x/text/language"
- )
- func TestGet(t *testing.T) {
- for i, tc := range []struct {
- name string
- canonical string
- err error
- }{
- {"utf-8", "utf-8", nil},
- {" utf-8 ", "utf-8", nil},
- {" l5 ", "windows-1254", nil},
- {"latin5 ", "windows-1254", nil},
- {"latin 5", "", errInvalidName},
- {"latin-5", "", errInvalidName},
- } {
- enc, err := Get(tc.name)
- if err != tc.err {
- t.Errorf("%d: error was %v; want %v", i, err, tc.err)
- }
- if err != nil {
- continue
- }
- if got, err := Name(enc); got != tc.canonical {
- t.Errorf("%d: Name(Get(%q)) = %q; want %q (%v)", i, tc.name, got, tc.canonical, err)
- }
- }
- }
- func TestTables(t *testing.T) {
- for name, index := range nameMap {
- got, err := Get(name)
- if err != nil {
- t.Errorf("%s:err: expected non-nil error", name)
- }
- if want := encodings[index]; got != want {
- t.Errorf("%s:encoding: got %v; want %v", name, got, want)
- }
- mib, _ := got.(identifier.Interface).ID()
- if mibMap[mib] != index {
- t.Errorf("%s:mibMab: got %d; want %d", name, mibMap[mib], index)
- }
- }
- }
- func TestName(t *testing.T) {
- for i, tc := range []struct {
- desc string
- enc encoding.Encoding
- name string
- err error
- }{{
- "defined encoding",
- charmap.ISO8859_2,
- "iso-8859-2",
- nil,
- }, {
- "defined Unicode encoding",
- unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM),
- "utf-16be",
- nil,
- }, {
- "undefined Unicode encoding in HTML standard",
- unicode.UTF16(unicode.BigEndian, unicode.UseBOM),
- "",
- errUnsupported,
- }, {
- "undefined other encoding in HTML standard",
- charmap.CodePage437,
- "",
- errUnsupported,
- }, {
- "unknown encoding",
- encoding.Nop,
- "",
- errUnknown,
- }} {
- name, err := Name(tc.enc)
- if name != tc.name || err != tc.err {
- t.Errorf("%d:%s: got %q, %v; want %q, %v", i, tc.desc, name, err, tc.name, tc.err)
- }
- }
- }
- func TestLanguageDefault(t *testing.T) {
- for _, tc := range []struct{ tag, want string }{
- {"und", "windows-1252"}, // The default value.
- {"ar", "windows-1256"},
- {"ba", "windows-1251"},
- {"be", "windows-1251"},
- {"bg", "windows-1251"},
- {"cs", "windows-1250"},
- {"el", "iso-8859-7"},
- {"et", "windows-1257"},
- {"fa", "windows-1256"},
- {"he", "windows-1255"},
- {"hr", "windows-1250"},
- {"hu", "iso-8859-2"},
- {"ja", "shift_jis"},
- {"kk", "windows-1251"},
- {"ko", "euc-kr"},
- {"ku", "windows-1254"},
- {"ky", "windows-1251"},
- {"lt", "windows-1257"},
- {"lv", "windows-1257"},
- {"mk", "windows-1251"},
- {"pl", "iso-8859-2"},
- {"ru", "windows-1251"},
- {"sah", "windows-1251"},
- {"sk", "windows-1250"},
- {"sl", "iso-8859-2"},
- {"sr", "windows-1251"},
- {"tg", "windows-1251"},
- {"th", "windows-874"},
- {"tr", "windows-1254"},
- {"tt", "windows-1251"},
- {"uk", "windows-1251"},
- {"vi", "windows-1258"},
- {"zh-hans", "gb18030"},
- {"zh-hant", "big5"},
- // Variants and close approximates of the above.
- {"ar_EG", "windows-1256"},
- {"bs", "windows-1250"}, // Bosnian Latin maps to Croatian.
- // Use default fallback in case of miss.
- {"nl", "windows-1252"},
- } {
- if got := LanguageDefault(language.MustParse(tc.tag)); got != tc.want {
- t.Errorf("LanguageDefault(%s) = %s; want %s", tc.tag, got, tc.want)
- }
- }
- }
|