mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-08 13:14:33 +00:00
initial changes
should be longer build time on this pr as it is rebuilding the engine twice, will begin removing unnecessary files and possibly removing the preproc so the unit tests could use the same result as the engine build.
This commit is contained in:
parent
ebd409c2e9
commit
4017c3a21d
10 changed files with 230 additions and 68 deletions
2
.github/workflows/build-linux-gcc.yml
vendored
2
.github/workflows/build-linux-gcc.yml
vendored
|
|
@ -97,7 +97,7 @@ jobs:
|
|||
- name: Unit Tests
|
||||
run: |
|
||||
cd "${{github.workspace}}/My Projects/Torque3D/game"
|
||||
./Torque3D runTests.tscript
|
||||
./Torque3D_unittests
|
||||
|
||||
- name: Test Reporter
|
||||
uses: phoenix-actions/test-reporting@v14
|
||||
|
|
|
|||
2
.github/workflows/build-macos-clang.yml
vendored
2
.github/workflows/build-macos-clang.yml
vendored
|
|
@ -67,7 +67,7 @@ jobs:
|
|||
- name: Unit Tests
|
||||
run: |
|
||||
cd "${{github.workspace}}/My Projects/Torque3D/game"
|
||||
./Torque3D.app/Contents/MacOS/Torque3D runTests.tscript
|
||||
./Torque3D_unittests
|
||||
|
||||
- name: Test Reporter
|
||||
uses: phoenix-actions/test-reporting@v14
|
||||
|
|
|
|||
2
.github/workflows/build-windows-msvc.yml
vendored
2
.github/workflows/build-windows-msvc.yml
vendored
|
|
@ -63,7 +63,7 @@ jobs:
|
|||
- name: Unit Tests
|
||||
run: |
|
||||
cd "${{github.workspace}}/My Projects/Torque3D/game"
|
||||
./Torque3D.exe runTests.tscript
|
||||
./Torque3D_unittests.exe
|
||||
|
||||
- name: Test Reporter
|
||||
uses: phoenix-actions/test-reporting@v14
|
||||
|
|
|
|||
|
|
@ -31,11 +31,6 @@ forwardDef(TORQUE_BASIC_LIGHTING)
|
|||
set(TORQUE_SDL ON) # we need sdl to do our platform interop
|
||||
forwardDef(TORQUE_SDL)
|
||||
|
||||
if(TORQUE_TESTING)
|
||||
set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} TORQUE_TESTS_ENABLED)
|
||||
set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} "_VARIADIC_MAX=10")
|
||||
endif()
|
||||
|
||||
# On Windows we disable CRT Security warnings - this comes from recommendations to use non-portable functions.
|
||||
if (WIN32)
|
||||
set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} _CRT_SECURE_NO_WARNINGS WIN32)
|
||||
|
|
@ -253,11 +248,6 @@ if (UNIX AND NOT APPLE)
|
|||
torqueAddSourceDirectories("platformX11")
|
||||
endif (UNIX AND NOT APPLE)
|
||||
|
||||
if(TORQUE_TESTING)
|
||||
torqueAddSourceDirectories("testing")
|
||||
set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} TORQUE_SHARED SDL_MAIN_HANDLED)
|
||||
endif(TORQUE_TESTING)
|
||||
|
||||
# Add the collected files to our engine group
|
||||
source_group(TREE "${CMAKE_SOURCE_DIR}/Engine/source" PREFIX "Engine" FILES ${TORQUE_SOURCE_FILES})
|
||||
file(GLOB_RECURSE TORQUE_APP_GAME_SOURCES "${TORQUE_APP_ROOT_DIRECTORY}/source/*.cpp" "${TORQUE_APP_ROOT_DIRECTORY}/source/*.h")
|
||||
|
|
@ -389,10 +379,6 @@ if (APPLE)
|
|||
"${TORQUE_APP_GAME_DIRECTORY}/${TORQUE_APP_NAME}.torsion"
|
||||
"${TORQUE_APP_GAME_DIRECTORY}/Template.torsion.exports")
|
||||
|
||||
if(TORQUE_TESTING)
|
||||
set(MACOSX_RESOURCES ${MACOSX_RESOURCES} "${TORQUE_APP_GAME_DIRECTORY}/runTests.${TORQUE_SCRIPT_EXTENSION}")
|
||||
endif()
|
||||
|
||||
set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_MAC_SOURCES} ${MACOSX_RESOURCES})
|
||||
|
||||
source_group("Resources" FILES ${MACOSX_RESOURCES})
|
||||
|
|
@ -426,7 +412,7 @@ if (NOT TORQUE_NET_CURL)
|
|||
endif()
|
||||
|
||||
################# Executable Generation ###################
|
||||
if (TORQUE_DYNAMIC_LIBRARY AND NOT TORQUE_TESTING)
|
||||
if (TORQUE_DYNAMIC_LIBRARY)
|
||||
set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} TORQUE_SHARED)
|
||||
|
||||
# Build the main engine library
|
||||
|
|
@ -438,10 +424,8 @@ if (TORQUE_DYNAMIC_LIBRARY AND NOT TORQUE_TESTING)
|
|||
set(TORQUE_SOURCE_FILES "main/main.cpp")
|
||||
set(TORQUE_LINK_LIBRARIES TorqueEngine)
|
||||
else()
|
||||
if(NOT TORQUE_TESTING)
|
||||
set(TORQUE_SOURCE_FILES "main/main.cpp" ${TORQUE_SOURCE_FILES})
|
||||
endif()
|
||||
endif (TORQUE_DYNAMIC_LIBRARY AND NOT TORQUE_TESTING)
|
||||
set(TORQUE_SOURCE_FILES "main/main.cpp" ${TORQUE_SOURCE_FILES})
|
||||
endif (TORQUE_DYNAMIC_LIBRARY)
|
||||
|
||||
if (APPLE)
|
||||
add_executable(${TORQUE_APP_NAME} MACOSX_BUNDLE
|
||||
|
|
@ -486,9 +470,9 @@ elseif (WIN32)
|
|||
|
||||
# NOTE: On Windows, /Zc:wchar_t- is necessary otherwise you get unicode errors
|
||||
set_target_properties(${TORQUE_APP_NAME} PROPERTIES COMPILE_FLAGS "${TORQUE_CXX_FLAGS}")
|
||||
if (TORQUE_DYNAMIC_LIBRARY AND NOT TORQUE_TESTING)
|
||||
if (TORQUE_DYNAMIC_LIBRARY)
|
||||
set_target_properties(TorqueEngine PROPERTIES COMPILE_FLAGS "${TORQUE_CXX_FLAGS_COMMON_DEFAULT}")
|
||||
endif (TORQUE_DYNAMIC_LIBRARY AND NOT TORQUE_TESTING)
|
||||
endif (TORQUE_DYNAMIC_LIBRARY)
|
||||
else()
|
||||
add_executable(${TORQUE_APP_NAME} ${TORQUE_SOURCE_FILES})
|
||||
|
||||
|
|
@ -539,6 +523,13 @@ if(IS_ARM)
|
|||
add_math_backend(neon MATH_SIMD_NEON)
|
||||
endif()
|
||||
|
||||
foreach(MATH_BACKEND ${TORQUE_MATH_BACKENDS})
|
||||
target_sources(${TORQUE_APP_NAME}
|
||||
PRIVATE
|
||||
$<TARGET_OBJECTS:${MATH_BACKEND}>
|
||||
)
|
||||
endforeach()
|
||||
|
||||
if(MSVC)
|
||||
# Match projectGenerator naming for executables
|
||||
set(OUTPUT_CONFIG DEBUG MINSIZEREL RELWITHDEBINFO)
|
||||
|
|
@ -547,10 +538,10 @@ if(MSVC)
|
|||
list(GET OUTPUT_CONFIG ${INDEX} CONF)
|
||||
list(GET OUTPUT_SUFFIX ${INDEX} SUFFIX)
|
||||
set_property(TARGET ${TORQUE_APP_NAME} PROPERTY OUTPUT_NAME_${CONF} ${TORQUE_APP_NAME}_${SUFFIX})
|
||||
if (TORQUE_DYNAMIC_LIBRARY AND NOT TORQUE_TESTING)
|
||||
if (TORQUE_DYNAMIC_LIBRARY)
|
||||
set_property(TARGET TorqueEngine PROPERTY ${CONF}_POSTFIX "_${SUFFIX}")
|
||||
set_property(TARGET TorqueEngine PROPERTY ${CONF}_OUTPUT_NAME ${TORQUE_APP_NAME})
|
||||
endif (TORQUE_DYNAMIC_LIBRARY AND NOT TORQUE_TESTING)
|
||||
endif (TORQUE_DYNAMIC_LIBRARY)
|
||||
endforeach()
|
||||
# Set Visual Studio startup project
|
||||
set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${TORQUE_APP_NAME})
|
||||
|
|
@ -591,14 +582,6 @@ if (TORQUE_TARGET_PROPERTIES)
|
|||
endif (TORQUE_TARGET_PROPERTIES)
|
||||
target_include_directories(${TORQUE_APP_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp" ${TORQUE_INCLUDE_DIRECTORIES})
|
||||
|
||||
if(TORQUE_TESTING)
|
||||
if(WIN32)
|
||||
target_link_options(${TORQUE_APP_NAME} PRIVATE "/SUBSYSTEM:CONSOLE")
|
||||
set_target_properties(gtest PROPERTIES COMPILE_FLAGS "/Zc:wchar_t-")
|
||||
set_target_properties(gmock PROPERTIES COMPILE_FLAGS "/Zc:wchar_t-")
|
||||
endif()
|
||||
endif(TORQUE_TESTING)
|
||||
|
||||
append_defs()
|
||||
|
||||
# Process library binaries - these are coming from modules that are providing links to external, precompiled code that should be included
|
||||
|
|
@ -645,3 +628,94 @@ if (UNIX)
|
|||
endif()
|
||||
endforeach()
|
||||
endif (UNIX)
|
||||
|
||||
if(TORQUE_TESTING)
|
||||
|
||||
enable_testing()
|
||||
|
||||
# Start with the same sources as the main application
|
||||
set(TORQUE_TEST_SOURCES ${TORQUE_SOURCE_FILES})
|
||||
|
||||
# Add test sources
|
||||
file(GLOB_RECURSE TORQUE_TEST_FILES
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/testing/*.cpp"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/testing/*.h"
|
||||
)
|
||||
|
||||
list(APPEND TORQUE_TEST_SOURCES ${TORQUE_TEST_FILES})
|
||||
|
||||
list(FILTER TORQUE_TEST_SOURCES EXCLUDE REGEX "main/main\\.cpp$")
|
||||
|
||||
add_executable(${TORQUE_APP_NAME}_unittests
|
||||
${TORQUE_TEST_SOURCES}
|
||||
)
|
||||
|
||||
foreach(MATH_BACKEND ${TORQUE_MATH_BACKENDS})
|
||||
target_sources(${TORQUE_APP_NAME}_unittests
|
||||
PRIVATE
|
||||
$<TARGET_OBJECTS:${MATH_BACKEND}>
|
||||
)
|
||||
endforeach()
|
||||
|
||||
target_include_directories(${TORQUE_APP_NAME}_unittests
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
"${CMAKE_BINARY_DIR}/temp"
|
||||
${TORQUE_INCLUDE_DIRECTORIES}
|
||||
)
|
||||
|
||||
target_compile_definitions(${TORQUE_APP_NAME}_unittests
|
||||
PUBLIC
|
||||
${TORQUE_COMPILE_DEFINITIONS}
|
||||
TORQUE_TESTS_ENABLED
|
||||
"_VARIADIC_MAX=10"
|
||||
TORQUE_SHARED
|
||||
SDL_MAIN_HANDLED
|
||||
)
|
||||
|
||||
target_link_libraries(${TORQUE_APP_NAME}_unittests
|
||||
PRIVATE
|
||||
${TORQUE_LINK_LIBRARIES}
|
||||
${TORQUE_LINK_THIRDPARTY}
|
||||
gtest
|
||||
gmock
|
||||
)
|
||||
|
||||
target_link_options(${TORQUE_APP_NAME}_unittests
|
||||
PUBLIC
|
||||
${TORQUE_LINK_OPTIONS}
|
||||
)
|
||||
|
||||
if(APPLE)
|
||||
target_link_libraries(${TORQUE_APP_NAME}_unittests
|
||||
PRIVATE
|
||||
${TORQUE_LINK_FRAMEWORKS}
|
||||
)
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
target_link_libraries(${TORQUE_APP_NAME}_unittests
|
||||
PRIVATE
|
||||
${TORQUE_LINK_WINDOWS}
|
||||
)
|
||||
set_target_properties(${TORQUE_APP_NAME}_unittests
|
||||
PROPERTIES COMPILE_FLAGS
|
||||
"${TORQUE_CXX_FLAGS}"
|
||||
)
|
||||
|
||||
target_link_options(${TORQUE_APP_NAME}_unittests PRIVATE "/SUBSYSTEM:CONSOLE")
|
||||
set_target_properties(gtest PROPERTIES COMPILE_FLAGS "/Zc:wchar_t-")
|
||||
set_target_properties(gmock PROPERTIES COMPILE_FLAGS "/Zc:wchar_t-")
|
||||
endif()
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
target_link_libraries(${TORQUE_APP_NAME}_unittests
|
||||
PRIVATE
|
||||
${TORQUE_LINK_LINUX}
|
||||
)
|
||||
endif()
|
||||
|
||||
include(GoogleTest)
|
||||
gtest_discover_tests(${TORQUE_APP_NAME}_unittests)
|
||||
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@
|
|||
// SPDX-License-Identifier: MIT
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#ifdef TORQUE_TESTS_ENABLED
|
||||
#include "testing/unitTesting.h"
|
||||
#include "core/dataChunker.h"
|
||||
|
||||
|
|
@ -343,5 +342,3 @@ TEST(ThreeTieredChunkerTest,ThreeTieredChunker_Should_Function_Correctly)
|
|||
EXPECT_TRUE(threeChunker.getT3Chunker().getFreeListHead().isEmpty());
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@
|
|||
// SPDX-License-Identifier: MIT
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#ifdef TORQUE_TESTS_ENABLED
|
||||
#include "testing/unitTesting.h"
|
||||
#include "core/frameAllocator.h"
|
||||
|
||||
|
|
@ -192,4 +191,3 @@ TEST(FrameTempTest, FrameTempShould_Function_Correctly)
|
|||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,33 +1,132 @@
|
|||
#include <gtest/gtest.h>
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "gui/editor/guiInspector.h"
|
||||
#include "gui/editor/inspector/group.h"
|
||||
#include "gui/editor/inspector/field.h"
|
||||
#include "console/script.h"
|
||||
#include "T3D/fx/particle.h"
|
||||
#include "console/simDatablock.h"
|
||||
|
||||
TEST(InspectorFieldTest, SetData_Should_Update_The_Field)
|
||||
class InspectorTestData : public SimDataBlock
|
||||
{
|
||||
GuiInspector* inspector = new GuiInspector();
|
||||
ASSERT_TRUE(inspector->registerObject());
|
||||
typedef SimDataBlock Parent;
|
||||
|
||||
ParticleData* exampleObj = new ParticleData();
|
||||
ASSERT_TRUE(exampleObj->registerObject());
|
||||
// Add it to inspector so inspector field can find it
|
||||
inspector->addInspectObject(exampleObj);
|
||||
public:
|
||||
S32 testInt = 0;
|
||||
F32 testFloat = 0.f;
|
||||
bool testBool = false;
|
||||
StringTableEntry testString;
|
||||
|
||||
AbstractClassRep::Field* field = const_cast<AbstractClassRep::Field*>(exampleObj->findField(StringTable->insert("lifetimeMS")));
|
||||
DECLARE_CONOBJECT(InspectorTestData);
|
||||
|
||||
GuiInspectorGroup* group = new GuiInspectorGroup("testing", NULL);
|
||||
ASSERT_TRUE(group->registerObject());
|
||||
static void initPersistFields()
|
||||
{
|
||||
addField("testInt", TypeS32, Offset(testInt, InspectorTestData));
|
||||
addField("testFloat", TypeF32, Offset(testFloat, InspectorTestData));
|
||||
addField("testBool", TypeBool, Offset(testBool, InspectorTestData));
|
||||
addField("testString", TypeString, Offset(testString, InspectorTestData));
|
||||
|
||||
GuiInspectorField* inspectorField = new GuiInspectorField(inspector, group, field);
|
||||
ASSERT_TRUE(inspectorField->registerObject());
|
||||
Parent::initPersistFields();
|
||||
}
|
||||
};
|
||||
|
||||
inspectorField->setData("12345");
|
||||
EXPECT_EQ(exampleObj->lifetimeMS, 12345);
|
||||
IMPLEMENT_CO_DATABLOCK_V1(InspectorTestData);
|
||||
|
||||
// Cleanup
|
||||
inspectorField->deleteObject();
|
||||
group->deleteObject();
|
||||
inspector->deleteObject();
|
||||
exampleObj->deleteObject();
|
||||
class GuiInspectorFieldFixture : public ::testing::Test
|
||||
{
|
||||
protected:
|
||||
GuiInspector* inspector{};
|
||||
GuiInspectorGroup* group{};
|
||||
|
||||
void SetUp() override
|
||||
{
|
||||
inspector = new GuiInspector();
|
||||
ASSERT_TRUE(inspector->registerObject());
|
||||
|
||||
group = new GuiInspectorGroup("testing", nullptr);
|
||||
ASSERT_TRUE(group->registerObject());
|
||||
}
|
||||
|
||||
void TearDown() override
|
||||
{
|
||||
group->deleteObject();
|
||||
inspector->deleteObject();
|
||||
}
|
||||
|
||||
GuiInspectorField* createField(
|
||||
SimObject* object,
|
||||
const char* fieldName)
|
||||
{
|
||||
inspector->addInspectObject(object);
|
||||
|
||||
AbstractClassRep::Field* field =
|
||||
const_cast<AbstractClassRep::Field*>(
|
||||
object->findField(StringTable->insert(fieldName)));
|
||||
|
||||
EXPECT_NE(field, nullptr);
|
||||
|
||||
GuiInspectorField* inspectorField = new GuiInspectorField(inspector, group, field);
|
||||
EXPECT_TRUE(inspectorField->registerObject());
|
||||
|
||||
return inspectorField;
|
||||
}
|
||||
};
|
||||
|
||||
TEST_F(GuiInspectorFieldFixture, SetData_IntField)
|
||||
{
|
||||
InspectorTestData* object = new InspectorTestData();
|
||||
ASSERT_TRUE(object->registerObject());
|
||||
|
||||
GuiInspectorField* field = createField(object, "testInt");
|
||||
|
||||
field->setData("12345");
|
||||
|
||||
EXPECT_EQ(object->testInt, 12345);
|
||||
|
||||
field->deleteObject();
|
||||
object->deleteObject();
|
||||
}
|
||||
|
||||
TEST_F(GuiInspectorFieldFixture, SetData_FloatField)
|
||||
{
|
||||
InspectorTestData* object = new InspectorTestData();
|
||||
ASSERT_TRUE(object->registerObject());
|
||||
|
||||
GuiInspectorField* field = createField(object, "testFloat");
|
||||
|
||||
field->setData("123.5");
|
||||
|
||||
EXPECT_FLOAT_EQ(object->testFloat, 123.5f);
|
||||
|
||||
field->deleteObject();
|
||||
object->deleteObject();
|
||||
}
|
||||
|
||||
TEST_F(GuiInspectorFieldFixture, SetData_BoolField)
|
||||
{
|
||||
InspectorTestData* object = new InspectorTestData();
|
||||
ASSERT_TRUE(object->registerObject());
|
||||
|
||||
GuiInspectorField* field = createField(object, "testBool");
|
||||
|
||||
field->setData("1");
|
||||
|
||||
EXPECT_TRUE(object->testBool);
|
||||
|
||||
field->deleteObject();
|
||||
object->deleteObject();
|
||||
}
|
||||
|
||||
TEST_F(GuiInspectorFieldFixture, SetData_StringField)
|
||||
{
|
||||
InspectorTestData* object = new InspectorTestData();
|
||||
ASSERT_TRUE(object->registerObject());
|
||||
|
||||
GuiInspectorField* field = createField(object, "testString");
|
||||
|
||||
field->setData("Hello World");
|
||||
|
||||
EXPECT_STREQ(object->testString, "Hello World");
|
||||
|
||||
field->deleteObject();
|
||||
object->deleteObject();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@
|
|||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#ifdef TORQUE_TESTS_ENABLED
|
||||
#include "testing/unitTesting.h"
|
||||
#include "platform/threads/mutex.h"
|
||||
#include "platform/threads/thread.h"
|
||||
|
|
@ -66,5 +65,3 @@ TEST(Mutex, BasicSynchronization)
|
|||
// Kill mutex2, which was never touched.
|
||||
Mutex::destroyMutex(mutex2);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
@ -99,10 +99,6 @@ set(TORQUE_COMPILE_DEFINITIONS ICE_NO_DLL PCRE_STATIC TORQUE_ADVANCED_LIGHTING T
|
|||
# All link libraries. Modules should append to this the path to specify additional link libraries (.a, .lib, .dylib, .so)
|
||||
set(TORQUE_LINK_LIBRARIES png_static tinyxml2 collada squish opcode assimp SDL2 glad pcre convexMath zlib)
|
||||
|
||||
if(TORQUE_TESTING)
|
||||
set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} gtest gmock)
|
||||
endif()
|
||||
|
||||
if(NOT WIN32)
|
||||
set(WIN32 OFF CACHE BOOL "" FORCE)
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -201,6 +201,7 @@ function(add_math_backend name compile_defs)
|
|||
endif()
|
||||
|
||||
# Inject objects into engine
|
||||
target_sources(${TORQUE_APP_NAME} PRIVATE $<TARGET_OBJECTS:math_${name}>)
|
||||
list(APPEND TORQUE_MATH_BACKENDS math_${name})
|
||||
set(TORQUE_MATH_BACKENDS ${TORQUE_MATH_BACKENDS} PARENT_SCOPE)
|
||||
set_target_properties(math_${name} PROPERTIES FOLDER "Libraries/Math")
|
||||
endfunction()
|
||||
Loading…
Add table
Add a link
Reference in a new issue