//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- TEST(ArrayTest, SetSizeZero) { FloatArray a; a.reserve(3); a.add(1.0f); a.add(3.3f); a.add(5.5f); float* before = a.ptr(); a.setSizeZero(); float* after = a.ptr(); ASSERT_EQ(before, after); ASSERT_EQ(0u, a.size()); ASSERT_TRUE(3 <= a.capacity()); a.add(1.1f); a.add(3.4f); a.add(5.6f); ASSERT_EQ(3u, a.size()); ASSERT_EQ(1.1f, a[0]); ASSERT_EQ(3.4f, a[1]); ASSERT_EQ(5.6f, a[2]); }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- TEST(ArrayTest, ReserveAndAdd) { FloatArray a; a.reserve(5); a.add(1.0f); a.add(3.3f); a.add(5.5f); ASSERT_EQ(3u, a.size()); ASSERT_TRUE(a.capacity() >= 5); ASSERT_EQ(1.0f, a[0]); ASSERT_EQ(3.3f, a[1]); ASSERT_EQ(5.5f, a[2]); // To test reuse of buffer float* before = a.ptr(); a.reserve(3); ASSERT_TRUE(a.capacity() >= 5); float* after = a.ptr(); // Check that no realloc has been done ASSERT_EQ(before, after); ASSERT_TRUE(a.capacity() >= 5); }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- TEST(ArrayTest, ReserveGrow) { FloatArray a; a.resize(3); a.set(0, 1.0f); a.set(1, 3.3f); a.set(2, 5.5f); float* before = a.ptr(); a.reserve(8); float* after = a.ptr(); a.add(2.2f); a.add(2.5f); ASSERT_NE(before, after); ASSERT_EQ(5u, a.size()); ASSERT_TRUE(a.capacity() >= 8); ASSERT_EQ(1.0f, a[0]); ASSERT_EQ(3.3f, a[1]); ASSERT_EQ(5.5f, a[2]); ASSERT_EQ(2.2f, a[3]); ASSERT_EQ(2.5f, a[4]); }