Browse Source

Add test for RotateBlockedMissile (#5069)

pull/5084/head
Cesar Canassa 4 years ago committed by GitHub
parent
commit
fcdab7f56f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      Source/missiles.cpp
  2. 4
      Source/missiles.h
  3. 22
      test/missiles_test.cpp

7
Source/missiles.cpp

@ -666,6 +666,13 @@ void SpawnLightning(Missile &missile, int dam)
} // namespace
#ifdef BUILD_TESTING
void TestRotateBlockedMissile(Missile &missile)
{
RotateBlockedMissile(missile);
}
#endif
bool IsMissileBlockedByTile(Point tile)
{
if (!InDungeonBounds(tile)) {

4
Source/missiles.h

@ -431,4 +431,8 @@ void ProcessMissiles();
void missiles_process_charge();
void RedoMissileFlags();
#ifdef BUILD_TESTING
void TestRotateBlockedMissile(Missile &missile);
#endif
} // namespace devilution

22
test/missiles_test.cpp

@ -1,9 +1,31 @@
#include <gtest/gtest.h>
#include "engine/random.hpp"
#include "missiles.h"
using namespace devilution;
TEST(Missiles, RotateBlockedMissileArrow)
{
Player &player = Players[0];
// missile can be a copy or a reference, there's no nullptr check and the functions that use it don't expect the instance to be part of a global structure so it doesn't really matter for this use.
Missile missile = *AddMissile({ 0, 0 }, { 0, 0 }, Direction::South, MIS_ARROW, TARGET_MONSTERS, player.getId(), 0, 0);
EXPECT_EQ(missile._miAnimFrame, 1);
SetRndSeed(0);
TestRotateBlockedMissile(missile);
EXPECT_EQ(missile._miAnimFrame, 16);
SetRndSeed(3210);
TestRotateBlockedMissile(missile);
EXPECT_EQ(missile._miAnimFrame, 1);
missile._miAnimFrame = 5;
SetRndSeed(1234);
TestRotateBlockedMissile(missile);
EXPECT_EQ(missile._miAnimFrame, 6);
}
TEST(Missiles, GetDirection8)
{
EXPECT_EQ(Direction::South, GetDirection({ 0, 0 }, { 15, 15 }));

Loading…
Cancel
Save