diff options
author | Benjamin Paassen <bpaassen@techfak.uni-bielefeld.de> | 2014-12-17 11:44:36 +0100 |
---|---|---|
committer | Benjamin Paassen <bpaassen@techfak.uni-bielefeld.de> | 2014-12-17 11:44:36 +0100 |
commit | 6dd18a83a1f2c89c5bca435090c80d72cb8716e3 (patch) | |
tree | 7d982490cc45f9ef6f383850a71fa3ceb1ff3650 /test | |
parent | f1d768733c8b9166bbfb6943567b01b9d6fbcb15 (diff) |
First draft of Cardinality. There are still semantic improvements to be made, though.
Diffstat (limited to 'test')
-rw-r--r-- | test/core/model/CardinalityTest.cpp | 112 | ||||
-rw-r--r-- | test/core/model/DocumentTest.cpp | 32 |
2 files changed, 144 insertions, 0 deletions
diff --git a/test/core/model/CardinalityTest.cpp b/test/core/model/CardinalityTest.cpp new file mode 100644 index 0000000..34fa272 --- /dev/null +++ b/test/core/model/CardinalityTest.cpp @@ -0,0 +1,112 @@ +/* + Ousía + Copyright (C) 2014, 2015 Benjamin Paaßen, Andreas Stöckel + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include <gtest/gtest.h> + +#include <core/model/Cardinality.hpp> + +namespace ousia { +namespace model { +TEST(Cardinality, testCardinalities) +{ + // Start with the elementary Cardinalities. + { + SingleCardinality c{1}; + for (size_t s = 0; s < 100; s++) { + if (s != 1) { + ASSERT_FALSE(c.permits(s)); + } else { + ASSERT_TRUE(c.permits(s)); + } + } + } + + { + OpenRangeCardinality c{4}; + for (size_t s = 0; s < 100; s++) { + if (s < 4) { + ASSERT_FALSE(c.permits(s)); + } else { + ASSERT_TRUE(c.permits(s)); + } + } + } + + { + RangeCardinality c{1, 10}; + for (size_t s = 0; s < 100; s++) { + if (s < 1 || s > 10) { + ASSERT_FALSE(c.permits(s)); + } else { + ASSERT_TRUE(c.permits(s)); + } + } + } + + // Then construct more complex ones as unions. + + { + UnionCardinality c = + unite(SingleCardinality(1), + unite(RangeCardinality(4, 6), OpenRangeCardinality(16))); + for (size_t s = 0; s < 100; s++) { + if (s < 1 || (s > 1 && s < 4) || (s > 6 && s < 16)) { + ASSERT_FALSE(c.permits(s)); + } else { + ASSERT_TRUE(c.permits(s)); + } + } + } +} + +TEST(Cardinality, testEquals) +{ + { + SingleCardinality a{1}; + SingleCardinality b{2}; + OpenRangeCardinality c{1}; + + ASSERT_EQ(a, a); + ASSERT_EQ(SingleCardinality(1), a); + ASSERT_EQ(b, b); + ASSERT_EQ(c, c); + + ASSERT_FALSE(a == b); + ASSERT_FALSE(b == c); + ASSERT_FALSE(a == c); + } + + { + RangeCardinality a{1, 1}; + RangeCardinality b{1, 2}; + RangeCardinality c{2, 2}; + + ASSERT_EQ(a, a); + ASSERT_EQ(RangeCardinality(1, 1), a); + ASSERT_EQ(b, b); + ASSERT_EQ(c, c); + + ASSERT_FALSE(a == b); + // TODO: Here the semantics break down. It should be equal, in fact. + ASSERT_FALSE(a == SingleCardinality(1)); + ASSERT_FALSE(b == c); + ASSERT_FALSE(a == c); + } +} +} +} diff --git a/test/core/model/DocumentTest.cpp b/test/core/model/DocumentTest.cpp new file mode 100644 index 0000000..36e7c02 --- /dev/null +++ b/test/core/model/DocumentTest.cpp @@ -0,0 +1,32 @@ +/* + Ousía + Copyright (C) 2014, 2015 Benjamin Paaßen, Andreas Stöckel + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include <gtest/gtest.h> + +#include <core/model/Document.hpp> + +namespace ousia { +namespace model { +TEST(Document, testDocumentConstruction) +{ + // Start by constructing the domain. + //TODO: IMPLEMENT + ASSERT_TRUE(true); +} +} +} |