56 auto hover_pos = canvas_->hover_mouse_pos();
57 auto drawn_pos = canvas_->drawn_tile_position();
61 EXPECT_TRUE(hover_pos.x >= 0.0f || hover_pos.x == -1.0f);
62 EXPECT_TRUE(drawn_pos.x >= 0.0f || drawn_pos.x == -1.0f);
102 std::vector<ImVec2> test_positions = {
110 std::vector<std::pair<int, int>> expected_maps = {
111 {0, 0}, {1, 0}, {0, 1}, {1, 1}, {3, 2}
114 for (
size_t i = 0; i < test_positions.size(); ++i) {
115 ImVec2 pos = test_positions[i];
119 EXPECT_EQ(map_x, expected_maps[i].first);
120 EXPECT_EQ(map_y, expected_maps[i].second);
126 const int kLargeMapSize = 1024;
129 std::vector<ImVec2> test_positions = {
136 std::vector<std::pair<int, int>> expected_large_maps = {
137 {0, 0}, {1, 0}, {0, 1}, {2, 2}
140 for (
size_t i = 0; i < test_positions.size(); ++i) {
141 ImVec2 pos = test_positions[i];
142 int map_x = pos.x / kLargeMapSize;
143 int map_y = pos.y / kLargeMapSize;
145 EXPECT_EQ(map_x, expected_large_maps[i].first);
146 EXPECT_EQ(map_y, expected_large_maps[i].second);
158 auto test_hover_at_scale = [&](
float scale) {
159 canvas_->set_global_scale(scale);
160 auto hover_pos = canvas_->hover_mouse_pos();
164 EXPECT_GE(hover_pos.x, 0.0f);
165 EXPECT_GE(hover_pos.y, 0.0f);
166 EXPECT_LE(hover_pos.x, 4096.0f);
167 EXPECT_LE(hover_pos.y, 4096.0f);
170 test_hover_at_scale(0.25f);
171 test_hover_at_scale(0.5f);
172 test_hover_at_scale(1.0f);
173 test_hover_at_scale(2.0f);
174 test_hover_at_scale(4.0f);
187 auto drawn_pos = canvas_->drawn_tile_position();
190 auto hover_pos = canvas_->hover_mouse_pos();
197 EXPECT_TRUE(drawn_pos.x >= 0.0f || drawn_pos.x == -1.0f);
198 EXPECT_TRUE(hover_pos.x >= 0.0f || hover_pos.x == -1.0f);
209 int expected_map_index;
212 std::vector<TestCase> test_cases = {
214 {ImVec2(0, 0), 0, 0},
215 {ImVec2(512, 0), 0, 1},
216 {ImVec2(1024, 512), 0, 10},
219 {ImVec2(0, 0), 1, 0x40},
220 {ImVec2(512, 0), 1, 0x41},
221 {ImVec2(1024, 512), 1, 0x4A},
224 {ImVec2(0, 0), 2, 0x80},
225 {ImVec2(512, 512), 2, 0x89},
228 for (
const auto& tc : test_cases) {
231 int hovered_map = map_x + map_y * 8;
233 if (tc.current_world == 1) {
235 }
else if (tc.current_world == 2) {
239 EXPECT_EQ(hovered_map, tc.expected_map_index)
240 <<
"Failed for world " << tc.current_world
241 <<
" at position (" << tc.hover_pos.x <<
", " << tc.hover_pos.y <<
")";
276 const int kLargeMapSize = 1024;
278 std::vector<ImVec2> boundary_positions = {
285 for (
const auto& pos : boundary_positions) {
286 int map_x = pos.x / kLargeMapSize;
287 int map_y = pos.y / kLargeMapSize;
288 int map_index = map_x + map_y * 4;
291 EXPECT_GE(map_index, 0);
292 EXPECT_LT(map_index, 16);