diff options
Diffstat (limited to 'lib/sanitizer_common/tests/sanitizer_common_test.cc')
-rw-r--r-- | lib/sanitizer_common/tests/sanitizer_common_test.cc | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/lib/sanitizer_common/tests/sanitizer_common_test.cc b/lib/sanitizer_common/tests/sanitizer_common_test.cc new file mode 100644 index 000000000000..91570dcc99e0 --- /dev/null +++ b/lib/sanitizer_common/tests/sanitizer_common_test.cc @@ -0,0 +1,66 @@ +//===-- sanitizer_common_test.cc ------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file is a part of ThreadSanitizer/AddressSanitizer runtime. +// +//===----------------------------------------------------------------------===// +#include "sanitizer_common/sanitizer_common.h" +#include "gtest/gtest.h" + +namespace __sanitizer { + +static bool IsSorted(const uptr *array, uptr n) { + for (uptr i = 1; i < n; i++) { + if (array[i] < array[i - 1]) return false; + } + return true; +} + +TEST(SanitizerCommon, SortTest) { + uptr array[100]; + uptr n = 100; + // Already sorted. + for (uptr i = 0; i < n; i++) { + array[i] = i; + } + SortArray(array, n); + EXPECT_TRUE(IsSorted(array, n)); + // Reverse order. + for (uptr i = 0; i < n; i++) { + array[i] = n - 1 - i; + } + SortArray(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); + EXPECT_TRUE(IsSorted(array, n)); + // All equal. + for (uptr i = 0; i < n; i++) { + array[i] = 42; + } + SortArray(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); + EXPECT_TRUE(IsSorted(array, n)); + // Minimal case - sort three elements. + array[0] = 1; + array[1] = 0; + SortArray(array, 2); + EXPECT_TRUE(IsSorted(array, 2)); +} + +} // namespace sanitizer |