aboutsummaryrefslogtreecommitdiff
path: root/lib/sanitizer_common/tests/sanitizer_common_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sanitizer_common/tests/sanitizer_common_test.cc')
-rw-r--r--lib/sanitizer_common/tests/sanitizer_common_test.cc97
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;