diff options
Diffstat (limited to 'lib/sanitizer_common/tests/sanitizer_common_test.cc')
-rw-r--r-- | lib/sanitizer_common/tests/sanitizer_common_test.cc | 97 |
1 files changed, 75 insertions, 22 deletions
diff --git a/lib/sanitizer_common/tests/sanitizer_common_test.cc b/lib/sanitizer_common/tests/sanitizer_common_test.cc index 576649cea359..0177484a55a8 100644 --- a/lib/sanitizer_common/tests/sanitizer_common_test.cc +++ b/lib/sanitizer_common/tests/sanitizer_common_test.cc @@ -39,37 +39,37 @@ TEST(SanitizerCommon, SortTest) { for (uptr i = 0; i < n; i++) { array[i] = i; } - SortArray(array, n); + Sort(array, n); EXPECT_TRUE(IsSorted(array, n)); // Reverse order. for (uptr i = 0; i < n; i++) { array[i] = n - 1 - i; } - SortArray(array, n); + Sort(array, n); EXPECT_TRUE(IsSorted(array, n)); // Mixed order. for (uptr i = 0; i < n; i++) { array[i] = (i % 2 == 0) ? i : n - 1 - i; } - SortArray(array, n); + Sort(array, n); EXPECT_TRUE(IsSorted(array, n)); // All equal. for (uptr i = 0; i < n; i++) { array[i] = 42; } - SortArray(array, n); + Sort(array, n); EXPECT_TRUE(IsSorted(array, n)); // All but one sorted. for (uptr i = 0; i < n - 1; i++) { array[i] = i; } array[n - 1] = 42; - SortArray(array, n); + Sort(array, n); EXPECT_TRUE(IsSorted(array, n)); // Minimal case - sort three elements. array[0] = 1; array[1] = 0; - SortArray(array, 2); + Sort(array, 2); EXPECT_TRUE(IsSorted(array, 2)); } @@ -88,25 +88,37 @@ TEST(SanitizerCommon, MmapAlignedOrDieOnFatalError) { } } -#if SANITIZER_LINUX -TEST(SanitizerCommon, SanitizerSetThreadName) { - const char *names[] = { - "0123456789012", - "01234567890123", - "012345678901234", // Larger names will be truncated on linux. - }; +TEST(SanitizerCommon, InternalMmapVectorRoundUpCapacity) { + InternalMmapVector<uptr> v; + v.reserve(1); + CHECK_EQ(v.capacity(), GetPageSizeCached() / sizeof(uptr)); +} - for (size_t i = 0; i < ARRAY_SIZE(names); i++) { - EXPECT_TRUE(SanitizerSetThreadName(names[i])); - char buff[100]; - EXPECT_TRUE(SanitizerGetThreadName(buff, sizeof(buff) - 1)); - EXPECT_EQ(0, internal_strcmp(buff, names[i])); - } +TEST(SanitizerCommon, InternalMmapVectorReize) { + InternalMmapVector<uptr> v; + CHECK_EQ(0U, v.size()); + CHECK_GE(v.capacity(), v.size()); + + v.reserve(1000); + CHECK_EQ(0U, v.size()); + CHECK_GE(v.capacity(), 1000U); + + v.resize(10000); + CHECK_EQ(10000U, v.size()); + CHECK_GE(v.capacity(), v.size()); + uptr cap = v.capacity(); + + v.resize(100); + CHECK_EQ(100U, v.size()); + CHECK_EQ(v.capacity(), cap); + + v.reserve(10); + CHECK_EQ(100U, v.size()); + CHECK_EQ(v.capacity(), cap); } -#endif TEST(SanitizerCommon, InternalMmapVector) { - InternalMmapVector<uptr> vector(1); + InternalMmapVector<uptr> vector; for (uptr i = 0; i < 100; i++) { EXPECT_EQ(i, vector.size()); vector.push_back(i); @@ -119,11 +131,52 @@ TEST(SanitizerCommon, InternalMmapVector) { vector.pop_back(); EXPECT_EQ((uptr)i, vector.size()); } - InternalMmapVector<uptr> empty_vector(0); + InternalMmapVector<uptr> empty_vector; CHECK_GT(empty_vector.capacity(), 0U); CHECK_EQ(0U, empty_vector.size()); } +TEST(SanitizerCommon, InternalMmapVectorEq) { + InternalMmapVector<uptr> vector1; + InternalMmapVector<uptr> vector2; + for (uptr i = 0; i < 100; i++) { + vector1.push_back(i); + vector2.push_back(i); + } + EXPECT_TRUE(vector1 == vector2); + EXPECT_FALSE(vector1 != vector2); + + vector1.push_back(1); + EXPECT_FALSE(vector1 == vector2); + EXPECT_TRUE(vector1 != vector2); + + vector2.push_back(1); + EXPECT_TRUE(vector1 == vector2); + EXPECT_FALSE(vector1 != vector2); + + vector1[55] = 1; + EXPECT_FALSE(vector1 == vector2); + EXPECT_TRUE(vector1 != vector2); +} + +TEST(SanitizerCommon, InternalMmapVectorSwap) { + InternalMmapVector<uptr> vector1; + InternalMmapVector<uptr> vector2; + InternalMmapVector<uptr> vector3; + InternalMmapVector<uptr> vector4; + for (uptr i = 0; i < 100; i++) { + vector1.push_back(i); + vector2.push_back(i); + vector3.push_back(-i); + vector4.push_back(-i); + } + EXPECT_NE(vector2, vector3); + EXPECT_NE(vector1, vector4); + vector1.swap(vector3); + EXPECT_EQ(vector2, vector3); + EXPECT_EQ(vector1, vector4); +} + void TestThreadInfo(bool main) { uptr stk_addr = 0; uptr stk_size = 0; |