diff options
Diffstat (limited to 'test/std/algorithms/alg.sorting/alg.sort/partial.sort/partial_sort.pass.cpp')
-rw-r--r-- | test/std/algorithms/alg.sorting/alg.sort/partial.sort/partial_sort.pass.cpp | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/test/std/algorithms/alg.sorting/alg.sort/partial.sort/partial_sort.pass.cpp b/test/std/algorithms/alg.sorting/alg.sort/partial.sort/partial_sort.pass.cpp new file mode 100644 index 000000000000..7bb43461cba4 --- /dev/null +++ b/test/std/algorithms/alg.sorting/alg.sort/partial.sort/partial_sort.pass.cpp @@ -0,0 +1,63 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <algorithm> + +// template<RandomAccessIterator Iter> +// requires ShuffleIterator<Iter> +// && LessThanComparable<Iter::value_type> +// void +// partial_sort(Iter first, Iter middle, Iter last); + +#include <algorithm> +#include <cassert> + +void +test_larger_sorts(unsigned N, unsigned M) +{ + assert(N != 0); + int* array = new int[N]; + for (int i = 0; i < N; ++i) + array[i] = i; + std::random_shuffle(array, array+N); + std::partial_sort(array, array+M, array+N); + for (int i = 0; i < M; ++i) + assert(array[i] == i); + delete [] array; +} + +void +test_larger_sorts(unsigned N) +{ + test_larger_sorts(N, 0); + test_larger_sorts(N, 1); + test_larger_sorts(N, 2); + test_larger_sorts(N, 3); + test_larger_sorts(N, N/2-1); + test_larger_sorts(N, N/2); + test_larger_sorts(N, N/2+1); + test_larger_sorts(N, N-2); + test_larger_sorts(N, N-1); + test_larger_sorts(N, N); +} + +int main() +{ + int i = 0; + std::partial_sort(&i, &i, &i); + assert(i == 0); + test_larger_sorts(10); + test_larger_sorts(256); + test_larger_sorts(257); + test_larger_sorts(499); + test_larger_sorts(500); + test_larger_sorts(997); + test_larger_sorts(1000); + test_larger_sorts(1009); +} |