test_distance_line_point.cpp

Back to Unit testing

test/pastel/geometry/

// Description: Testing template
// Documentation: unit_testing.txt

#include "test/test_init.h"

#include "pastel/geometry/distance/distance_line_point.h"
#include "pastel/sys/rational.h"

TEST_CASE("distance_line_point")
{
    using Real = Rational<integer>;
    using Line = Line<Real, 2>;
    using Point = Vector<Real, 2>;
    using Vector = Vector<Real, 2>;

    {
        auto line = Line(Point(0, 0), Vector(1, 0));
        auto point = Point(2, 0);
        REQUIRE(distance2(line, point) == 0);
    }
    {
        auto line = Line(Point(0, 0), Vector(-1, 0));
        auto point = Point(2, 0);
        REQUIRE(distance2(line, point) == 0);
    }
    {
        auto line = Line(Point(0, 0), Vector(0, 1));
        auto point = Point(2, 0);
        REQUIRE(distance2(line, point) == 2);
    }
    {
        auto line = Line(Point(0, 0), Vector(1, 0));
        auto point = Point(2, 0);
        REQUIRE(distance2(line, point) == 0);
    }
    {
        auto line = Line(Point(0, 0), Vector(1, 1));
        auto point = Point(1, -1);
        REQUIRE(~distance2(line, point) == 1*1 + 1*1);
    }
    {
        auto line = Line(Point(0, 0), Vector(1, 1));
        auto point = Point(-1, 1);
        REQUIRE(~distance2(line, point) == 1*1 + 1*1);
    }
    {
        auto line = Line(Point(0 + 5, 0 + 7), Vector(1, 1));
        auto point = Point(-1 + 5, 1 + 7);
        REQUIRE(~distance2(line, point) == 1*1 + 1*1);
    }
}