mirror of
https://github.com/CDevJoud/Minecraft-Community-Edition.git
synced 2026-07-18 04:00:48 +00:00
Add tests
This commit is contained in:
@@ -1,8 +1,10 @@
|
|||||||
cmake_minimum_required(VERSION 4.0)
|
cmake_minimum_required(VERSION 4.0)
|
||||||
project("Minecraft-Community-Edition")
|
project("Minecraft-Community-Edition")
|
||||||
|
|
||||||
|
option(MCE_BUILD_TESTS "Set this to ON to build tests" OFF)
|
||||||
set(CMAKE_CXX_STANDARD 26)
|
set(CMAKE_CXX_STANDARD 26)
|
||||||
set(MCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Minecraft-Community-Edition")
|
set(MCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Minecraft-Community-Edition")
|
||||||
|
|
||||||
include(cmake/Vendor.cmake)
|
include(cmake/Vendor.cmake)
|
||||||
|
|
||||||
if (WIN32 AND ("${CMAKE_BUILD_TYPE}" MATCHES "Release"))
|
if (WIN32 AND ("${CMAKE_BUILD_TYPE}" MATCHES "Release"))
|
||||||
@@ -10,8 +12,14 @@ if (WIN32 AND ("${CMAKE_BUILD_TYPE}" MATCHES "Release"))
|
|||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
file(GLOB_RECURSE MCE_SOURCES "${MCE_DIR}/*.cpp" "${MCE_DIR}/*.hpp" "${MCE_DIR}/*.c" "${MCE_DIR}/*.h")
|
file(GLOB_RECURSE MCE_SOURCES "${MCE_DIR}/*.cpp" "${MCE_DIR}/*.hpp" "${MCE_DIR}/*.c" "${MCE_DIR}/*.h")
|
||||||
list(FILTER MCE_SOURCES EXCLUDE REGEX "Vendor")
|
list(FILTER MCE_SOURCES EXCLUDE REGEX "Main.cpp")
|
||||||
add_executable(${PROJECT_NAME} ${MCE_EXEC_TYPE} ${MCE_SOURCES})
|
add_library(${PROJECT_NAME}-lib STATIC ${MCE_SOURCES})
|
||||||
|
add_executable(${PROJECT_NAME} ${MCE_EXEC_TYPE} "${MCE_DIR}/Main.cpp")
|
||||||
|
|
||||||
target_include_directories(${PROJECT_NAME} PUBLIC ${MCE_DIR})
|
target_include_directories(${PROJECT_NAME}-lib PUBLIC ${MCE_DIR})
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE EASTL SFML::Graphics stdc++exp)
|
target_link_libraries(${PROJECT_NAME}-lib PUBLIC EASTL SFML::Graphics stdc++exp)
|
||||||
|
target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_NAME}-lib)
|
||||||
|
|
||||||
|
if (MCE_BUILD_TESTS)
|
||||||
|
add_subdirectory(Tests)
|
||||||
|
endif ()
|
||||||
@@ -1,8 +1,15 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
namespace mce {
|
namespace mce {
|
||||||
class InputStream {
|
class InputStream {
|
||||||
public:
|
public:
|
||||||
virtual ~InputStream() = 0;
|
virtual ~InputStream() = 0;
|
||||||
|
|
||||||
|
virtual size_t read(void* buffer, size_t size) = 0;
|
||||||
|
virtual size_t seek(size_t position) = 0;
|
||||||
|
virtual size_t tell() = 0;
|
||||||
|
virtual size_t getSize() = 0;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,16 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
namespace mce {
|
namespace mce {
|
||||||
class OutputStream {
|
class OutputStream {
|
||||||
public:
|
public:
|
||||||
virtual ~OutputStream() = 0;
|
virtual ~OutputStream() = 0;
|
||||||
|
|
||||||
|
virtual void flush() = 0;
|
||||||
|
virtual size_t write(void* buffer, size_t size) = 0;
|
||||||
|
virtual size_t seek(size_t position) = 0;
|
||||||
|
virtual size_t tell() = 0;
|
||||||
|
virtual size_t getSize() = 0;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
3
Tests/CMakeLists.txt
Normal file
3
Tests/CMakeLists.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
enable_testing()
|
||||||
|
|
||||||
|
add_subdirectory(InputStream)
|
||||||
7
Tests/InputStream/CMakeLists.txt
Normal file
7
Tests/InputStream/CMakeLists.txt
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
cmake_minimum_required(VERSION 4.0)
|
||||||
|
project("InputStream")
|
||||||
|
include(GoogleTest)
|
||||||
|
|
||||||
|
add_executable(${PROJECT_NAME} Main.cpp)
|
||||||
|
|
||||||
|
target_link_libraries(${PROJECT_NAME} GTest::gtest_main)
|
||||||
0
Tests/InputStream/Main.cpp
Normal file
0
Tests/InputStream/Main.cpp
Normal file
@@ -9,8 +9,22 @@ execute_process(
|
|||||||
COMMAND git config --global url.https://github.com/.insteadOf git@github.com:
|
COMMAND git config --global url.https://github.com/.insteadOf git@github.com:
|
||||||
)
|
)
|
||||||
|
|
||||||
|
cmake_policy(SET CMP0135 NEW) # Fix DOWNLOAD_EXTRACT_TIMESTAMP warning
|
||||||
|
FetchContent_Declare(googletest
|
||||||
|
URL https://github.com/google/googletest/archive/52eb8108c5bdec04579160ae17225d66034bd723.zip
|
||||||
|
SOURCE_DIR ${FETCHCONTENT_BASE_DIR}/googletest
|
||||||
|
BINARY_DIR ${CMAKE_BINARY_DIR}/Vendor/googletest-build
|
||||||
|
SUBBUILD_DIR ${CMAKE_BINARY_DIR}/Vendor/googletest-subbuild
|
||||||
|
)
|
||||||
FetchContent_Declare(EASTL GIT_REPOSITORY https://github.com/electronicarts/EASTL.git)
|
FetchContent_Declare(EASTL GIT_REPOSITORY https://github.com/electronicarts/EASTL.git)
|
||||||
FetchContent_Declare(SFML GIT_REPOSITORY https://github.com/SFML/SFML.git)
|
FetchContent_Declare(SFML GIT_REPOSITORY https://github.com/SFML/SFML.git)
|
||||||
|
|
||||||
set(CMAKE_POLICY_VERSION_MINIMUM 3.5) # EACore uses an old version
|
set(CMAKE_POLICY_VERSION_MINIMUM 3.5) # EACore uses an old version
|
||||||
FetchContent_MakeAvailable(EASTL SFML)
|
FetchContent_MakeAvailable(EASTL SFML)
|
||||||
|
|
||||||
|
if (MCE_BUILD_TESTS)
|
||||||
|
# For Windows: Prevent overriding the parent project's compiler/linker settings
|
||||||
|
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
|
||||||
|
|
||||||
|
FetchContent_MakeAvailable(googletest)
|
||||||
|
endif ()
|
||||||
Reference in New Issue
Block a user