summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/nicksnyder/go-i18n/i18n/bundle/bundle_test.go
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2017-02-02 09:32:00 -0500
committerHarrison Healey <harrisonmhealey@gmail.com>2017-02-02 09:32:00 -0500
commit701d1ab638b23c24877fc41824add66232446676 (patch)
treeec120c88d38ac9d38d9eabdd3270b52bb6ac9d96 /vendor/github.com/nicksnyder/go-i18n/i18n/bundle/bundle_test.go
parentca3211bc04f6dea34e8168217182637d1419f998 (diff)
downloadchat-701d1ab638b23c24877fc41824add66232446676.tar.gz
chat-701d1ab638b23c24877fc41824add66232446676.tar.bz2
chat-701d1ab638b23c24877fc41824add66232446676.zip
Updating server dependancies (#5249)
Diffstat (limited to 'vendor/github.com/nicksnyder/go-i18n/i18n/bundle/bundle_test.go')
-rw-r--r--vendor/github.com/nicksnyder/go-i18n/i18n/bundle/bundle_test.go55
1 files changed, 55 insertions, 0 deletions
diff --git a/vendor/github.com/nicksnyder/go-i18n/i18n/bundle/bundle_test.go b/vendor/github.com/nicksnyder/go-i18n/i18n/bundle/bundle_test.go
index b241ad1d4..da3830a79 100644
--- a/vendor/github.com/nicksnyder/go-i18n/i18n/bundle/bundle_test.go
+++ b/vendor/github.com/nicksnyder/go-i18n/i18n/bundle/bundle_test.go
@@ -2,6 +2,8 @@ package bundle
import (
"fmt"
+ "strconv"
+ "sync"
"testing"
"reflect"
@@ -160,6 +162,59 @@ func TestTfuncAndLanguage(t *testing.T) {
}
}
+func TestConcurrent(t *testing.T) {
+ b := New()
+ // bootstrap bundle
+ translationID := "translation_id" // +1
+ englishLanguage := languageWithTag("en-US")
+ addFakeTranslation(t, b, englishLanguage, translationID)
+
+ tf, err := b.Tfunc(englishLanguage.Tag)
+ if err != nil {
+ t.Errorf("Tfunc(%v) = error{%q}; expected no error", []string{englishLanguage.Tag}, err)
+ }
+
+ const iterations = 1000
+ var wg sync.WaitGroup
+ wg.Add(iterations)
+
+ // Using go routines insert 1000 ints into our map.
+ go func() {
+ for i := 0; i < iterations/2; i++ {
+ // Add item to map.
+ translationID := strconv.FormatInt(int64(i), 10)
+ addFakeTranslation(t, b, englishLanguage, translationID)
+
+ // Retrieve item from map.
+ tf(translationID)
+
+ wg.Done()
+ } // Call go routine with current index.
+ }()
+
+ go func() {
+ for i := iterations / 2; i < iterations; i++ {
+ // Add item to map.
+ translationID := strconv.FormatInt(int64(i), 10)
+ addFakeTranslation(t, b, englishLanguage, translationID)
+
+ // Retrieve item from map.
+ tf(translationID)
+
+ wg.Done()
+ } // Call go routine with current index.
+ }()
+
+ // Wait for all go routines to finish.
+ wg.Wait()
+
+ // Make sure map contains 1000+1 elements.
+ count := len(b.Translations()[englishLanguage.Tag])
+ if count != iterations+1 {
+ t.Error("Expecting 1001 elements, got", count)
+ }
+}
+
func addFakeTranslation(t *testing.T, b *Bundle, lang *language.Language, translationID string) string {
translation := fakeTranslation(lang, translationID)
b.AddTranslation(lang, testNewTranslation(t, map[string]interface{}{