test_utils.cpp (1428B)
1 #include "cubeb_utils.h" 2 #include "gtest/gtest.h" 3 4 TEST(cubeb, auto_array) 5 { 6 auto_array<uint32_t> array; 7 auto_array<uint32_t> array2(10); 8 uint32_t a[10]; 9 10 ASSERT_EQ(array2.length(), 0u); 11 ASSERT_EQ(array2.capacity(), 10u); 12 13 for (uint32_t i = 0; i < 10; i++) { 14 a[i] = i; 15 } 16 17 ASSERT_EQ(array.capacity(), 0u); 18 ASSERT_EQ(array.length(), 0u); 19 20 array.push(a, 10); 21 22 ASSERT_TRUE(!array.reserve(9)); 23 24 for (uint32_t i = 0; i < 10; i++) { 25 ASSERT_EQ(array.data()[i], i); 26 } 27 28 ASSERT_EQ(array.capacity(), 10u); 29 ASSERT_EQ(array.length(), 10u); 30 31 uint32_t b[10]; 32 33 array.pop(b, 5); 34 35 ASSERT_EQ(array.capacity(), 10u); 36 ASSERT_EQ(array.length(), 5u); 37 for (uint32_t i = 0; i < 5; i++) { 38 ASSERT_EQ(b[i], i); 39 ASSERT_EQ(array.data()[i], 5 + i); 40 } 41 uint32_t * bb = b + 5; 42 array.pop(bb, 5); 43 44 ASSERT_EQ(array.capacity(), 10u); 45 ASSERT_EQ(array.length(), 0u); 46 for (uint32_t i = 0; i < 5; i++) { 47 ASSERT_EQ(bb[i], 5 + i); 48 } 49 50 ASSERT_TRUE(!array.pop(nullptr, 1)); 51 52 array.push(a, 10); 53 array.push(a, 10); 54 55 for (uint32_t j = 0; j < 2; j++) { 56 for (uint32_t i = 0; i < 10; i++) { 57 ASSERT_EQ(array.data()[10 * j + i], i); 58 } 59 } 60 ASSERT_EQ(array.length(), 20u); 61 ASSERT_EQ(array.capacity(), 20u); 62 array.pop(nullptr, 5); 63 64 for (uint32_t i = 0; i < 5; i++) { 65 ASSERT_EQ(array.data()[i], 5 + i); 66 } 67 68 ASSERT_EQ(array.length(), 15u); 69 ASSERT_EQ(array.capacity(), 20u); 70 }