|
20 | 20 | #include <algorithm> |
21 | 21 | #include <array> |
22 | 22 | #include <string_view> |
| 23 | +#include <vector> |
23 | 24 |
|
24 | 25 | using namespace baba_is_auto; |
25 | 26 |
|
@@ -364,6 +365,43 @@ TEST_CASE("Game - Pillar Yard") |
364 | 365 | } |
365 | 366 | } |
366 | 367 |
|
| 368 | +TEST_CASE("Game - Brick Wall") |
| 369 | +{ |
| 370 | + SUBCASE("Loads and resets the brick layout") |
| 371 | + { |
| 372 | + Game game(MAPS_DIR "brick_wall.txt"); |
| 373 | + const std::vector<Position> bricks = { |
| 374 | + { 10, 3 }, { 11, 3 }, { 12, 3 }, { 10, 4 }, |
| 375 | + { 12, 4 }, { 10, 5 }, { 11, 5 }, { 12, 5 }, |
| 376 | + }; |
| 377 | + CHECK(game.GetMap().GetWidth() == 15); |
| 378 | + CHECK(game.GetMap().GetHeight() == 8); |
| 379 | + CHECK(game.GetRuleManager().GetNumRules() == 3); |
| 380 | + CHECK(game.GetMap().At(1, 4).HasType(ObjectType::ICON_BABA)); |
| 381 | + CHECK(game.GetMap().At(5, 4).HasType(ObjectType::ICON_TILE)); |
| 382 | + CHECK(game.GetMap().At(11, 4).HasType(ObjectType::ICON_FLAG)); |
| 383 | + CHECK_FALSE(game.GetMap().At(11, 4).HasType(ObjectType::ICON_BRICK)); |
| 384 | + CHECK(game.GetMap().GetPositions(ObjectType::ICON_BRICK) == bricks); |
| 385 | + |
| 386 | + game.MovePlayer(Direction::RIGHT); |
| 387 | + game.Reset(); |
| 388 | + CHECK(game.GetMap().At(1, 4).HasType(ObjectType::ICON_BABA)); |
| 389 | + CHECK(game.GetMap().GetPositions(ObjectType::ICON_BRICK) == bricks); |
| 390 | + CHECK(game.GetRuleManager().GetNumRules() == 3); |
| 391 | + CHECK(game.GetPlayState() == PlayState::PLAYING); |
| 392 | + } |
| 393 | + |
| 394 | + SUBCASE("Forms BABA IS WIN and wins") |
| 395 | + { |
| 396 | + Game game(MAPS_DIR "brick_wall.txt"); |
| 397 | + |
| 398 | + Move(game, "RRRRRRDDLULDLUUDRRRULL"); |
| 399 | + CHECK(game.GetRuleManager().HasProperty({ ObjectType::ICON_BABA }, |
| 400 | + ObjectType::WIN)); |
| 401 | + CHECK(game.GetPlayState() == PlayState::WON); |
| 402 | + } |
| 403 | +} |
| 404 | + |
367 | 405 | TEST_CASE("Game - Editor Smoke Map") |
368 | 406 | { |
369 | 407 | Game game(MAPS_DIR "editor_smoke.txt"); |
|
0 commit comments