#include #include "doorkeeper/helpers/asciimapsource.hpp" #include "doorkeeper/doorkeeper.hpp" #include #include TEST(load, asciimapsource) { typedef dk::Tyler<2>::coords coords2; typedef std::unique_ptr AsciiMapSourceUPtr; const char map_data[] = "1101111001\n1101111001\n1110111100\n1110111000\n" "1111011011\n1111010111\n1111101111\n1111111111\n"; const dk::CoordinateScalarType tile_size = 64; const dk::CoordinateScalarType map_width = 10; const dk::CoordinateScalarType map_height = 8; std::istringstream iss((std::string(map_data))); dk::Tyler<2> tiler((coords2(tile_size))); AsciiMapSourceUPtr loader(new dkh::AsciiMapSource(iss, coords2(map_width, map_height), dk::MapType_Isometric, coords2(tile_size))); auto layer = &tiler.push_layer(loader.get(), 0); dk::Viewport<2> full_view(tiler, coords2(map_width, map_height), coords2(0)); EXPECT_EQ(coords2(map_width, map_height), tiler.map_size()); dk::CoordinateDistType index = 0; int data_index = 0; full_view.setFrom(coords2(0)); for (auto itTile = full_view.begin(*layer), itTileEND = full_view.end(*layer); itTile != itTileEND; ++itTile) { EXPECT_EQ(index, dk::to_index(itTile.raw_coords())); EXPECT_LT(index, sizeof(map_data)); ASSERT_LT(data_index, sizeof(map_data)); const auto expected_value = static_cast(map_data[data_index] - '0'); EXPECT_EQ(expected_value, *itTile); ++index; ++data_index; if (map_data[data_index] == '\n') { ++data_index; } } EXPECT_EQ(map_width * map_height, index); }