go-blocks/esfaker/esfaker.go

117 lines
2.3 KiB
Go

package esfaker
import (
"math/rand"
"strings"
)
const uppercaseAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
const lowercaseAlphabet = "abcdefghijklmnopqrstuvwxyz"
const numbers = "0123456789"
const symbols = "!@#$%^&*()_+{}|:<>?~"
var maleNames = []string{
"Pedro", "Juan", "Pepe", "Francisco", "Luis", "Carlos", "Javier", "José", "Antonio", "Manuel",
}
var femaleNames = []string{
"María", "Ana", "Isabel", "Laura", "Carmen", "Rosa", "Julia", "Elena", "Sara", "Lucía",
}
var lastNames = []string{
"García", "Fernández", "González", "Rodríguez", "López", "Martínez", "Sánchez", "Pérez", "Gómez", "Martín",
}
func MaleName() string {
return maleNames[rand.Intn(len(maleNames))]
}
func FemaleName() string {
return femaleNames[rand.Intn(len(femaleNames))]
}
func Name() string {
allNames := append(maleNames, femaleNames...)
return allNames[rand.Intn(len(allNames))]
}
func LastName() string {
return lastNames[rand.Intn(len(lastNames))]
}
func Email(beforeAt string) string {
return beforeAt + "@" + Chars(5, 10) + ".local"
}
func Int(min, max int64) int64 {
return min + rand.Int63n(max-min+1)
}
func Float(min, max float64) float64 {
return min + rand.Float64()*(max-min)
}
func Bool() bool {
return rand.Intn(2) == 0
}
func Chars(min, max int) string {
var sb strings.Builder
k := len(lowercaseAlphabet)
for i := 0; i < rand.Intn(max-min+1)+min; i++ {
c := lowercaseAlphabet[rand.Intn(k)]
sb.WriteByte(c)
}
return sb.String()
}
func AllChars(min, max int) string {
allChars := uppercaseAlphabet + lowercaseAlphabet + numbers + symbols
var sb strings.Builder
k := len(allChars)
for i := 0; i < rand.Intn(max-min+1)+min; i++ {
c := allChars[rand.Intn(k)]
sb.WriteByte(c)
}
return sb.String()
}
func AllCharsOrEmpty(min, max int) string {
if Bool() {
return ""
}
return AllChars(min, max)
}
func AllCharsOrNil(min, max int) *string {
if Bool() {
return nil
}
s := AllChars(min, max)
return &s
}
func NumericString(length int) string {
var sb strings.Builder
for i := 0; i < length; i++ {
sb.WriteByte(numbers[rand.Intn(len(numbers))])
}
return sb.String()
}
func Sentence(min, max int) string {
var sb strings.Builder
k := len(lowercaseAlphabet)
for i := 0; i < rand.Intn(max-min+1)+min; i++ {
c := lowercaseAlphabet[rand.Intn(k)]
sb.WriteByte(c)
}
return sb.String()
}