Skip to content
Snippets Groups Projects
Commit 012fb7a0 authored by Alfred Burgess's avatar Alfred Burgess
Browse files

Got Doctest working for unit testing

parent d5521e29
Branches
No related merge requests found
......@@ -15,6 +15,10 @@ bin/
# Libraries
libs/
# Doctest generated files
*.gcna
*.gcdo
# Build directory
build/
......
......@@ -6,6 +6,8 @@
#ifndef __TEST_RUNNER__
#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
#include "doctest.h"
#include "testlist.hpp"
#endif // __TEST_RUNNER__
......@@ -15,6 +17,7 @@ enum GenerationMethod
Cave
};
#include "maths/maths.h"
#include "save-manager.h"
#include "game-state.h"
#include "world-hex-2d.h"
......
......@@ -3,6 +3,7 @@
#include <cmath>
class Vec2
{
public:
......
......@@ -34,7 +34,8 @@ TEST_MAIN = DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
TEST_FLAG = __TEST_RUNNER__
TEST_DEFINES = -D$(TEST_MAIN) -D$(TEST_FLAG)
TEST_TARGET = $(BIN_DIR)/test_runner
TEST_DIR = test
TEST_HEADER = lib/doctest
TEST_DIR = tests
TEST_BUILD_DIR = $(BUILD_DIR)/.test
# Executable directory
......@@ -54,8 +55,9 @@ TEST_FILES = $(wildcard $(TEST_DIR)/**/*.test.cpp $(TEST_DIR)/*.test.cpp)
# Object files
OBJ_FILES = $(patsubst $(SRC_DIR)/%.cpp,$(BUILD_DIR)/%.o,$(SRC_FILES))
TEST_OBJ_FILES = $(patsubst $(TEST_DIR)/%.test.cpp,$(TEST_BUILD_DIR)/%.test.o,$(TEST_FILES))
TEST_OBJ_FILES = $(patsubst $(TEST_DIR)/%.test.hpp,$(TEST_BUILD_DIR)/%.test.o,$(TEST_FILES))
TEST_SRC_OBJ_FILES = $(patsubst $(SRC_DIR)/%.cpp,$(TEST_BUILD_DIR)/%.src.o,$(SRC_FILES))
# TEST_SRC_OBJ_FILES = $(patsubst $(SRC_DIR)/%.cpp,$(TEST_BUILD_DIR)/%.src.o,$(SRC_FILES))
# Output executable
TARGET = $(BIN_DIR)/game
......@@ -63,20 +65,21 @@ TARGET = $(BIN_DIR)/game
all: $(TARGET)
test: $(TEST_TARGET)
./$(TEST_TARGET)
$(TARGET): $(OBJ_FILES)
$(CXX) $(CXXFLAGS) -o $(TARGET) $(OBJ_FILES) $(SDL_LIBRARY) $(SDL_OPTIONS)
$(TEST_TARGET): $(TEST_OBJ_FILES) $(TEST_SRC_OBJ_FILES)
$(CXX) $(CXXFLAGS) -o $(TARGET) $(TEST_OBJ_FILES) $(TEST_SRC_OBJ_FILES) $(SDL_LIBRARY) $(SDL_OPTIONS)
$(CXX) $(CXXFLAGS) -o $(TEST_TARGET) $(TEST_OBJ_FILES) $(TEST_SRC_OBJ_FILES) $(SDL_LIBRARY) $(SDL_OPTIONS)
$(TEST_BUILD_DIR)/%.src.o: $(SRC_DIR)/%.cpp ${INC_DIR}/%.h
@mkdir -p $(@D)
$(CXX) $(CXXFLAGS) $(TEST_DEFINES) $(LDFLAGS) -I$(INC_DIR) -c -o $@ $<
$(CXX) $(CXXFLAGS) $(TEST_DEFINES) $(LDFLAGS) -I$(INC_DIR) -I$(TEST_HEADER) -I$(TEST_DIR) -c -o $@ $<
$(TEST_BUILD_DIR)/%.test.o: $(SRC_DIR)/%.test.cpp
$(TEST_BUILD_DIR)/%.test.o: $(SRC_DIR)/%.test.hpp $(SRC_DIR)/%.cpp ${INC_DIR}/%.h
@mkdir -p $(@D)
$(CXX) $(CXXFLAGS) $(TEST_DEFINES) $(LDFLAGS) -I$(INC_DIR) -c -o $@ $<
$(CXX) $(CXXFLAGS) $(TEST_DEFINES) $(LDFLAGS) -I$(INC_DIR) -I$(TEST_HEADER) -c -o $@ $<
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp ${INC_DIR}/%.h
@mkdir -p $(@D)
......@@ -85,7 +88,7 @@ $(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp ${INC_DIR}/%.h
clean:
rm -rf $(TEST_BUILD_DIR)/* $(TEST_TARGET)
rm -rf $(BIN_DIR)/* $(BUILD_DIR)/*
rm -rf ./*~ ./*.swp
rm -rf ./*~ ./*.swp ./*.gcno
rm -rf *~
run: $(TARGET)
......
......@@ -61,4 +61,7 @@ int main( int argc, char* argv[] ) {
}
// int /*WINAPI*/ WinMain(/*HINSTANCE hInstance, HINSTANCE, LPSTR, int*/) { main(); return 0; }
#else
#include "doctest.h"
#include "testlist.hpp"
#endif // __TEST_RUNNER__
#include "world-map-3d.h"
WorldMap3D::WorldMap3D()
:WorldMap3D( 5, 5, 5 )
{}
WorldMap3D::WorldMap3D(
uint8_t width,
uint8_t height,
uint8_t depth
) : _width(width), _height(height), _depth(depth),
_logger( Logger::instance() )
{
this->_logger.info( "Creating new world" );
this->generateWorld();
}
WorldMap3D::~WorldMap3D(){
this->_logger.info( "Cleaning world" );
// Clean Chunk Map
for( const auto& [keyX, value1] : this->chunks_)
{
for( const auto& [keyY, value2] : value1)
{
for( const auto& [keyZ, chunk] : value2)
{ delete chunk; }
}
}
}
Chunk* WorldMap3D::getChunk(int chunkX, int chunkY, int chunkZ)
{
auto chX = chunks_.find( chunkX );
if( chX != chunks_.end() )
{
auto chY = chX->second.find( chunkY );
if( chY != chX->second.end() )
{
auto chZ = chY->second.find( chunkZ );
if( chZ != chY->second.end() )
{ return chZ->second; }
}
}
return nullptr;
}
void WorldMap3D::generateWorld()
{
this->_logger.info( "Generating initial world" );
for( uint8_t x = 0; x < this->_width; x++ )
{
for( uint8_t y = 0; y < this->_height; y++ )
{
for( uint8_t z = 0; z < this->_depth; z++ )
{
Chunk* chunk = new Chunk( x, y, z );
this->chunks_[z][y][x] = chunk;
}
}
}
}
#include <iostream>
#include "doctest.h"
std::cout << "Test" << std::endl;
#include <iostream>
#include "doctest.h"
#include "maths/vec2.h"
TEST_CASE( "Testing Operator Comparisons" ) {
Vec2 a( 1, 5 );
Vec2 b( 2, 4 );
SUBCASE( "Addition" )
{
Vec2 c = a + b;
CHECK( c.x == 3 );
CHECK( c.y == 9 );
}
SUBCASE( "Subtraction" )
{
Vec2 c = a - b;
CHECK( c.x == -1 );
CHECK( c.y == 1 );
}
}
#ifndef __TESTLIST_INCLUDES__
#define __TESTLIST_INCLUDES__
#include "maths/vec2.test.hpp"
#endif // __TESTLIST_INCLUDES__
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment