92 lines
1.9 KiB
Go
92 lines
1.9 KiB
Go
package hamster_tycoon
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
)
|
|
|
|
func TestDie(t *testing.T) {
|
|
testCases := []struct {
|
|
caseName string
|
|
hamster *Hamster
|
|
expectedAlive bool
|
|
}{
|
|
{
|
|
caseName: "Should die",
|
|
hamster: &Hamster{
|
|
Alive: true,
|
|
},
|
|
expectedAlive: false,
|
|
},
|
|
{
|
|
caseName: "Already die",
|
|
hamster: &Hamster{
|
|
Alive: false,
|
|
},
|
|
expectedAlive: false,
|
|
},
|
|
}
|
|
|
|
for _, tc := range testCases {
|
|
t.Run(tc.caseName, func(t *testing.T) {
|
|
tc.hamster.Die()
|
|
if tc.hamster.Alive != tc.expectedAlive {
|
|
t.Errorf("Die result does not match expectation. \n Got : %t \n Get : %t", tc.expectedAlive, tc.hamster.Alive)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestFuck(t *testing.T) {
|
|
testCases := []struct {
|
|
caseName string
|
|
hamster1 *Hamster
|
|
hamster2 *Hamster
|
|
expectedResult bool
|
|
expectedError error
|
|
}{
|
|
{
|
|
caseName: "Hamster 1 too young",
|
|
hamster1: &Hamster{
|
|
Alive: true,
|
|
Sexe: MALE,
|
|
Age: GestationMinAge - 1,
|
|
},
|
|
hamster2: &Hamster{
|
|
Alive: true,
|
|
Sexe: FEMALE,
|
|
Age: GestationMinAge + 1,
|
|
},
|
|
expectedResult: false,
|
|
expectedError: errors.New("one of the hamster is too young"),
|
|
},
|
|
{
|
|
caseName: "Hamster 2 too young",
|
|
hamster1: &Hamster{
|
|
Alive: false,
|
|
Sexe: MALE,
|
|
Age: GestationMinAge + 1,
|
|
},
|
|
hamster2: &Hamster{
|
|
Alive: true,
|
|
Sexe: FEMALE,
|
|
Age: GestationMinAge - 1,
|
|
},
|
|
expectedResult: false,
|
|
expectedError: errors.New("one of the hamster is too young"),
|
|
},
|
|
}
|
|
|
|
for _, tc := range testCases {
|
|
t.Run(tc.caseName, func(t *testing.T) {
|
|
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() {
|
|
t.Errorf("Fuck result does not match expectation. \n Got : %s \n Get : %s", tc.expectedError, err)
|
|
}
|
|
})
|
|
}
|
|
}
|