// 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 message import ( "bytes" "fmt" "io" "testing" "gx/QmVgdgtv5rUcWWcHvHN1vdGkXi8UNztJ7JuT72YUJgG2ic/go-text/internal/format" "gx/QmVgdgtv5rUcWWcHvHN1vdGkXi8UNztJ7JuT72YUJgG2ic/go-text/language" ) type formatFunc func(s fmt.State, v rune) func (f formatFunc) Format(s fmt.State, v rune) { f(s, v) } func TestBinding(t *testing.T) { testCases := []struct { tag string value interface{} want string }{ {"en", 1, "1"}, {"en", "2", "2"}, { // Language is passed. "en", formatFunc(func(fs fmt.State, v rune) { s := fs.(format.State) io.WriteString(s, s.Language().String()) }), "en", }, } for i, tc := range testCases { p := NewPrinter(language.MustParse(tc.tag)) if got := p.Sprint(tc.value); got != tc.want { t.Errorf("%d:%s:Sprint(%v) = %q; want %q", i, tc.tag, tc.value, got, tc.want) } var buf bytes.Buffer p.Fprint(&buf, tc.value) if got := buf.String(); got != tc.want { t.Errorf("%d:%s:Fprint(%v) = %q; want %q", i, tc.tag, tc.value, got, tc.want) } } }