feat: add unit test
This commit is contained in:
@@ -2,6 +2,8 @@ package hamster_tycoon
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"hamster-tycoon/randomizer"
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
||||
@@ -45,6 +47,21 @@ func TestFuck(t *testing.T) {
|
||||
expectedResult bool
|
||||
expectedError error
|
||||
}{
|
||||
{
|
||||
caseName: "Same sexe",
|
||||
hamster1: &Hamster{
|
||||
Alive: true,
|
||||
Sexe: MALE,
|
||||
Age: GestationMinAge - 1,
|
||||
},
|
||||
hamster2: &Hamster{
|
||||
Alive: true,
|
||||
Sexe: MALE,
|
||||
Age: GestationMinAge + 1,
|
||||
},
|
||||
expectedResult: false,
|
||||
expectedError: errors.New("can't fuck together"),
|
||||
},
|
||||
{
|
||||
caseName: "Hamster 1 too young",
|
||||
hamster1: &Hamster{
|
||||
@@ -75,17 +92,199 @@ func TestFuck(t *testing.T) {
|
||||
expectedResult: false,
|
||||
expectedError: errors.New("one of the hamster is too young"),
|
||||
},
|
||||
{
|
||||
caseName: "Can have sexe and success",
|
||||
hamster1: &Hamster{
|
||||
Alive: false,
|
||||
Sexe: MALE,
|
||||
Age: GestationMinAge,
|
||||
},
|
||||
hamster2: &Hamster{
|
||||
Alive: true,
|
||||
Sexe: FEMALE,
|
||||
Age: GestationMinAge,
|
||||
},
|
||||
expectedResult: true,
|
||||
expectedError: nil,
|
||||
},
|
||||
{
|
||||
caseName: "Can have sexe and fail",
|
||||
hamster1: &Hamster{
|
||||
Alive: false,
|
||||
Sexe: MALE,
|
||||
Age: GestationMinAge,
|
||||
},
|
||||
hamster2: &Hamster{
|
||||
Alive: true,
|
||||
Sexe: FEMALE,
|
||||
Age: GestationMinAge,
|
||||
},
|
||||
expectedResult: false,
|
||||
expectedError: nil,
|
||||
},
|
||||
{
|
||||
caseName: "Can have sexe and success. Inverted female and male",
|
||||
hamster2: &Hamster{
|
||||
Alive: false,
|
||||
Sexe: MALE,
|
||||
Age: GestationMinAge,
|
||||
},
|
||||
hamster1: &Hamster{
|
||||
Alive: true,
|
||||
Sexe: FEMALE,
|
||||
Age: GestationMinAge,
|
||||
},
|
||||
expectedResult: true,
|
||||
expectedError: nil,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
t.Run(tc.caseName, func(t *testing.T) {
|
||||
if tc.expectedResult {
|
||||
randomizer.FakeRandomizer(60)
|
||||
} else {
|
||||
randomizer.FakeRandomizer(80)
|
||||
}
|
||||
bool, err := tc.hamster1.Fuck(tc.hamster2)
|
||||
if tc.expectedResult != bool {
|
||||
t.Errorf("Fuck result does not match expectation. \n Got : %t \n Get : %t", tc.expectedResult, bool)
|
||||
}
|
||||
if tc.expectedError.Error() != err.Error() {
|
||||
if tc.expectedError != nil && err != nil && tc.expectedError.Error() != err.Error() {
|
||||
t.Errorf("Fuck result does not match expectation. \n Got : %s \n Get : %s", tc.expectedError, err)
|
||||
}
|
||||
|
||||
if tc.expectedError == nil && err != nil {
|
||||
t.Errorf("Fuck result does not match expectation. \n Got error : %s ", err)
|
||||
}
|
||||
|
||||
if tc.expectedResult {
|
||||
var female *Hamster
|
||||
if FEMALE == tc.hamster1.Sexe {
|
||||
female=tc.hamster1
|
||||
} else {
|
||||
female=tc.hamster2
|
||||
}
|
||||
if !female.Gestation {
|
||||
t.Errorf("Female is not in gestation")
|
||||
}
|
||||
if female.GestationPeriod != 0 {
|
||||
t.Errorf("Gestation period doesn't have been reseted")
|
||||
}
|
||||
if female.GestationCooldown != TotalGestationPeriod + GestationCooldown {
|
||||
t.Errorf("Gestation period doesn't have been reseted")
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestHamster_Die(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
h *Hamster
|
||||
}{
|
||||
// TODO: Add test cases.
|
||||
}
|
||||
for _, tt := range tests {
|
||||
tt.h.Die()
|
||||
}
|
||||
}
|
||||
|
||||
func TestHamster_Fuck(t *testing.T) {
|
||||
type args struct {
|
||||
another *Hamster
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
h *Hamster
|
||||
args args
|
||||
want bool
|
||||
wantErr bool
|
||||
}{
|
||||
// TODO: Add test cases.
|
||||
}
|
||||
for _, tt := range tests {
|
||||
got, err := tt.h.Fuck(tt.args.another)
|
||||
if (err != nil) != tt.wantErr {
|
||||
t.Errorf("%q. Hamster.Fuck() error = %v, wantErr %v", tt.name, err, tt.wantErr)
|
||||
continue
|
||||
}
|
||||
if got != tt.want {
|
||||
t.Errorf("%q. Hamster.Fuck() = %v, want %v", tt.name, got, tt.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestBorn(t *testing.T) {
|
||||
type args struct {
|
||||
father *Hamster
|
||||
mother *Hamster
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
args args
|
||||
want []*Hamster
|
||||
wantErr bool
|
||||
}{
|
||||
// TODO: Add test cases.
|
||||
}
|
||||
for _, tt := range tests {
|
||||
got, err := Born(tt.args.father, tt.args.mother)
|
||||
if (err != nil) != tt.wantErr {
|
||||
t.Errorf("%q. Born() error = %v, wantErr %v", tt.name, err, tt.wantErr)
|
||||
continue
|
||||
}
|
||||
if !reflect.DeepEqual(got, tt.want) {
|
||||
t.Errorf("%q. Born() = %v, want %v", tt.name, got, tt.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func Test_randNumberChild(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
want int
|
||||
}{
|
||||
// TODO: Add test cases.
|
||||
}
|
||||
for _, tt := range tests {
|
||||
if got := randNumberChild(); got != tt.want {
|
||||
t.Errorf("%q. randNumberChild() = %v, want %v", tt.name, got, tt.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func Test_randSexe(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
want string
|
||||
}{
|
||||
// TODO: Add test cases.
|
||||
}
|
||||
for _, tt := range tests {
|
||||
if got := randSexe(); got != tt.want {
|
||||
t.Errorf("%q. randSexe() = %v, want %v", tt.name, got, tt.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func Test_randNumber(t *testing.T) {
|
||||
type args struct {
|
||||
min int
|
||||
max int
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
args args
|
||||
want int
|
||||
}{
|
||||
// TODO: Add test cases.
|
||||
}
|
||||
for _, tt := range tests {
|
||||
if got := randNumber(tt.args.min, tt.args.max); got != tt.want {
|
||||
t.Errorf("%q. randNumber() = %v, want %v", tt.name, got, tt.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user