add tests
This commit is contained in:
parent
eab7e9aeee
commit
1b2d2db37b
1
2d.hpp
1
2d.hpp
@ -32,6 +32,7 @@ struct Circle {
|
||||
|
||||
template<int n>
|
||||
struct Polygon {
|
||||
static_assert(n >= 3, "Polygon must have at least 3 edges");
|
||||
std::array<Vec2, n> vertex;
|
||||
|
||||
Polygon() = delete;
|
||||
|
@ -1,6 +1,7 @@
|
||||
#include "2d.hpp"
|
||||
#include "test/u.hpp"
|
||||
#include <functional>
|
||||
#include <initializer_list>
|
||||
|
||||
namespace {
|
||||
|
||||
@ -16,8 +17,35 @@ AddTestCase _(1, "2d.hpp", [](TestCase& t) {
|
||||
t.expectTrue([] { return Circle({1, 1}, 1.42).contain({0, 0}); });
|
||||
|
||||
t.expectEq<Vec2>([] { return Polygon<3>{{0, 0}, {1, 0}, {1, 1}}.vertex[0]; }, {0, 0});
|
||||
|
||||
t.expectTrue([] { return Polygon<3>{{0, 0}, {1, 0}, {1, 1}}.contain({.1, .05}); });
|
||||
t.expectFalse([] { return Polygon<3>{{0, 0}, {1, 0}, {1, 1}}.contain({.1, .2}); });
|
||||
});
|
||||
|
||||
Polygon<9> pA{{-2, -2}, {-1, -2}, {2, 0}, {1, -2}, {2, -1}, {2, -3}, {3, 1}, {1, 1}, {0, 0}};
|
||||
t.expectTrue([pA] { return pA.contain({1, 0}); });
|
||||
t.expectTrue([pA] { return pA.contain({0, 0}); });
|
||||
t.expectTrue([pA] { return pA.contain({0, -1}); });
|
||||
t.expectTrue([pA] { return pA.contain({1.52, -1.26}); });
|
||||
t.expectTrue([pA] { return pA.contain({2.16, -1.9}); });
|
||||
t.expectFalse([pA] { return pA.contain({1.28, -.8}); });
|
||||
t.expectFalse([pA] { return pA.contain({1.68, -1.94}); });
|
||||
|
||||
t.expectTrue([] { return intersect(Circle({1, 1}, 2), Circle({1, 1}, 1)); });
|
||||
t.expectTrue([] { return intersect(Circle({1, 1}, 1.5), Circle({3, 1}, 1.5)); });
|
||||
t.expectFalse([] { return intersect(Circle({1, 1}, 1.5), Circle({3, 4}, 1.5)); });
|
||||
t.expectFalse([] { return intersect(Circle({0, 0}, 1.5), Circle({-3, -4}, 1.5)); });
|
||||
|
||||
t.expectTrue([] { return intersect(Circle({1, 1}, 2), Polygon<3>{{0, 0}, {2, 2}, {0, 2}}); });
|
||||
t.expectTrue([] { return intersect(Polygon<3>{{0, 0}, {2, 2}, {0, 2}}, Circle({1, 1}, 2)); });
|
||||
|
||||
t.expectTrue([] { return intersect(Circle({0, 0}, 5), Polygon<4>{{-1, -1}, {-1, 1}, {1, 1}, {1, -1}}); });
|
||||
t.expectTrue([] { return intersect(Circle({0, 0}, 1), Polygon<4>{{-1, -1}, {-1, 1}, {1, 1}, {1, -1}}); });
|
||||
t.expectTrue([] { return intersect(Circle({0, 0}, 1), Polygon<4>{{-1, -1}, {-1, 1}, {1, 1}, {1, -1}}); });
|
||||
t.expectTrue([] { return intersect(Circle({0, 0}, 1), Polygon<3>{{-1, -1}, {-1, 1}, {1, 1}}); });
|
||||
t.expectFalse([] { return intersect(Circle({0, 0}, 2), Polygon<3>{{0, -3}, {14, -3}, {0, -5}}); });
|
||||
t.expectFalse([pA] { return intersect(Circle({-1, 1}, 1.4), pA); });
|
||||
t.expectTrue([pA] { return intersect(Circle({-3, -2}, 1.2), pA); });
|
||||
t.expectTrue([pA] { return intersect(Circle({1.83649, -.07532}, .05484), pA); });
|
||||
t.expectFalse([pA] { return intersect(Circle({1.5595, -.42437}, .08794), pA); });
|
||||
});
|
||||
}
|
||||
|
@ -117,17 +117,17 @@ private:
|
||||
|
||||
void onPass() noexcept {
|
||||
ok += 1;
|
||||
std::putchar('.');
|
||||
putchar('.');
|
||||
}
|
||||
|
||||
void onFail() noexcept {
|
||||
fail += 1;
|
||||
std::putchar('F');
|
||||
putchar('F');
|
||||
}
|
||||
|
||||
void onError() noexcept {
|
||||
fail += 1;
|
||||
std::putchar('E');
|
||||
putchar('E');
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
|
Loading…
x
Reference in New Issue
Block a user