ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

heap_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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.