From 86c11ec222fed1a219002d00d3d14655ba29e907 Mon Sep 17 00:00:00 2001 From: Thomas Date: Tue, 11 Jul 2023 09:08:04 +0200 Subject: [PATCH] add relation enum to relation_t --- src/pardibaal/DBM.cpp | 2 ++ src/pardibaal/DBM.h | 4 ++++ test/DBM_test.cpp | 14 +++++++++++++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/pardibaal/DBM.cpp b/src/pardibaal/DBM.cpp index bb00527..82ae830 100644 --- a/src/pardibaal/DBM.cpp +++ b/src/pardibaal/DBM.cpp @@ -36,6 +36,8 @@ namespace pardibaal { relation_t relation_t::superset() {return relation_t(false, false, true, false);} relation_t relation_t::different() {return relation_t(false, false, false, true);} + relation_e relation_t::type() const {return is_equal() ? EQUAL : is_subset() ? SUBSET : is_superset() ? SUPERSET : DIFFERENT;} + bool relation_t::is_equal() const {return _is_equal;} bool relation_t::is_subset() const {return _is_subset;} bool relation_t::is_superset() const {return _is_superset;} diff --git a/src/pardibaal/DBM.h b/src/pardibaal/DBM.h index b0d30df..ac976b8 100644 --- a/src/pardibaal/DBM.h +++ b/src/pardibaal/DBM.h @@ -32,6 +32,8 @@ namespace pardibaal { class Federation; + + enum relation_e {EQUAL, SUBSET, SUPERSET, DIFFERENT}; /** * Relation struct * represents the relation between two DBMs. @@ -51,6 +53,8 @@ namespace pardibaal { [[nodiscard]] static relation_t superset(); [[nodiscard]] static relation_t different(); + [[nodiscard]] relation_e type() const; + [[nodiscard]] bool is_equal() const; [[nodiscard]] bool is_subset() const; [[nodiscard]] bool is_superset() const; diff --git a/test/DBM_test.cpp b/test/DBM_test.cpp index 2966f1e..e3c29f2 100644 --- a/test/DBM_test.cpp +++ b/test/DBM_test.cpp @@ -935,6 +935,7 @@ BOOST_AUTO_TEST_CASE(relation_test_3) { BOOST_CHECK(D2.is_superset(D1)); BOOST_CHECK(not D2.relation(D1).is_equal()); BOOST_CHECK(not D2.is_equal(D1)); + BOOST_CHECK(not D1.is_equal(D2)); D1.assign(1, 10); @@ -955,10 +956,21 @@ BOOST_AUTO_TEST_CASE(relation_test_4) { DBM a(1), b(1); a.future(); - BOOST_CHECK(a.is_equal(b)); } +BOOST_AUTO_TEST_CASE(relation_t_test_1) { + DBM a(10), b(10); + + a.future(); + + BOOST_CHECK(a.relation(b).type() == SUPERSET); + + b.future(); + + BOOST_CHECK(a.relation(b).type() == EQUAL); +} + BOOST_AUTO_TEST_CASE(intersects_test_1) { DBM dbm1(3); DBM dbm2(3);