#include "zeroerr/assert.h" #include "zeroerr/unittest.h" #include "animation/editing/AnimationClip.h" #include "animation/editor/EditorAnimationClip.h" #include "avatar/editing/AvatarTarget.h" #include "avatar/editor/EditorAvatarTarget.h" #include "building/editing/BuildingTarget.h" #include "building/editor/EditorBuildingTarget.h" #include "camera/editing/CameraTarget.h" #include "camera/editor/EditorCameraTarget.h" #include "crowd/editing/CrowdDocument.h" #include "crowd/editor/EditorCrowdDocument.h" #include "definitions/editing/DefinitionTarget.h" #include "definitions/editor/EditorDefinitionTarget.h" #include "editing/EditableTarget.h" #include "editing/EditingAuthority.h" #include "editing/EditingCommandTypes.h" #include "editing/EditingGraph.h" #include "editing/EditingIds.h" #include "editing/EditingProperty.h" #include "editing/EditingProtocol.h" #include "editing/EditingResult.h" #include "editing/EditingSelection.h" #include "editing/EditingTargetOperations.h" #include "editing/EditingTaskService.h" #include "editing/EditingValue.h" #include "editing/EditingVolume.h" #include "editor/EditorAuthority.h" #include "editor/EditorCommandTypes.h" #include "editor/EditorIds.h" #include "editor/EditorProperty.h" #include "editor/EditorProtocol.h" #include "editor/EditorResult.h" #include "editor/EditorSelection.h" #include "editor/EditorTarget.h" #include "editor/EditorTaskService.h" #include "editor/EditorValue.h" #include "editor/EditorVolumeTarget.h" #include "editor/gizmo/editing/DomainGizmoPreview.h" #include "editor/gizmo/editor/EditorGizmoPreview.h" #include "editor/input/editing/InputMapTarget.h" #include "editor/input/editor/EditorInputMapTarget.h" #include "editor/queue/editing/QueueInspector.h" #include "editor/queue/editor/EditorQueueInspector.h" #include "fluids/editing/FluidTarget.h" #include "fluids/editing/SurfaceFluidTarget.h" #include "fluids/editing/VolumeFluidTarget.h" #include "fluids/editor/EditorFluidTarget.h" #include "fluids/editor/EditorSurfaceFluidTarget.h" #include "fluids/editor/EditorVolumeFluidTarget.h" #include "graphics/editing/OffscreenPreview.h" #include "graphics/editor/EditorOffscreenPreview.h" #include "graphics/lighting/editing/LightingTarget.h" #include "graphics/lighting/editor/EditorLightingTarget.h" #include "graphics/material/editing/MaterialGraph.h" #include "graphics/material/editing/MaterialTarget.h" #include "graphics/material/editor/EditorGraph.h" #include "graphics/material/editor/EditorMaterialTarget.h" #include "hd2d/editing/Hd2dTarget.h" #include "hd2d/editor/EditorHd2dTarget.h" #include "housegen/editing/HouseGenTarget.h" #include "housegen/editor/EditorHouseGenTarget.h" #include "i18n/editing/LocalizationDocument.h" #include "i18n/editor/EditorLocalization.h" #include "map/editing/MapDocument.h" #include "map/editor/EditorMapDocument.h" #include "network/editing/NetworkTelemetry.h" #include "network/editor/EditorNetworkTelemetry.h" #include "particles/editing/ParticleGraph.h" #include "particles/editor/EditorParticleGraph.h" #include "physics/editing/PhysicsColliderAsset.h" #include "physics/editing/PhysicsTarget.h" #include "physics/editor/EditorPhysicsAsset.h" #include "physics/editor/EditorPhysicsTarget.h" #include "procgen/biome/editing/BiomeTarget.h" #include "procgen/biome/editor/EditorBiomeTarget.h" #include "procgen/editing/TextureRecipeTarget.h" #include "procgen/editor/EditorTextureRecipeTarget.h" #include "profiler/editing/ProfilerModel.h" #include "profiler/editor/EditorProfiler.h" #include "scene/editing/SceneTarget.h" #include "scene/editor/EditorSceneTarget.h" #include "scene/loader/editing/SceneImportTarget.h" #include "scene/loader/editor/EditorSceneImportTarget.h" #include "social/editing/SocialDocument.h" #include "social/editor/EditorSocialDocument.h" #include "ui/editing/UiDocument.h" #include "ui/editor/EditorUiDocumentTarget.h" #include "ui/editor/EditorUiThemeTarget.h" #include "virtualgeometry/editing/VirtualGeometryTarget.h" #include "virtualgeometry/editor/EditorVirtualGeometryTarget.h" #include "voxel/editing/VoxelCatalog.h" #include "voxel/editing/VoxelPaletteTarget.h" #include "voxel/editing/VoxelWorldTarget.h" #include "voxel/editor/EditorVoxelCatalogTarget.h" #include "voxel/editor/EditorVoxelPaletteTarget.h" #include #include static_assert(!std::is_convertible_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert( std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert( std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(!std::is_copy_constructible_v>); static_assert(!std::is_copy_constructible_v>); TEST_CASE("editing.contracts.ids_values_and_editor_compatibility") { using namespace eve::editing; const CommandId command("scene.object.create"); CHECK_EQ(command.value(), std::string("scene.object.create")); CHECK_EQ(eve::editor::CommandId("scene.object.create"), command); Value::Object root; root["name"] = "Station"; root["position"] = Value::Array{1.0, 2.0, 3.0}; const Value value(std::move(root)); CHECK_EQ(static_cast(value.type()), static_cast(Value::Type::Object)); CHECK(value.isWithinLimits(4, 16, 128)); CHECK(!value.isWithinLimits(1, 16, 128)); } TEST_CASE("editing.contracts.property_path_is_textual") { using namespace eve::editing; const PropertyPath left("layout.size"); const PropertyPath same("layout.size"); const PropertyPath right("layout.position"); CHECK(left == same); CHECK(left != right); CHECK_EQ(left.value(), std::string("layout.size")); } TEST_CASE("editing.contracts.structured_result") { using namespace eve::editing; const auto accepted = eve::editing::applied(Value("ready")); CHECK(accepted.ok()); CHECK_EQ(*accepted.value().getIf(), std::string("ready")); const auto rejected = eve::editing::failed(Status::Rejected, RuleId("authoring.invalid"), "invalid input"); CHECK(!rejected.ok()); CHECK_EQ(rejected.diagnostics().size(), size_t{1}); CHECK_EQ(eve::editing::diagnosticRule(rejected.diagnostics().front()).value(), std::string("authoring.invalid")); rejected.ignore(); }