Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Oct 31, 2015, 11:50:17 PM (9 years ago)
Author:
landauf
Message:

fixed range based for-loop: ObjectList now returns an iterator
added tests and refactored construction of Iterator/IteratorBase/ObjectListIterator

Location:
code/branches/cpp11_v2/test/core
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • code/branches/cpp11_v2/test/core/CMakeLists.txt

    r10624 r10736  
    2525    object/ListableTest.cc
    2626    object/ObjectListBaseTest.cc
     27    object/ObjectListTest.cc
    2728    object/ObjectListIteratorTest.cc
    2829    object/StrongPtrTest.cc
  • code/branches/cpp11_v2/test/core/object/IteratorTest.cc

    r10624 r10736  
    8080            it->test();
    8181    }
     82
     83    TEST_F(IteratorTest, CanIterateOverInterfaceListWithInterfaceIterator)
     84    {
     85        TestClass testClass;
     86        TestInterface testInterface;
     87
     88        size_t i = 0;
     89        for (Iterator<TestInterface> it = ObjectList<TestInterface>::begin(); it != ObjectList<TestInterface>::end(); ++it)
     90        {
     91            ++i;
     92            if (i == 1u) EXPECT_EQ(&testClass, *it);
     93            if (i == 2u) EXPECT_EQ(&testInterface, *it);
     94        }
     95        EXPECT_EQ(2u, i);
     96    }
     97
     98    TEST_F(IteratorTest, CanIterateOverClassListWithClassIterator)
     99    {
     100        TestClass testClass;
     101        TestInterface testInterface;
     102
     103        size_t i = 0;
     104        for (Iterator<TestClass> it = ObjectList<TestClass>::begin(); it != ObjectList<TestClass>::end(); ++it)
     105        {
     106            ++i;
     107            if (i == 1u) EXPECT_EQ(&testClass, *it);
     108        }
     109        EXPECT_EQ(1u, i);
     110    }
     111
     112    TEST_F(IteratorTest, CanIterateOverInterfaceListWithClassIterator)
     113    {
     114        TestClass testClass;
     115        TestInterface testInterface;
     116
     117        size_t i = 0;
     118        for (Iterator<TestClass> it = ObjectList<TestInterface>::begin(); it != ObjectList<TestInterface>::end(); ++it)
     119        {
     120            ++i;
     121            if (i == 1u) EXPECT_EQ(&testClass, *it);
     122            if (i == 2u) EXPECT_EQ(NULL, *it);
     123        }
     124        EXPECT_EQ(2u, i);
     125    }
     126
     127    TEST_F(IteratorTest, CanIterateOverClassListWithInterfaceIterator)
     128    {
     129        TestClass testClass;
     130        TestInterface testInterface;
     131
     132        size_t i = 0;
     133        for (Iterator<TestInterface> it = ObjectList<TestClass>::begin(); it != ObjectList<TestClass>::end(); ++it)
     134        {
     135            ++i;
     136            if (i == 1u) EXPECT_EQ(&testClass, *it);
     137        }
     138        EXPECT_EQ(1u, i);
     139    }
    82140}
  • code/branches/cpp11_v2/test/core/object/ObjectListIteratorTest.cc

    r10624 r10736  
    33
    44#include "core/object/ObjectListIterator.h"
    5 #include "core/object/Listable.h"
     5#include "core/class/OrxonoxClass.h"
     6#include "core/class/OrxonoxInterface.h"
    67#include "core/CoreIncludes.h"
    78#include "core/module/ModuleInstance.h"
     
    1112    namespace
    1213    {
    13         class ListableTest : public Listable
     14        class TestInterface : virtual public OrxonoxInterface
    1415        {
    1516            public:
    16                 ListableTest() { RegisterObject(ListableTest); }
     17            TestInterface() { RegisterObject(TestInterface); }
     18        };
     19
     20        class TestClass : public OrxonoxClass, public TestInterface
     21        {
     22            public:
     23                TestClass() { RegisterObject(TestClass); }
    1724                MOCK_METHOD0(test, void());
    1825        };
    1926
    20         RegisterClassNoArgs(ListableTest);
     27        RegisterClassNoArgs(TestInterface);
     28        RegisterClassNoArgs(TestClass);
    2129
    2230        // Fixture
     
    4250    TEST_F(ObjectListIteratorTest, CanCreateIterator)
    4351    {
    44         ObjectListIterator<ListableTest> it;
     52        ObjectListIterator<TestClass> it;
    4553    }
    4654
    4755    TEST_F(ObjectListIteratorTest, CanAssignIterator)
    4856    {
    49         ObjectListIterator<ListableTest> it = ObjectList<ListableTest>::begin();
     57        ObjectListIterator<TestClass> it = ObjectList<TestClass>::begin();
    5058    }
    5159
     
    5361    {
    5462        size_t i = 0;
    55         for (ObjectListIterator<ListableTest> it = ObjectList<ListableTest>::begin(); it != ObjectList<ListableTest>::end(); ++it)
     63        for (ObjectListIterator<TestClass> it = ObjectList<TestClass>::begin(); it != ObjectList<TestClass>::end(); ++it)
    5664            ++i;
    5765        EXPECT_EQ(0u, i);
     
    6068    TEST_F(ObjectListIteratorTest, CanIterateOverFullList)
    6169    {
    62         ListableTest test1;
    63         ListableTest test2;
    64         ListableTest test3;
     70        TestClass test1;
     71        TestClass test2;
     72        TestClass test3;
     73        TestInterface interface;
    6574
    6675        size_t i = 0;
    67         for (ObjectListIterator<ListableTest> it = ObjectList<ListableTest>::begin(); it != ObjectList<ListableTest>::end(); ++it)
     76        for (ObjectListIterator<TestClass> it = ObjectList<TestClass>::begin(); it != ObjectList<TestClass>::end(); ++it)
    6877        {
    6978            ++i;
     
    7786    TEST_F(ObjectListIteratorTest, CanIterateReverseOverFullList)
    7887    {
    79         ListableTest test1;
    80         ListableTest test2;
    81         ListableTest test3;
     88        TestClass test1;
     89        TestClass test2;
     90        TestClass test3;
     91        TestInterface interface;
    8292
    8393        size_t i = 0;
    84         for (ObjectListIterator<ListableTest> it = ObjectList<ListableTest>::rbegin(); it != ObjectList<ListableTest>::rend(); --it)
     94        for (ObjectListIterator<TestClass> it = ObjectList<TestClass>::rbegin(); it != ObjectList<TestClass>::rend(); --it)
    8595        {
    8696            ++i;
     
    94104    TEST_F(ObjectListIteratorTest, CanCallObjects)
    95105    {
    96         ListableTest test1;
    97         ListableTest test2;
    98         ListableTest test3;
     106        TestClass test1;
     107        TestClass test2;
     108        TestClass test3;
     109        TestInterface interface;
    99110
    100111        EXPECT_CALL(test1, test());
     
    102113        EXPECT_CALL(test3, test());
    103114
    104         for (ObjectListIterator<ListableTest> it = ObjectList<ListableTest>::begin(); it != ObjectList<ListableTest>::end(); ++it)
     115        for (ObjectListIterator<TestClass> it = ObjectList<TestClass>::begin(); it != ObjectList<TestClass>::end(); ++it)
    105116            it->test();
    106117    }
Note: See TracChangeset for help on using the changeset viewer.