1 #define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN 2 #include <polyxx.h> 3 4 #include "doctest.h" 5 6 using namespace poly; 7 8 TEST_CASE("rational_interval::constructors") { 9 RationalInterval ri1; 10 CHECK(is_point(ri1)); 11 CHECK(get_point(ri1) == Rational(0)); 12 CHECK(get_lower(ri1) == Rational(0)); 13 CHECK(get_upper(ri1) == Rational(0)); 14 15 RationalInterval ri2(Rational(1)); 16 CHECK(is_point(ri2)); 17 CHECK(get_point(ri2) == Rational(1)); 18 CHECK(get_lower(ri2) == Rational(1)); 19 CHECK(get_upper(ri2) == Rational(1)); 20 21 RationalInterval ri3(Rational(1), Rational(2)); 22 CHECK_FALSE(is_point(ri3)); 23 CHECK(get_lower(ri3) == Rational(1)); 24 CHECK(get_upper(ri3) == Rational(2)); 25 } 26 27 TEST_CASE("rational_interval::contains_zero") { 28 CHECK_FALSE(contains_zero(RationalInterval(-2, -1))); 29 CHECK(contains_zero(RationalInterval(-1, 1))); 30 CHECK_FALSE(contains_zero(RationalInterval(1, 2))); 31 } 32 33 TEST_CASE("rational_interval::contains") { 34 CHECK_FALSE(contains(RationalInterval(1, 3), Rational(0))); 35 CHECK(contains(RationalInterval(1, 3), Rational(2))); 36 CHECK_FALSE(contains(RationalInterval(1, 3), Rational(4))); 37 38 CHECK_FALSE(contains(RationalInterval(1, 3), Value(Rational(0)))); 39 CHECK(contains(RationalInterval(1, 3), Value(Rational(2)))); 40 CHECK_FALSE(contains(RationalInterval(1, 3), Value(Rational(4)))); 41 } 42 43 TEST_CASE("rational_interval::sgn") { 44 CHECK(sgn(RationalInterval(-3, -2)) == -1); 45 CHECK(sgn(RationalInterval(-3, 0)) == -1); 46 CHECK(sgn(RationalInterval(-3, 2)) == 0); 47 CHECK(sgn(RationalInterval(0, 2)) == 1); 48 CHECK(sgn(RationalInterval(1, 2)) == 1); 49 } 50