summaryrefslogtreecommitdiff
path: root/test/core/CSSTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/core/CSSTest.cpp')
-rw-r--r--test/core/CSSTest.cpp270
1 files changed, 0 insertions, 270 deletions
diff --git a/test/core/CSSTest.cpp b/test/core/CSSTest.cpp
deleted file mode 100644
index 2d182a1..0000000
--- a/test/core/CSSTest.cpp
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- 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/CSS.hpp>
-
-namespace ousia {
-TEST(Specificity, testOperators)
-{
- Specificity s1{0, 0, 1};
- Specificity s2{0, 1, 1};
- Specificity s3{1, 1, 1};
- Specificity s4{0, 0, 2};
- Specificity s5{1, 0, 2};
-
- // This should be s1 < s4 < s2 < s5 < s3
-
- ASSERT_TRUE(s1 == s1);
- ASSERT_FALSE(s1 < s1);
- ASSERT_FALSE(s1 > s1);
- ASSERT_FALSE(s1 == s2);
- ASSERT_TRUE(s1 < s2);
- ASSERT_FALSE(s1 > s2);
- ASSERT_FALSE(s1 == s3);
- ASSERT_TRUE(s1 < s3);
- ASSERT_FALSE(s1 > s3);
- ASSERT_FALSE(s1 == s4);
- ASSERT_TRUE(s1 < s4);
- ASSERT_FALSE(s1 > s4);
- ASSERT_FALSE(s1 == s5);
- ASSERT_TRUE(s1 < s5);
- ASSERT_FALSE(s1 > s5);
-
- ASSERT_FALSE(s2 == s1);
- ASSERT_FALSE(s2 < s1);
- ASSERT_TRUE(s2 > s1);
- ASSERT_TRUE(s2 == s2);
- ASSERT_FALSE(s2 < s2);
- ASSERT_FALSE(s2 > s2);
- ASSERT_FALSE(s2 == s3);
- ASSERT_TRUE(s2 < s3);
- ASSERT_FALSE(s2 > s3);
- ASSERT_FALSE(s2 == s4);
- ASSERT_FALSE(s2 < s4);
- ASSERT_TRUE(s2 > s4);
- ASSERT_FALSE(s2 == s5);
- ASSERT_TRUE(s2 < s5);
- ASSERT_FALSE(s2 > s5);
-
- ASSERT_FALSE(s3 == s1);
- ASSERT_FALSE(s3 < s1);
- ASSERT_TRUE(s3 > s1);
- ASSERT_FALSE(s3 == s2);
- ASSERT_FALSE(s3 < s2);
- ASSERT_TRUE(s3 > s2);
- ASSERT_TRUE(s3 == s3);
- ASSERT_FALSE(s3 < s3);
- ASSERT_FALSE(s3 > s3);
- ASSERT_FALSE(s3 == s4);
- ASSERT_FALSE(s3 < s4);
- ASSERT_TRUE(s3 > s4);
- ASSERT_FALSE(s3 == s5);
- ASSERT_FALSE(s3 < s5);
- ASSERT_TRUE(s3 > s5);
-
- ASSERT_FALSE(s4 == s1);
- ASSERT_FALSE(s4 < s1);
- ASSERT_TRUE(s4 > s1);
- ASSERT_FALSE(s4 == s2);
- ASSERT_TRUE(s4 < s2);
- ASSERT_FALSE(s4 > s2);
- ASSERT_FALSE(s4 == s3);
- ASSERT_TRUE(s4 < s3);
- ASSERT_FALSE(s4 > s3);
- ASSERT_TRUE(s4 == s4);
- ASSERT_FALSE(s4 < s4);
- ASSERT_FALSE(s4 > s4);
- ASSERT_FALSE(s4 == s5);
- ASSERT_TRUE(s4 < s5);
- ASSERT_FALSE(s4 > s5);
-
- ASSERT_FALSE(s5 == s1);
- ASSERT_FALSE(s5 < s1);
- ASSERT_TRUE(s5 > s1);
- ASSERT_FALSE(s5 == s2);
- ASSERT_FALSE(s5 < s2);
- ASSERT_TRUE(s5 > s2);
- ASSERT_FALSE(s5 == s3);
- ASSERT_TRUE(s5 < s3);
- ASSERT_FALSE(s5 > s3);
- ASSERT_FALSE(s5 == s4);
- ASSERT_FALSE(s5 < s4);
- ASSERT_TRUE(s5 > s4);
- ASSERT_TRUE(s5 == s5);
- ASSERT_FALSE(s5 < s5);
- ASSERT_FALSE(s5 > s5);
-}
-
-TEST(SelectorNode, testGetChildren)
-{
- Manager mgr(1);
- // build some children.
- Rooted<SelectorNode> root{new SelectorNode{mgr, "root"}};
- Rooted<SelectorNode> A{new SelectorNode{mgr, "A"}};
- Rooted<SelectorNode> AMy_Select{
- new SelectorNode{mgr, "A", {"my_select", {"a", "b"}, false}}};
- Rooted<SelectorNode> B{new SelectorNode{mgr, "B"}};
-
- std::vector<Rooted<SelectorNode>> children = {A, AMy_Select, B};
-
- for (auto &c : children) {
- root->getEdges().push_back(new SelectorNode::SelectorEdge{mgr, c});
- }
- root->getEdges().push_back(new SelectorNode::SelectorEdge{
- mgr, B, SelectionOperator::DIRECT_DESCENDANT});
-
- // make some checks.
- std::vector<Rooted<SelectorNode>> expected = {A};
- std::vector<Rooted<SelectorNode>> actual =
- root->getChildren(SelectionOperator::DESCENDANT, "A", {"true", false});
- ASSERT_EQ(expected, actual);
-
- expected = {A, AMy_Select};
- actual = root->getChildren(SelectionOperator::DESCENDANT, "A");
- ASSERT_EQ(expected, actual);
- actual = root->getChildren("A");
- ASSERT_EQ(expected, actual);
-
- expected = {A, AMy_Select, B};
- actual = root->getChildren(SelectionOperator::DESCENDANT);
- ASSERT_EQ(expected, actual);
-
- expected = {B};
- actual = root->getChildren(SelectionOperator::DIRECT_DESCENDANT);
- ASSERT_EQ(expected, actual);
-
- expected = {B, B};
- actual = root->getChildren("B");
- ASSERT_EQ(expected, actual);
-
- {
- expected = {A, B, B};
- PseudoSelector select = {"true", false};
- actual = root->getChildren(select);
- ASSERT_EQ(expected, actual);
- }
-
- expected = {A, AMy_Select, B, B};
- actual = root->getChildren();
- ASSERT_EQ(expected, actual);
-}
-
-TEST(SelectorNode, testAppend)
-{
- Manager mgr(1);
- // build the root.
- Rooted<SelectorNode> root{new SelectorNode{mgr, "root"}};
- // append a child.
- Rooted<SelectorNode> A{new SelectorNode{mgr, "A"}};
- // this should work without any unmerged leafs.
- ASSERT_EQ(0U, (root->append(A)).size());
- /*
- * check the result. We expect the SelectorTree
- *
- * root
- * |
- * A
- */
- ASSERT_EQ(1U, (root->getEdges()).size());
- std::vector<Rooted<SelectorNode>> children = root->getChildren("A");
- ASSERT_EQ(1U, children.size());
- ASSERT_EQ(A, children[0]);
-
- // append another child.
- Rooted<SelectorNode> B{new SelectorNode{mgr, "B"}};
- ASSERT_EQ(0U, (root->append(B)).size());
- /*
- * check the result. We expect the SelectorTree
- *
- * root
- * | \
- * A B
- */
- ASSERT_EQ(2U, (root->getEdges()).size());
- children = root->getChildren("B");
- ASSERT_EQ(1U, children.size());
- ASSERT_EQ(B, children[0]);
-
- // append a grandchild using a path.
- Rooted<SelectorNode> C{new SelectorNode{mgr, "C"}};
- {
- Rooted<SelectorNode> pathA{new SelectorNode{mgr, "A"}};
- pathA->append(C);
-
- ASSERT_EQ(0U, (root->append(pathA)).size());
- }
- /*
- * check the result. We expect the SelectorTree
- *
- * root
- * | \
- * A B
- * |
- * C
- */
- ASSERT_EQ(2U, (root->getEdges()).size());
- children = root->getChildren("A");
- ASSERT_EQ(1U, children.size());
- ASSERT_EQ(1U, (children[0]->getEdges()).size());
- children = children[0]->getChildren("C");
- ASSERT_EQ(1U, children.size());
- ASSERT_EQ(C, children[0]);
-
- // append a subtree that is partially contained.
- Rooted<SelectorNode> D{new SelectorNode{mgr, "D"}};
- {
- Rooted<SelectorNode> pathA{new SelectorNode{mgr, "A"}};
- Rooted<SelectorNode> pathC{new SelectorNode{mgr, "C"}};
- pathA->append(pathC);
- pathA->append(D);
-
- // The C leaf can not be appended because it is already part of the
- // tree. So we expect that as a return value.
- std::vector<Rooted<SelectorNode>> unmergedLeafs = root->append(pathA);
- ASSERT_EQ(1U, unmergedLeafs.size());
- ASSERT_EQ(C.get(), unmergedLeafs[0].get());
- }
- /*
- * check the result. We expect the SelectorTree
- *
- * root
- * | \
- * A B
- * |\
- * C D
- */
- ASSERT_EQ(2U, (root->getEdges()).size());
- children = root->getChildren("A");
- ASSERT_EQ(1U, children.size());
- ASSERT_EQ(2U, (children[0]->getEdges()).size());
- children = children[0]->getChildren("D");
- ASSERT_EQ(1U, children.size());
- ASSERT_EQ(D, children[0]);
-
- // append a child with a non-trivial PseudoSelector.
- Rooted<SelectorNode> ASelect{
- new SelectorNode{mgr, "A", {"my_select", {"a", "b"}, false}}};
- ASSERT_EQ(0U, (root->append(ASelect)).size());
- ASSERT_EQ(3U, (root->getEdges()).size());
- children = root->getChildren("A");
- ASSERT_EQ(2U, children.size());
- ASSERT_EQ(ASelect, children[1]);
-}
-}