#include "cutest-1.5/CuTest.h" #include #include #include "game.h" #include "movement.h" #include "powerup.h" #include "const.h" void TestDeterminePowerupCooldownTime(CuTest *tc) { srand(1); CuAssertIntEquals(tc, 38, determinePowerupCooldownTime(0)); CuAssertIntEquals(tc, 60, determinePowerupCooldownTime(1)); CuAssertIntEquals(tc, 85, determinePowerupCooldownTime(2)); } void TestDetermineWeaponRounds(CuTest *tc) { srand(1); CuAssertIntEquals(tc, 53, determineWeaponRounds(0)); CuAssertIntEquals(tc, 71, determineWeaponRounds(1)); CuAssertIntEquals(tc, 85, determineWeaponRounds(2)); } void TestProcessPowerupCooldown_PowerupActive(CuTest *tc) { struct PlayerPowerup playerPowerup; struct GlobalGameState globalGameState; struct RabbitWeaponry rabbitWeaponry; playerPowerup.isActive = 1; playerPowerup.cooldown = 100; processPowerupCooldown( &playerPowerup, &globalGameState, &rabbitWeaponry, 10 ); CuAssertIntEquals(tc, 100, playerPowerup.cooldown); CuAssertIntEquals(tc, 1, playerPowerup.isActive); } void TestProcessPowerupCooldown_WeaponActive(CuTest *tc) { struct PlayerPowerup playerPowerup; struct GlobalGameState globalGameState; struct RabbitWeaponry rabbitWeaponry; playerPowerup.isActive = 0; playerPowerup.cooldown = 100; rabbitWeaponry.currentWeapon = 99; processPowerupCooldown( &playerPowerup, &globalGameState, &rabbitWeaponry, 10 ); CuAssertIntEquals(tc, 100, playerPowerup.cooldown); CuAssertIntEquals(tc, 0, playerPowerup.isActive); } void TestProcessPowerupCooldown_NotTriggered(CuTest *tc) { struct PlayerPowerup playerPowerup; struct GlobalGameState globalGameState; struct RabbitWeaponry rabbitWeaponry; playerPowerup.isActive = 0; playerPowerup.cooldown = 100; rabbitWeaponry.currentWeapon = WEAPON_TYPE_SINGLE_SHOT_GUN; processPowerupCooldown( &playerPowerup, &globalGameState, &rabbitWeaponry, 10 ); CuAssertIntEquals(tc, 90, playerPowerup.cooldown); CuAssertIntEquals(tc, 0, playerPowerup.isActive); } void TestProcessPowerupCooldown_Triggered(CuTest *tc) { struct PlayerPowerup playerPowerup; struct GlobalGameState globalGameState; struct RabbitWeaponry rabbitWeaponry; srand(1); playerPowerup.isActive = 0; playerPowerup.cooldown = 100; rabbitWeaponry.currentWeapon = WEAPON_TYPE_SINGLE_SHOT_GUN; playerPowerup.willBeInactive = 1; globalGameState.difficulty = 0; processPowerupCooldown( &playerPowerup, &globalGameState, &rabbitWeaponry, 101 ); CuAssertIntEquals(tc, 1, playerPowerup.isActive); CuAssertIntEquals(tc, 0, playerPowerup.willBeInactive); // rand CuAssertIntEquals(tc, 33, playerPowerup.cooldown); CuAssertIntEquals(tc, 58, playerPowerup.x); CuAssertIntEquals(tc, 178, playerPowerup.y); } CuSuite *PowerupGetSuite() { CuSuite *suite = CuSuiteNew(); SUITE_ADD_TEST(suite, TestDeterminePowerupCooldownTime); SUITE_ADD_TEST(suite, TestDetermineWeaponRounds); SUITE_ADD_TEST(suite, TestProcessPowerupCooldown_PowerupActive); SUITE_ADD_TEST(suite, TestProcessPowerupCooldown_WeaponActive); SUITE_ADD_TEST(suite, TestProcessPowerupCooldown_NotTriggered); SUITE_ADD_TEST(suite, TestProcessPowerupCooldown_Triggered); return suite; }