| // Copyright 2018 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 language |
| |
| import ( |
| "strings" |
| "testing" |
| ) |
| |
| func parseBase(s string) Language { |
| if s == "" { |
| return 0 |
| } |
| return MustParseBase(s) |
| } |
| |
| func parseScript(s string) Script { |
| if s == "" { |
| return 0 |
| } |
| return MustParseScript(s) |
| } |
| |
| func parseRegion(s string) Region { |
| if s == "" { |
| return 0 |
| } |
| return MustParseRegion(s) |
| } |
| |
| func TestBuilder(t *testing.T) { |
| partChecks(t, func(t *testing.T, tt *parseTest) (id Tag, skip bool) { |
| tag := Make(tt.in) |
| b := Builder{} |
| b.SetTag(Tag{ |
| LangID: parseBase(tt.lang), |
| ScriptID: parseScript(tt.script), |
| RegionID: parseRegion(tt.region), |
| }) |
| if tt.variants != "" { |
| b.AddVariant(strings.Split(tt.variants, "-")...) |
| } |
| for _, e := range tag.Extensions() { |
| b.AddExt(e) |
| } |
| got := b.Make() |
| if got != tag { |
| t.Errorf("%s: got %v; want %v", tt.in, got, tag) |
| } |
| return got, false |
| }) |
| } |
| |
| func TestSetTag(t *testing.T) { |
| partChecks(t, func(t *testing.T, tt *parseTest) (id Tag, skip bool) { |
| tag := Make(tt.in) |
| b := Builder{} |
| b.SetTag(tag) |
| got := b.Make() |
| if got != tag { |
| t.Errorf("%s: got %v; want %v", tt.in, got, tag) |
| } |
| return got, false |
| }) |
| } |