Better CMake organization and unit test cleanups
* created a static library containing most source modules to avoid compiling source modules twice in code and unit tests * moved profile_test to main unit tests executable * removed image_test and edit_test as not really usefuldev-mp
parent
4bdfa0aa4e
commit
74312b0405
|
@ -294,43 +294,6 @@ endif()
|
||||||
# Targets
|
# Targets
|
||||||
##
|
##
|
||||||
|
|
||||||
if(TESTS)
|
|
||||||
# Google Test library
|
|
||||||
find_path(GTEST_SRC_DIR NAMES src/gtest.cc src/gtest-all.cc PATHS /usr/src PATH_SUFFIXES gtest)
|
|
||||||
find_path(GTEST_INCLUDE_DIR gtest/gtest.h PATHS /usr/include)
|
|
||||||
if(NOT(FORCE_BUNDLED_GTEST) AND GTEST_SRC_DIR AND GTEST_INCLUDE_DIR)
|
|
||||||
message(STATUS "Using system gtest library in ${GTEST_SRC_DIR}")
|
|
||||||
else()
|
|
||||||
message(STATUS "Using bundled gtest library")
|
|
||||||
set(GTEST_SRC_DIR ${colobot_SOURCE_DIR}/lib/gtest)
|
|
||||||
set(GTEST_INCLUDE_DIR ${colobot_SOURCE_DIR}/lib/gtest/include)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_subdirectory(${GTEST_SRC_DIR} lib/gtest)
|
|
||||||
|
|
||||||
# Google Mock library
|
|
||||||
find_path(GMOCK_SRC_DIR NAMES src/gmock.cc src/gmock-all.cc PATHS /usr/src PATH_SUFFIXES gmock)
|
|
||||||
find_path(GMOCK_INCLUDE_DIR gmock/gmock.h PATHS /usr/include)
|
|
||||||
if(NOT(FORCE_BUNDLED_GMOCK) AND GMOCK_SRC_DIR AND GMOCK_INCLUDE_DIR)
|
|
||||||
message(STATUS "Using system gmock library in ${GMOCK_SRC_DIR}")
|
|
||||||
|
|
||||||
include_directories(${GMOCK_SRC_DIR})
|
|
||||||
# gmock-all.cc includes all other sources
|
|
||||||
add_library(gmock STATIC ${GMOCK_SRC_DIR}/src/gmock-all.cc)
|
|
||||||
else()
|
|
||||||
message(STATUS "Using bundled gmock library")
|
|
||||||
set(GMOCK_SRC_DIR ${colobot_SOURCE_DIR}/lib/gmock)
|
|
||||||
set(GMOCK_INCLUDE_DIR ${colobot_SOURCE_DIR}/lib/gmock/include)
|
|
||||||
add_subdirectory(${GMOCK_SRC_DIR} lib/gmock)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
# Tests targets
|
|
||||||
enable_testing()
|
|
||||||
add_subdirectory(test)
|
|
||||||
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Installation paths defined before compiling sources
|
# Installation paths defined before compiling sources
|
||||||
if(PLATFORM_WINDOWS)
|
if(PLATFORM_WINDOWS)
|
||||||
if(MXE)
|
if(MXE)
|
||||||
|
@ -370,6 +333,43 @@ if(DESKTOP)
|
||||||
add_subdirectory(desktop)
|
add_subdirectory(desktop)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(TESTS)
|
||||||
|
# Google Test library
|
||||||
|
find_path(GTEST_SRC_DIR NAMES src/gtest.cc src/gtest-all.cc PATHS /usr/src PATH_SUFFIXES gtest)
|
||||||
|
find_path(GTEST_INCLUDE_DIR gtest/gtest.h PATHS /usr/include)
|
||||||
|
if(NOT(FORCE_BUNDLED_GTEST) AND GTEST_SRC_DIR AND GTEST_INCLUDE_DIR)
|
||||||
|
message(STATUS "Using system gtest library in ${GTEST_SRC_DIR}")
|
||||||
|
else()
|
||||||
|
message(STATUS "Using bundled gtest library")
|
||||||
|
set(GTEST_SRC_DIR ${colobot_SOURCE_DIR}/lib/gtest)
|
||||||
|
set(GTEST_INCLUDE_DIR ${colobot_SOURCE_DIR}/lib/gtest/include)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_subdirectory(${GTEST_SRC_DIR} lib/gtest)
|
||||||
|
|
||||||
|
# Google Mock library
|
||||||
|
find_path(GMOCK_SRC_DIR NAMES src/gmock.cc src/gmock-all.cc PATHS /usr/src PATH_SUFFIXES gmock)
|
||||||
|
find_path(GMOCK_INCLUDE_DIR gmock/gmock.h PATHS /usr/include)
|
||||||
|
if(NOT(FORCE_BUNDLED_GMOCK) AND GMOCK_SRC_DIR AND GMOCK_INCLUDE_DIR)
|
||||||
|
message(STATUS "Using system gmock library in ${GMOCK_SRC_DIR}")
|
||||||
|
|
||||||
|
include_directories(${GMOCK_SRC_DIR})
|
||||||
|
# gmock-all.cc includes all other sources
|
||||||
|
add_library(gmock STATIC ${GMOCK_SRC_DIR}/src/gmock-all.cc)
|
||||||
|
else()
|
||||||
|
message(STATUS "Using bundled gmock library")
|
||||||
|
set(GMOCK_SRC_DIR ${colobot_SOURCE_DIR}/lib/gmock)
|
||||||
|
set(GMOCK_INCLUDE_DIR ${colobot_SOURCE_DIR}/lib/gmock/include)
|
||||||
|
add_subdirectory(${GMOCK_SRC_DIR} lib/gmock)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
# Tests targets
|
||||||
|
enable_testing()
|
||||||
|
add_subdirectory(test)
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
##
|
##
|
||||||
# Installation
|
# Installation
|
||||||
|
|
|
@ -59,178 +59,197 @@ if(PLATFORM_WINDOWS)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Source files
|
# Source files
|
||||||
set(SOURCES
|
set(BASE_SOURCES
|
||||||
app/app.cpp
|
app/app.cpp
|
||||||
app/gamedata.cpp
|
app/gamedata.cpp
|
||||||
app/main.cpp
|
app/pausemanager.cpp
|
||||||
app/pausemanager.cpp
|
app/system.cpp
|
||||||
app/system.cpp
|
app/${SYSTEM_CPP_MODULE}
|
||||||
app/${SYSTEM_CPP_MODULE}
|
app/system_other.cpp
|
||||||
app/system_other.cpp
|
common/event.cpp
|
||||||
common/event.cpp
|
common/image.cpp
|
||||||
common/image.cpp
|
common/iman.cpp
|
||||||
common/iman.cpp
|
common/logger.cpp
|
||||||
common/logger.cpp
|
common/misc.cpp
|
||||||
common/misc.cpp
|
common/profile.cpp
|
||||||
common/profile.cpp
|
common/restext.cpp
|
||||||
common/restext.cpp
|
common/stringutils.cpp
|
||||||
common/stringutils.cpp
|
graphics/core/color.cpp
|
||||||
graphics/core/color.cpp
|
graphics/engine/camera.cpp
|
||||||
graphics/engine/camera.cpp
|
graphics/engine/cloud.cpp
|
||||||
graphics/engine/cloud.cpp
|
graphics/engine/engine.cpp
|
||||||
graphics/engine/engine.cpp
|
graphics/engine/lightman.cpp
|
||||||
graphics/engine/lightman.cpp
|
graphics/engine/lightning.cpp
|
||||||
graphics/engine/lightning.cpp
|
graphics/engine/modelfile.cpp
|
||||||
graphics/engine/modelfile.cpp
|
graphics/engine/modelmanager.cpp
|
||||||
graphics/engine/modelmanager.cpp
|
graphics/engine/particle.cpp
|
||||||
graphics/engine/particle.cpp
|
graphics/engine/planet.cpp
|
||||||
graphics/engine/planet.cpp
|
graphics/engine/pyro.cpp
|
||||||
graphics/engine/pyro.cpp
|
graphics/engine/terrain.cpp
|
||||||
graphics/engine/terrain.cpp
|
graphics/engine/text.cpp
|
||||||
graphics/engine/text.cpp
|
graphics/engine/water.cpp
|
||||||
graphics/engine/water.cpp
|
graphics/opengl/gldevice.cpp
|
||||||
graphics/opengl/gldevice.cpp
|
object/auto/auto.cpp
|
||||||
object/auto/auto.cpp
|
object/auto/autobase.cpp
|
||||||
object/auto/autobase.cpp
|
object/auto/autoconvert.cpp
|
||||||
object/auto/autoconvert.cpp
|
object/auto/autoderrick.cpp
|
||||||
object/auto/autoderrick.cpp
|
object/auto/autodestroyer.cpp
|
||||||
object/auto/autodestroyer.cpp
|
object/auto/autoegg.cpp
|
||||||
object/auto/autoegg.cpp
|
object/auto/autoenergy.cpp
|
||||||
object/auto/autoenergy.cpp
|
object/auto/autofactory.cpp
|
||||||
object/auto/autofactory.cpp
|
object/auto/autoflag.cpp
|
||||||
object/auto/autoflag.cpp
|
object/auto/autohuston.cpp
|
||||||
object/auto/autohuston.cpp
|
object/auto/autoinfo.cpp
|
||||||
object/auto/autoinfo.cpp
|
object/auto/autojostle.cpp
|
||||||
object/auto/autojostle.cpp
|
object/auto/autokid.cpp
|
||||||
object/auto/autokid.cpp
|
object/auto/autolabo.cpp
|
||||||
object/auto/autolabo.cpp
|
object/auto/automush.cpp
|
||||||
object/auto/automush.cpp
|
object/auto/autonest.cpp
|
||||||
object/auto/autonest.cpp
|
object/auto/autonuclear.cpp
|
||||||
object/auto/autonuclear.cpp
|
object/auto/autopara.cpp
|
||||||
object/auto/autopara.cpp
|
object/auto/autoportico.cpp
|
||||||
object/auto/autoportico.cpp
|
object/auto/autoradar.cpp
|
||||||
object/auto/autoradar.cpp
|
object/auto/autorepair.cpp
|
||||||
object/auto/autorepair.cpp
|
object/auto/autoresearch.cpp
|
||||||
object/auto/autoresearch.cpp
|
object/auto/autoroot.cpp
|
||||||
object/auto/autoroot.cpp
|
object/auto/autosafe.cpp
|
||||||
object/auto/autosafe.cpp
|
object/auto/autostation.cpp
|
||||||
object/auto/autostation.cpp
|
object/auto/autotower.cpp
|
||||||
object/auto/autotower.cpp
|
object/brain.cpp
|
||||||
object/brain.cpp
|
object/mainmovie.cpp
|
||||||
object/mainmovie.cpp
|
object/motion/motion.cpp
|
||||||
object/motion/motion.cpp
|
object/motion/motionant.cpp
|
||||||
object/motion/motionant.cpp
|
object/motion/motionbee.cpp
|
||||||
object/motion/motionbee.cpp
|
object/motion/motiondummy.cpp
|
||||||
object/motion/motiondummy.cpp
|
object/motion/motionhuman.cpp
|
||||||
object/motion/motionhuman.cpp
|
object/motion/motionmother.cpp
|
||||||
object/motion/motionmother.cpp
|
object/motion/motionspider.cpp
|
||||||
object/motion/motionspider.cpp
|
object/motion/motiontoto.cpp
|
||||||
object/motion/motiontoto.cpp
|
object/motion/motionvehicle.cpp
|
||||||
object/motion/motionvehicle.cpp
|
object/motion/motionworm.cpp
|
||||||
object/motion/motionworm.cpp
|
object/object.cpp
|
||||||
object/object.cpp
|
object/robotmain.cpp
|
||||||
object/robotmain.cpp
|
object/objman.cpp
|
||||||
object/objman.cpp
|
object/task/task.cpp
|
||||||
object/task/task.cpp
|
object/task/taskadvance.cpp
|
||||||
object/task/taskadvance.cpp
|
object/task/taskbuild.cpp
|
||||||
object/task/taskbuild.cpp
|
object/task/taskfire.cpp
|
||||||
object/task/taskfire.cpp
|
object/task/taskfireant.cpp
|
||||||
object/task/taskfireant.cpp
|
object/task/taskflag.cpp
|
||||||
object/task/taskflag.cpp
|
object/task/taskgoto.cpp
|
||||||
object/task/taskgoto.cpp
|
object/task/taskgungoal.cpp
|
||||||
object/task/taskgungoal.cpp
|
object/task/taskinfo.cpp
|
||||||
object/task/taskinfo.cpp
|
object/task/taskmanager.cpp
|
||||||
object/task/taskmanager.cpp
|
object/task/taskmanip.cpp
|
||||||
object/task/taskmanip.cpp
|
object/task/taskpen.cpp
|
||||||
object/task/taskpen.cpp
|
object/task/taskrecover.cpp
|
||||||
object/task/taskrecover.cpp
|
object/task/taskreset.cpp
|
||||||
object/task/taskreset.cpp
|
object/task/tasksearch.cpp
|
||||||
object/task/tasksearch.cpp
|
object/task/taskshield.cpp
|
||||||
object/task/taskshield.cpp
|
object/task/taskspiderexplo.cpp
|
||||||
object/task/taskspiderexplo.cpp
|
object/task/tasktake.cpp
|
||||||
object/task/tasktake.cpp
|
object/task/taskterraform.cpp
|
||||||
object/task/taskterraform.cpp
|
object/task/taskturn.cpp
|
||||||
object/task/taskturn.cpp
|
object/task/taskwait.cpp
|
||||||
object/task/taskwait.cpp
|
physics/physics.cpp
|
||||||
physics/physics.cpp
|
script/cbottoken.cpp
|
||||||
script/cbottoken.cpp
|
script/cmdtoken.cpp
|
||||||
script/cmdtoken.cpp
|
script/script.cpp
|
||||||
script/script.cpp
|
sound/sound.cpp
|
||||||
sound/sound.cpp
|
ui/button.cpp
|
||||||
ui/button.cpp
|
ui/check.cpp
|
||||||
ui/check.cpp
|
ui/color.cpp
|
||||||
ui/color.cpp
|
ui/compass.cpp
|
||||||
ui/compass.cpp
|
ui/control.cpp
|
||||||
ui/control.cpp
|
ui/displayinfo.cpp
|
||||||
ui/displayinfo.cpp
|
ui/displaytext.cpp
|
||||||
ui/displaytext.cpp
|
ui/edit.cpp
|
||||||
ui/edit.cpp
|
ui/editvalue.cpp
|
||||||
ui/editvalue.cpp
|
ui/gauge.cpp
|
||||||
ui/gauge.cpp
|
ui/group.cpp
|
||||||
ui/group.cpp
|
ui/image.cpp
|
||||||
ui/image.cpp
|
ui/interface.cpp
|
||||||
ui/interface.cpp
|
ui/key.cpp
|
||||||
ui/key.cpp
|
ui/label.cpp
|
||||||
ui/label.cpp
|
ui/list.cpp
|
||||||
ui/list.cpp
|
ui/maindialog.cpp
|
||||||
ui/maindialog.cpp
|
ui/mainmap.cpp
|
||||||
ui/mainmap.cpp
|
ui/mainshort.cpp
|
||||||
ui/mainshort.cpp
|
ui/map.cpp
|
||||||
ui/map.cpp
|
ui/scroll.cpp
|
||||||
ui/scroll.cpp
|
ui/shortcut.cpp
|
||||||
ui/shortcut.cpp
|
ui/slider.cpp
|
||||||
ui/slider.cpp
|
ui/studio.cpp
|
||||||
ui/studio.cpp
|
ui/target.cpp
|
||||||
ui/target.cpp
|
ui/window.cpp
|
||||||
ui/window.cpp
|
${OPENAL_SRC}
|
||||||
${OPENAL_SRC}
|
${RES_FILES}
|
||||||
${RES_FILES}
|
)
|
||||||
|
|
||||||
|
set(MAIN_SOURCES
|
||||||
|
app/main.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Libraries
|
||||||
set(LIBS
|
set(LIBS
|
||||||
CBot
|
CBot
|
||||||
clipboard
|
clipboard
|
||||||
localename
|
localename
|
||||||
${SDL_LIBRARY}
|
${SDL_LIBRARY}
|
||||||
${SDLIMAGE_LIBRARY}
|
${SDLIMAGE_LIBRARY}
|
||||||
${SDLTTF_LIBRARY}
|
${SDLTTF_LIBRARY}
|
||||||
${OPENGL_LIBRARY}
|
${OPENGL_LIBRARY}
|
||||||
${PNG_LIBRARIES}
|
${PNG_LIBRARIES}
|
||||||
${GLEW_LIBRARY}
|
${GLEW_LIBRARY}
|
||||||
${Boost_LIBRARIES}
|
${Boost_LIBRARIES}
|
||||||
${LIBSNDFILE_LIBRARY}
|
${LIBSNDFILE_LIBRARY}
|
||||||
${OPTIONAL_LIBS}
|
${OPTIONAL_LIBS}
|
||||||
${PLATFORM_LIBS}
|
${PLATFORM_LIBS}
|
||||||
)
|
)
|
||||||
|
|
||||||
# Local
|
set(COLOBOT_LIBS ${LIBS} PARENT_SCOPE)
|
||||||
include_directories(
|
|
||||||
.
|
|
||||||
..
|
# Includes
|
||||||
${CMAKE_CURRENT_BINARY_DIR}
|
set(LOCAL_INCLUDES
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/..
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
# System
|
set(SYSTEM_INCLUDES
|
||||||
include_directories(
|
${SDL_INCLUDE_DIR}
|
||||||
SYSTEM
|
${SDLIMAGE_INCLUDE_DIR}
|
||||||
${SDL_INCLUDE_DIR}
|
${SDLTTF_INCLUDE_DIR}
|
||||||
${SDLIMAGE_INCLUDE_DIR}
|
${PNG_INCLUDE_DIRS}
|
||||||
${SDLTTF_INCLUDE_DIR}
|
${GLEW_INCLUDE_PATH}
|
||||||
${PNG_INCLUDE_DIRS}
|
${Boost_INCLUDE_DIRS}
|
||||||
${GLEW_INCLUDE_PATH}
|
${LIBSNDFILE_INCLUDE_DIR}
|
||||||
${Boost_INCLUDE_DIRS}
|
${LOCALENAME_INCLUDE_DIR}
|
||||||
${LIBSNDFILE_INCLUDE_DIR}
|
${OPTIONAL_INCLUDE_DIRS}
|
||||||
${LOCALENAME_INCLUDE_DIR}
|
${CLIPBOARD_INCLUDE_DIR}
|
||||||
${OPTIONAL_INCLUDE_DIRS}
|
|
||||||
${CLIPBOARD_INCLUDE_DIR}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/CBot)
|
set(COLOBOT_LOCAL_INCLUDES ${LOCAL_INCLUDES} PARENT_SCOPE)
|
||||||
|
set(COLOBOT_SYSTEM_INCLUDES ${SYSTEM_INCLUDES} PARENT_SCOPE)
|
||||||
|
|
||||||
add_executable(colobot ${SOURCES})
|
include_directories(${LOCAL_INCLUDES})
|
||||||
|
include_directories(SYSTEM ${SYSTEM_INCLUDES})
|
||||||
|
|
||||||
target_link_libraries(colobot ${LIBS})
|
|
||||||
|
# Link directories
|
||||||
|
link_directories(
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/CBot
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Targets
|
||||||
|
|
||||||
|
add_library(colobotbase STATIC ${BASE_SOURCES})
|
||||||
|
|
||||||
|
add_executable(colobot ${MAIN_SOURCES})
|
||||||
|
target_link_libraries(colobot colobotbase ${LIBS})
|
||||||
|
|
||||||
install(TARGETS colobot RUNTIME DESTINATION ${COLOBOT_INSTALL_BIN_DIR})
|
install(TARGETS colobot RUNTIME DESTINATION ${COLOBOT_INSTALL_BIN_DIR})
|
||||||
if(NOT CBOT_STATIC)
|
if(NOT CBOT_STATIC)
|
||||||
|
|
|
@ -31,8 +31,9 @@ template<> CProfile* CSingleton<CProfile>::m_instance = nullptr;
|
||||||
|
|
||||||
namespace bp = boost::property_tree;
|
namespace bp = boost::property_tree;
|
||||||
|
|
||||||
CProfile::CProfile() :
|
CProfile::CProfile()
|
||||||
m_profileNeedSave(false)
|
: m_profileNeedSave(false)
|
||||||
|
, m_useLocalDirectory(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,16 +43,21 @@ CProfile::~CProfile()
|
||||||
SaveCurrentDirectory();
|
SaveCurrentDirectory();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CProfile::SetUseLocalDirectory(bool useLocalDirectory)
|
||||||
|
{
|
||||||
|
m_useLocalDirectory = useLocalDirectory;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string CProfile::GetIniFileLocation()
|
||||||
|
{
|
||||||
|
return m_useLocalDirectory ? "colobot.ini" : GetSystemUtils()->GetProfileFileLocation();
|
||||||
|
}
|
||||||
|
|
||||||
bool CProfile::InitCurrentDirectory()
|
bool CProfile::InitCurrentDirectory()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
#if DEV_BUILD
|
bp::ini_parser::read_ini(GetIniFileLocation(), m_propertyTree);
|
||||||
bp::ini_parser::read_ini("colobot.ini", m_propertyTree);
|
|
||||||
#else
|
|
||||||
bp::ini_parser::read_ini(GetSystemUtils()->GetProfileFileLocation(), m_propertyTree);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
catch (std::exception & e)
|
catch (std::exception & e)
|
||||||
{
|
{
|
||||||
|
@ -67,11 +73,7 @@ bool CProfile::SaveCurrentDirectory()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
#if DEV_BUILD
|
bp::ini_parser::write_ini(GetIniFileLocation(), m_propertyTree);
|
||||||
bp::ini_parser::write_ini("colobot.ini", m_propertyTree);
|
|
||||||
#else
|
|
||||||
bp::ini_parser::write_ini(GetSystemUtils()->GetProfileFileLocation(), m_propertyTree);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
catch (std::exception & e)
|
catch (std::exception & e)
|
||||||
{
|
{
|
||||||
|
|
|
@ -45,6 +45,9 @@ public:
|
||||||
CProfile();
|
CProfile();
|
||||||
virtual ~CProfile();
|
virtual ~CProfile();
|
||||||
|
|
||||||
|
/** Set flag to force using ini file from local directory */
|
||||||
|
void SetUseLocalDirectory(bool useLocalDirectory);
|
||||||
|
|
||||||
/** Loads colobot.ini from current directory
|
/** Loads colobot.ini from current directory
|
||||||
* \return return true on success
|
* \return return true on success
|
||||||
*/
|
*/
|
||||||
|
@ -129,10 +132,14 @@ public:
|
||||||
*/
|
*/
|
||||||
bool CopyFileToTemp(std::string filename);
|
bool CopyFileToTemp(std::string filename);
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string GetIniFileLocation();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
boost::property_tree::ptree m_propertyTree;
|
boost::property_tree::ptree m_propertyTree;
|
||||||
bool m_profileNeedSave;
|
bool m_profileNeedSave;
|
||||||
std::string m_userDirectory;
|
std::string m_userDirectory;
|
||||||
|
bool m_useLocalDirectory;
|
||||||
};
|
};
|
||||||
|
|
||||||
//! Global function to get profile instance
|
//! Global function to get profile instance
|
||||||
|
|
|
@ -1,170 +1,3 @@
|
||||||
set(SRC_DIR ${colobot_SOURCE_DIR}/src)
|
|
||||||
|
|
||||||
# Additional libraries per platform
|
|
||||||
if(MXE) # MXE requires special treatment
|
|
||||||
set(PLATFORM_LIBS ${MXE_LIBS})
|
|
||||||
elseif(PLATFORM_WINDOWS)
|
|
||||||
# because it isn't included in standard linking libraries
|
|
||||||
set(PLATFORM_LIBS "-lintl")
|
|
||||||
elseif(PLATFORM_GNU)
|
|
||||||
set(PLATFORM_LIBS "-lX11")
|
|
||||||
elseif(PLATFORM_LINUX)
|
|
||||||
# for clock_gettime
|
|
||||||
set(PLATFORM_LIBS "-lrt -lX11")
|
|
||||||
elseif(PLATFORM_MACOSX)
|
|
||||||
find_library(LIBINTL_LIBRARY NAMES intl libintl )
|
|
||||||
set(PLATFORM_LIBS ${LIBINTL_LIBRARY} ${X11_X11_LIB})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
# Configure file
|
|
||||||
configure_file(${SRC_DIR}/common/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/common/config.h)
|
|
||||||
|
|
||||||
# Code sources
|
|
||||||
set(COLOBOT_SOURCES
|
|
||||||
${SRC_DIR}/app/app.cpp
|
|
||||||
${SRC_DIR}/app/gamedata.cpp
|
|
||||||
${SRC_DIR}/app/pausemanager.cpp
|
|
||||||
${SRC_DIR}/app/system.cpp
|
|
||||||
${SRC_DIR}/app/${SYSTEM_CPP_MODULE}
|
|
||||||
${SRC_DIR}/app/system_other.cpp
|
|
||||||
${SRC_DIR}/common/event.cpp
|
|
||||||
${SRC_DIR}/common/image.cpp
|
|
||||||
${SRC_DIR}/common/iman.cpp
|
|
||||||
${SRC_DIR}/common/logger.cpp
|
|
||||||
${SRC_DIR}/common/misc.cpp
|
|
||||||
${SRC_DIR}/common/profile.cpp
|
|
||||||
${SRC_DIR}/common/restext.cpp
|
|
||||||
${SRC_DIR}/common/stringutils.cpp
|
|
||||||
${SRC_DIR}/graphics/core/color.cpp
|
|
||||||
${SRC_DIR}/graphics/engine/camera.cpp
|
|
||||||
${SRC_DIR}/graphics/engine/cloud.cpp
|
|
||||||
${SRC_DIR}/graphics/engine/engine.cpp
|
|
||||||
${SRC_DIR}/graphics/engine/lightman.cpp
|
|
||||||
${SRC_DIR}/graphics/engine/lightning.cpp
|
|
||||||
${SRC_DIR}/graphics/engine/modelfile.cpp
|
|
||||||
${SRC_DIR}/graphics/engine/modelmanager.cpp
|
|
||||||
${SRC_DIR}/graphics/engine/particle.cpp
|
|
||||||
${SRC_DIR}/graphics/engine/planet.cpp
|
|
||||||
${SRC_DIR}/graphics/engine/pyro.cpp
|
|
||||||
${SRC_DIR}/graphics/engine/terrain.cpp
|
|
||||||
${SRC_DIR}/graphics/engine/text.cpp
|
|
||||||
${SRC_DIR}/graphics/engine/water.cpp
|
|
||||||
${SRC_DIR}/graphics/opengl/gldevice.cpp
|
|
||||||
${SRC_DIR}/object/auto/auto.cpp
|
|
||||||
${SRC_DIR}/object/auto/autobase.cpp
|
|
||||||
${SRC_DIR}/object/auto/autoconvert.cpp
|
|
||||||
${SRC_DIR}/object/auto/autoderrick.cpp
|
|
||||||
${SRC_DIR}/object/auto/autodestroyer.cpp
|
|
||||||
${SRC_DIR}/object/auto/autoegg.cpp
|
|
||||||
${SRC_DIR}/object/auto/autoenergy.cpp
|
|
||||||
${SRC_DIR}/object/auto/autofactory.cpp
|
|
||||||
${SRC_DIR}/object/auto/autoflag.cpp
|
|
||||||
${SRC_DIR}/object/auto/autohuston.cpp
|
|
||||||
${SRC_DIR}/object/auto/autoinfo.cpp
|
|
||||||
${SRC_DIR}/object/auto/autojostle.cpp
|
|
||||||
${SRC_DIR}/object/auto/autokid.cpp
|
|
||||||
${SRC_DIR}/object/auto/autolabo.cpp
|
|
||||||
${SRC_DIR}/object/auto/automush.cpp
|
|
||||||
${SRC_DIR}/object/auto/autonest.cpp
|
|
||||||
${SRC_DIR}/object/auto/autonuclear.cpp
|
|
||||||
${SRC_DIR}/object/auto/autopara.cpp
|
|
||||||
${SRC_DIR}/object/auto/autoportico.cpp
|
|
||||||
${SRC_DIR}/object/auto/autoradar.cpp
|
|
||||||
${SRC_DIR}/object/auto/autorepair.cpp
|
|
||||||
${SRC_DIR}/object/auto/autoresearch.cpp
|
|
||||||
${SRC_DIR}/object/auto/autoroot.cpp
|
|
||||||
${SRC_DIR}/object/auto/autosafe.cpp
|
|
||||||
${SRC_DIR}/object/auto/autostation.cpp
|
|
||||||
${SRC_DIR}/object/auto/autotower.cpp
|
|
||||||
${SRC_DIR}/object/brain.cpp
|
|
||||||
${SRC_DIR}/object/mainmovie.cpp
|
|
||||||
${SRC_DIR}/object/motion/motion.cpp
|
|
||||||
${SRC_DIR}/object/motion/motionant.cpp
|
|
||||||
${SRC_DIR}/object/motion/motionbee.cpp
|
|
||||||
${SRC_DIR}/object/motion/motionhuman.cpp
|
|
||||||
${SRC_DIR}/object/motion/motionmother.cpp
|
|
||||||
${SRC_DIR}/object/motion/motionspider.cpp
|
|
||||||
${SRC_DIR}/object/motion/motiontoto.cpp
|
|
||||||
${SRC_DIR}/object/motion/motionvehicle.cpp
|
|
||||||
${SRC_DIR}/object/motion/motionworm.cpp
|
|
||||||
${SRC_DIR}/object/motion/motiondummy.cpp
|
|
||||||
${SRC_DIR}/object/object.cpp
|
|
||||||
${SRC_DIR}/object/objman.cpp
|
|
||||||
${SRC_DIR}/object/robotmain.cpp
|
|
||||||
${SRC_DIR}/object/task/task.cpp
|
|
||||||
${SRC_DIR}/object/task/taskadvance.cpp
|
|
||||||
${SRC_DIR}/object/task/taskbuild.cpp
|
|
||||||
${SRC_DIR}/object/task/taskfire.cpp
|
|
||||||
${SRC_DIR}/object/task/taskfireant.cpp
|
|
||||||
${SRC_DIR}/object/task/taskflag.cpp
|
|
||||||
${SRC_DIR}/object/task/taskgoto.cpp
|
|
||||||
${SRC_DIR}/object/task/taskgungoal.cpp
|
|
||||||
${SRC_DIR}/object/task/taskinfo.cpp
|
|
||||||
${SRC_DIR}/object/task/taskmanager.cpp
|
|
||||||
${SRC_DIR}/object/task/taskmanip.cpp
|
|
||||||
${SRC_DIR}/object/task/taskpen.cpp
|
|
||||||
${SRC_DIR}/object/task/taskrecover.cpp
|
|
||||||
${SRC_DIR}/object/task/taskreset.cpp
|
|
||||||
${SRC_DIR}/object/task/tasksearch.cpp
|
|
||||||
${SRC_DIR}/object/task/taskshield.cpp
|
|
||||||
${SRC_DIR}/object/task/taskspiderexplo.cpp
|
|
||||||
${SRC_DIR}/object/task/tasktake.cpp
|
|
||||||
${SRC_DIR}/object/task/taskterraform.cpp
|
|
||||||
${SRC_DIR}/object/task/taskturn.cpp
|
|
||||||
${SRC_DIR}/object/task/taskwait.cpp
|
|
||||||
${SRC_DIR}/physics/physics.cpp
|
|
||||||
${SRC_DIR}/script/cbottoken.cpp
|
|
||||||
${SRC_DIR}/script/cmdtoken.cpp
|
|
||||||
${SRC_DIR}/script/script.cpp
|
|
||||||
${SRC_DIR}/sound/sound.cpp
|
|
||||||
${SRC_DIR}/ui/button.cpp
|
|
||||||
${SRC_DIR}/ui/check.cpp
|
|
||||||
${SRC_DIR}/ui/color.cpp
|
|
||||||
${SRC_DIR}/ui/compass.cpp
|
|
||||||
${SRC_DIR}/ui/control.cpp
|
|
||||||
${SRC_DIR}/ui/displayinfo.cpp
|
|
||||||
${SRC_DIR}/ui/displaytext.cpp
|
|
||||||
${SRC_DIR}/ui/edit.cpp
|
|
||||||
${SRC_DIR}/ui/editvalue.cpp
|
|
||||||
${SRC_DIR}/ui/gauge.cpp
|
|
||||||
${SRC_DIR}/ui/group.cpp
|
|
||||||
${SRC_DIR}/ui/image.cpp
|
|
||||||
${SRC_DIR}/ui/interface.cpp
|
|
||||||
${SRC_DIR}/ui/key.cpp
|
|
||||||
${SRC_DIR}/ui/label.cpp
|
|
||||||
${SRC_DIR}/ui/list.cpp
|
|
||||||
${SRC_DIR}/ui/maindialog.cpp
|
|
||||||
${SRC_DIR}/ui/mainmap.cpp
|
|
||||||
${SRC_DIR}/ui/mainshort.cpp
|
|
||||||
${SRC_DIR}/ui/map.cpp
|
|
||||||
${SRC_DIR}/ui/scroll.cpp
|
|
||||||
${SRC_DIR}/ui/shortcut.cpp
|
|
||||||
${SRC_DIR}/ui/slider.cpp
|
|
||||||
${SRC_DIR}/ui/studio.cpp
|
|
||||||
${SRC_DIR}/ui/target.cpp
|
|
||||||
${SRC_DIR}/ui/window.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
set(OPENAL_SOURCES "")
|
|
||||||
|
|
||||||
if(OPENAL_SOUND)
|
|
||||||
set(OPENAL_SOURCES
|
|
||||||
${SRC_DIR}/sound/oalsound/alsound.cpp
|
|
||||||
${SRC_DIR}/sound/oalsound/buffer.cpp
|
|
||||||
${SRC_DIR}/sound/oalsound/channel.cpp
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Optional libraries
|
|
||||||
set(OPTIONAL_LIBS "")
|
|
||||||
|
|
||||||
if(OPENAL_SOUND)
|
|
||||||
set(OPTIONAL_LIBS ${OPENAL_LIBRARY})
|
|
||||||
set(OPTIONAL_INCLUDES ${OPENAL_INCLUDE_DIR})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
# Platform-dependent tests
|
# Platform-dependent tests
|
||||||
if(PLATFORM_WINDOWS)
|
if(PLATFORM_WINDOWS)
|
||||||
set(PLATFORM_TESTS app/system_windows_test.cpp)
|
set(PLATFORM_TESTS app/system_windows_test.cpp)
|
||||||
|
@ -172,67 +5,58 @@ elseif(PLATFORM_LINUX)
|
||||||
set(PLATFORM_TESTS app/system_linux_test.cpp)
|
set(PLATFORM_TESTS app/system_linux_test.cpp)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Tests
|
# Sources
|
||||||
set(UT_SOURCES
|
set(UT_SOURCES
|
||||||
main.cpp
|
main.cpp
|
||||||
app/app_test.cpp
|
app/app_test.cpp
|
||||||
graphics/engine/lightman_test.cpp
|
common/profile_test.cpp
|
||||||
math/func_test.cpp
|
graphics/engine/lightman_test.cpp
|
||||||
math/geometry_test.cpp
|
math/func_test.cpp
|
||||||
math/matrix_test.cpp
|
math/geometry_test.cpp
|
||||||
math/vector_test.cpp
|
math/matrix_test.cpp
|
||||||
${PLATFORM_TESTS}
|
math/vector_test.cpp
|
||||||
|
${PLATFORM_TESTS}
|
||||||
)
|
)
|
||||||
|
|
||||||
# Local
|
# Includes
|
||||||
include_directories(
|
include_directories(
|
||||||
.
|
common
|
||||||
common
|
math
|
||||||
math
|
${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${SRC_DIR}
|
${CMAKE_CURRENT_BINARY_DIR}
|
||||||
${CMAKE_CURRENT_BINARY_DIR}
|
${COLOBOT_LOCAL_INCLUDES}
|
||||||
)
|
)
|
||||||
|
|
||||||
# System
|
|
||||||
include_directories(
|
include_directories(
|
||||||
SYSTEM
|
SYSTEM
|
||||||
${GTEST_INCLUDE_DIR}
|
${GTEST_INCLUDE_DIR}
|
||||||
${GMOCK_INCLUDE_DIR}
|
${GMOCK_INCLUDE_DIR}
|
||||||
${SDL_INCLUDE_DIR}
|
${COLOBOT_SYSTEM_INCLUDES}
|
||||||
${SDLIMAGE_INCLUDE_DIR}
|
|
||||||
${SDLTTF_INCLUDE_DIR}
|
|
||||||
${PNG_INCLUDE_DIRS}
|
|
||||||
${GLEW_INCLUDE_PATH}
|
|
||||||
${Boost_INCLUDE_DIRS}
|
|
||||||
${OPTIONAL_INCLUDE_DIRS}
|
|
||||||
${LIBSNDFILE_INCLUDE_DIR}
|
|
||||||
${CLIPBOARD_INCLUDE_DIR}
|
|
||||||
${LOCALENAME_INCLUDE_DIR}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Libraries
|
||||||
set(LIBS
|
set(LIBS
|
||||||
gtest
|
gtest
|
||||||
gmock
|
gmock
|
||||||
CBot
|
colobotbase
|
||||||
clipboard
|
${COLOBOT_LIBS}
|
||||||
localename
|
|
||||||
${SDL_LIBRARY}
|
|
||||||
${SDLIMAGE_LIBRARY}
|
|
||||||
${SDLTTF_LIBRARY}
|
|
||||||
${OPENGL_LIBRARY}
|
|
||||||
${PNG_LIBRARIES}
|
|
||||||
${GLEW_LIBRARY}
|
|
||||||
${Boost_LIBRARIES}
|
|
||||||
${OPTIONAL_LIBS}
|
|
||||||
${PLATFORM_LIBS}
|
|
||||||
${LIBSNDFILE_LIBRARY}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
add_executable(colobot_ut ${COLOBOT_SOURCES} ${UT_SOURCES} ${OPENAL_SOURCES})
|
# Test files
|
||||||
|
|
||||||
|
set(TEST_FILES
|
||||||
|
common/colobot.ini
|
||||||
|
)
|
||||||
|
|
||||||
|
file(COPY ${TEST_FILES} DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
|
||||||
|
|
||||||
|
# Targets
|
||||||
|
|
||||||
|
add_executable(colobot_ut ${UT_SOURCES})
|
||||||
target_link_libraries(colobot_ut ${LIBS})
|
target_link_libraries(colobot_ut ${LIBS})
|
||||||
|
|
||||||
add_test(colobot_ut ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/colobot_ut)
|
add_test(
|
||||||
|
NAME colobot_ut
|
||||||
# TODO: change the unit cases to independent automated tests to be included in colobot_ut
|
COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/colobot_ut
|
||||||
add_subdirectory(common)
|
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||||
add_subdirectory(ui)
|
)
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
set(SRC_DIR ${colobot_SOURCE_DIR}/src)
|
|
||||||
|
|
||||||
include_directories(
|
|
||||||
${SRC_DIR}
|
|
||||||
${GTEST_INCLUDE_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
add_executable(image_test ${SRC_DIR}/common/image.cpp image_test.cpp)
|
|
||||||
target_link_libraries(image_test ${SDL_LIBRARY} ${SDLIMAGE_LIBRARY} ${PNG_LIBRARIES})
|
|
||||||
add_test(NAME image_test
|
|
||||||
COMMAND ${CMAKE_BINARY_DIR}/image_test ${CMAKE_SOURCE_DIR}/test/envs/opengl/tex1.png ${CMAKE_BINARY_DIR}/tex1_test.png)
|
|
||||||
|
|
||||||
file(COPY colobot.ini DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
|
||||||
|
|
||||||
add_executable(profile_test ${SRC_DIR}/common/profile.cpp ${SRC_DIR}/common/logger.cpp profile_test.cpp)
|
|
||||||
set_target_properties(profile_test PROPERTIES COMPILE_DEFINITIONS "DEV_BUILD=1")
|
|
||||||
target_link_libraries(profile_test gtest ${Boost_LIBRARIES})
|
|
||||||
|
|
||||||
add_test(NAME profile_test
|
|
||||||
COMMAND ${CMAKE_BINARY_DIR}/profile_test
|
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
@ -1,57 +0,0 @@
|
||||||
#include "common/image.h"
|
|
||||||
|
|
||||||
#include <SDL.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
/* For now, just a simple test: loading a file from image
|
|
||||||
* and saving it to another in PNG. */
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
if (argc != 3)
|
|
||||||
{
|
|
||||||
printf("Usage: %s in_image out_image\n", argv[0]);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
CImage image;
|
|
||||||
|
|
||||||
if (! image.Load(argv[1]))
|
|
||||||
{
|
|
||||||
std::string err = image.GetError();
|
|
||||||
printf("Error loading '%s': %s\n", argv[1], err.c_str());
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
Gfx::Color color;
|
|
||||||
std::string str;
|
|
||||||
|
|
||||||
color = image.GetPixel(Math::IntPoint(0, 0));
|
|
||||||
str = color.ToString();
|
|
||||||
printf("pixel @ (0,0): %s\n", str.c_str());
|
|
||||||
|
|
||||||
color = image.GetPixel(Math::IntPoint(0, 1));
|
|
||||||
str = color.ToString();
|
|
||||||
printf("pixel @ (0,1): %s\n", str.c_str());
|
|
||||||
|
|
||||||
color = image.GetPixel(Math::IntPoint(1, 0));
|
|
||||||
str = color.ToString();
|
|
||||||
printf("pixel @ (1,0): %s\n", str.c_str());
|
|
||||||
|
|
||||||
color = image.GetPixel(Math::IntPoint(1, 1));
|
|
||||||
str = color.ToString();
|
|
||||||
printf("pixel @ (1,1): %s\n", str.c_str());
|
|
||||||
|
|
||||||
image.SetPixel(Math::IntPoint(0, 0), Gfx::Color(0.1f, 0.2f, 0.3f, 0.0f));
|
|
||||||
image.SetPixel(Math::IntPoint(1, 0), Gfx::Color(0.3f, 0.2f, 0.1f, 1.0f));
|
|
||||||
image.SetPixel(Math::IntPoint(0, 1), Gfx::Color(1.0f, 1.0f, 1.0f, 1.0f));
|
|
||||||
image.SetPixel(Math::IntPoint(1, 1), Gfx::Color(0.0f, 0.0f, 0.0f, 1.0f));
|
|
||||||
|
|
||||||
if (! image.SavePNG(argv[2]))
|
|
||||||
{
|
|
||||||
std::string err = image.GetError();
|
|
||||||
printf("Error saving PNG '%s': %s\n", argv[2], err.c_str());
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -11,13 +11,14 @@
|
||||||
class CProfileTest : public testing::Test
|
class CProfileTest : public testing::Test
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
CLogger m_logger;
|
|
||||||
CProfile m_profile;
|
CProfile m_profile;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
TEST_F(CProfileTest, ReadTest)
|
TEST_F(CProfileTest, ReadTest)
|
||||||
{
|
{
|
||||||
|
m_profile.SetUseLocalDirectory(true);
|
||||||
|
|
||||||
ASSERT_TRUE(m_profile.InitCurrentDirectory()); // load colobot.ini file
|
ASSERT_TRUE(m_profile.InitCurrentDirectory()); // load colobot.ini file
|
||||||
|
|
||||||
std::string result;
|
std::string result;
|
||||||
|
@ -36,9 +37,3 @@ TEST_F(CProfileTest, ReadTest)
|
||||||
list = m_profile.GetLocalProfileSection("test_multi", "entry");
|
list = m_profile.GetLocalProfileSection("test_multi", "entry");
|
||||||
ASSERT_EQ(5u, list.size());
|
ASSERT_EQ(5u, list.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
::testing::InitGoogleTest(&argc, argv);
|
|
||||||
return RUN_ALL_TESTS();
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
set(SRC_DIR ${colobot_SOURCE_DIR}/src)
|
|
||||||
|
|
||||||
include_directories(
|
|
||||||
.
|
|
||||||
${SRC_DIR}
|
|
||||||
${GTEST_INCLUDE_DIR}
|
|
||||||
${GMOCK_INCLUDE_DIR}
|
|
||||||
${CLIPBOARD_INCLUDE_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
# Platform-dependent implementation of CSystemUtils
|
|
||||||
if(PLATFORM_WINDOWS)
|
|
||||||
elseif(PLATFORM_MACOSX)
|
|
||||||
set(ADDITIONAL_LIB "${X11_X11_LIB}")
|
|
||||||
else()
|
|
||||||
set(ADDITIONAL_LIB "-lX11")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_executable(edit_test
|
|
||||||
${SRC_DIR}/app/gamedata.cpp
|
|
||||||
${SRC_DIR}/app/system.cpp
|
|
||||||
${SRC_DIR}/app/${SYSTEM_CPP_MODULE}
|
|
||||||
${SRC_DIR}/app/system_other.cpp
|
|
||||||
${SRC_DIR}/common/event.cpp
|
|
||||||
${SRC_DIR}/common/logger.cpp
|
|
||||||
${SRC_DIR}/common/misc.cpp
|
|
||||||
${SRC_DIR}/common/profile.cpp
|
|
||||||
${SRC_DIR}/common/iman.cpp
|
|
||||||
${SRC_DIR}/common/stringutils.cpp
|
|
||||||
${SRC_DIR}/graphics/engine/text.cpp
|
|
||||||
${SRC_DIR}/ui/button.cpp
|
|
||||||
${SRC_DIR}/ui/control.cpp
|
|
||||||
${SRC_DIR}/ui/edit.cpp
|
|
||||||
${SRC_DIR}/ui/scroll.cpp
|
|
||||||
stubs/app_stub.cpp
|
|
||||||
stubs/engine_stub.cpp
|
|
||||||
stubs/particle_stub.cpp
|
|
||||||
stubs/restext_stub.cpp
|
|
||||||
stubs/robotmain_stub.cpp
|
|
||||||
edit_test.cpp)
|
|
||||||
|
|
||||||
target_link_libraries(edit_test gtest gmock clipboard ${SDL_LIBRARY} ${SDLTTF_LIBRARY} ${Boost_LIBRARIES} ${ADDITIONAL_LIB})
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
add_test(edit_test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/edit_test)
|
|
|
@ -1,90 +0,0 @@
|
||||||
#include "app/app.h"
|
|
||||||
#include "app/gamedata.h"
|
|
||||||
|
|
||||||
#include "ui/edit.h"
|
|
||||||
|
|
||||||
#include "mocks/text_mock.h"
|
|
||||||
|
|
||||||
#include <fstream>
|
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
|
||||||
#include <gmock/gmock.h>
|
|
||||||
|
|
||||||
class CEditTest : public testing::Test
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
CEditTest()
|
|
||||||
: m_robotMain(nullptr)
|
|
||||||
, m_gameData(nullptr)
|
|
||||||
, m_engine(nullptr)
|
|
||||||
, m_edit(nullptr)
|
|
||||||
{}
|
|
||||||
|
|
||||||
virtual void SetUp()
|
|
||||||
{
|
|
||||||
m_robotMain = new CRobotMain(&m_app, false);
|
|
||||||
|
|
||||||
m_gameData = new CGameData();
|
|
||||||
|
|
||||||
m_engine = new Gfx::CEngine(nullptr);
|
|
||||||
|
|
||||||
m_edit = new Ui::CEdit;
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual void TearDown()
|
|
||||||
{
|
|
||||||
delete m_edit;
|
|
||||||
m_edit = nullptr;
|
|
||||||
delete m_engine;
|
|
||||||
m_engine = nullptr;
|
|
||||||
delete m_gameData;
|
|
||||||
m_gameData = nullptr;
|
|
||||||
delete m_robotMain;
|
|
||||||
m_robotMain = nullptr;
|
|
||||||
}
|
|
||||||
virtual ~CEditTest()
|
|
||||||
{
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
protected:
|
|
||||||
CApplication m_app;
|
|
||||||
CRobotMain* m_robotMain;
|
|
||||||
CGameData * m_gameData;
|
|
||||||
Gfx::CEngine * m_engine;
|
|
||||||
Ui::CEdit * m_edit;
|
|
||||||
CLogger m_logger;
|
|
||||||
};
|
|
||||||
|
|
||||||
using ::testing::_;
|
|
||||||
using ::testing::An;
|
|
||||||
using ::testing::Return;
|
|
||||||
|
|
||||||
TEST_F(CEditTest, WriteTest)
|
|
||||||
{
|
|
||||||
ASSERT_TRUE(true);
|
|
||||||
CTextMock * text = dynamic_cast<CTextMock *>(m_engine->GetText());
|
|
||||||
EXPECT_CALL(*text, GetCharWidth(_, _, _, _)).WillRepeatedly(Return(1.0f));
|
|
||||||
EXPECT_CALL(*text, GetStringWidth(An<const std::string&>(), _, _, _)).WillOnce(Return(1.0f));
|
|
||||||
std::string filename = "test.file";
|
|
||||||
m_edit->SetMaxChar(Ui::EDITSTUDIOMAX);
|
|
||||||
m_edit->SetAutoIndent(true);
|
|
||||||
std::string inputScript = "{\ntext1\ntext2\n\ntext3\n{\ntext4\n}\n}";
|
|
||||||
std::string expectedScript = "{\r\n\ttext1\r\n\ttext2\r\n\t\r\n\ttext3\r\n\t{\r\n\t\ttext4\r\n\t}\r\n}";
|
|
||||||
m_edit->SetText(inputScript.c_str(), true);
|
|
||||||
GetLogger()->Info("Writing text \n");
|
|
||||||
m_edit->WriteText("script.txt");
|
|
||||||
|
|
||||||
std::fstream scriptFile;
|
|
||||||
|
|
||||||
scriptFile.open("script.txt", std::ios_base::binary | std::ios_base::in);
|
|
||||||
std::string outputScript((std::istreambuf_iterator<char>(scriptFile)), std::istreambuf_iterator<char>());
|
|
||||||
ASSERT_STREQ(expectedScript.c_str(), outputScript.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
::testing::InitGoogleTest(&argc, argv);
|
|
||||||
return RUN_ALL_TESTS();
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
#include "common/logger.h"
|
|
||||||
|
|
||||||
#include "graphics/engine/text.h"
|
|
||||||
|
|
||||||
#include <gmock/gmock.h>
|
|
||||||
|
|
||||||
class CTextMock : public Gfx::CText
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
CTextMock(Gfx::CEngine* engine) : CText(engine)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual ~CTextMock()
|
|
||||||
{
|
|
||||||
};
|
|
||||||
|
|
||||||
MOCK_METHOD4(GetCharWidth, float(Gfx::UTF8Char ch,
|
|
||||||
Gfx::FontType type,
|
|
||||||
float size,
|
|
||||||
float offset));
|
|
||||||
MOCK_METHOD4(GetStringWidth, float(const std::string &text,
|
|
||||||
std::vector<Gfx::FontMetaChar>::iterator format,
|
|
||||||
std::vector<Gfx::FontMetaChar>::iterator end,
|
|
||||||
float size));
|
|
||||||
MOCK_METHOD3(GetStringWidth, float(std::string text,
|
|
||||||
Gfx::FontType font,
|
|
||||||
float size));
|
|
||||||
MOCK_METHOD4(GetStringWidth, float(Gfx::UTF8Char ch,
|
|
||||||
Gfx::FontType font,
|
|
||||||
float size,
|
|
||||||
float offset));
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
#include "app/app.h"
|
|
||||||
|
|
||||||
#include "graphics/opengl/gldevice.h"
|
|
||||||
|
|
||||||
template<> CApplication* CSingleton<CApplication>::m_instance = nullptr;
|
|
||||||
|
|
||||||
namespace Gfx {
|
|
||||||
|
|
||||||
GLDeviceConfig::GLDeviceConfig()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
} /* Gfx */
|
|
||||||
|
|
||||||
|
|
||||||
CApplication::CApplication()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
CApplication::~CApplication()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
CSoundInterface* CApplication::GetSound()
|
|
||||||
{
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
CEventQueue* CApplication::GetEventQueue()
|
|
||||||
{
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
Event CApplication::CreateUpdateEvent()
|
|
||||||
{
|
|
||||||
return Event(EVENT_NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
char CApplication::GetLanguageChar() const
|
|
||||||
{
|
|
||||||
return 'E';
|
|
||||||
}
|
|
|
@ -1,104 +0,0 @@
|
||||||
#include "graphics/engine/engine.h"
|
|
||||||
#include "graphics/engine/text.h"
|
|
||||||
|
|
||||||
#include "mocks/text_mock.h"
|
|
||||||
|
|
||||||
template<> Gfx::CEngine* CSingleton<Gfx::CEngine>::m_instance = nullptr;
|
|
||||||
|
|
||||||
namespace Gfx {
|
|
||||||
|
|
||||||
CEngine::CEngine(CApplication* app) :
|
|
||||||
m_app(app)
|
|
||||||
{
|
|
||||||
m_text = new CTextMock(this);
|
|
||||||
m_text->Create();
|
|
||||||
}
|
|
||||||
|
|
||||||
CEngine::~CEngine()
|
|
||||||
{
|
|
||||||
delete m_text;
|
|
||||||
m_text = nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
CParticle* CEngine::GetParticle()
|
|
||||||
{
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
Math::Point CEngine::WindowToInterfaceSize(Math::IntPoint size)
|
|
||||||
{
|
|
||||||
return Math::Point(size.x, size.y);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CEngine::SetState(int state, const Color& color)
|
|
||||||
{
|
|
||||||
if (state == m_lastState && color == m_lastColor)
|
|
||||||
return;
|
|
||||||
|
|
||||||
m_lastState = state;
|
|
||||||
m_lastColor = color;
|
|
||||||
}
|
|
||||||
|
|
||||||
Math::IntPoint CEngine::GetWindowSize()
|
|
||||||
{
|
|
||||||
return m_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CEngine::AddStatisticTriangle(int count)
|
|
||||||
{
|
|
||||||
m_statisticTriangle += count;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CEngine::SetMouseType(EngineMouseType type)
|
|
||||||
{
|
|
||||||
m_mouseType = type;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CEngine::SetTexture(const std::string& /* name */, int /* stage */)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
CText* CEngine::GetText()
|
|
||||||
{
|
|
||||||
return m_text;
|
|
||||||
}
|
|
||||||
|
|
||||||
CDevice* CEngine::GetDevice()
|
|
||||||
{
|
|
||||||
return m_device;
|
|
||||||
}
|
|
||||||
|
|
||||||
int CEngine::GetEditIndentValue()
|
|
||||||
{
|
|
||||||
return m_editIndentValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CEngine::DeleteTexture(const std::string& /* texName */)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
Texture CEngine::LoadTexture(const std::string& /* name */)
|
|
||||||
{
|
|
||||||
Texture texture;
|
|
||||||
return texture;
|
|
||||||
}
|
|
||||||
|
|
||||||
Math::Vector CEngine::GetEyePt()
|
|
||||||
{
|
|
||||||
return Math::Vector();
|
|
||||||
}
|
|
||||||
|
|
||||||
Math::Vector CEngine::GetLookatPt()
|
|
||||||
{
|
|
||||||
return Math::Vector();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CEngine::GetPause()
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
} /* Gfx */
|
|
||||||
|
|
|
@ -1,205 +0,0 @@
|
||||||
#include "graphics/engine/particle.h"
|
|
||||||
|
|
||||||
#include "common/logger.h"
|
|
||||||
|
|
||||||
|
|
||||||
// Graphics module namespace
|
|
||||||
namespace Gfx {
|
|
||||||
|
|
||||||
|
|
||||||
CParticle::CParticle(CEngine* /*engine*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
CParticle::~CParticle()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::SetDevice(CDevice* /*device*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::FlushParticle()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::FlushParticle(int /*sheet*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
int CParticle::CreateParticle(Math::Vector /*pos*/, Math::Vector /*speed*/, Math::Point /*dim*/,
|
|
||||||
ParticleType /*type*/, float /*duration*/, float /*mass*/,
|
|
||||||
float /*windSensitivity*/, int /*sheet*/)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int CParticle::CreateFrag(Math::Vector /*pos*/, Math::Vector /*speed*/, EngineTriangle */*triangle*/,
|
|
||||||
ParticleType /*type*/, float /*duration*/, float /*mass*/,
|
|
||||||
float /*windSensitivity*/, int /*sheet*/)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int CParticle::CreatePart(Math::Vector /*pos*/, Math::Vector /*speed*/, ParticleType /*type*/,
|
|
||||||
float /*duration*/, float /*mass*/, float /*weight*/,
|
|
||||||
float /*windSensitivity*/, int /*sheet*/)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int CParticle::CreateRay(Math::Vector /*pos*/, Math::Vector /*goal*/, ParticleType /*type*/, Math::Point /*dim*/,
|
|
||||||
float /*duration*/, int /*sheet*/)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int CParticle::CreateTrack(Math::Vector /*pos*/, Math::Vector /*speed*/, Math::Point /*dim*/, ParticleType /*type*/,
|
|
||||||
float /*duration*/, float /*mass*/, float /*length*/, float /*width*/)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::CreateWheelTrace(const Math::Vector &/*p1*/, const Math::Vector &/*p2*/, const Math::Vector &/*p3*/,
|
|
||||||
const Math::Vector &/*p4*/, ParticleType /*type*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::DeleteParticle(ParticleType /*type*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::DeleteParticle(int /*channel*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::SetObjectLink(int /*channel*/, CObject */*object*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::SetObjectFather(int /*channel*/, CObject */*object*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::SetPosition(int /*channel*/, Math::Vector /*pos*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::SetDimension(int /*channel*/, Math::Point /*dim*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::SetZoom(int /*channel*/, float /*zoom*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::SetAngle(int /*channel*/, float /*angle*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::SetIntensity(int /*channel*/, float /*intensity*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::SetParam(int /*channel*/, Math::Vector /*pos*/, Math::Point /*dim*/, float /*zoom*/, float /*angle*/, float /*intensity*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::SetPhase(int /*channel*/, ParticlePhase /*phase*/, float /*duration*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CParticle::GetPosition(int /*channel*/, Math::Vector &/*pos*/)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
Color CParticle::GetFogColor(Math::Vector /*pos*/)
|
|
||||||
{
|
|
||||||
return Color();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::SetFrameUpdate(int /*sheet*/, bool /*update*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::FrameParticle(float /*rTime*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::DrawParticle(int /*sheet*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CParticle::WriteWheelTrace(const char */*filename*/, int /*width*/, int /*height*/, Math::Vector /*dl*/, Math::Vector /*ur*/)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::DeleteRank(int /*rank*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CParticle::CheckChannel(int &/*channel*/)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::DrawParticleTriangle(int /*i*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::DrawParticleNorm(int /*i*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::DrawParticleFlat(int /*i*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::DrawParticleFog(int /*i*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::DrawParticleRay(int /*i*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::DrawParticleSphere(int /*i*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::DrawParticleCylinder(int /*i*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::DrawParticleWheel(int /*i*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
CObject* CParticle::SearchObjectGun(Math::Vector /*old*/, Math::Vector /*pos*/, ParticleType /*type*/, CObject */*father*/)
|
|
||||||
{
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
CObject* CParticle::SearchObjectRay(Math::Vector /*pos*/, Math::Vector /*goal*/, ParticleType /*type*/, CObject */*father*/)
|
|
||||||
{
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::Play(Sound /*sound*/, Math::Vector /*pos*/, float /*amplitude*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CParticle::TrackMove(int /*i*/, Math::Vector /*pos*/, float /*progress*/)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CParticle::TrackDraw(int /*i*/, ParticleType /*type*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
} // namespace Gfx
|
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
#include "common/restext.h"
|
|
||||||
|
|
||||||
bool GetResource(ResType /* type */, int /* num */, std::string& /* text */)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool SearchKey(const char * /* cmd */, InputSlot & /* key */)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
#include "object/robotmain.h"
|
|
||||||
|
|
||||||
|
|
||||||
template<> CRobotMain* CSingleton<CRobotMain>::m_instance = nullptr;
|
|
||||||
|
|
||||||
CRobotMain::CRobotMain(CApplication* app, bool loadProfile)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
CRobotMain::~CRobotMain()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CRobotMain::GetGlint()
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
const InputBinding& CRobotMain::GetInputBinding(InputSlot slot)
|
|
||||||
{
|
|
||||||
unsigned int index = static_cast<unsigned int>(slot);
|
|
||||||
assert(index >= 0 && index < INPUT_SLOT_MAX);
|
|
||||||
return m_inputBindings[index];
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue