// 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 } }
func TestAddresses(t *testing.T) { for _, lang := range fake.GetLangs() { fake.SetLang(lang) v := fake.Continent() if v == "" { t.Errorf("Continent failed with lang %s", lang) } v = fake.Country() if v == "" { t.Errorf("Country failed with lang %s", lang) } v = fake.City() if v == "" { t.Errorf("City failed with lang %s", lang) } v = fake.State() if v == "" { t.Errorf("State failed with lang %s", lang) } v = fake.StateAbbrev() if v == "" && lang == "en" { t.Errorf("StateAbbrev failed with lang %s", lang) } v = fake.Street() if v == "" { t.Errorf("Street failed with lang %s", lang) } v = fake.StreetAddress() if v == "" { t.Errorf("StreetAddress failed with lang %s", lang) } v = fake.Zip() if v == "" { t.Errorf("Zip failed with lang %s", lang) } v = fake.Phone() if v == "" { t.Errorf("Phone failed with lang %s", lang) } } }
func genFakeData(v *Value) interface{} { if len(v.Tags) == 0 { return v.Data } typ, ok := v.Tags.Get("type") if !ok { return v.Data } switch typ { case fieldTags.Brand: return fake.Brand() case fieldTags.Character: return fake.Character() case fieldTags.Characters: return fieldTags.Characters case fieldTags.CharactersN: max := 5 if m, err := v.Tags.Int("max"); err == nil { max = m } return fake.CharactersN(max) case fieldTags.City: return fake.City() case fieldTags.Color: return fake.Color() case fieldTags.Company: return fake.Company() case fieldTags.Continent: return fake.Continent() case fieldTags.Country: return fake.Country() case fieldTags.CreditCardNum: vendor, _ := v.Tags.Get("vendor") fake.CreditCardNum(vendor) case fieldTags.Currency: fake.Currency() case fieldTags.CurrencyCode: fake.CurrencyCode() case fieldTags.Day: return fake.Day() case fieldTags.Digits: return fake.Digits() case fieldTags.DigitsN: max := 5 if m, err := v.Tags.Int("max"); err == nil { max = m } return fake.DigitsN(max) case fieldTags.DomainName: return fake.DomainName() case fieldTags.DomainZone: return fake.DomainZone() case fieldTags.EmailAddress: return fake.EmailAddress() case fieldTags.EmailBody: return fake.EmailBody() case fieldTags.FemaleFirstName: return fake.FemaleFirstName() case fieldTags.FemaleFullName: return fake.FemaleFullName() case fieldTags.FemaleFullNameWithPrefix: return fake.FemaleFullNameWithPrefix() case fieldTags.FemaleFullNameWithSuffix: return fake.FemaleFullNameWithSuffix() case fieldTags.FemaleLastName: return fake.FemaleLastName() case fieldTags.FemaleLastNamePratronymic: return fake.FemalePatronymic() case fieldTags.FirstName: return fake.FirstName() case fieldTags.FullName: return fake.FullName() case fieldTags.FullNameWithPrefix: return fake.FullNameWithPrefix() case fieldTags.FullNameWithSuffix: return fake.FullNameWithSuffix() case fieldTags.Gender: return fake.Gender() case fieldTags.GenderAbrev: return fake.GenderAbbrev() case fieldTags.HexColor: return fake.HexColor() case fieldTags.HexColorShort: return fake.HexColorShort() case fieldTags.IPv4: return fake.IPv4() case fieldTags.Industry: return fake.Industry() case fieldTags.JobTitle: return fake.JobTitle() case fieldTags.Language: return fake.Language() case fieldTags.LastName: return fake.LastName() case fieldTags.LatitudeDegrees: return fake.LatitudeDegress() case fieldTags.LatitudeDirection: return fake.LatitudeDirection() case fieldTags.LatitudeMinutes: return fake.LatitudeMinutes() case fieldTags.LatitudeSeconds: return fake.LatitudeSeconds() case fieldTags.Latitude: return fake.Latitute() case fieldTags.LongitudeDegrees: return fake.LongitudeDegrees() case fieldTags.LongitudeDirection: return fake.LongitudeDirection() case fieldTags.LongitudeMinutes: return fake.LongitudeMinutes() case fieldTags.LongitudeSeconds: return fake.LongitudeSeconds() case fieldTags.MaleFirstName: return fake.MaleFirstName() case fieldTags.MaleFullNameWithPrefix: return fake.MaleFullNameWithPrefix() case fieldTags.MaleFullNameWithSuffix: return fake.MaleFullNameWithSuffix() case fieldTags.MaleLastName: return fake.MaleLastName() case fieldTags.MalePratronymic: return fake.MalePatronymic() case fieldTags.Model: return fake.Model() case fieldTags.Month: return fake.Month() case fieldTags.MonthNum: return fake.MonthNum() case fieldTags.MonthShort: return fake.MonthShort() case fieldTags.Paragraph: return fake.Paragraph() case fieldTags.Patagraphs: return fake.Paragraphs() case fieldTags.PatagraphsN: max := 5 if m, err := v.Tags.Int("max"); err == nil { max = m } return fake.ParagraphsN(max) case fieldTags.Password: var ( atLeast = 5 atMost = 8 allowUpper, allowNumeric, allowSpecial = true, true, true ) if least, err := v.Tags.Int("at_least"); err == nil { atLeast = least } if most, err := v.Tags.Int("at_most"); err == nil { atMost = most } if upper, err := v.Tags.Bool("upper"); err == nil { allowUpper = upper } if numeric, err := v.Tags.Bool("numeric"); err == nil { allowNumeric = numeric } if special, err := v.Tags.Bool("special"); err == nil { allowSpecial = special } return fake.Password(atLeast, atMost, allowUpper, allowNumeric, allowSpecial) case fieldTags.Patronymic: return fake.Patronymic() case fieldTags.Phone: return fake.Phone() case fieldTags.Product: return fake.Product() case fieldTags.ProductName: return fake.ProductName() case fieldTags.Sentence: return fake.Sentence() case fieldTags.Sentences: return fake.Sentence() case fieldTags.SentencesN: max := 5 if m, err := v.Tags.Int("max"); err == nil { max = m } return fake.SentencesN(max) case fieldTags.SimplePassWord: return fake.SimplePassword() case fieldTags.State: return fake.State() case fieldTags.StateAbbrev: return fake.StateAbbrev() case fieldTags.Street: return fake.Street() case fieldTags.StreetAddress: return fake.StreetAddress() case fieldTags.Title: return fake.Title() case fieldTags.TopLevelDomain: return fake.TopLevelDomain() case fieldTags.UserName: return fake.UserName() case fieldTags.WeekDay: return fake.WeekDay() case fieldTags.WeekDayNum: return fake.WeekdayNum() case fieldTags.WeekDayShort: return fake.WeekDayShort() case fieldTags.Word: return fake.Word() case fieldTags.Words: return fake.Words() case fieldTags.WordsN: max := 5 if m, err := v.Tags.Int("max"); err == nil { max = m } return fake.WordsN(max) case fieldTags.Year: //return fake.Year() case fieldTags.Zip: return fake.Zip() } return v.Data }
// Country generates random country func (s *Stabber) Country(lang string) string { setLang(lang) return fake.Country() }
func genFakeData(v *Value, kind string) interface{} { if len(v.Tags) == 0 { return v.Data } typ, ok := v.Tags["type"] if !ok { return v.Data } switch typ { case fieldTags.Brand: return fake.Brand() case fieldTags.Character: return fake.Character() case fieldTags.Characters: return fieldTags.Characters case fieldTags.CharactersN: return fake.CharactersN(5) case fieldTags.City: return fake.City() case fieldTags.Color: return fake.Color() case fieldTags.Company: return fake.Company() case fieldTags.Continent: return fake.Continent() case fieldTags.Country: return fake.Country() case fieldTags.CreditCardNum: fake.CreditCardNum("vendor") case fieldTags.Currency: fake.Currency() case fieldTags.CurrencyCode: fake.CurrencyCode() case fieldTags.Day: return fake.Day() case fieldTags.Digits: return fake.Digits() case fieldTags.DigitsN: return fake.DigitsN(5) case fieldTags.DomainName: return fake.DomainName() case fieldTags.DomainZone: return fake.DomainZone() case fieldTags.EmailAddress: return fake.EmailAddress() case fieldTags.EmailBody: return fake.EmailBody() case fieldTags.FemaleFirstName: return fake.FemaleFirstName() case fieldTags.FemaleFullName: return fake.FemaleFullName() case fieldTags.FemaleFullNameWithPrefix: return fake.FemaleFullNameWithPrefix() case fieldTags.FemaleFullNameWithSuffix: return fake.FemaleFullNameWithSuffix() case fieldTags.FemaleLastName: return fake.FemaleLastName() case fieldTags.FemaleLastNamePratronymic: return fake.FemalePatronymic() case fieldTags.FirstName: return fake.FirstName() case fieldTags.FullName: return fake.FullName() case fieldTags.FullNameWithPrefix: return fake.FullNameWithPrefix() case fieldTags.FullNameWithSuffix: return fake.FullNameWithSuffix() case fieldTags.Gender: return fake.Gender() case fieldTags.GenderAbrev: return fake.GenderAbbrev() case fieldTags.HexColor: return fake.HexColor() case fieldTags.HexColorShort: return fake.HexColorShort() case fieldTags.IPv4: return fake.IPv4() case fieldTags.Industry: return fake.Industry() case fieldTags.JobTitle: return fake.JobTitle() case fieldTags.Language: return fake.Language() case fieldTags.LastName: return fake.LastName() case fieldTags.LatitudeDegrees: return fake.LatitudeDegress() case fieldTags.LatitudeDirection: return fake.LatitudeDirection() case fieldTags.LatitudeMinutes: return fake.LatitudeMinutes() case fieldTags.LatitudeSeconds: return fake.LatitudeSeconds() case fieldTags.Latitude: return fake.Latitute() case fieldTags.LongitudeDegrees: return fake.LongitudeDegrees() case fieldTags.LongitudeDirection: return fake.LongitudeDirection() case fieldTags.LongitudeMinutes: return fake.LongitudeMinutes() case fieldTags.LongitudeSeconds: return fake.LongitudeSeconds() case fieldTags.MaleFirstName: return fake.MaleFirstName() case fieldTags.MaleFullNameWithPrefix: return fake.MaleFullNameWithPrefix() case fieldTags.MaleFullNameWithSuffix: return fake.MaleFullNameWithSuffix() case fieldTags.MaleLastName: return fake.MaleLastName() case fieldTags.MalePratronymic: return fake.MalePatronymic() case fieldTags.Model: return fake.Model() case fieldTags.Month: return fake.Month() case fieldTags.MonthNum: return fake.MonthNum() case fieldTags.MonthShort: return fake.MonthShort() case fieldTags.Paragraph: return fake.Paragraph() case fieldTags.Patagraphs: return fake.Paragraphs() case fieldTags.PatagraphsN: return fake.ParagraphsN(4) case fieldTags.Password: //return fake.Password() case fieldTags.Patronymic: return fake.Patronymic() case fieldTags.Phone: return fake.Phone() case fieldTags.Product: return fake.Product() case fieldTags.ProductName: return fake.ProductName() case fieldTags.Sentence: return fake.Sentence() case fieldTags.Sentences: return fake.Sentence() case fieldTags.SentencesN: return fake.SentencesN(4) case fieldTags.SimplePassWord: return fake.SimplePassword() case fieldTags.State: return fake.State() case fieldTags.StateAbbrev: return fake.StateAbbrev() case fieldTags.Street: return fake.Street() case fieldTags.StreetAddress: return fake.StreetAddress() case fieldTags.Title: return fake.Title() case fieldTags.TopLevelDomain: return fake.TopLevelDomain() case fieldTags.UserName: return fake.UserName() case fieldTags.WeekDay: return fake.WeekDay() case fieldTags.WeekDayNum: return fake.WeekdayNum() case fieldTags.WeekDayShort: return fake.WeekDayShort() case fieldTags.Word: return fake.Word() case fieldTags.Words: return fake.Words() case fieldTags.WordsN: return fake.WordsN(4) case fieldTags.Year: //return fake.Year() case fieldTags.Zip: return fake.Zip() } return v.Data }
func (this FakeAdapter) Country() string { return fake.Country() }