1// Copyright (C) 2005, 2009 Free Software Foundation, Inc. 2// 3// This file is part of the GNU ISO C++ Library. This library is free 4// software; you can redistribute it and/or modify it under the 5// terms of the GNU General Public License as published by the 6// Free Software Foundation; either version 3, or (at your option) 7// any later version. 8 9// This library is distributed in the hope that it will be useful, 10// but WITHOUT ANY WARRANTY; without even the implied warranty of 11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12// GNU General Public License for more details. 13 14// You should have received a copy of the GNU General Public License along 15// with this library; see the file COPYING3. If not see 16// <http://www.gnu.org/licenses/>. 17 18// 25.3.2 [lib.alg.nth.element] 19 20#include <algorithm> 21#include <testsuite_hooks.h> 22#include <testsuite_iterators.h> 23 24using __gnu_test::test_container; 25using __gnu_test::random_access_iterator_wrapper; 26using std::nth_element; 27using std::partial_sort; 28 29typedef test_container<int, random_access_iterator_wrapper> Container; 30 31void 32test1() 33{ 34 int array[]={0}; 35 Container con(array, array); 36 partial_sort(con.begin(), con.begin(), con.end()); 37} 38 39void 40test2() 41{ 42 int array[]={2,1,0}; 43 Container con(array, array + 2); 44 partial_sort(con.begin(), con.begin(), con.end()); 45 partial_sort(con.begin(), con.end(), con.end()); 46} 47 48void 49test3() 50{ 51 bool test __attribute__((unused)) = true; 52 int array[] = {6, 5, 4, 3, 2, 1, 0}; 53 Container con(array, array + 7); 54 nth_element(con.begin(), con.it(3), con.end()); 55 for(int i = 0; i < 3; ++i) 56 VERIFY(array[i] < array[3]); 57 for(int i = 4; i < 7; ++i) 58 VERIFY(array[3] < array[i]); 59} 60 61void 62test4() 63{ 64 bool test __attribute__((unused)) = true; 65 int array[] = {0, 6, 1, 5, 2, 4, 3}; 66 Container con(array,array + 7); 67 nth_element(con.begin(), con.it(3), con.end()); 68 for(int i = 0; i < 3; ++i) 69 VERIFY(array[i] < array[3]); 70 for(int i = 4; i < 7; ++i) 71 VERIFY(array[3] < array[i]); 72} 73 74int 75main() 76{ 77 test1(); 78 test2(); 79 test3(); 80 test4(); 81} 82