예제 #1
0
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());
}
예제 #2
0
파일: stdFill.cpp 프로젝트: nodakai/exp
int main()
{
    Foo f = { };

    cout << "\"" << f.toString() << "\"" << endl;

    f.set();

    cout << "\"" << f.toString() << "\"" << endl;
}
예제 #3
0
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());
}
예제 #4
0
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());
}
예제 #5
0
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;
}