int main( int coreid ) { if( coreid == 0 ) { return count0(); } else if( coreid == 1 ) { return count1(); } return 0; }
TEST(Pointer, SPtr) { static int count = 0; struct counter { counter() { ++count; } ~counter() { --count; } void nop() {} }; struct counter_inherit : counter {}; { util::sptr<counter> count0(new counter); ASSERT_TRUE(count0.not_nul()); ASSERT_TRUE((*count0).not_nul()); ASSERT_EQ(1, count); util::sref<counter> refcount0 = *count0; util::sptr<counter> count1(std::move(count0)); ASSERT_EQ(1, count); util::sref<counter> refcount1 = *count1; ASSERT_EQ(refcount0.id().str(), refcount1.id().str()); ASSERT_EQ(refcount0.id().str(), count1.id().str()); ASSERT_TRUE(count0.nul()); ASSERT_TRUE((*count0).nul()); util::sptr<counter_inherit> count2(new counter_inherit); count1 = std::move(count2); ASSERT_EQ(1, count); util::sptr<counter_inherit> count3(new counter_inherit); ASSERT_EQ(2, count); util::sptr<counter> count4(std::move(count3)); count4->nop(); } ASSERT_EQ(0, count); }
void ScopeGuardTestCase::BlockExitObj() { Counter count0(1), count1(2), count2(3); { wxON_BLOCK_EXIT_OBJ0(count0, Counter::Zero); wxON_BLOCK_EXIT_OBJ1(count1, Counter::Set, 17); wxON_BLOCK_EXIT_OBJ2(count2, Counter::Sum, 2, 3); CPPUNIT_ASSERT_EQUAL( 1, count0.GetCount() ); CPPUNIT_ASSERT_EQUAL( 2, count1.GetCount() ); CPPUNIT_ASSERT_EQUAL( 3, count2.GetCount() ); } CPPUNIT_ASSERT_EQUAL( 0, count0.GetCount() ); CPPUNIT_ASSERT_EQUAL( 17, count1.GetCount() ); CPPUNIT_ASSERT_EQUAL( 5, count2.GetCount() ); }