summaryrefslogtreecommitdiffstats
path: root/testfiles/src/object-set-test.cpp
diff options
context:
space:
mode:
authorAdrian Boguszewski <adrbogus1@student.pg.gda.pl>2016-06-09 14:42:57 +0000
committerAdrian Boguszewski <adrbogus1@student.pg.gda.pl>2016-06-09 14:42:57 +0000
commit1631af9372d932ac90d0fe02021d7056b7acbe76 (patch)
treecb9929d7fb6189bc4996dec76321419aa5d1f576 /testfiles/src/object-set-test.cpp
parentReplaced Object by SPObject (diff)
parentFix make test target (diff)
downloadinkscape-1631af9372d932ac90d0fe02021d7056b7acbe76.tar.gz
inkscape-1631af9372d932ac90d0fe02021d7056b7acbe76.zip
Splitted tests to separate executables
(bzr r14954.1.3)
Diffstat (limited to 'testfiles/src/object-set-test.cpp')
-rw-r--r--testfiles/src/object-set-test.cpp205
1 files changed, 205 insertions, 0 deletions
diff --git a/testfiles/src/object-set-test.cpp b/testfiles/src/object-set-test.cpp
new file mode 100644
index 000000000..ff341b162
--- /dev/null
+++ b/testfiles/src/object-set-test.cpp
@@ -0,0 +1,205 @@
+/*
+ * Multiindex container for selection
+ *
+ * Authors:
+ * Adrian Boguszewski
+ *
+ * Copyright (C) 2016 Adrian Boguszewski
+ *
+ * Released under GNU GPL, read the file 'COPYING' for more information
+ */
+#include <gtest/gtest.h>
+#include "object-set.h"
+#include "document.h"
+#include "xml/simple-document.h"
+
+class ObjectSetTest: public testing::Test {
+public:
+ ObjectSetTest() {
+ A = new SPObject();
+ B = new SPObject();
+ C = new SPObject();
+ D = new SPObject();
+ E = new SPObject();
+ F = new SPObject();
+ G = new SPObject();
+ H = new SPObject();
+ X = new SPObject();
+ }
+ ~ObjectSetTest() {
+ delete X;
+ delete H;
+ delete G;
+ delete F;
+ delete E;
+ delete D;
+ delete C;
+ delete B;
+ delete A;
+ }
+ SPObject* A;
+ SPObject* B;
+ SPObject* C;
+ SPObject* D;
+ SPObject* E;
+ SPObject* F;
+ SPObject* G;
+ SPObject* H;
+ SPObject* X;
+ ObjectSet set;
+ ObjectSet set2;
+};
+
+TEST_F(ObjectSetTest, Basics) {
+ EXPECT_EQ(0, set.size());
+ set.add(A);
+ EXPECT_EQ(1, set.size());
+ EXPECT_TRUE(set.contains(A));
+ set.add(B);
+ set.add(C);
+ EXPECT_EQ(3, set.size());
+ EXPECT_TRUE(set.contains(B));
+ EXPECT_TRUE(set.contains(C));
+ EXPECT_FALSE(set.contains(D));
+ EXPECT_FALSE(set.contains(X));
+ set.remove(A);
+ EXPECT_EQ(2, set.size());
+ EXPECT_FALSE(set.contains(A));
+ set.clear();
+ EXPECT_EQ(0, set.size());
+}
+
+TEST_F(ObjectSetTest, Autoremoving) {
+ SPObject* Q = new SPObject();
+ // TODO temporary
+ SPDocument *document = new SPDocument();
+ Inkscape::XML::Node *rroot = new Inkscape::XML::SimpleDocument();
+ Q->invoke_build(document, rroot, 0);
+ set.add(Q);
+ EXPECT_TRUE(set.contains(Q));
+ EXPECT_EQ(1, set.size());
+ Q->releaseReferences();
+ EXPECT_EQ(0, set.size());
+}
+
+TEST_F(ObjectSetTest, BasicDescendants) {
+ A->attach(B, nullptr);
+ B->attach(C, nullptr);
+ A->attach(D, nullptr);
+ bool resultB = set.add(B);
+ bool resultB2 = set.add(B);
+ EXPECT_TRUE(resultB);
+ EXPECT_FALSE(resultB2);
+ EXPECT_TRUE(set.contains(B));
+ bool resultC = set.add(C);
+ EXPECT_FALSE(resultC);
+ EXPECT_FALSE(set.contains(C));
+ EXPECT_EQ(1, set.size());
+ bool resultA = set.add(A);
+ EXPECT_TRUE(resultA);
+ EXPECT_EQ(1, set.size());
+ EXPECT_TRUE(set.contains(A));
+ EXPECT_FALSE(set.contains(B));
+}
+
+TEST_F(ObjectSetTest, AdvancedDescendants) {
+ A->attach(B, nullptr);
+ A->attach(C, nullptr);
+ A->attach(X, nullptr);
+ B->attach(D, nullptr);
+ B->attach(E, nullptr);
+ C->attach(F, nullptr);
+ C->attach(G, nullptr);
+ C->attach(H, nullptr);
+ set.add(A);
+// bool resultF = set.remove(F);
+// EXPECT_TRUE(resultF);
+ // TODO temporary
+ set.remove(F);
+ EXPECT_EQ(4, set.size());
+ EXPECT_FALSE(set.contains(F));
+ EXPECT_TRUE(set.contains(B));
+ EXPECT_TRUE(set.contains(G));
+ EXPECT_TRUE(set.contains(H));
+ EXPECT_TRUE(set.contains(X));
+ bool resultF2 = set.add(F);
+ EXPECT_TRUE(resultF2);
+ EXPECT_EQ(1, set.size());
+ EXPECT_TRUE(set.contains(A));
+}
+
+TEST_F(ObjectSetTest, Removing) {
+ A->attach(B, nullptr);
+ A->attach(C, nullptr);
+ A->attach(X, nullptr);
+ B->attach(D, nullptr);
+ B->attach(E, nullptr);
+ C->attach(F, nullptr);
+ C->attach(G, nullptr);
+ C->attach(H, nullptr);
+// bool removeH = set.remove(H);
+// EXPECT_FALSE(removeH);
+ // TODO temporary
+ set.remove(H);
+ set.add(A);
+// bool removeX = set.remove(X);
+// EXPECT_TRUE(removeX);
+ // TODO temporary
+ set.remove(X);
+ EXPECT_EQ(2, set.size());
+ EXPECT_TRUE(set.contains(B));
+ EXPECT_TRUE(set.contains(C));
+ EXPECT_FALSE(set.contains(X));
+ EXPECT_FALSE(set.contains(A));
+// bool removeX2 = set.remove(X);
+// EXPECT_FALSE(removeX2);
+ // TODO temporary
+ set.remove(X);
+ EXPECT_EQ(2, set.size());
+// bool removeA = set.remove(A);
+// EXPECT_FALSE(removeA);
+ // TODO temporary
+ set.remove(A);
+ EXPECT_EQ(2, set.size());
+// bool removeC = set.remove(C);
+// EXPECT_TRUE(removeC);
+ // TODO temporary
+ set.remove(C);
+ EXPECT_EQ(1, set.size());
+ EXPECT_TRUE(set.contains(B));
+ EXPECT_FALSE(set.contains(C));
+}
+
+TEST_F(ObjectSetTest, TwoSets) {
+ SPObject* Q = new SPObject();
+ // TODO temporary
+ SPDocument *document = new SPDocument();
+ Inkscape::XML::Node *rroot = new Inkscape::XML::SimpleDocument();
+ Q->invoke_build(document, rroot, 0);
+ A->attach(B, nullptr);
+ A->attach(Q, nullptr);
+ set.add(A);
+ set2.add(A);
+ EXPECT_EQ(1, set.size());
+ EXPECT_EQ(1, set2.size());
+ set.remove(B);
+ EXPECT_EQ(1, set.size());
+ EXPECT_TRUE(set.contains(Q));
+ EXPECT_EQ(1, set2.size());
+ EXPECT_TRUE(set2.contains(A));
+ Q->releaseReferences();
+ EXPECT_EQ(0, set.size());
+ EXPECT_EQ(1, set2.size());
+ EXPECT_TRUE(set2.contains(A));
+}
+
+TEST_F(ObjectSetTest, SetRemoving) {
+ ObjectSet *objectSet = new ObjectSet();
+ A->attach(B, nullptr);
+ objectSet->add(A);
+ objectSet->add(C);
+ EXPECT_EQ(2, objectSet->size());
+ delete objectSet;
+ EXPECT_STREQ(nullptr, A->getId());
+ EXPECT_STREQ(nullptr, C->getId());
+}