namespace {
-TEST(ZoneTableSegment, create) {
- const ElementPtr config = Element::fromJSON("{}");
- ZoneTableSegment* seg = ZoneTableSegment::create((*config.get()));
+class ZoneTableSegmentTest : public ::testing::Test {
+protected:
+ ZoneTableSegmentTest() :
+ config_(Element::fromJSON("{}")),
+ segment_(ZoneTableSegment::create((*config_.get())))
+ {}
- // By default, a local zone table segment is created.
- EXPECT_NE(static_cast<void*>(NULL), seg);
+ ~ZoneTableSegmentTest() {
+ if (segment_ != NULL) {
+ ZoneTableSegment::destroy(segment_);
+ }
+ }
+
+ void TearDown() {
+ // Catch any future leaks here.
+ const MemorySegment& mem_sgmt = segment_->getMemorySegment();
+ EXPECT_TRUE(mem_sgmt.allMemoryDeallocated());
+
+ ZoneTableSegment::destroy(segment_);
+ segment_ = NULL;
+ }
+
+ const ElementPtr config_;
+ ZoneTableSegment* segment_;
+};
- ZoneTableSegment::destroy(seg);
-}
-TEST(ZoneTableSegment, getHeader) {
- const ElementPtr config = Element::fromJSON("{}");
- ZoneTableSegment* seg = ZoneTableSegment::create((*config.get()));
+TEST_F(ZoneTableSegmentTest, create) {
+ // By default, a local zone table segment is created.
+ EXPECT_NE(static_cast<void*>(NULL), segment_);
+}
+TEST_F(ZoneTableSegmentTest, getHeader) {
// getHeader() should never return NULL.
- ZoneTableHeader* header = seg->getHeader();
+ ZoneTableHeader* header = segment_->getHeader();
EXPECT_NE(static_cast<void*>(NULL), header);
// The zone table is unset.
ZoneTable* table = header->getTable();
EXPECT_EQ(static_cast<void*>(NULL), table);
-
- ZoneTableSegment::destroy(seg);
}
-TEST(ZoneTableSegment, getMemorySegment) {
+TEST_F(ZoneTableSegmentTest, getMemorySegment) {
// This doesn't do anything fun except test the API.
- const ElementPtr config = Element::fromJSON("{}");
- ZoneTableSegment* seg = ZoneTableSegment::create((*config.get()));
-
- MemorySegment& mem_sgmt = seg->getMemorySegment();
+ MemorySegment& mem_sgmt = segment_->getMemorySegment();
EXPECT_TRUE(mem_sgmt.allMemoryDeallocated());
-
- ZoneTableSegment::destroy(seg);
}
} // anonymous namespace