TEST(OwnedTest, Share) { Foo* foo = new Foo(); foo->set(42); Owned<Foo> owned(foo); EXPECT_EQ(42, owned->get()); EXPECT_EQ(42, (*owned).get()); EXPECT_EQ(42, owned.get()->get()); Shared<Foo> shared = owned.share(); EXPECT_EQ(NULL, owned.get()); EXPECT_TRUE(shared.unique()); EXPECT_EQ(42, shared->get()); EXPECT_EQ(42, (*shared).get()); EXPECT_EQ(42, shared.get()->get()); { Shared<Foo> shared2(shared); EXPECT_EQ(42, shared2->get()); EXPECT_EQ(42, (*shared2).get()); EXPECT_EQ(42, shared2.get()->get()); EXPECT_FALSE(shared.unique()); EXPECT_FALSE(shared2.unique()); } EXPECT_TRUE(shared.unique()); }
int main() { Foo f = { }; cout << "\"" << f.toString() << "\"" << endl; f.set(); cout << "\"" << f.toString() << "\"" << endl; }
TEST(OwnedTest, Access) { Foo* foo = new Foo(); foo->set(42); Owned<Foo> owned(foo); EXPECT_EQ(42, owned->get()); EXPECT_EQ(42, (*owned).get()); EXPECT_EQ(42, owned.get()->get()); owned->set(10); EXPECT_EQ(10, owned->get()); EXPECT_EQ(10, (*owned).get()); EXPECT_EQ(10, owned.get()->get()); }
TEST(OwnedTest, Release) { Foo* foo = new Foo(); foo->set(42); Owned<Foo> owned(foo); EXPECT_EQ(42, owned->get()); EXPECT_EQ(42, (*owned).get()); EXPECT_EQ(42, owned.get()->get()); Foo* raw = owned.release(); EXPECT_EQ(NULL, owned.get()); EXPECT_EQ(42, raw->get()); delete raw; EXPECT_EQ(NULL, owned.get()); }
int main(){ Foo foo; int x; char c; foo.get(x); foo.get(c); cout << x << endl; cout << c << endl; foo.set('x'); foo.get(x); foo.get(c); cout << x << endl; cout << c << endl; return 0; }