sanitizer_common_test.cc revision 0dc3177d6c54fafb9577254a93b2f3c4169129d7
1//===-- sanitizer_common_test.cc ------------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file is a part of ThreadSanitizer/AddressSanitizer runtime. 11// 12//===----------------------------------------------------------------------===// 13#include "sanitizer_common/sanitizer_common.h" 14#include "gtest/gtest.h" 15 16namespace __sanitizer { 17 18static bool IsSorted(const uptr *array, uptr n) { 19 for (uptr i = 1; i < n; i++) { 20 if (array[i] < array[i - 1]) return false; 21 } 22 return true; 23} 24 25TEST(SanitizerCommon, SortTest) { 26 uptr array[100]; 27 uptr n = 100; 28 // Already sorted. 29 for (uptr i = 0; i < n; i++) { 30 array[i] = i; 31 } 32 SortArray(array, n); 33 EXPECT_TRUE(IsSorted(array, n)); 34 // Reverse order. 35 for (uptr i = 0; i < n; i++) { 36 array[i] = n - 1 - i; 37 } 38 SortArray(array, n); 39 EXPECT_TRUE(IsSorted(array, n)); 40 // Mixed order. 41 for (uptr i = 0; i < n; i++) { 42 array[i] = (i % 2 == 0) ? i : n - 1 - i; 43 } 44 SortArray(array, n); 45 EXPECT_TRUE(IsSorted(array, n)); 46 // All equal. 47 for (uptr i = 0; i < n; i++) { 48 array[i] = 42; 49 } 50 SortArray(array, n); 51 EXPECT_TRUE(IsSorted(array, n)); 52 // All but one sorted. 53 for (uptr i = 0; i < n - 1; i++) { 54 array[i] = i; 55 } 56 array[n - 1] = 42; 57 SortArray(array, n); 58 EXPECT_TRUE(IsSorted(array, n)); 59 // Minimal case - sort three elements. 60 array[0] = 1; 61 array[1] = 0; 62 SortArray(array, 2); 63 EXPECT_TRUE(IsSorted(array, 2)); 64} 65 66} // namespace sanitizer 67