Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenheap_test.cpp
Go to the documentation of this file.
00001 #include <vector> 00002 #include <algorithm> 00003 #include <functional> 00004 00005 #include "cppunit/cppunit_proxy.h" 00006 00007 #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) 00008 using namespace std; 00009 #endif 00010 00011 // 00012 // TestCase class 00013 // 00014 class HeapTest : public CPPUNIT_NS::TestCase 00015 { 00016 CPPUNIT_TEST_SUITE(HeapTest); 00017 CPPUNIT_TEST(mkheap0); 00018 CPPUNIT_TEST(mkheap1); 00019 CPPUNIT_TEST(pheap1); 00020 CPPUNIT_TEST(pheap2); 00021 CPPUNIT_TEST_SUITE_END(); 00022 00023 protected: 00024 void mkheap0(); 00025 void mkheap1(); 00026 void pheap1(); 00027 void pheap2(); 00028 }; 00029 00030 CPPUNIT_TEST_SUITE_REGISTRATION(HeapTest); 00031 00032 // 00033 // tests implementation 00034 // 00035 void HeapTest::mkheap0() 00036 { 00037 int numbers[6] = { 5, 10, 4, 13, 11, 19 }; 00038 00039 make_heap(numbers, numbers + 6); 00040 CPPUNIT_ASSERT(numbers[0]==19) 00041 pop_heap(numbers, numbers + 6); 00042 CPPUNIT_ASSERT(numbers[0]==13) 00043 pop_heap(numbers, numbers + 5); 00044 CPPUNIT_ASSERT(numbers[0]==11) 00045 pop_heap(numbers, numbers + 4); 00046 CPPUNIT_ASSERT(numbers[0]==10) 00047 pop_heap(numbers, numbers + 3); 00048 CPPUNIT_ASSERT(numbers[0]==5) 00049 pop_heap(numbers, numbers + 2); 00050 CPPUNIT_ASSERT(numbers[0]==4) 00051 pop_heap(numbers, numbers + 1); 00052 } 00053 void HeapTest::mkheap1() 00054 { 00055 int numbers[6] = { 5, 10, 4, 13, 11, 19 }; 00056 00057 make_heap(numbers, numbers + 6, greater<int>()); 00058 00059 CPPUNIT_ASSERT(numbers[0]==4) 00060 pop_heap(numbers, numbers + 6, greater<int>()); 00061 CPPUNIT_ASSERT(numbers[0]==5) 00062 pop_heap(numbers, numbers + 5, greater<int>()); 00063 CPPUNIT_ASSERT(numbers[0]==10) 00064 pop_heap(numbers, numbers + 4, greater<int>()); 00065 CPPUNIT_ASSERT(numbers[0]==11) 00066 pop_heap(numbers, numbers + 3, greater<int>()); 00067 CPPUNIT_ASSERT(numbers[0]==13) 00068 pop_heap(numbers, numbers + 2, greater<int>()); 00069 CPPUNIT_ASSERT(numbers[0]==19) 00070 } 00071 void HeapTest::pheap1() 00072 { 00073 vector<int> v; 00074 00075 v.push_back(1); 00076 v.push_back(20); 00077 v.push_back(4); 00078 make_heap(v.begin(), v.end()); 00079 00080 v.push_back(7); 00081 push_heap(v.begin(), v.end()); 00082 00083 sort_heap(v.begin(), v.end()); 00084 00085 CPPUNIT_ASSERT(v[0]==1); 00086 CPPUNIT_ASSERT(v[1]==4); 00087 CPPUNIT_ASSERT(v[2]==7); 00088 CPPUNIT_ASSERT(v[3]==20); 00089 } 00090 void HeapTest::pheap2() 00091 { 00092 vector<int> v; 00093 00094 v.push_back(1); 00095 v.push_back(20); 00096 v.push_back(4); 00097 make_heap(v.begin(), v.end(), greater<int>()); 00098 00099 v.push_back(7); 00100 push_heap(v.begin(), v.end(), greater<int>()); 00101 00102 sort_heap(v.begin(), v.end(), greater<int>()); 00103 00104 CPPUNIT_ASSERT(v[0]==20); 00105 CPPUNIT_ASSERT(v[1]==7); 00106 CPPUNIT_ASSERT(v[2]==4); 00107 CPPUNIT_ASSERT(v[3]==1); 00108 } Generated on Fri May 25 2012 04:33:53 for ReactOS by
1.7.6.1
|