Skip to content

Commit

Permalink
fix: random pck
Browse files Browse the repository at this point in the history
  • Loading branch information
mmadfox committed Aug 21, 2023
1 parent 49b6579 commit 4139984
Show file tree
Hide file tree
Showing 3 changed files with 140 additions and 0 deletions.
49 changes: 49 additions & 0 deletions random/polygon_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package random

import (
"testing"
)

func TestPolygon(t *testing.T) {
type args struct {
points int
zoom float64
}
tests := []struct {
name string
args args
want int
}{
{
name: "should return defaultPoints when num of points less or then 0",
args: args{
points: -1,
},
want: defaultPoints + 1,
},
{
name: "should generate valid points when zoom < 0",
args: args{
points: 32,
zoom: -1.0,
},
want: 32 + 1,
},
{
name: "should generate valid points when zoom > 1000",
args: args{
points: 32,
zoom: 2000,
},
want: 32 + 1,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := Polygon(tt.args.points, tt.args.zoom)
if len(got) != tt.want {
t.Errorf("Polygon() = %v, want %v number of points", got, tt.want)
}
})
}
}
38 changes: 38 additions & 0 deletions random/random.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package random

import (
"math/rand"
"sync"
"time"
)

var defaultRnd = NewRandom()

type Random struct {
mu sync.RWMutex
rnd *rand.Rand
}

func NewRandom() *Random {
return &Random{
rnd: rand.New(rand.NewSource(time.Now().UnixNano())),
}
}

func (r *Random) Intn(n int) int {
r.mu.Lock()
defer r.mu.Unlock()
return r.rnd.Intn(n)
}

func (r *Random) Float64() float64 {
r.mu.Lock()
defer r.mu.Unlock()
return r.rnd.Float64()
}

func (r *Random) ExpFloat64() float64 {
r.mu.Lock()
defer r.mu.Unlock()
return r.rnd.ExpFloat64()
}
53 changes: 53 additions & 0 deletions random/string_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package random

import (
"testing"
)

func TestString(t *testing.T) {
type args struct {
length int
}
tests := []struct {
name string
args args
wantLen int
}{
{
name: "should return 0 chars when lenght 0",
args: args{
length: 0,
},
wantLen: 0,
},
{
name: "should return 0 char when lenght -1",
args: args{
length: -1,
},
wantLen: 0,
},
{
name: "should return 4 char when lenght 4",
args: args{
length: 4,
},
wantLen: 4,
},
{
name: "should return 32 char when lenght 32",
args: args{
length: 32,
},
wantLen: 32,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := String(tt.args.length)
if len(got) != tt.wantLen {
t.Fatalf("String() => %s(%d), want %d lenght", got, len(got), tt.wantLen)
}
})
}
}

0 comments on commit 4139984

Please sign in to comment.