add tests

This commit is contained in:
方而静 2023-05-28 22:32:08 +08:00
parent eab7e9aeee
commit 1b2d2db37b
4 changed files with 35 additions and 5 deletions

1
2d.hpp
View File

@ -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;

View File

@ -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); });
});
}

View File

@ -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>

View File

@ -12,4 +12,5 @@ target("test")
add_includedirs(".")
set_optimize("none")
set_symbols("debug")
add_defines("DEBUG")
add_defines("DEBUG")
set_prefixname("test-")