// Copyright 2011 Google Inc. All Rights Reserved. #include "space.h" #include "common_test.h" #include "globals.h" #include "UniquePtr.h" namespace art { class SpaceTest : public CommonTest {}; TEST_F(SpaceTest, Init) { { // Less than UniquePtr space(Space::Create(16 * MB, 32 * MB, NULL)); EXPECT_TRUE(space.get() != NULL); } { // Equal to UniquePtr space(Space::Create(16 * MB, 16 * MB, NULL)); EXPECT_TRUE(space.get() != NULL); } { // Greater than UniquePtr space(Space::Create(32 * MB, 16 * MB, NULL)); EXPECT_TRUE(space.get() == NULL); } } TEST_F(SpaceTest, AllocAndFree) { UniquePtr space(Space::Create(4 * MB, 16 * MB, NULL)); ASSERT_TRUE(space.get() != NULL); // Succeeds, fits without adjusting the max allowed footprint. void* ptr1 = space->AllocWithoutGrowth(1 * MB); EXPECT_TRUE(ptr1 != NULL); // Fails, requires a higher allowed footprint. void* ptr2 = space->AllocWithoutGrowth(8 * MB); EXPECT_TRUE(ptr2 == NULL); // Succeeds, adjusts the footprint. void* ptr3 = space->AllocWithGrowth(8 * MB); EXPECT_TRUE(ptr3 != NULL); // Fails, requires a higher allowed footprint. void* ptr4 = space->AllocWithoutGrowth(8 * MB); EXPECT_FALSE(ptr4 != NULL); // Also fails, requires a higher allowed footprint. void* ptr5 = space->AllocWithGrowth(8 * MB); EXPECT_FALSE(ptr5 != NULL); // Release some memory. size_t free3 = space->Free(ptr3); EXPECT_LE(8U * MB, free3); // Succeeds, now that memory has been freed. void* ptr6 = space->AllocWithGrowth(9 * MB); EXPECT_TRUE(ptr6 != NULL); // Final clean up. size_t free1 = space->Free(ptr1); EXPECT_LE(1U * MB, free1); } } // namespace art