Ejemplo n.º 1
0
TEST(ArenaTest, Initial) {
    Arena arena;

    arena.Reset();
    EXPECT_TRUE(arena.current_block() == NULL);
    EXPECT_EQ(0u, arena.total_reserved_bytes());

    EXPECT_TRUE(arena.remained_buffer() != NULL);
    EXPECT_TRUE(arena.current_block() != NULL);
    EXPECT_EQ(kMinBlockSize, arena.remained_buffer_size());
    EXPECT_EQ(kMinBlockSize, arena.total_reserved_bytes());

    arena.Reset();
    EXPECT_TRUE(arena.current_block() != NULL);
    EXPECT_EQ(kMinBlockSize, arena.total_reserved_bytes());
}
Ejemplo n.º 2
0
TEST(ArenaTest, AllocateBytes) {
    Arena arena;
    char* ptr = NULL;

    // allocate kMinBlockSize / 4 bytes
    ptr = arena.AllocateBytes(kMinBlockSize / 4);
    EXPECT_TRUE(ptr != NULL);
    EXPECT_EQ(arena.current_block(), ptr);
    EXPECT_EQ(kMinBlockSize, arena.total_reserved_bytes());

    EXPECT_EQ(arena.current_block() + kMinBlockSize / 4, arena.remained_buffer());
    EXPECT_EQ(kMinBlockSize - kMinBlockSize / 4, arena.remained_buffer_size());

    // allocate kMinBlockSize / 2 bytes
    ptr = arena.AllocateBytes(kMinBlockSize / 2);
    EXPECT_TRUE(ptr != NULL);
    EXPECT_EQ(arena.current_block() + kMinBlockSize / 4, ptr);
    EXPECT_EQ(kMinBlockSize, arena.total_reserved_bytes());

    EXPECT_EQ(arena.current_block() + kMinBlockSize * 3 / 4, arena.remained_buffer());
    EXPECT_EQ(kMinBlockSize / 4, arena.remained_buffer_size());

    // allocate kMinBlockSize bytes
    ptr = arena.AllocateBytes(kMinBlockSize);
    EXPECT_TRUE(ptr != NULL);
    EXPECT_EQ(arena.current_block(), ptr);
    EXPECT_EQ(kMinBlockSize * 3, arena.total_reserved_bytes());

    EXPECT_EQ(arena.current_block() + kMinBlockSize, arena.remained_buffer());
    EXPECT_EQ(kMinBlockSize, arena.remained_buffer_size());

    // reset
    arena.Reset();
    EXPECT_TRUE(arena.current_block() != NULL);
    EXPECT_EQ(kMinBlockSize, arena.total_reserved_bytes());
}