Skip to content

Commit

Permalink
Merge pull request #22 from 0x6flab/semantics
Browse files Browse the repository at this point in the history
refactor(package): change semantics
  • Loading branch information
rodneyosodo committed Feb 17, 2024
2 parents 7a1e78d + bd64c9e commit e86afc9
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 52 deletions.
32 changes: 16 additions & 16 deletions examples/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,59 +11,59 @@ import (
)

func main() {
generator := namegenerator.NewNameGenerator()
generator := namegenerator.NewGenerator()
name := generator.Generate()
fmt.Println(name)

names := generator.GenerateNames(10)
names := generator.GenerateMultiple(10)
fmt.Println(names)

generator = namegenerator.NewNameGenerator().WithGender(namegenerator.Male)
generator = namegenerator.NewGenerator().WithGender(namegenerator.Male)
name = generator.Generate()
fmt.Println(name)

names = generator.GenerateNames(10)
names = generator.GenerateMultiple(10)
fmt.Println(names)

generator = namegenerator.NewNameGenerator().WithGender(namegenerator.Female)
generator = namegenerator.NewGenerator().WithGender(namegenerator.Female)
name = generator.Generate()
fmt.Println(name)

names = generator.GenerateNames(10)
names = generator.GenerateMultiple(10)
fmt.Println(names)

generator = namegenerator.NewNameGenerator().WithGender(namegenerator.NonBinary)
generator = namegenerator.NewGenerator().WithGender(namegenerator.NonBinary)
name = generator.Generate()
fmt.Println(name)

names = generator.GenerateNames(10)
names = generator.GenerateMultiple(10)
fmt.Println(names)

generator = namegenerator.NewNameGenerator().WithPrefix("Dr. ")
generator = namegenerator.NewGenerator().WithPrefix("Dr. ")
name = generator.Generate()
fmt.Println(name)

names = generator.GenerateNames(10)
names = generator.GenerateMultiple(10)
fmt.Println(names)

generator = namegenerator.NewNameGenerator().WithSuffix(" Jr.")
generator = namegenerator.NewGenerator().WithSuffix(" Jr.")
name = generator.Generate()
fmt.Println(name)

names = generator.GenerateNames(10)
names = generator.GenerateMultiple(10)
fmt.Println(names)

generator = namegenerator.NewNameGenerator().WithPrefix("Dr. ").WithSuffix(" Jr.")
generator = namegenerator.NewGenerator().WithPrefix("Dr. ").WithSuffix(" Jr.")
name = generator.Generate()
fmt.Println(name)

names = generator.GenerateNames(10)
names = generator.GenerateMultiple(10)
fmt.Println(names)

generator = namegenerator.NewNameGenerator().WithGender(namegenerator.Male).WithPrefix("Dr. ").WithSuffix(" Jr.")
generator = namegenerator.NewGenerator().WithGender(namegenerator.Male).WithPrefix("Dr. ").WithSuffix(" Jr.")
name = generator.Generate()
fmt.Println(name)

names = generator.GenerateNames(10)
names = generator.GenerateMultiple(10)
fmt.Println(names)
}
34 changes: 17 additions & 17 deletions generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,27 +28,27 @@ type NameGenerator interface {
// Generate generates a name based on the gender.
//
// Example:
// generator := namegenerator.NewNameGenerator()
// generator := namegenerator.NewGenerator()
// name := generator.Generate()
// fmt.Println(name)
// Output:
// `John-Smith`
Generate() string

// GenerateNames generates a list of names.
// GenerateMultiple generates a list of names.
//
// Example:
// generator := namegenerator.NewNameGenerator()
// names := generator.GenerateNames(10)
// generator := namegenerator.NewGenerator()
// names := generator.GenerateMultiple(10)
// fmt.Println(names)
// Output:
// `[Dryke-Monroe Scarface-Lesway Shelden-Corsale Marcus-Ivett Victor-Nesrallah Merril-Gulick Leonardo-Lindler Maurits-Lias Rawley-Connor Elvis-Khouderchah]`
GenerateNames(count int) []string
GenerateMultiple(count int) []string

// WithGender generates a name based on the gender.
//
// Example:
// generator := namegenerator.NewNameGenerator().WithGender(namegenerator.Male)
// generator := namegenerator.NewGenerator().WithGender(namegenerator.Male)
// name := generator.Generate()
// fmt.Println(name)
// Output:
Expand All @@ -58,7 +58,7 @@ type NameGenerator interface {
// WithPrefix generates a name with a prefix.
//
// Example:
// generator := namegenerator.NewNameGenerator().WithPrefix("Mr. ")
// generator := namegenerator.NewGenerator().WithPrefix("Mr. ")
// name := generator.Generate()
// fmt.Println(name)
// Output:
Expand All @@ -68,7 +68,7 @@ type NameGenerator interface {
// WithSuffix generates a name with a suffix.
//
// Example:
// generator := namegenerator.NewNameGenerator().WithSuffix("@gmail.com")
// generator := namegenerator.NewGenerator().WithSuffix("@gmail.com")
// name := generator.Generate()
// fmt.Println(name)
// Output:
Expand All @@ -83,32 +83,32 @@ type nameGenerator struct {
suffix string
}

// NewNameGenerator returns a new NameGenerator.
// NewGenerator returns a new NameGenerator.
//
// Example to generate general names:
//
// generator := namegenerator.NewNameGenerator()
// generator := namegenerator.NewGenerator()
//
// Example to generate male names:
//
// generator := namegenerator.NewNameGenerator().WithGender(namegenerator.Male)
// generator := namegenerator.NewGenerator().WithGender(namegenerator.Male)
//
// Example to generate female names:
//
// generator := namegenerator.NewNameGenerator().WithGender(namegenerator.Female)
// generator := namegenerator.NewGenerator().WithGender(namegenerator.Female)
//
// Example to generate non-binary names:
//
// generator := namegenerator.NewNameGenerator().WithGender(namegenerator.NonBinary)
// generator := namegenerator.NewGenerator().WithGender(namegenerator.NonBinary)
//
// Example to generate names with a prefix:
//
// generator := namegenerator.NewNameGenerator().WithPrefix("Mr. ")
// generator := namegenerator.NewGenerator().WithPrefix("Mr. ")
//
// Example to generate names with a suffix:
//
// generator := namegenerator.NewNameGenerator().WithSuffix("@gmail.com")
func NewNameGenerator() NameGenerator {
// generator := namegenerator.NewGenerator().WithSuffix("@gmail.com")
func NewGenerator() NameGenerator {
return &nameGenerator{
gender: NonBinary,
}
Expand Down Expand Up @@ -155,7 +155,7 @@ func (namegen *nameGenerator) Generate() string {
}
}

func (namegen *nameGenerator) GenerateNames(count int) []string {
func (namegen *nameGenerator) GenerateMultiple(count int) []string {
names := make([]string, count)
for i := 0; i < count; i++ {
names[i] = namegen.Generate()
Expand Down
38 changes: 19 additions & 19 deletions generator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,103 +27,103 @@ func TestNameGenerator_Generate(t *testing.T) {
}{
{
description: "generate default name",
generator: namegenerator.NewNameGenerator(),
generator: namegenerator.NewGenerator(),
expectedFirstNames: namegenerator.GeneralNames,
expectedSecondNames: namegenerator.GeneralNames,
expectedPrefix: "",
expectedSuffix: "",
},
{
description: "generate male name",
generator: namegenerator.NewNameGenerator().WithGender(namegenerator.Male),
generator: namegenerator.NewGenerator().WithGender(namegenerator.Male),
expectedFirstNames: namegenerator.MaleNames,
expectedSecondNames: namegenerator.FamilyNames,
expectedPrefix: "",
expectedSuffix: "",
},
{
description: "generate female name",
generator: namegenerator.NewNameGenerator().WithGender(namegenerator.Female),
generator: namegenerator.NewGenerator().WithGender(namegenerator.Female),
expectedFirstNames: namegenerator.FemaleNames,
expectedSecondNames: namegenerator.FamilyNames,
expectedPrefix: "",
expectedSuffix: "",
},
{
description: "generate non-binary name",
generator: namegenerator.NewNameGenerator().WithGender(namegenerator.NonBinary),
generator: namegenerator.NewGenerator().WithGender(namegenerator.NonBinary),
expectedFirstNames: namegenerator.GeneralNames,
expectedSecondNames: namegenerator.GeneralNames,
expectedPrefix: "",
expectedSuffix: "",
},
{
description: "generate default name with prefix",
generator: namegenerator.NewNameGenerator().WithPrefix(prefix),
generator: namegenerator.NewGenerator().WithPrefix(prefix),
expectedFirstNames: namegenerator.GeneralNames,
expectedSecondNames: namegenerator.GeneralNames,
expectedPrefix: prefix,
expectedSuffix: "",
},
{
description: "generate default name with suffix",
generator: namegenerator.NewNameGenerator().WithSuffix(suffix),
generator: namegenerator.NewGenerator().WithSuffix(suffix),
expectedFirstNames: namegenerator.GeneralNames,
expectedSecondNames: namegenerator.GeneralNames,
expectedPrefix: "",
expectedSuffix: suffix,
},
{
description: "generate default name with prefix and suffix",
generator: namegenerator.NewNameGenerator().WithPrefix(prefix).WithSuffix(suffix),
generator: namegenerator.NewGenerator().WithPrefix(prefix).WithSuffix(suffix),
expectedFirstNames: namegenerator.GeneralNames,
expectedSecondNames: namegenerator.GeneralNames,
expectedPrefix: prefix,
expectedSuffix: suffix,
},
{
description: "generate male name with prefix",
generator: namegenerator.NewNameGenerator().WithGender(namegenerator.Male).WithPrefix(prefix),
generator: namegenerator.NewGenerator().WithGender(namegenerator.Male).WithPrefix(prefix),
expectedFirstNames: namegenerator.MaleNames,
expectedSecondNames: namegenerator.FamilyNames,
expectedPrefix: prefix,
expectedSuffix: "",
},
{
description: "generate male name with suffix",
generator: namegenerator.NewNameGenerator().WithGender(namegenerator.Male).WithSuffix(suffix),
generator: namegenerator.NewGenerator().WithGender(namegenerator.Male).WithSuffix(suffix),
expectedFirstNames: namegenerator.MaleNames,
expectedSecondNames: namegenerator.FamilyNames,
expectedPrefix: "",
expectedSuffix: suffix,
},
{
description: "generate male name with prefix and suffix",
generator: namegenerator.NewNameGenerator().WithGender(namegenerator.Male).WithPrefix(prefix).WithSuffix(suffix),
generator: namegenerator.NewGenerator().WithGender(namegenerator.Male).WithPrefix(prefix).WithSuffix(suffix),
expectedFirstNames: namegenerator.MaleNames,
expectedSecondNames: namegenerator.FamilyNames,
expectedPrefix: prefix,
expectedSuffix: suffix,
},
{
description: "generate female name with prefix",
generator: namegenerator.NewNameGenerator().WithGender(namegenerator.Female).WithPrefix(prefix),
generator: namegenerator.NewGenerator().WithGender(namegenerator.Female).WithPrefix(prefix),
expectedFirstNames: namegenerator.FemaleNames,
expectedSecondNames: namegenerator.FamilyNames,
expectedPrefix: prefix,
expectedSuffix: "",
},
{
description: "generate female name with suffix",
generator: namegenerator.NewNameGenerator().WithGender(namegenerator.Female).WithSuffix(suffix),
generator: namegenerator.NewGenerator().WithGender(namegenerator.Female).WithSuffix(suffix),
expectedFirstNames: namegenerator.FemaleNames,
expectedSecondNames: namegenerator.FamilyNames,
expectedPrefix: "",
expectedSuffix: suffix,
},
{
description: "generate female name with prefix and suffix",
generator: namegenerator.NewNameGenerator().WithGender(namegenerator.Female).WithPrefix(prefix).WithSuffix(suffix),
generator: namegenerator.NewGenerator().WithGender(namegenerator.Female).WithPrefix(prefix).WithSuffix(suffix),
expectedFirstNames: namegenerator.FemaleNames,
expectedSecondNames: namegenerator.FamilyNames,
expectedPrefix: prefix,
Expand All @@ -137,7 +137,7 @@ func TestNameGenerator_Generate(t *testing.T) {

test(t, name, tc.expectedPrefix, tc.expectedSuffix, tc.expectedFirstNames, tc.expectedSecondNames)

names := tc.generator.GenerateNames(5)
names := tc.generator.GenerateMultiple(5)

if len(names) != 5 {
t.Errorf("Expected 5 names, got %d", len(names))
Expand Down Expand Up @@ -191,22 +191,22 @@ func contains(slice []string, element string) bool {
}

func BenchmarkNameGenerator_Generate(b *testing.B) {
generator := namegenerator.NewNameGenerator()
generator := namegenerator.NewGenerator()
for i := 0; i < b.N; i++ {
generator.Generate()
}
}

func BenchmarkNameGenerator_Generate10Names(b *testing.B) {
generator := namegenerator.NewNameGenerator()
generator := namegenerator.NewGenerator()
for i := 0; i < b.N; i++ {
generator.GenerateNames(10)
generator.GenerateMultiple(10)
}
}

func BenchmarkNameGenerator_Generate1KNames(b *testing.B) {
generator := namegenerator.NewNameGenerator()
generator := namegenerator.NewGenerator()
for i := 0; i < b.N; i++ {
generator.GenerateNames(1000)
generator.GenerateMultiple(1000)
}
}

0 comments on commit e86afc9

Please sign in to comment.