mirror of
https://github.com/nolen777/eagle0.git
synced 2026-07-28 20:55:44 +00:00
Add cube line equivalence tests (#8771)
This commit is contained in:
@@ -21,6 +21,16 @@ static constexpr PlayerId enemyPlayerId = 3;
|
||||
|
||||
static const std::vector<PlayerId> alliedPids{alliedPlayerId};
|
||||
|
||||
static void ExpectCubeLine(const std::vector<Cube>& actual, const std::vector<Cube>& expected) {
|
||||
ASSERT_EQ(expected.size(), actual.size());
|
||||
for (size_t index = 0; index < expected.size(); ++index) {
|
||||
SCOPED_TRACE(index);
|
||||
EXPECT_EQ(expected[index].x, actual[index].x);
|
||||
EXPECT_EQ(expected[index].y, actual[index].y);
|
||||
EXPECT_EQ(expected[index].z, actual[index].z);
|
||||
}
|
||||
}
|
||||
|
||||
class HexMapUtilsTest : public ::testing::Test {
|
||||
void SetUp() override {
|
||||
InitializeGameSettings();
|
||||
@@ -440,12 +450,51 @@ TEST_F(HexMapUtilsTest, LineIsBlockedByMountains_directLine_isFalse) {
|
||||
TEST_F(HexMapUtilsTest, CubeLineInclusive_sameCube_returnsSingleCube) {
|
||||
const Cube cube(1, -3, 2);
|
||||
|
||||
const auto line = CubeLineInclusive(cube, cube);
|
||||
ExpectCubeLine(CubeLineInclusive(cube, cube), {cube});
|
||||
}
|
||||
|
||||
ASSERT_EQ(1, line.size());
|
||||
EXPECT_EQ(cube.x, line.front().x);
|
||||
EXPECT_EQ(cube.y, line.front().y);
|
||||
EXPECT_EQ(cube.z, line.front().z);
|
||||
TEST_F(HexMapUtilsTest, CubeLineInclusive_straightLine_returnsOneCubePerStep) {
|
||||
ExpectCubeLine(
|
||||
CubeLineInclusive(Cube(0, 0, 0), Cube(3, -3, 0)),
|
||||
{
|
||||
Cube(0, 0, 0),
|
||||
Cube(1, -1, 0),
|
||||
Cube(2, -2, 0),
|
||||
Cube(3, -3, 0),
|
||||
});
|
||||
}
|
||||
|
||||
TEST_F(HexMapUtilsTest, CubeLineInclusive_lineBetweenHexes_returnsBothHexes) {
|
||||
ExpectCubeLine(
|
||||
CubeLineInclusive(Cube(0, 0, 0), Cube(1, -2, 1)),
|
||||
{
|
||||
Cube(0, 0, 0),
|
||||
Cube(1, -1, 0),
|
||||
Cube(0, -1, 1),
|
||||
Cube(1, -2, 1),
|
||||
});
|
||||
}
|
||||
|
||||
TEST_F(HexMapUtilsTest, CubeLineInclusive_lineBetweenHexesWithYTie_returnsBothHexes) {
|
||||
ExpectCubeLine(
|
||||
CubeLineInclusive(Cube(0, 0, 0), Cube(2, -1, -1)),
|
||||
{
|
||||
Cube(0, 0, 0),
|
||||
Cube(1, 0, -1),
|
||||
Cube(1, -1, 0),
|
||||
Cube(2, -1, -1),
|
||||
});
|
||||
}
|
||||
|
||||
TEST_F(HexMapUtilsTest, CubeLineInclusive_reversedEndpoints_preservesCurrentTieOrder) {
|
||||
ExpectCubeLine(
|
||||
CubeLineInclusive(Cube(1, -2, 1), Cube(0, 0, 0)),
|
||||
{
|
||||
Cube(1, -2, 1),
|
||||
Cube(1, -1, 0),
|
||||
Cube(0, -1, 1),
|
||||
Cube(0, 0, 0),
|
||||
});
|
||||
}
|
||||
|
||||
TEST_F(HexMapUtilsTest, LineIsBlockedByMountains_mountainBetween_isTrue) {
|
||||
|
||||
Reference in New Issue
Block a user