1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
package test
import (
"github.com/icrowley/fake"
"testing"
)
func TestSetLang(t *testing.T) {
err := fake.SetLang("ru")
if err != nil {
t.Error("SetLang should successfully set lang")
}
err = fake.SetLang("sd")
if err == nil {
t.Error("SetLang with nonexistent lang should return error")
}
}
func TestFakerRuWithoutCallback(t *testing.T) {
fake.SetLang("ru")
fake.EnFallback(false)
brand := fake.Brand()
if brand != "" {
t.Error("Fake call with no samples should return blank string")
}
}
func TestFakerRuWithCallback(t *testing.T) {
fake.SetLang("ru")
fake.EnFallback(true)
brand := fake.Brand()
if brand == "" {
t.Error("Fake call for name with no samples with callback should not return blank string")
}
}
// TestConcurrentSafety runs fake methods in multiple go routines concurrently.
// This test should be run with the race detector enabled.
func TestConcurrentSafety(t *testing.T) {
workerCount := 10
doneChan := make(chan struct{})
for i := 0; i < workerCount; i++ {
go func() {
for j := 0; j < 1000; j++ {
fake.FirstName()
fake.LastName()
fake.Gender()
fake.FullName()
fake.Day()
fake.Country()
fake.Company()
fake.Industry()
fake.Street()
}
doneChan <- struct{}{}
}()
}
for i := 0; i < workerCount; i++ {
<-doneChan
}
}
|