func createBenchmarkTranslateFunc(b *testing.B, translationTemplate interface{}, count interface{}, expected string) func(data interface{}) { bundle := New() lang := "en-US" translationID := "translation_id" translation, err := translation.NewTranslation(map[string]interface{}{ "id": translationID, "translation": translationTemplate, }) if err != nil { b.Fatal(err) } bundle.AddTranslation(languageWithTag(lang), translation) tf, err := bundle.Tfunc(lang) if err != nil { b.Fatal(err) } return func(data interface{}) { var result string if count == nil { result = tf(translationID, data) } else { result = tf(translationID, count, data) } if result != expected { b.Fatalf("expected %q, got %q", expected, result) } } }
func parseTranslations(filename string, buf []byte) ([]translation.Translation, error) { var unmarshalFunc func([]byte, interface{}) error switch format := filepath.Ext(filename); format { case ".json": unmarshalFunc = json.Unmarshal /* case ".yaml": unmarshalFunc = goyaml.Unmarshal */ default: return nil, fmt.Errorf("unsupported file extension %s", format) } var translationsData []map[string]interface{} if len(buf) > 0 { if err := unmarshalFunc(buf, &translationsData); err != nil { return nil, err } } translations := make([]translation.Translation, 0, len(translationsData)) for i, translationData := range translationsData { t, err := translation.NewTranslation(translationData) if err != nil { return nil, fmt.Errorf("unable to parse translation #%d in %s because %s\n%v", i, filename, err, translationData) } translations = append(translations, t) } return translations, nil }
func testNewTranslation(t *testing.T, data map[string]interface{}) translation.Translation { translation, err := translation.NewTranslation(data) if err != nil { t.Fatal(err) } return translation }