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