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); +} +} +} | 
