| Index: trunk/src/base/memory/scoped_ptr_unittest.cc
|
| ===================================================================
|
| --- trunk/src/base/memory/scoped_ptr_unittest.cc (revision 194652)
|
| +++ trunk/src/base/memory/scoped_ptr_unittest.cc (working copy)
|
| @@ -378,6 +378,82 @@
|
| EXPECT_EQ(0, constructed);
|
| }
|
|
|
| +TEST(ScopedPtrTest, ScopedArray) {
|
| + static const int kNumLoggers = 12;
|
| +
|
| + int constructed = 0;
|
| +
|
| + {
|
| + scoped_array<ConDecLogger> scoper(new ConDecLogger[kNumLoggers]);
|
| + EXPECT_TRUE(scoper.get());
|
| + EXPECT_EQ(&scoper[0], scoper.get());
|
| + for (int i = 0; i < kNumLoggers; ++i) {
|
| + scoper[i].SetPtr(&constructed);
|
| + }
|
| + EXPECT_EQ(12, constructed);
|
| +
|
| + EXPECT_EQ(10, scoper.get()->SomeMeth(10));
|
| + EXPECT_EQ(10, scoper[2].SomeMeth(10));
|
| + }
|
| + EXPECT_EQ(0, constructed);
|
| +
|
| + // Test reset() and release()
|
| + {
|
| + scoped_array<ConDecLogger> scoper;
|
| + EXPECT_FALSE(scoper.get());
|
| + EXPECT_FALSE(scoper.release());
|
| + EXPECT_FALSE(scoper.get());
|
| + scoper.reset();
|
| + EXPECT_FALSE(scoper.get());
|
| +
|
| + scoper.reset(new ConDecLogger[kNumLoggers]);
|
| + for (int i = 0; i < kNumLoggers; ++i) {
|
| + scoper[i].SetPtr(&constructed);
|
| + }
|
| + EXPECT_EQ(12, constructed);
|
| + scoper.reset();
|
| + EXPECT_EQ(0, constructed);
|
| +
|
| + scoper.reset(new ConDecLogger[kNumLoggers]);
|
| + for (int i = 0; i < kNumLoggers; ++i) {
|
| + scoper[i].SetPtr(&constructed);
|
| + }
|
| + EXPECT_EQ(12, constructed);
|
| + ConDecLogger* ptr = scoper.release();
|
| + EXPECT_EQ(12, constructed);
|
| + delete[] ptr;
|
| + EXPECT_EQ(0, constructed);
|
| + }
|
| + EXPECT_EQ(0, constructed);
|
| +
|
| + // Test swap(), ==, !=, and type-safe Boolean.
|
| + {
|
| + scoped_array<ConDecLogger> scoper1;
|
| + scoped_array<ConDecLogger> scoper2;
|
| + EXPECT_TRUE(scoper1 == scoper2.get());
|
| + EXPECT_FALSE(scoper1 != scoper2.get());
|
| +
|
| + ConDecLogger* loggers = new ConDecLogger[kNumLoggers];
|
| + for (int i = 0; i < kNumLoggers; ++i) {
|
| + loggers[i].SetPtr(&constructed);
|
| + }
|
| + scoper1.reset(loggers);
|
| + EXPECT_TRUE(scoper1);
|
| + EXPECT_EQ(loggers, scoper1.get());
|
| + EXPECT_FALSE(scoper2);
|
| + EXPECT_FALSE(scoper2.get());
|
| + EXPECT_FALSE(scoper1 == scoper2.get());
|
| + EXPECT_TRUE(scoper1 != scoper2.get());
|
| +
|
| + scoper2.swap(scoper1);
|
| + EXPECT_EQ(loggers, scoper2.get());
|
| + EXPECT_FALSE(scoper1.get());
|
| + EXPECT_FALSE(scoper1 == scoper2.get());
|
| + EXPECT_TRUE(scoper1 != scoper2.get());
|
| + }
|
| + EXPECT_EQ(0, constructed);
|
| +}
|
| +
|
| TEST(ScopedPtrTest, PassBehavior) {
|
| int constructed = 0;
|
| {
|
|
|