github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/text/collate/option_test.go (about) 1 // Copyright 2014 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. 4 package collate 5 6 import ( 7 "reflect" 8 "testing" 9 10 "golang.org/x/text/collate/colltab" 11 "golang.org/x/text/language" 12 ) 13 14 var ( 15 defaultIgnore = ignore(colltab.Tertiary) 16 defaultTable = colltab.Init(locales[0]) 17 ) 18 19 func TestOptions(t *testing.T) { 20 for i, tt := range []struct { 21 in []Option 22 out options 23 }{ 24 0: { 25 out: options{ 26 ignore: defaultIgnore, 27 }, 28 }, 29 1: { 30 in: []Option{IgnoreDiacritics}, 31 out: options{ 32 ignore: [colltab.NumLevels]bool{false, true, false, true, true}, 33 }, 34 }, 35 2: { 36 in: []Option{IgnoreCase, IgnoreDiacritics}, 37 out: options{ 38 ignore: ignore(colltab.Primary), 39 }, 40 }, 41 3: { 42 in: []Option{ignoreDiacritics, IgnoreWidth}, 43 out: options{ 44 ignore: ignore(colltab.Primary), 45 caseLevel: true, 46 }, 47 }, 48 4: { 49 in: []Option{IgnoreWidth, ignoreDiacritics}, 50 out: options{ 51 ignore: ignore(colltab.Primary), 52 caseLevel: true, 53 }, 54 }, 55 5: { 56 in: []Option{IgnoreCase, IgnoreWidth}, 57 out: options{ 58 ignore: ignore(colltab.Secondary), 59 }, 60 }, 61 6: { 62 in: []Option{IgnoreCase, IgnoreWidth, Loose}, 63 out: options{ 64 ignore: ignore(colltab.Primary), 65 }, 66 }, 67 7: { 68 in: []Option{Force, IgnoreCase, IgnoreWidth, Loose}, 69 out: options{ 70 ignore: [colltab.NumLevels]bool{false, true, true, true, false}, 71 }, 72 }, 73 8: { 74 in: []Option{IgnoreDiacritics, IgnoreCase}, 75 out: options{ 76 ignore: ignore(colltab.Primary), 77 }, 78 }, 79 9: { 80 in: []Option{Numeric}, 81 out: options{ 82 ignore: defaultIgnore, 83 numeric: true, 84 }, 85 }, 86 10: { 87 in: []Option{OptionsFromTag(language.MustParse("und-u-ks-level1"))}, 88 out: options{ 89 ignore: ignore(colltab.Primary), 90 }, 91 }, 92 11: { 93 in: []Option{OptionsFromTag(language.MustParse("und-u-ks-level4"))}, 94 out: options{ 95 ignore: ignore(colltab.Quaternary), 96 }, 97 }, 98 12: { 99 in: []Option{OptionsFromTag(language.MustParse("und-u-ks-identic"))}, 100 out: options{}, 101 }, 102 13: { 103 in: []Option{ 104 OptionsFromTag(language.MustParse("und-u-kn-true-kb-true-kc-true")), 105 }, 106 out: options{ 107 ignore: defaultIgnore, 108 caseLevel: true, 109 backwards: true, 110 numeric: true, 111 }, 112 }, 113 14: { 114 in: []Option{ 115 OptionsFromTag(language.MustParse("und-u-kn-true-kb-true-kc-true")), 116 OptionsFromTag(language.MustParse("und-u-kn-false-kb-false-kc-false")), 117 }, 118 out: options{ 119 ignore: defaultIgnore, 120 }, 121 }, 122 15: { 123 in: []Option{ 124 OptionsFromTag(language.MustParse("und-u-kn-true-kb-true-kc-true")), 125 OptionsFromTag(language.MustParse("und-u-kn-foo-kb-foo-kc-foo")), 126 }, 127 out: options{ 128 ignore: defaultIgnore, 129 caseLevel: true, 130 backwards: true, 131 numeric: true, 132 }, 133 }, 134 16: { // Normal options take precedence over tag options. 135 in: []Option{ 136 Numeric, IgnoreCase, 137 OptionsFromTag(language.MustParse("und-u-kn-false-kc-true")), 138 }, 139 out: options{ 140 ignore: ignore(colltab.Secondary), 141 caseLevel: false, 142 numeric: true, 143 }, 144 }, 145 17: { 146 in: []Option{ 147 OptionsFromTag(language.MustParse("und-u-ka-shifted")), 148 }, 149 out: options{ 150 ignore: defaultIgnore, 151 alternate: altShifted, 152 }, 153 }, 154 18: { 155 in: []Option{ 156 OptionsFromTag(language.MustParse("und-u-ka-blanked")), 157 }, 158 out: options{ 159 ignore: defaultIgnore, 160 alternate: altBlanked, 161 }, 162 }, 163 19: { 164 in: []Option{ 165 OptionsFromTag(language.MustParse("und-u-ka-posix")), 166 }, 167 out: options{ 168 ignore: defaultIgnore, 169 alternate: altShiftTrimmed, 170 }, 171 }, 172 } { 173 c := newCollator(defaultTable) 174 c.t = nil 175 c.variableTop = 0 176 c.f = 0 177 178 c.setOptions(tt.in) 179 if !reflect.DeepEqual(c.options, tt.out) { 180 t.Errorf("%d: got %v; want %v", i, c.options, tt.out) 181 } 182 } 183 184 }