diff --git a/test/static/chrono_test.cpp b/test/static/chrono_test.cpp index 8c532390..fb2a531d 100644 --- a/test/static/chrono_test.cpp +++ b/test/static/chrono_test.cpp @@ -137,12 +137,24 @@ static_assert(std::chrono::nanoseconds(quantity{1 * ns}) == 1ns); static_assert(std::chrono::nanoseconds(quantity{1 * s}) == 1s); // operators +static_assert((1 * s += 1s) == 2 * s); +static_assert((2 * s -= 1s) == 1 * s); static_assert(quantity{1s} + 1 * s == 2 * s); static_assert(quantity{1s} + 1 * min == 61 * s); +static_assert(1 * s + quantity{1s} == 2 * s); +static_assert(1 * min + quantity{1s} == 61 * s); static_assert(10 * m / quantity{2s} == 5 * m / s); static_assert(quantity_point{sys_seconds{1s}} + 1 * s == chrono_point_origin + 2 * s); static_assert(quantity_point{sys_seconds{1s}} + 1 * min == chrono_point_origin + 61 * s); +template +consteval bool invalid_arithmetic(Ts... ts) +{ + return !requires { (... + ts); } && !requires { (... - ts); }; +} +static_assert(invalid_arithmetic(1s, 1 * s)); +static_assert(invalid_arithmetic(1 * s, 1s)); + // to_chrono_duration static_assert(to_chrono_duration(1 * s) == 1s); static_assert(to_chrono_duration(2 * h) == 2h);