Test updates

This commit is contained in:
Zac 2022-05-04 03:26:38 -04:00
parent 846e4223b1
commit a9f33a5d01
16 changed files with 151 additions and 134 deletions

View File

@ -1,14 +0,0 @@
#pragma once
#include <stdexcept>
#include <exception>
// Custom assert function that doesn't call abort
inline void assert(bool assertion)
{
if (!assertion)
{
printf("Assertion failed");
exit(1);
}
}

View File

@ -1,23 +1,23 @@
#include <clock.h>
#include "../assert.h"
#include "../test.h"
int main()
{
SetClockRate(1.0);
assert(g_rtClock == 1.0f);
assert(g_clock.fEnabled == true);
JtAssert(g_rtClock == 1.0f);
JtAssert(g_clock.fEnabled);
SetClockRate(0.5);
assert(g_rtClock == 0.5f);
assert(g_clock.fEnabled == true);
JtAssert(g_rtClock == 0.5f);
JtAssert(g_clock.fEnabled);
SetClockRate(0);
assert(g_rtClock == 0.f);
assert(g_clock.fEnabled == false);
JtAssert(g_rtClock == 0.f);
JtAssert(!g_clock.fEnabled);
SetClockRate(-1);
assert(g_rtClock == -1.f);
assert(g_clock.fEnabled == false);
JtAssert(g_rtClock == -1.f);
JtAssert(!g_clock.fEnabled);
return 0;
}

View File

@ -1,6 +1,6 @@
#include <coin.h>
#include <gs.h>
#include "../assert.h"
#include "../test.h"
int main()
{
@ -11,20 +11,20 @@ int main()
g_pgsCur->ccharm = 0;
OnCoinSmack(&coin);
assert(g_pgsCur->ccoin == 1);
assert(g_pgsCur->ccharm == 0);
JtAssert(g_pgsCur->ccoin == 1);
JtAssert(g_pgsCur->ccharm == 0);
g_pgsCur->ccoin = 98;
OnCoinSmack(&coin);
assert(g_pgsCur->ccoin == 99);
assert(g_pgsCur->ccharm == 0);
JtAssert(g_pgsCur->ccoin == 99);
JtAssert(g_pgsCur->ccharm == 0);
// Test collecting a 100 coins to get a charm
OnCoinSmack(&coin);
assert(g_pgsCur->ccoin == 0);
assert(g_pgsCur->ccharm == 1);
JtAssert(g_pgsCur->ccoin == 0);
JtAssert(g_pgsCur->ccharm == 1);
// Test collecting 100 coins to get an extra life
g_pgsCur->ccoin = 99;
@ -32,9 +32,9 @@ int main()
g_pgsCur->clife = 5;
OnCoinSmack(&coin);
assert(g_pgsCur->ccoin == 0);
assert(g_pgsCur->ccharm == 2);
assert(g_pgsCur->clife == 6);
JtAssert(g_pgsCur->ccoin == 0);
JtAssert(g_pgsCur->ccharm == 2);
JtAssert(g_pgsCur->clife == 6);
// Test collecting a coin when coins, lives, and charms are all at max
g_pgsCur->ccoin = 99;
@ -42,7 +42,7 @@ int main()
g_pgsCur->clife = 99;
OnCoinSmack(&coin);
assert(g_pgsCur->ccoin == 99);
assert(g_pgsCur->ccharm == 2);
assert(g_pgsCur->clife == 99);
JtAssert(g_pgsCur->ccoin == 99);
JtAssert(g_pgsCur->ccharm == 2);
JtAssert(g_pgsCur->clife == 99);
}

View File

@ -1,6 +1,6 @@
#include <difficulty.h>
#include <gs.h>
#include "../assert.h"
#include "../test.h"
int main()
{
@ -10,19 +10,19 @@ int main()
OnDifficultyWorldPostLoad(&g_difficulty);
// Test changing level suck
g_plsCur->uSuck = 0.0;
assert(g_plsCur->uSuck == 0.0);
g_plsCur->uSuck = 0.0f;
JtAssert(g_plsCur->uSuck == 0.0f);
ChangeSuck(0.1, &g_difficulty);
assert(g_plsCur->uSuck == 0.1);
JtAssert(g_plsCur->uSuck == 0.1f);
ChangeSuck(1.0, &g_difficulty);
assert(g_plsCur->uSuck == 1.0);
JtAssert(g_plsCur->uSuck == 1.0f);
ChangeSuck(-1.0, &g_difficulty);
assert(g_plsCur->uSuck == -1.0);
JtAssert(g_plsCur->uSuck == -1.0f);
// Test collect key scenario
OnDifficultyCollectKey(&g_difficulty);
assert(g_plsCur->uSuck == 0.0);
JtAssert(g_plsCur->uSuck == 0.0f);
}

View File

@ -1,6 +1,6 @@
#include <difficulty.h>
#include <gs.h>
#include "../assert.h"
#include "../test.h"
void SetGameLevel(GAMEWORLD gameworld, WORLDLEVEL worldlevel);
@ -13,13 +13,13 @@ int main()
// jb_intro = easy
SetGameLevel(GAMEWORLD::Intro, WORLDLEVEL::Approach);
OnDifficultyWorldPreLoad(&g_difficulty);
assert(g_difficulty.props == &g_difficultyEasy);
JtAssert(g_difficulty.props == &g_difficultyEasy);
// cw_security = easy
SetGameLevel(GAMEWORLD::Clockwerk, WORLDLEVEL::Level2);
OnDifficultyWorldPreLoad(&g_difficulty);
assert(g_difficulty.props == &g_difficultyEasy);
JtAssert(g_difficulty.props == &g_difficultyEasy);
// uw_bonus_security
@ -28,12 +28,12 @@ int main()
// no key = medium
g_plsCur->fls = static_cast<FLS>((int)g_plsCur->fls & ~(int)FLS::KeyCollected); // unset KeyCollected flag
OnDifficultyWorldPreLoad(&g_difficulty);
assert(g_difficulty.props == &g_difficultyMedium);
JtAssert(g_difficulty.props == &g_difficultyMedium);
// with key = hard
g_plsCur->fls = static_cast<FLS>((int)g_plsCur->fls | (int)FLS::KeyCollected); // setKeyCollected flag
OnDifficultyWorldPreLoad(&g_difficulty);
assert(g_difficulty.props == &g_difficultyHard);
JtAssert(g_difficulty.props == &g_difficultyHard);
return 0;
}

View File

@ -1,7 +1,7 @@
#include <game.h>
#include <joy.h>
#include <gs.h>
#include "../assert.h"
#include "../test.h"
int main()
{
@ -9,34 +9,34 @@ int main()
g_grfcht &= ~((int)FCHT::InfiniteCharms); // disable infinite charms
// Confirm max charm count is 2
assert(CcharmMost() == 2);
JtAssert(CcharmMost() == 2);
// Test checking if a charm is available
g_pgsCur->ccharm = 0;
assert(FCharmAvailable() == false);
JtAssert(FCharmAvailable() == false);
g_pgsCur->ccharm = 1;
assert(FCharmAvailable() == true);
JtAssert(FCharmAvailable() == true);
g_pgsCur->ccharm = -1;
assert(FCharmAvailable() == false);
JtAssert(FCharmAvailable() == false);
g_pgsCur->ccharm = 0;
g_grfcht |= (int)FCHT::InfiniteCharms; // enable infinite charms cheat
assert(FCharmAvailable() == true);
JtAssert(FCharmAvailable() == true);
// Test setting charm count
SetCcharm(0);
assert(g_pgsCur->ccharm == 0);
JtAssert(g_pgsCur->ccharm == 0);
SetCcharm(1);
assert(g_pgsCur->ccharm == 1);
JtAssert(g_pgsCur->ccharm == 1);
SetCcharm(3);
assert(g_pgsCur->ccharm == 3);
JtAssert(g_pgsCur->ccharm == 3);
SetCcharm(-1);
assert(g_pgsCur->ccharm == -1);
JtAssert(g_pgsCur->ccharm == -1);
return 0;
}

View File

@ -1,25 +1,25 @@
#include <game.h>
#include <joy.h>
#include <gs.h>
#include "../assert.h"
#include "../test.h"
int main()
{
// Confirm max charm count is 2
assert(CcharmMost() == 2);
JtAssert(CcharmMost() == 2);
// Test setting charm count
SetCcharm(0);
assert(g_pgsCur->ccharm == 0);
JtAssert(g_pgsCur->ccharm == 0);
SetCcharm(1);
assert(g_pgsCur->ccharm == 1);
JtAssert(g_pgsCur->ccharm == 1);
SetCcharm(3);
assert(g_pgsCur->ccharm == 3);
JtAssert(g_pgsCur->ccharm == 3);
SetCcharm(-1);
assert(g_pgsCur->ccharm == -1);
JtAssert(g_pgsCur->ccharm == -1);
return 0;
}

View File

@ -1,7 +1,7 @@
#include <game.h>
#include <joy.h>
#include <gs.h>
#include "../assert.h"
#include "../test.h"
int main()
{
@ -10,19 +10,19 @@ int main()
// Test setting coin count
SetCcoin(0);
assert(g_pgsCur->ccoin == 0);
JtAssert(g_pgsCur->ccoin == 0);
SetCcoin(14);
assert(g_pgsCur->ccoin == 14);
JtAssert(g_pgsCur->ccoin == 14);
SetCcoin(99);
assert(g_pgsCur->ccoin == 99);
JtAssert(g_pgsCur->ccoin == 99);
SetCcoin(-1);
assert(g_pgsCur->ccoin == -1);
JtAssert(g_pgsCur->ccoin == -1);
SetCcoin(101);
assert(g_pgsCur->ccoin == 101);
JtAssert(g_pgsCur->ccoin == 101);
return 0;
}

View File

@ -1,6 +1,6 @@
#include <gs.h>
#include <cassert>
#include "../test.h"
int main()
{
@ -8,7 +8,7 @@ int main()
// Test save file percent calculation
int percent = CalculatePercentCompletion(g_pgsCur);
assert(percent == 0);
JtAssert(percent == 0);
return 0;
}

View File

@ -1,5 +1,5 @@
#include <joy.h>
#include "../assert.h"
#include "../test.h"
int main()
{
@ -7,16 +7,16 @@ int main()
g_grfcht = 0x0;
AddFcht((int)FCHT::InfiniteCharms);
assert(g_grfcht == 0x2);
JtAssert(g_grfcht == 0x2);
AddFcht((int)FCHT::LowGravity);
assert(g_grfcht == 0x6);
JtAssert(g_grfcht == 0x6);
AddFcht((int)FCHT::Invulnerability);
assert(g_grfcht == 0x7);
JtAssert(g_grfcht == 0x7);
AddFcht((int)FCHT::LowFriction);
assert(g_grfcht == 0xF);
JtAssert(g_grfcht == 0xF);
return 0;
}

View File

@ -1,6 +1,6 @@
#include <joy.h>
#include <gs.h>
#include "../assert.h"
#include "../test.h"
#include <cstring>
@ -13,12 +13,12 @@ int main()
g_pgsCur->clife = 0;
CheatActivateChetkido();
assert(strstr(chetkido_buffer, "The password is: chetkido") != NULL);
JtAssert(strstr(chetkido_buffer, "The password is: chetkido") != NULL);
g_pgsCur->ccoin = 98;
CheatActivateChetkido();
assert(strstr(chetkido_buffer, "The password is: chetkido") == NULL);
JtAssert(strstr(chetkido_buffer, "The password is: chetkido") == NULL);
return 0;
}

22
test/test.h Normal file
View File

@ -0,0 +1,22 @@
#pragma once
#include <stdexcept>
#include <exception>
#define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
// Custom assert macro that doesn't call abort
#define JtAssert(assertion) \
{ \
if (!(assertion)) \
{ \
printf( \
"\nAn assertion failure has occurred\n" \
"========================================\n" \
"Assertion: %s\n" \
"File: %s\nLine %d, in %s\n" \
"========================================\n\n", \
#assertion, __FILENAME__, __LINE__, __FUNCTION__); \
exit(1); \
} \
}

View File

@ -1,32 +1,35 @@
#include <util.h>
#include "../assert.h"
#include "../test.h"
// disable warning for truncating double to float
#pragma warning(disable: 4305)
int main()
{
// Clamp value between -1 and 1
assert(GLimitAbs(-5, 1) == -1.f);
assert(GLimitAbs(-1, 1) == -1.f);
assert(GLimitAbs(-0.4, 1) == -0.4f);
assert(GLimitAbs(0.76, 1) == 0.76f);
assert(GLimitAbs(1, 1) == 1.f);
assert(GLimitAbs(17, 1) == 1.f);
JtAssert(GLimitAbs(-5, 1) == -1.f);
JtAssert(GLimitAbs(-1, 1) == -1.f);
JtAssert(GLimitAbs(-0.4, 1) == -0.4f);
JtAssert(GLimitAbs(0.76, 1) == 0.76f);
JtAssert(GLimitAbs(1, 1) == 1.f);
JtAssert(GLimitAbs(17, 1) == 1.f);
// Clamp value between -3.14 and 3.14
assert(GLimitAbs(-5, 3.14) == -3.14f);
assert(GLimitAbs(-1, 3.14) == -1.f);
assert(GLimitAbs(-0.4, 3.14) == -0.4f);
assert(GLimitAbs(0.76, 3.14) == 0.76f);
assert(GLimitAbs(3.14, 3.14) == 3.14f);
assert(GLimitAbs(17, 3.14) == 3.14f);
JtAssert(GLimitAbs(-5, 3.14) == -3.14f);
JtAssert(GLimitAbs(-1, 3.14) == -1.f);
JtAssert(GLimitAbs(-0.4, 3.14) == -0.4f);
JtAssert(GLimitAbs(0.76, 3.14) == 0.76f);
JtAssert(GLimitAbs(3.14, 3.14) == 3.14f);
JtAssert(GLimitAbs(17, 3.14) == 3.14f);
// Clamp value between -100 and 100
assert(GLimitAbs(-1000, 100) == -100.f);
assert(GLimitAbs(-100, 100) == -100.f);
assert(GLimitAbs(-17.3, 100) == -17.3f);
assert(GLimitAbs(0, 100) == 0.f);
assert(GLimitAbs(91, 100) == 91.f);
assert(GLimitAbs(100.2, 100) == 100.f);
assert(GLimitAbs(420.69, 100) == 100.f);
JtAssert(GLimitAbs(-1000, 100) == -100.f);
JtAssert(GLimitAbs(-100, 100) == -100.f);
JtAssert(GLimitAbs(-17.3, 100) == -17.3f);
JtAssert(GLimitAbs(0, 100) == 0.f);
JtAssert(GLimitAbs(91, 100) == 91.f);
JtAssert(GLimitAbs(100.2, 100) == 100.f);
JtAssert(GLimitAbs(420.69, 100) == 100.f);
return 0;
}

View File

@ -1,23 +1,25 @@
#include <util.h>
#include "../assert.h"
#include "../test.h"
#pragma warning(disable: 4305)
int main()
{
// Clamp value using global 0-1 limit
assert(GLimitLm(&g_lmZeroOne, -2.3) == 0.f);
assert(GLimitLm(&g_lmZeroOne, 0) == 0.f);
assert(GLimitLm(&g_lmZeroOne, 0.234) == 0.234f);
assert(GLimitLm(&g_lmZeroOne, 0.7) == 0.7f);
assert(GLimitLm(&g_lmZeroOne, 1) == 1.f);
assert(GLimitLm(&g_lmZeroOne, 4) == 1.f);
JtAssert(GLimitLm(&g_lmZeroOne, -2.3) == 0.f);
JtAssert(GLimitLm(&g_lmZeroOne, 0) == 0.f);
JtAssert(GLimitLm(&g_lmZeroOne, 0.234) == 0.234f);
JtAssert(GLimitLm(&g_lmZeroOne, 0.7) == 0.7f);
JtAssert(GLimitLm(&g_lmZeroOne, 1) == 1.f);
JtAssert(GLimitLm(&g_lmZeroOne, 4) == 1.f);
// Clamp value using local limit
LM lmFiveTen(5, 10);
assert(GLimitLm(&lmFiveTen, 1) == 5.f);
assert(GLimitLm(&lmFiveTen, 5) == 5.f);
assert(GLimitLm(&lmFiveTen, 7) == 7.f);
assert(GLimitLm(&lmFiveTen, 10) == 10.f);
assert(GLimitLm(&lmFiveTen, 99) == 10.f);
JtAssert(GLimitLm(&lmFiveTen, 1) == 5.f);
JtAssert(GLimitLm(&lmFiveTen, 5) == 5.f);
JtAssert(GLimitLm(&lmFiveTen, 7) == 7.f);
JtAssert(GLimitLm(&lmFiveTen, 10) == 10.f);
JtAssert(GLimitLm(&lmFiveTen, 99) == 10.f);
return 0;
}

View File

@ -1,10 +1,14 @@
#include <xform.h>
#include "../assert.h"
#include <cassert>
#include "../test.h"
int main()
{
EXIT exit;
// todo: why does the custom assert macro cause errors here
SetExitExits(&exit, EXITS::Blocked);
assert(exit.fKeyed == EXITS::Blocked);