/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/UnitTests/ToolsFoundationTest/Object/DocumentObjectTest.cpp
110 строк
6 KB
Jan Krassnigg
Small cleanup of ezStatus (#1595)
04 июл 2025, 08:50
Не верифицирован
04 июл 2025, 08:50
416c7ad
Код
Авторство
О чём код?
#include <ToolsFoundationTest/ToolsFoundationTestPCH.h> #include <ToolsFoundationTest/Object/TestObjectManager.h> #include <ToolsFoundationTest/Reflection/ReflectionTestClasses.h> EZ_CREATE_SIMPLE_TEST_GROUP(DocumentObject); EZ_CREATE_SIMPLE_TEST(DocumentObject, DocumentObjectManager) { ezTestDocumentObjectManager manager; ezDocumentObject* pObject = nullptr; ezDocumentObject* pChildObject = nullptr; ezDocumentObject* pChildren[4] = {nullptr}; ezDocumentObject* pSubElementObject[4] = {nullptr}; EZ_TEST_BLOCK(ezTestBlock::Enabled, "DocumentObject") { EZ_TEST_BOOL(manager.CanAdd(ezObjectTest::GetStaticRTTI(), nullptr, "", 0).Succeeded()); pObject = manager.CreateObject(ezObjectTest::GetStaticRTTI()); manager.AddObject(pObject, nullptr, "", 0); const char* szProperty = "SubObjectSet"; EZ_TEST_BOOL(manager.CanAdd(OuterClass::GetStaticRTTI(), pObject, szProperty, 0).Failed()); EZ_TEST_BOOL(manager.CanAdd(ezObjectTest::GetStaticRTTI(), pObject, szProperty, 0).Succeeded()); pChildObject = manager.CreateObject(ezObjectTest::GetStaticRTTI()); manager.AddObject(pChildObject, pObject, "SubObjectSet", 0); EZ_TEST_INT(pObject->GetTypeAccessor().GetCount(szProperty), 1); EZ_TEST_BOOL(manager.CanAdd(OuterClass::GetStaticRTTI(), pObject, "ClassPtrArray", 0).Succeeded()); EZ_TEST_BOOL(manager.CanAdd(ExtendedOuterClass::GetStaticRTTI(), pObject, "ClassPtrArray", 0).Succeeded()); EZ_TEST_BOOL(!manager.CanAdd(ezReflectedClass::GetStaticRTTI(), pObject, "ClassPtrArray", 0).Succeeded()); for (ezInt32 i = 0; i < EZ_ARRAY_SIZE(pChildren); i++) { EZ_TEST_BOOL(manager.CanAdd(ezObjectTest::GetStaticRTTI(), pChildObject, szProperty, i).Succeeded()); pChildren[i] = manager.CreateObject(ezObjectTest::GetStaticRTTI()); manager.AddObject(pChildren[i], pChildObject, szProperty, i); EZ_TEST_INT(pChildObject->GetTypeAccessor().GetCount(szProperty), i + 1); } EZ_TEST_INT(pChildObject->GetTypeAccessor().GetCount(szProperty), 4); EZ_TEST_BOOL_MSG(manager.CanMove(pObject, pChildObject, szProperty, 0).Failed(), "Can't move to own child"); EZ_TEST_BOOL_MSG(manager.CanMove(pChildren[1], pChildObject, szProperty, 1).Failed(), "Can't move before onself"); EZ_TEST_BOOL_MSG(manager.CanMove(pChildren[1], pChildObject, szProperty, 2).Failed(), "Can't move after oneself"); EZ_TEST_BOOL_MSG(manager.CanMove(pChildren[1], pChildren[1], szProperty, 0).Failed(), "Can't move into yourself"); } EZ_TEST_BLOCK(ezTestBlock::Enabled, "DocumentSubElementObject") { const char* szProperty = "ClassArray"; for (ezInt32 i = 0; i < EZ_ARRAY_SIZE(pSubElementObject); i++) { EZ_TEST_BOOL(manager.CanAdd(OuterClass::GetStaticRTTI(), pObject, szProperty, i).Succeeded()); pSubElementObject[i] = manager.CreateObject(OuterClass::GetStaticRTTI()); manager.AddObject(pSubElementObject[i], pObject, szProperty, i); EZ_TEST_INT(pObject->GetTypeAccessor().GetCount(szProperty), i + 1); } EZ_TEST_BOOL(manager.CanRemove(pSubElementObject[0]).Succeeded()); manager.RemoveObject(pSubElementObject[0]); manager.DestroyObject(pSubElementObject[0]); pSubElementObject[0] = nullptr; EZ_TEST_INT(pObject->GetTypeAccessor().GetCount(szProperty), 3); ezVariant value = pObject->GetTypeAccessor().GetValue(szProperty, 0); EZ_TEST_BOOL(value.IsA<ezUuid>() && value.Get<ezUuid>() == pSubElementObject[1]->GetGuid()); value = pObject->GetTypeAccessor().GetValue(szProperty, 1); EZ_TEST_BOOL(value.IsA<ezUuid>() && value.Get<ezUuid>() == pSubElementObject[2]->GetGuid()); value = pObject->GetTypeAccessor().GetValue(szProperty, 2); EZ_TEST_BOOL(value.IsA<ezUuid>() && value.Get<ezUuid>() == pSubElementObject[3]->GetGuid()); EZ_TEST_BOOL(manager.CanMove(pSubElementObject[1], pObject, szProperty, 2).Succeeded()); manager.MoveObject(pSubElementObject[1], pObject, szProperty, 2); EZ_TEST_BOOL(manager.CanMove(pSubElementObject[3], pObject, szProperty, 0).Succeeded()); manager.MoveObject(pSubElementObject[3], pObject, szProperty, 0); value = pObject->GetTypeAccessor().GetValue(szProperty, 0); EZ_TEST_BOOL(value.IsA<ezUuid>() && value.Get<ezUuid>() == pSubElementObject[3]->GetGuid()); value = pObject->GetTypeAccessor().GetValue(szProperty, 1); EZ_TEST_BOOL(value.IsA<ezUuid>() && value.Get<ezUuid>() == pSubElementObject[2]->GetGuid()); value = pObject->GetTypeAccessor().GetValue(szProperty, 2); EZ_TEST_BOOL(value.IsA<ezUuid>() && value.Get<ezUuid>() == pSubElementObject[1]->GetGuid()); EZ_TEST_BOOL(manager.CanRemove(pSubElementObject[3]).Succeeded()); manager.RemoveObject(pSubElementObject[3]); manager.DestroyObject(pSubElementObject[3]); pSubElementObject[3] = nullptr; EZ_TEST_INT(pObject->GetTypeAccessor().GetCount(szProperty), 2); value = pObject->GetTypeAccessor().GetValue(szProperty, 0); EZ_TEST_BOOL(value.IsA<ezUuid>() && value.Get<ezUuid>() == pSubElementObject[2]->GetGuid()); value = pObject->GetTypeAccessor().GetValue(szProperty, 1); EZ_TEST_BOOL(value.IsA<ezUuid>() && value.Get<ezUuid>() == pSubElementObject[1]->GetGuid()); EZ_TEST_BOOL(manager.CanMove(pSubElementObject[1], pChildObject, szProperty, 0).Succeeded()); manager.MoveObject(pSubElementObject[1], pChildObject, szProperty, 0); EZ_TEST_BOOL(manager.CanMove(pSubElementObject[2], pChildObject, szProperty, 0).Succeeded()); manager.MoveObject(pSubElementObject[2], pChildObject, szProperty, 0); EZ_TEST_INT(pObject->GetTypeAccessor().GetCount(szProperty), 0); EZ_TEST_INT(pChildObject->GetTypeAccessor().GetCount(szProperty), 2); value = pChildObject->GetTypeAccessor().GetValue(szProperty, 0); EZ_TEST_BOOL(value.IsA<ezUuid>() && value.Get<ezUuid>() == pSubElementObject[2]->GetGuid()); value = pChildObject->GetTypeAccessor().GetValue(szProperty, 1); EZ_TEST_BOOL(value.IsA<ezUuid>() && value.Get<ezUuid>() == pSubElementObject[1]->GetGuid()); } manager.DestroyAllObjects(); }