Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Jan 17, 2016, 10:29:21 PM (8 years ago)
Author:
landauf
Message:

merged branch cpp11_v3 back to trunk

Location:
code/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • code/trunk

  • code/trunk/test/core/object/WeakPtrTest.cc

    r10624 r11071  
     1#include <utility>
    12#include <gtest/gtest.h>
    23#include <gmock/gmock.h>
     
    2425        WeakPtr<DestroyableTest> weakPtr = test;
    2526        EXPECT_EQ(test, weakPtr.get());
     27        EXPECT_EQ(test, &(*weakPtr));
     28        EXPECT_EQ(static_cast<Destroyable*>(test), weakPtr.getBase());
    2629        test->destroy();
    2730    }
     
    3336        EXPECT_EQ(test, weakPtr.get());
    3437        test->destroy();
    35         EXPECT_EQ(NULL, weakPtr.get());
     38        EXPECT_EQ(nullptr, weakPtr.get());
     39    }
     40
     41    TEST(WeakPtrTest, CanHaveMultiplePointers)
     42    {
     43        DestroyableTest* test = new DestroyableTest();
     44        WeakPtr<DestroyableTest> weakPtr1 = test;
     45        WeakPtr<DestroyableTest> weakPtr2 = test;
     46        WeakPtr<DestroyableTest> weakPtr3 = test;
     47        EXPECT_EQ(test, weakPtr1.get());
     48        EXPECT_EQ(test, weakPtr2.get());
     49        EXPECT_EQ(test, weakPtr3.get());
     50        test->destroy();
     51        EXPECT_EQ(nullptr, weakPtr1.get());
     52        EXPECT_EQ(nullptr, weakPtr2.get());
     53        EXPECT_EQ(nullptr, weakPtr3.get());
    3654    }
    3755
     
    4866    void isNull(const WeakPtr<DestroyableTest> weakPtr)
    4967    {
    50         EXPECT_TRUE(weakPtr == NULL);
    51         EXPECT_TRUE(weakPtr == 0);
     68        EXPECT_TRUE(weakPtr == nullptr);
     69        EXPECT_TRUE(weakPtr == nullptr);
    5270        EXPECT_TRUE(!weakPtr);
    53         EXPECT_FALSE(weakPtr != NULL);
    54         EXPECT_FALSE(weakPtr != 0);
     71        EXPECT_FALSE(weakPtr != nullptr);
     72        EXPECT_FALSE(weakPtr != nullptr);
    5573        EXPECT_FALSE(weakPtr);
    5674    }
     
    6381        }
    6482        {
    65             WeakPtr<DestroyableTest> weakPtr = NULL;
     83            WeakPtr<DestroyableTest> weakPtr = nullptr;
    6684            isNull(weakPtr);
    6785        }
    6886        {
    6987            WeakPtr<DestroyableTest> weakPtr;
    70             weakPtr = NULL;
    71             isNull(weakPtr);
    72         }
    73         {
    74             WeakPtr<DestroyableTest> weakPtr = 0;
     88            weakPtr = nullptr;
     89            isNull(weakPtr);
     90        }
     91        {
     92            WeakPtr<DestroyableTest> weakPtr = nullptr;
    7593            isNull(weakPtr);
    7694        }
    7795        {
    7896            WeakPtr<DestroyableTest> weakPtr;
    79             weakPtr = 0;
     97            weakPtr = nullptr;
    8098            isNull(weakPtr);
    8199        }
     
    86104        DestroyableTest* test = new DestroyableTest();
    87105        WeakPtr<DestroyableTest> weakPtr = test;
    88         EXPECT_FALSE(weakPtr == NULL);
    89         EXPECT_FALSE(weakPtr == 0);
     106        EXPECT_FALSE(weakPtr == nullptr);
     107        EXPECT_FALSE(weakPtr == nullptr);
    90108        EXPECT_FALSE(!weakPtr);
    91         EXPECT_TRUE(weakPtr != NULL);
    92         EXPECT_TRUE(weakPtr != 0);
     109        EXPECT_TRUE(weakPtr != nullptr);
     110        EXPECT_TRUE(weakPtr != nullptr);
    93111        EXPECT_TRUE(weakPtr);
    94112        test->destroy();
    95113    }
     114
     115    TEST(WeakPtrTest, TestConstructors)
     116    {
     117        DestroyableTest* test = new DestroyableTest();
     118
     119        // default
     120        WeakPtr<DestroyableTest> weakPtr1;
     121        EXPECT_EQ(nullptr, weakPtr1.get());
     122
     123        // pointer
     124        WeakPtr<DestroyableTest> weakPtr2a = test;
     125        WeakPtr<DestroyableTest> weakPtr2b(test);
     126        EXPECT_EQ(test, weakPtr2a.get());
     127        EXPECT_EQ(test, weakPtr2b.get());
     128
     129        // copy
     130        WeakPtr<DestroyableTest> weakPtr3a = weakPtr2a;
     131        WeakPtr<DestroyableTest> weakPtr3b(weakPtr2b);
     132        EXPECT_EQ(test, weakPtr3a.get());
     133        EXPECT_EQ(test, weakPtr3b.get());
     134
     135        // move
     136        WeakPtr<DestroyableTest> weakPtr4a = std::move(weakPtr3a);
     137        WeakPtr<DestroyableTest> weakPtr4b(std::move(weakPtr3b));
     138        EXPECT_EQ(test, weakPtr4a.get());
     139        EXPECT_EQ(test, weakPtr4b.get());
     140
     141        // other
     142        WeakPtr<Destroyable> weakPtr5a = weakPtr4a;
     143        WeakPtr<Destroyable> weakPtr5b(weakPtr4b);
     144        EXPECT_EQ(test, weakPtr5a.get());
     145        EXPECT_EQ(test, weakPtr5b.get());
     146
     147        test->destroy();
     148    }
     149
     150    TEST(WeakPtrTest, TestAssignments)
     151    {
     152        DestroyableTest* test = new DestroyableTest();
     153
     154        // pointer
     155        WeakPtr<DestroyableTest> weakPtr1;
     156        weakPtr1 = test;
     157        EXPECT_EQ(test, weakPtr1.get());
     158
     159        // copy
     160        WeakPtr<DestroyableTest> weakPtr2;
     161        weakPtr2 = weakPtr1;
     162        EXPECT_EQ(test, weakPtr2.get());
     163
     164        // move
     165        WeakPtr<DestroyableTest> weakPtr3;
     166        weakPtr3 = std::move(weakPtr2);
     167        EXPECT_EQ(test, weakPtr3.get());
     168
     169        // other
     170        WeakPtr<Destroyable> weakPtr4;
     171        weakPtr4 = weakPtr3;
     172        EXPECT_EQ(test, weakPtr4.get());
     173
     174        test->destroy();
     175    }
     176
     177    TEST(WeakPtrTest, TestWeakPtrInVector)
     178    {
     179        DestroyableTest* test = new DestroyableTest();
     180
     181        std::vector<WeakPtr<DestroyableTest>> vector;
     182        vector.push_back(test);
     183        vector.push_back(test);
     184        vector.push_back(test);
     185
     186        ASSERT_EQ(3, vector.size());
     187        EXPECT_EQ(test, vector[0].get());
     188        EXPECT_EQ(test, vector[1].get());
     189        EXPECT_EQ(test, vector[2].get());
     190
     191        test->destroy();
     192
     193        EXPECT_EQ(nullptr, vector[0].get());
     194        EXPECT_EQ(nullptr, vector[1].get());
     195        EXPECT_EQ(nullptr, vector[2].get());
     196    }
     197
     198    TEST(WeakPtrTest, TestReset)
     199    {
     200        DestroyableTest* test = new DestroyableTest();
     201        WeakPtr<DestroyableTest> weakPtr(test);
     202        EXPECT_EQ(test, weakPtr.get());
     203        weakPtr.reset();
     204        EXPECT_EQ(nullptr, weakPtr.get());
     205
     206        test->destroy();
     207    }
     208
     209    TEST(WeakPtrTest, TestSwap)
     210    {
     211        DestroyableTest* test1 = new DestroyableTest();
     212        DestroyableTest* test2 = new DestroyableTest();
     213
     214        WeakPtr<DestroyableTest> weakPtr1(test1);
     215        WeakPtr<DestroyableTest> weakPtr2(test2);
     216        EXPECT_EQ(test1, weakPtr1.get());
     217        EXPECT_EQ(test2, weakPtr2.get());
     218
     219        weakPtr1.swap(weakPtr2);
     220
     221        EXPECT_EQ(test2, weakPtr1.get());
     222        EXPECT_EQ(test1, weakPtr2.get());
     223
     224        test1->destroy();
     225        test2->destroy();
     226    }
    96227}
Note: See TracChangeset for help on using the changeset viewer.