summaryrefslogtreecommitdiff
path: root/test/core
diff options
context:
space:
mode:
authorBenjamin Paassen <bpaassen@techfak.uni-bielefeld.de>2014-12-17 11:44:36 +0100
committerBenjamin Paassen <bpaassen@techfak.uni-bielefeld.de>2014-12-17 11:44:36 +0100
commit6dd18a83a1f2c89c5bca435090c80d72cb8716e3 (patch)
tree7d982490cc45f9ef6f383850a71fa3ceb1ff3650 /test/core
parentf1d768733c8b9166bbfb6943567b01b9d6fbcb15 (diff)
First draft of Cardinality. There are still semantic improvements to be made, though.
Diffstat (limited to 'test/core')
-rw-r--r--test/core/model/CardinalityTest.cpp112
-rw-r--r--test/core/model/DocumentTest.cpp32
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);
+}
+}
+}