Files
EVEngine/test/editor_map.cpp
T
西风逍遥游andCursor 24502babef Nest satellite packages under their host modules.
Keep CMake module names and trim switches, but stop flattening editing/editor and runtime bridges as top-level src/modules directories. Parent scans skip nested facets so runtime-3d can drop authoring by directory leaf.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-06 17:56:12 +08:00

32 lines
1.1 KiB
C++

#include "zeroerr/assert.h"
#include "zeroerr/unittest.h"
#include "editor/EditCommand.h"
#include "editor/Editor.h"
#include "map/Map.h"
#include "map/TileLayer.h"
#include "map/editing/TileLayerTarget.h"
#include <memory>
using namespace eve::editor;
TEST_CASE("editor.map.tileLayerTargetUsesLiveRevision") {
auto* map = eve::map::Map::create();
auto* layer = map->newLayer(4, 3, 8.f, 8.f);
std::unique_ptr<eve::map_editing::TileLayerTarget> target =
eve::map_editing::createTileLayerTarget("ground", layer);
const auto before = target->revision();
CHECK_EQ(static_cast<int>(target->writeInt(2, 1, 9)), static_cast<int>(FieldWriteStatus::Applied));
CHECK_EQ(layer->getTile(2, 1), 9);
CHECK_GT(target->revision(), before);
CHECK_EQ(target->dirtyRegion().minX, 2);
CHECK_EQ(target->dirtyRegion().maxY, 1);
IntFieldEditCommand command("paint", target.get());
CHECK(command.record(2, 1, 4));
CHECK(command.apply());
CHECK_EQ(layer->getTile(2, 1), 4);
command.revert();
CHECK_EQ(layer->getTile(2, 1), 9);
}