diff --git a/iteration/iteration.go b/iteration/iteration.go index c1f1e1e..2de2a2d 100644 --- a/iteration/iteration.go +++ b/iteration/iteration.go @@ -2,11 +2,18 @@ package iteration import "strings" -const repeatCount = 5 +const defaultRepeatCount = 5 -func Repeat(character string) string { +func RepeatFive(character string) string { + return Repeat(character, defaultRepeatCount) +} + +func Repeat(character string, count int) string { + if count == 0 { + count = defaultRepeatCount + } var repeated strings.Builder - for range repeatCount { + for range count { repeated.WriteString(character) } diff --git a/iteration/iteration_test.go b/iteration/iteration_test.go index 253fc2a..ab1b743 100644 --- a/iteration/iteration_test.go +++ b/iteration/iteration_test.go @@ -1,11 +1,36 @@ package iteration -import "testing" +import ( + "fmt" + "testing" +) func TestRepeat(t *testing.T) { - got := Repeat("a") - want := "aaaaa" - assertResult(t, got, want) + t.Run("RepeatFive a", func(t *testing.T) { + got := RepeatFive("a") + want := "aaaaa" + assertResult(t, got, want) + }) + t.Run("RepeatFive z", func(t *testing.T) { + got := RepeatFive("z") + want := "zzzzz" + assertResult(t, got, want) + }) + t.Run("repeat z, 11 times", func(t *testing.T) { + got := Repeat("z", 11) + want := "zzzzzzzzzzz" + assertResult(t, got, want) + }) +} + +func ExampleRepeatFive() { + fmt.Println(RepeatFive("y")) + // Output: yyyyy +} + +func ExampleRepeat() { + fmt.Println(Repeat("t", 7)) + // Output: ttttttt } func assertResult(t testing.TB, got, want string) { @@ -17,6 +42,6 @@ func assertResult(t testing.TB, got, want string) { func BenchmarkRepeat(b *testing.B) { for b.Loop() { - Repeat("a") + RepeatFive("a") } }