Skip to content

Commit

Permalink
feat: introduce random package (#58)
Browse files Browse the repository at this point in the history
random package generate random string
  • Loading branch information
sawadashota committed Mar 13, 2024
1 parent da50cb3 commit 61ff285
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 0 deletions.
32 changes: 32 additions & 0 deletions random/random.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package random

import (
"crypto/rand"
"io"
)

func GenerateAlphabets(length int) string {
const letters = "ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
return generateRandomString(letters, length)
}

func GenerateAlphabetsLowerCase(length int) string {
const letters = "abcdefghijkmnopqrstuvwxyz"
return generateRandomString(letters, length)
}

func GenerateBase58(length int) string {
const letters = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
return generateRandomString(letters, length)
}

func generateRandomString(letters string, length int) string {
b := make([]byte, length)
_, _ = io.ReadFull(rand.Reader, b)

var result string
for _, v := range b {
result += string(letters[int(v)%len(letters)])
}
return result
}
24 changes: 24 additions & 0 deletions random/random_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package random_test

import (
"testing"

"github.com/stretchr/testify/assert"

"github.com/tier4/x-go/random"
)

func TestGenerateAlphabets(t *testing.T) {
t.Parallel()
assert.Regexp(t, "^[a-zA-Z]{50}$", random.GenerateAlphabets(50))
}

func TestGenerateAlphabetsLowerCase(t *testing.T) {
t.Parallel()
assert.Regexp(t, "^[a-z]{50}$", random.GenerateAlphabetsLowerCase(50))
}

func TestGenerateBase58(t *testing.T) {
t.Parallel()
assert.Regexp(t, "^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{50}$", random.GenerateBase58(50))
}

0 comments on commit 61ff285

Please sign in to comment.