#include "catch2/catch_all.hpp"

#include "DetourCommon.h"

TEST_CASE("dtRandomPointInConvexPoly")
{
	SECTION("Properly works when the argument 's' is 1.0f")
	{
		const float pts[] = {
			0, 0, 0,
			0, 0, 1,
			1, 0, 0,
		};
		const int npts = 3;
		float areas[6];
		float out[3];

		dtRandomPointInConvexPoly(pts, npts, areas, 0.0f, 1.0f, out);
		REQUIRE(out[0] == Catch::Approx(0));
		REQUIRE(out[1] == Catch::Approx(0));
		REQUIRE(out[2] == Catch::Approx(1));

		dtRandomPointInConvexPoly(pts, npts, areas, 0.5f, 1.0f, out);
		REQUIRE(out[0] == Catch::Approx(1.0f / 2));
		REQUIRE(out[1] == Catch::Approx(0));
		REQUIRE(out[2] == Catch::Approx(1.0f / 2));

		dtRandomPointInConvexPoly(pts, npts, areas, 1.0f, 1.0f, out);
		REQUIRE(out[0] == Catch::Approx(1));
		REQUIRE(out[1] == Catch::Approx(0));
		REQUIRE(out[2] == Catch::Approx(0));
	}
}
