1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/ossrv/genericopenlibs/cppstdlib/stl/test/unit/heap_test.cpp Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,108 @@
1.4 +#include <vector>
1.5 +#include <algorithm>
1.6 +#include <functional>
1.7 +
1.8 +#include "cppunit/cppunit_proxy.h"
1.9 +
1.10 +#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
1.11 +using namespace std;
1.12 +#endif
1.13 +
1.14 +//
1.15 +// TestCase class
1.16 +//
1.17 +class HeapTest : public CPPUNIT_NS::TestCase
1.18 +{
1.19 + CPPUNIT_TEST_SUITE(HeapTest);
1.20 + CPPUNIT_TEST(mkheap0);
1.21 + CPPUNIT_TEST(mkheap1);
1.22 + CPPUNIT_TEST(pheap1);
1.23 + CPPUNIT_TEST(pheap2);
1.24 + CPPUNIT_TEST_SUITE_END();
1.25 +
1.26 +protected:
1.27 + void mkheap0();
1.28 + void mkheap1();
1.29 + void pheap1();
1.30 + void pheap2();
1.31 +};
1.32 +
1.33 +CPPUNIT_TEST_SUITE_REGISTRATION(HeapTest);
1.34 +
1.35 +//
1.36 +// tests implementation
1.37 +//
1.38 +void HeapTest::mkheap0()
1.39 +{
1.40 + int numbers[6] = { 5, 10, 4, 13, 11, 19 };
1.41 +
1.42 + make_heap(numbers, numbers + 6);
1.43 + CPPUNIT_ASSERT(numbers[0]==19)
1.44 + pop_heap(numbers, numbers + 6);
1.45 + CPPUNIT_ASSERT(numbers[0]==13)
1.46 + pop_heap(numbers, numbers + 5);
1.47 + CPPUNIT_ASSERT(numbers[0]==11)
1.48 + pop_heap(numbers, numbers + 4);
1.49 + CPPUNIT_ASSERT(numbers[0]==10)
1.50 + pop_heap(numbers, numbers + 3);
1.51 + CPPUNIT_ASSERT(numbers[0]==5)
1.52 + pop_heap(numbers, numbers + 2);
1.53 + CPPUNIT_ASSERT(numbers[0]==4)
1.54 + pop_heap(numbers, numbers + 1);
1.55 +}
1.56 +void HeapTest::mkheap1()
1.57 +{
1.58 + int numbers[6] = { 5, 10, 4, 13, 11, 19 };
1.59 +
1.60 + make_heap(numbers, numbers + 6, greater<int>());
1.61 +
1.62 + CPPUNIT_ASSERT(numbers[0]==4)
1.63 + pop_heap(numbers, numbers + 6, greater<int>());
1.64 + CPPUNIT_ASSERT(numbers[0]==5)
1.65 + pop_heap(numbers, numbers + 5, greater<int>());
1.66 + CPPUNIT_ASSERT(numbers[0]==10)
1.67 + pop_heap(numbers, numbers + 4, greater<int>());
1.68 + CPPUNIT_ASSERT(numbers[0]==11)
1.69 + pop_heap(numbers, numbers + 3, greater<int>());
1.70 + CPPUNIT_ASSERT(numbers[0]==13)
1.71 + pop_heap(numbers, numbers + 2, greater<int>());
1.72 + CPPUNIT_ASSERT(numbers[0]==19)
1.73 +}
1.74 +void HeapTest::pheap1()
1.75 +{
1.76 + vector<int> v;
1.77 +
1.78 + v.push_back(1);
1.79 + v.push_back(20);
1.80 + v.push_back(4);
1.81 + make_heap(v.begin(), v.end());
1.82 +
1.83 + v.push_back(7);
1.84 + push_heap(v.begin(), v.end());
1.85 +
1.86 + sort_heap(v.begin(), v.end());
1.87 +
1.88 + CPPUNIT_ASSERT(v[0]==1);
1.89 + CPPUNIT_ASSERT(v[1]==4);
1.90 + CPPUNIT_ASSERT(v[2]==7);
1.91 + CPPUNIT_ASSERT(v[3]==20);
1.92 +}
1.93 +void HeapTest::pheap2()
1.94 +{
1.95 + vector<int> v;
1.96 +
1.97 + v.push_back(1);
1.98 + v.push_back(20);
1.99 + v.push_back(4);
1.100 + make_heap(v.begin(), v.end(), greater<int>());
1.101 +
1.102 + v.push_back(7);
1.103 + push_heap(v.begin(), v.end(), greater<int>());
1.104 +
1.105 + sort_heap(v.begin(), v.end(), greater<int>());
1.106 +
1.107 + CPPUNIT_ASSERT(v[0]==20);
1.108 + CPPUNIT_ASSERT(v[1]==7);
1.109 + CPPUNIT_ASSERT(v[2]==4);
1.110 + CPPUNIT_ASSERT(v[3]==1);
1.111 +}