Add some more assertions to debug a crash.

This commit is contained in:
John Preston 2022-09-20 12:48:27 +04:00
parent 18580e46a1
commit 1c5fd7e277

View file

@ -23,51 +23,109 @@ transition linear = [](const float64 &delta, const float64 &dt) {
Expects(!std::isnan(dt)); Expects(!std::isnan(dt));
const auto result = delta * dt; const auto result = delta * dt;
Ensures(!std::isnan(result)); Ensures(!std::isnan(result));
return result; return result;
}; };
transition sineInOut = [](const float64 &delta, const float64 &dt) { transition sineInOut = [](const float64 &delta, const float64 &dt) {
return -(delta / 2) * (cos(M_PI * dt) - 1); Expects(!std::isnan(delta));
Expects(!std::isnan(dt));
const auto result = -(delta / 2) * (cos(M_PI * dt) - 1);
Ensures(!std::isnan(result));
return result;
}; };
transition halfSine = [](const float64 &delta, const float64 &dt) { transition halfSine = [](const float64 &delta, const float64 &dt) {
return delta * sin(M_PI * dt / 2); Expects(!std::isnan(delta));
Expects(!std::isnan(dt));
const auto result = delta * sin(M_PI * dt / 2);
Ensures(!std::isnan(result));
return result;
}; };
transition easeOutBack = [](const float64 &delta, const float64 &dt) { transition easeOutBack = [](const float64 &delta, const float64 &dt) {
Expects(!std::isnan(delta));
Expects(!std::isnan(dt));
static constexpr auto s = 1.70158; static constexpr auto s = 1.70158;
const float64 t = dt - 1; const auto t = dt - 1;
return delta * (t * t * ((s + 1) * t + s) + 1); Assert(!std::isnan(t));
const auto result = delta * (t * t * ((s + 1) * t + s) + 1);
Ensures(!std::isnan(result));
return result;
}; };
transition easeInCirc = [](const float64 &delta, const float64 &dt) { transition easeInCirc = [](const float64 &delta, const float64 &dt) {
return -delta * (sqrt(1 - dt * dt) - 1); Expects(!std::isnan(delta));
Expects(!std::isnan(dt));
const auto result = -delta * (sqrt(1 - dt * dt) - 1);
Ensures(!std::isnan(result));
return result;
}; };
transition easeOutCirc = [](const float64 &delta, const float64 &dt) { transition easeOutCirc = [](const float64 &delta, const float64 &dt) {
const float64 t = dt - 1; Expects(!std::isnan(delta));
return delta * sqrt(1 - t * t); Expects(!std::isnan(dt));
const auto t = dt - 1;
Assert(!std::isnan(t));
const auto result = delta * sqrt(1 - t * t);
Ensures(!std::isnan(result));
return result;
}; };
transition easeInCubic = [](const float64 &delta, const float64 &dt) { transition easeInCubic = [](const float64 &delta, const float64 &dt) {
return delta * dt * dt * dt; const auto result = delta * dt * dt * dt;
Ensures(!std::isnan(result));
return result;
}; };
transition easeOutCubic = [](const float64 &delta, const float64 &dt) { transition easeOutCubic = [](const float64 &delta, const float64 &dt) {
const float64 t = dt - 1; Expects(!std::isnan(delta));
return delta * (t * t * t + 1); Expects(!std::isnan(dt));
const auto t = dt - 1;
Assert(!std::isnan(t));
const auto result = delta * (t * t * t + 1);
Ensures(!std::isnan(result));
return result;
}; };
transition easeInQuint = [](const float64 &delta, const float64 &dt) { transition easeInQuint = [](const float64 &delta, const float64 &dt) {
const float64 t2 = dt * dt; Expects(!std::isnan(delta));
return delta * t2 * t2 * dt; Expects(!std::isnan(dt));
const auto t2 = dt * dt;
Assert(!std::isnan(t2));
const auto result = delta * t2 * t2 * dt;
Ensures(!std::isnan(result));
return result;
}; };
transition easeOutQuint = [](const float64 &delta, const float64 &dt) { transition easeOutQuint = [](const float64 &delta, const float64 &dt) {
const float64 t = dt - 1, t2 = t * t; Expects(!std::isnan(delta));
return delta * (t2 * t2 * t + 1); Expects(!std::isnan(dt));
const auto t = dt - 1, t2 = t * t;
Assert(!std::isnan(t));
Assert(!std::isnan(t2));
const auto result = delta * (t2 * t2 * t + 1);
Ensures(!std::isnan(result));
return result;
}; };
rpl::producer<bool> Disables() { rpl::producer<bool> Disables() {