#include "common.hpp"
#include "RTC/TrendCalculator.hpp"
#include <catch2/catch_test_macros.hpp>

SCENARIO("TrendCalculator")
{
	SECTION("trend values after same elapsed time match")
	{
		RTC::TrendCalculator trendA;
		RTC::TrendCalculator trendB;

		trendA.Update(1000u, 0u);
		trendB.Update(1000u, 0u);

		REQUIRE(trendA.GetValue() == 1000u);
		REQUIRE(trendB.GetValue() == 1000u);

		trendA.Update(200u, 500u);
		trendA.Update(200u, 1000u);
		trendB.Update(200u, 1000u);

		REQUIRE(trendA.GetValue() == trendB.GetValue());

		trendA.Update(200u, 2000u);
		trendA.Update(200u, 4000u);
		trendB.Update(200u, 4000u);

		REQUIRE(trendA.GetValue() == trendB.GetValue());

		trendA.Update(2000u, 5000u);
		trendB.Update(2000u, 5000u);

		REQUIRE(trendA.GetValue() == 2000u);
		REQUIRE(trendB.GetValue() == 2000u);

		trendA.ForceUpdate(0u, 5500u);
		trendB.ForceUpdate(100u, 5000u);

		REQUIRE(trendA.GetValue() == 0u);
		REQUIRE(trendB.GetValue() == 100u);
	}
}
