mirror of
https://github.com/CDevJoud/Minecraft-Community-Edition.git
synced 2026-07-16 03:00:47 +00:00
Add tests
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
cmake_minimum_required(VERSION 4.0)
|
||||
project("Minecraft-Community-Edition")
|
||||
|
||||
option(MCE_BUILD_TESTS "Set this to ON to build tests" OFF)
|
||||
set(CMAKE_CXX_STANDARD 26)
|
||||
set(MCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Minecraft-Community-Edition")
|
||||
|
||||
include(cmake/Vendor.cmake)
|
||||
|
||||
if (WIN32 AND ("${CMAKE_BUILD_TYPE}" MATCHES "Release"))
|
||||
@@ -10,8 +12,14 @@ if (WIN32 AND ("${CMAKE_BUILD_TYPE}" MATCHES "Release"))
|
||||
endif ()
|
||||
|
||||
file(GLOB_RECURSE MCE_SOURCES "${MCE_DIR}/*.cpp" "${MCE_DIR}/*.hpp" "${MCE_DIR}/*.c" "${MCE_DIR}/*.h")
|
||||
list(FILTER MCE_SOURCES EXCLUDE REGEX "Vendor")
|
||||
add_executable(${PROJECT_NAME} ${MCE_EXEC_TYPE} ${MCE_SOURCES})
|
||||
list(FILTER MCE_SOURCES EXCLUDE REGEX "Main.cpp")
|
||||
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_link_libraries(${PROJECT_NAME} PRIVATE EASTL SFML::Graphics stdc++exp)
|
||||
target_include_directories(${PROJECT_NAME}-lib PUBLIC ${MCE_DIR})
|
||||
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
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
namespace mce {
|
||||
class InputStream {
|
||||
public:
|
||||
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
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
namespace mce {
|
||||
class OutputStream {
|
||||
public:
|
||||
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:
|
||||
)
|
||||
|
||||
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(SFML GIT_REPOSITORY https://github.com/SFML/SFML.git)
|
||||
|
||||
set(CMAKE_POLICY_VERSION_MINIMUM 3.5) # EACore uses an old version
|
||||
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