added tests, expanding solution algorithm

This commit is contained in:
Daniel Ledda
2022-12-04 22:18:53 +01:00
parent 58c2b0a720
commit bd52c9a93f
5 changed files with 162 additions and 27 deletions

63
tests.cpp Normal file
View File

@@ -0,0 +1,63 @@
#include <gtest/gtest.h>
#include "VoxelSpace.h"
TEST(VoxelSpaces, BasicPositions) {
auto space = Voxel::Space{ .space=23ull, .dims={3, 3, 3}};
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 0, 0, 1), true);
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 1, 0, 0), false);
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 2, 1, 2), false);
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 1, 2, 1), false);
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 0, 0, 0), true);
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 2, 2, 1), false);
space = Voxel::Space{ .space=30ull, .dims={3, 3, 3}};
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 0, 0, 1), true);
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 1, 0, 0), false);
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 2, 1, 2), false);
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 1, 2, 1), false);
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 0, 0, 0), false);
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 2, 2, 1), false);
space = Voxel::Space{ .space=15ull, .dims={3, 3, 3}};
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 0, 0, 1), true);
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 1, 0, 0), false);
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 2, 1, 2), false);
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 1, 2, 1), false);
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 0, 0, 0), true);
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 2, 2, 1), false);
space = Voxel::Space{ .space=23ull, .dims={3, 3, 3}};
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 0, 0, 1), true);
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 1, 0, 0), false);
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 2, 1, 2), false);
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 1, 2, 1), false);
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 0, 0, 0), true);
EXPECT_EQ(Voxel::filledAt(space.space, space.dims, 2, 2, 1), false);
}
TEST(VoxelSpaces, RotatedIndices) {
auto space1 = Voxel::Space{ .space=172ull, .dims={3, 3, 3}};
EXPECT_EQ(Voxel::newIndexRotX(space1.dims, 0, 0, 0), 6);
EXPECT_EQ(Voxel::newIndexRotX(space1.dims, 1, 0, 1), 12);
EXPECT_EQ(Voxel::newIndexRotY(space1.dims, 0, 1, 0), 5);
EXPECT_EQ(Voxel::newIndexRotY(space1.dims, 1, 2, 0), 7);
EXPECT_EQ(Voxel::newIndexRotZ(space1.dims, 1, 0, 2), 23);
EXPECT_EQ(Voxel::newIndexRotZ(space1.dims, 0, 0, 0), 18);
}
TEST(VoxelSpaces, RotateXYZ) {
auto space1 = Voxel::Space{ .space=30ull, .dims={3, 3, 3}};
auto space2 = Voxel::Space{ .space=30ull, .dims={3, 3, 3}};
auto space3 = Voxel::Space{ .space=30ull, .dims={3, 3, 3}};
Voxel::rotate90X(&space1);
Voxel::rotate90Y(&space2);
Voxel::rotate90Z(&space3);
EXPECT_EQ(space1.space, 153ull);
EXPECT_EQ(space2.space, 1067040ull);
EXPECT_EQ(space3.space, 1574400ull);
}