-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
140 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) | ||
} | ||
}) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) | ||
} | ||
}) | ||
} | ||
} |