Files
nd-wfc/tests/test_wfc.cpp
cdemeyer-teachx 2996ffedfc initial commit
2025-08-21 12:17:21 +09:00

52 lines
1.4 KiB
C++

#include <gtest/gtest.h>
#include "nd-wfc/wfc.hpp"
#include "nd-wfc/types.hpp"
namespace nd_wfc {
// Basic test for 2D WFC
TEST(WfcTest, Basic2D) {
// Create a simple 2x2 grid with 2 tile types
Size<2> size = {2, 2};
std::vector<TileId> tiles = {0, 1};
// Simple constraints: tile 0 can connect to tile 0 and 1 in all directions
// tile 1 can only connect to tile 1
std::vector<Constraint> constraints = {
{0, 0, Direction::North}, {0, 0, Direction::South},
{0, 0, Direction::East}, {0, 0, Direction::West},
{0, 1, Direction::North}, {0, 1, Direction::South},
{0, 1, Direction::East}, {0, 1, Direction::West},
{1, 1, Direction::North}, {1, 1, Direction::South},
{1, 1, Direction::East}, {1, 1, Direction::West}
};
WfcConfig config;
config.seed = 42; // For reproducible tests
Wfc2D wfc(size, tiles, constraints, config);
WfcResult result = wfc.run();
// The algorithm should succeed
EXPECT_EQ(result, WfcResult::Success);
EXPECT_TRUE(wfc.isComplete());
}
// Test grid functionality
TEST(GridTest, Basic2D) {
Size<2> size = {3, 3};
Grid<2> grid(size);
// Test coordinate conversion
Coord<2> coord = {1, 2};
Index index = grid.coordToIndex(coord);
Coord<2> back_coord = grid.indexToCoord(index);
EXPECT_EQ(coord, back_coord);
EXPECT_EQ(grid.getSize(), size);
EXPECT_EQ(grid.getTotalSize(), 9);
}
} // namespace nd_wfc