diff options
| author | Adrian Boguszewski <adrbogus1@student.pg.gda.pl> | 2016-06-05 21:20:55 +0000 |
|---|---|---|
| committer | Adrian Boguszewski <adrbogus1@student.pg.gda.pl> | 2016-06-05 21:20:55 +0000 |
| commit | 9abb5e658d005b3ac82afeec13fd59384a8e65eb (patch) | |
| tree | a6bdcceacd73ff829dd54d891ac7dc3cf70273ee /test | |
| parent | [Bug #1545333] Convenience option (default: ON) for cmake builds to enable SV... (diff) | |
| download | inkscape-9abb5e658d005b3ac82afeec13fd59384a8e65eb.tar.gz inkscape-9abb5e658d005b3ac82afeec13fd59384a8e65eb.zip | |
Added object set
(bzr r14954.1.1)
Diffstat (limited to 'test')
| -rw-r--r-- | test/CMakeLists.txt | 11 | ||||
| -rw-r--r-- | test/src/object-set-test.cpp | 173 | ||||
| -rw-r--r-- | test/src/object-test.cpp | 56 |
3 files changed, 232 insertions, 8 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 8da39d627..26d3572e0 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -14,7 +14,6 @@ set_source_files_properties( ${CMAKE_BINARY_DIR}/src/inkscape-version.cpp PROPERTIES GENERATED TRUE) -# include_directories(${CMAKE_CURRENT_BINARY_DIR}/__/src) include_directories(${CMAKE_BINARY_DIR}/src) add_executable(unittest @@ -23,10 +22,10 @@ add_executable(unittest src/attributes-test.cpp src/color-profile-test.cpp src/dir-util-test.cpp + src/object-test.cpp + src/object-set-test.cpp ) -target_link_libraries(unittest inkscape_base) - add_dependencies(unittest inkscape_version) set (_optional_unittest_libs ) @@ -37,9 +36,7 @@ endif() target_link_libraries(unittest gmock_main - - # order from automake - #sp_LIB + inkscape_base #inkscape_LIB #sp_LIB # annoying, we need both! @@ -63,5 +60,3 @@ target_link_libraries(unittest add_test(BaseTest ${EXECUTABLE_OUTPUT_PATH}/unittest) add_dependencies(check unittest) - -# diff --git a/test/src/object-set-test.cpp b/test/src/object-set-test.cpp new file mode 100644 index 000000000..20d0c9474 --- /dev/null +++ b/test/src/object-set-test.cpp @@ -0,0 +1,173 @@ +#include <gtest/gtest.h> +#include "object-set.h" + +class ObjectSetTest: public testing::Test { +public: + ObjectSetTest() { + A = new Object("A"); + B = new Object("B"); + C = new Object("C"); + D = new Object("D"); + E = new Object("E"); + F = new Object("F"); + G = new Object("G"); + H = new Object("H"); + X = new Object("X"); + } + ~ObjectSetTest() { + delete X; + delete H; + delete G; + delete F; + delete E; + delete D; + delete C; + delete B; + delete A; + } + Object* A; + Object* B; + Object* C; + Object* D; + Object* E; + Object* F; + Object* G; + Object* H; + Object* 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) { + Object* Q = new Object("Q"); + set.add(Q); + EXPECT_TRUE(set.contains(Q)); + EXPECT_EQ(1, set.size()); + delete Q; + EXPECT_EQ(0, set.size()); +} + +TEST_F(ObjectSetTest, BasicDescendants) { + A->addChild(B); + B->addChild(C); + A->addChild(D); + 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->addChild(B); + A->addChild(C); + A->addChild(X); + B->addChild(D); + B->addChild(E); + C->addChild(F); + C->addChild(G); + C->addChild(H); + set.add(A); + bool resultF = set.remove(F); + EXPECT_TRUE(resultF); + 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->addChild(B); + A->addChild(C); + A->addChild(X); + B->addChild(D); + B->addChild(E); + C->addChild(F); + C->addChild(G); + C->addChild(H); + bool removeH = set.remove(H); + EXPECT_FALSE(removeH); + set.add(A); + bool removeX = set.remove(X); + EXPECT_TRUE(removeX); + 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); + EXPECT_EQ(2, set.size()); + bool removeA = set.remove(A); + EXPECT_FALSE(removeA); + EXPECT_EQ(2, set.size()); + bool removeC = set.remove(C); + EXPECT_TRUE(removeC); + EXPECT_EQ(1, set.size()); + EXPECT_TRUE(set.contains(B)); + EXPECT_FALSE(set.contains(C)); +} + +TEST_F(ObjectSetTest, TwoSets) { + Object* Q = new Object("Q"); + A->addChild(B); + A->addChild(Q); + 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)); + delete Q; + EXPECT_EQ(0, set.size()); + EXPECT_EQ(1, set2.size()); + EXPECT_TRUE(set2.contains(A)); +} + +TEST_F(ObjectSetTest, SetRemoving) { + ObjectSet *objectSet = new ObjectSet(); + A->addChild(B); + objectSet->add(A); + objectSet->add(C); + EXPECT_EQ(2, objectSet->size()); + delete objectSet; + EXPECT_EQ("A", A->getName()); + EXPECT_EQ("C", C->getName()); +} diff --git a/test/src/object-test.cpp b/test/src/object-test.cpp new file mode 100644 index 000000000..83e90b2ec --- /dev/null +++ b/test/src/object-test.cpp @@ -0,0 +1,56 @@ +#include "gtest/gtest.h" +#include "object.h" + +class ObjectTest: public testing::Test { +public: + ObjectTest() { + object = new Object("parent"); + childOfChild = new Object("childOfChild"); + child = new Object("child"); + child2 = new Object("child2"); + object2 = new Object("object2"); + child3 = new Object("child3"); + } + ~ObjectTest() { + delete child3; + delete child2; + delete childOfChild; + delete child; + delete object2; + delete object; + } + Object* object; + Object* object2; + Object* child; + Object* childOfChild; + Object* child2; + Object* child3; +}; + +TEST_F(ObjectTest, AddChild) { + EXPECT_EQ(0, object->getChildren().size()); + object->addChild(child); + EXPECT_EQ(1, object->getChildren().size()); + EXPECT_EQ(child, &(object->getChildren().front())); + EXPECT_EQ(object, child->getParent()); +} + +TEST_F(ObjectTest, IsDescendantOf) { + object->addChild(child); + child->addChild(childOfChild); + object->addChild(child2); + object2->addChild(child3); + EXPECT_TRUE(child->isDescendantOf(object)); + EXPECT_TRUE(childOfChild->isDescendantOf(child)); + EXPECT_TRUE(childOfChild->isDescendantOf(object)); + EXPECT_TRUE(child2->isDescendantOf(object)); + EXPECT_TRUE(child3->isDescendantOf(object2)); + EXPECT_FALSE(child->isDescendantOf(child2)); + EXPECT_FALSE(child2->isDescendantOf(child)); + EXPECT_FALSE(object->isDescendantOf(childOfChild)); + EXPECT_FALSE(object->isDescendantOf(child)); + EXPECT_FALSE(object->isDescendantOf(object2)); + EXPECT_FALSE(object2->isDescendantOf(object)); + EXPECT_FALSE(child2->isDescendantOf(child3)); + EXPECT_FALSE(child3->isDescendantOf(child2)); +} |
