#include #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); }