Trying to switch to more object-oriented
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
PREFIX ?= /usr/local/bin
|
||||
CXXFLAGS = -std=c++14 -Wall -Wextra -pedantic
|
||||
OBJEXT=o
|
||||
LDFLAGS ?= -lSDL2 -lSDL2_image -lSDL2_gfx -lSDL2_ttf -pthread
|
||||
|
||||
.PHONY: default
|
||||
default: test
|
||||
|
||||
OBJECTFILES = sdlpp_circlecolider.${OBJEXT} sdlpp_circlerenderer.${OBJEXT} sdlpp_collision.${OBJEXT} sdlpp_common.${OBJEXT} sdlpp_font.${OBJEXT} sdlpp_linerenderer.${OBJEXT} sdlpp_rectcolider.${OBJEXT} sdlpp_rectrenderer.${OBJEXT} sdlpp_renderer.${OBJEXT} sdlpp_renderobject.${OBJEXT} sdlpp_scene.${OBJEXT} sdlpp_textrenderer.${OBJEXT} sdlpp_texture.${OBJEXT} sdlpp_window.${OBJEXT} sdlpp_vector.${OBJEXT} sdlpp_line.${OBJEXT} sdlpp_geometry.${OBJEXT}
|
||||
|
||||
%.${OBJEXT}: ../sdlpp/%.cpp
|
||||
${CXX} ${CXXFLAGS} ${LIBRARYFLAGS} -c $< -o $@
|
||||
|
||||
test: test.cpp ${OBJECTFILES}
|
||||
$(CXX) $(CXXFLAGS) -o $@ $^ ${LDFLAGS}
|
||||
|
||||
clean:
|
||||
rm -Rf *.${OBJEXT} test
|
||||
+50
-2
@@ -1,11 +1,12 @@
|
||||
#define CATCH_CONFIG_MAIN
|
||||
#include "catch.hpp"
|
||||
|
||||
#include "../sdlpp.hpp"
|
||||
#include "../sdlpp/sdlpp.hpp"
|
||||
#include <iostream>
|
||||
|
||||
// sdlpp.hpp
|
||||
|
||||
TEST_CASE( "Rect collisions" ) {
|
||||
/*TEST_CASE( "Rect collisions" ) {
|
||||
SDLPP::Rect r(0,0,10,10);
|
||||
REQUIRE(r.colidesWith(r));
|
||||
SDLPP::Rect r2(100,100,10,10);
|
||||
@@ -40,5 +41,52 @@ TEST_CASE( "Multiple collisions" ) {
|
||||
REQUIRE(r.colidesWith(r1));
|
||||
REQUIRE(r.colidesWith(r2));
|
||||
REQUIRE_FALSE(r.colidesWith(r3));
|
||||
}*/
|
||||
|
||||
TEST_CASE( "Point distances" ) {
|
||||
SDLPP::Vec2D p1(0,0);
|
||||
SDLPP::Vec2D p2(1,0);
|
||||
auto dist = vecDistance(p1, p2);
|
||||
REQUIRE( dist > 0.99 );
|
||||
REQUIRE( dist < 1.01 );
|
||||
dist = vecDistance(p2, p1);
|
||||
REQUIRE( dist > 0.99 );
|
||||
REQUIRE( dist < 1.01 );
|
||||
p2 = SDLPP::Vec2D(0,1);
|
||||
dist = vecDistance(p1, p2);
|
||||
REQUIRE( dist > 0.99 );
|
||||
REQUIRE( dist < 1.01 );
|
||||
dist = vecDistance(p2, p1);
|
||||
REQUIRE( dist > 0.99 );
|
||||
REQUIRE( dist < 1.01 );
|
||||
p2 = SDLPP::Vec2D(1,1);
|
||||
dist = vecDistance(p1, p2);
|
||||
REQUIRE( dist > 1.4142 );
|
||||
REQUIRE( dist < 1.41422 );
|
||||
}
|
||||
|
||||
TEST_CASE( "Point line distances" ) {
|
||||
SDLPP::Vec2D p1(0,0);
|
||||
SDLPP::Line line({-1,-1}, {1, -1});
|
||||
auto dist = pointLineDistance(p1, line);
|
||||
REQUIRE( dist > 0.99 );
|
||||
REQUIRE( dist < 1.01 );
|
||||
line = SDLPP::Line({-3,-1}, {-1,-1});
|
||||
dist = pointLineDistance(p1, line);
|
||||
REQUIRE( dist > 1.4142 );
|
||||
REQUIRE( dist < 1.41422 );
|
||||
line = SDLPP::Line({-3,-2}, {-2,-2});
|
||||
dist = pointLineDistance(p1, line);
|
||||
REQUIRE( dist > 2.8284 );
|
||||
REQUIRE( dist < 2.82843 );
|
||||
line = SDLPP::Line({-3,-1}, {-2,-2});
|
||||
dist = pointLineDistance(p1, line);
|
||||
std::cout << dist << std::endl;
|
||||
line = SDLPP::Line({-3,-1}, {-2,-180});
|
||||
dist = pointLineDistance(p1, line);
|
||||
std::cout << dist << std::endl;
|
||||
SDLPP::Vec2D p2(-3, -1);
|
||||
dist = vecDistance(p1, p2);
|
||||
std::cout << dist << std::endl;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user