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

rm_cp_test.cpp
Go to the documentation of this file.
00001 #include <vector>
00002 #include <algorithm>
00003 
00004 #include "cppunit/cppunit_proxy.h"
00005 
00006 #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
00007 using namespace std;
00008 #endif
00009 
00010 //
00011 // TestCase class
00012 //
00013 class RmCpTest : public CPPUNIT_NS::TestCase
00014 {
00015   CPPUNIT_TEST_SUITE(RmCpTest);
00016   CPPUNIT_TEST(remcopy1);
00017   CPPUNIT_TEST(remcpif1);
00018   CPPUNIT_TEST(remif1);
00019   CPPUNIT_TEST(remove1);
00020   CPPUNIT_TEST(repcpif1);
00021   CPPUNIT_TEST(replace0);
00022   CPPUNIT_TEST(replace1);
00023   CPPUNIT_TEST(replcpy1);
00024   CPPUNIT_TEST(replif1);
00025   CPPUNIT_TEST(revcopy1);
00026   CPPUNIT_TEST(reverse1);
00027   CPPUNIT_TEST_SUITE_END();
00028 
00029 protected:
00030   void remcopy1();
00031   void remcpif1();
00032   void remif1();
00033   void remove1();
00034   void repcpif1();
00035   void replace0();
00036   void replace1();
00037   void replcpy1();
00038   void replif1();
00039   void revcopy1();
00040   void reverse1();
00041 
00042 };
00043 
00044 CPPUNIT_TEST_SUITE_REGISTRATION(RmCpTest);
00045 
00046 static bool odd(int a_)
00047 {
00048   return (a_ % 2) != 0;
00049 }
00050 //
00051 // tests implementation
00052 //
00053 
00054 void RmCpTest::reverse1()
00055 {
00056   int numbers[6] = { 0, 1, 2, 3, 4, 5 };
00057 
00058   reverse(numbers, numbers + 6);
00059   CPPUNIT_ASSERT(numbers[0]==5);
00060   CPPUNIT_ASSERT(numbers[1]==4);
00061   CPPUNIT_ASSERT(numbers[2]==3);
00062   CPPUNIT_ASSERT(numbers[3]==2);
00063   CPPUNIT_ASSERT(numbers[4]==1);
00064   CPPUNIT_ASSERT(numbers[5]==0);
00065 }
00066 
00067 void RmCpTest::revcopy1()
00068 {
00069   int numbers[6] = { 0, 1, 2, 3, 4, 5 };
00070 
00071   int result[6];
00072   reverse_copy((int*)numbers, (int*)numbers + 6, (int*)result);
00073   // 5 4 3 2 1 0
00074   CPPUNIT_ASSERT(result[0]==5);
00075   CPPUNIT_ASSERT(result[1]==4);
00076   CPPUNIT_ASSERT(result[2]==3);
00077   CPPUNIT_ASSERT(result[3]==2);
00078   CPPUNIT_ASSERT(result[4]==1);
00079   CPPUNIT_ASSERT(result[5]==0);
00080 }
00081 
00082 void RmCpTest::replif1()
00083 {
00084   vector <int> v1(10);
00085   for (int i = 0; (size_t)i < v1.size(); ++i)
00086     v1[i] = i % 5;
00087 
00088   replace_if(v1.begin(), v1.end(), odd, 42);
00089 
00090   // 0 42 2 42 4 0 42 2 42 4
00091   CPPUNIT_ASSERT(v1[0]==0);
00092   CPPUNIT_ASSERT(v1[1]==42);
00093   CPPUNIT_ASSERT(v1[2]==2);
00094   CPPUNIT_ASSERT(v1[3]==42);
00095   CPPUNIT_ASSERT(v1[4]==4);
00096   CPPUNIT_ASSERT(v1[5]==0);
00097   CPPUNIT_ASSERT(v1[6]==42);
00098   CPPUNIT_ASSERT(v1[7]==2);
00099   CPPUNIT_ASSERT(v1[8]==42);
00100   CPPUNIT_ASSERT(v1[9]==4);
00101 }
00102 
00103 void RmCpTest::replcpy1()
00104 {
00105   int numbers[6] = { 0, 1, 2, 0, 1, 2 };
00106   int result[6] = { 0, 0, 0, 0, 0, 0 };
00107 
00108   replace_copy((int*)numbers, (int*)numbers + 6, (int*)result, 2, 42);
00109   CPPUNIT_ASSERT(result[0]==0);
00110   CPPUNIT_ASSERT(result[1]==1);
00111   CPPUNIT_ASSERT(result[2]==42);
00112   CPPUNIT_ASSERT(result[3]==0);
00113   CPPUNIT_ASSERT(result[4]==1);
00114   CPPUNIT_ASSERT(result[5]==42);
00115 }
00116 
00117 void RmCpTest::replace0()
00118 {
00119   int numbers[6] = { 0, 1, 2, 0, 1, 2 };
00120 
00121   replace(numbers, numbers + 6, 2, 42);
00122 
00123   // 0 1 42 0 1 42
00124   CPPUNIT_ASSERT(numbers[0]==0);
00125   CPPUNIT_ASSERT(numbers[1]==1);
00126   CPPUNIT_ASSERT(numbers[2]==42);
00127   CPPUNIT_ASSERT(numbers[3]==0);
00128   CPPUNIT_ASSERT(numbers[4]==1);
00129   CPPUNIT_ASSERT(numbers[5]==42);
00130 }
00131 
00132 void RmCpTest::replace1()
00133 {
00134   vector <int> v1(10);
00135   for (int i = 0; (size_t)i < v1.size(); ++i)
00136     v1[i] = i % 5;
00137   replace(v1.begin(), v1.end(), 2, 42);
00138 
00139   // 0 1 2 3 4 0 1 2 3 4
00140   // 0 1 42 3 4 0 1 42 3 4
00141   CPPUNIT_ASSERT(v1[0]==0);
00142   CPPUNIT_ASSERT(v1[1]==1);
00143   CPPUNIT_ASSERT(v1[2]==42);
00144   CPPUNIT_ASSERT(v1[3]==3);
00145   CPPUNIT_ASSERT(v1[4]==4);
00146   CPPUNIT_ASSERT(v1[5]==0);
00147   CPPUNIT_ASSERT(v1[6]==1);
00148   CPPUNIT_ASSERT(v1[7]==42);
00149   CPPUNIT_ASSERT(v1[8]==3);
00150   CPPUNIT_ASSERT(v1[9]==4);
00151 }
00152 
00153 void RmCpTest::repcpif1()
00154 {
00155   vector <int> v1(10);
00156   for (int i = 0; (size_t)i < v1.size(); ++i)
00157     v1[i] = i % 5;
00158   vector <int> v2(v1.size());
00159 
00160   // 0 1 2 3 4 0 1 2 3 4
00161   // 0 1 2 3 4 0 1 2 3 4
00162   // 0 42 2 42 4 0 42 2 42 4
00163   replace_copy_if(v1.begin(), v1.end(), v2.begin(), odd, 42);
00164   CPPUNIT_ASSERT(v1[0]==0);
00165   CPPUNIT_ASSERT(v1[1]==1);
00166   CPPUNIT_ASSERT(v1[2]==2);
00167   CPPUNIT_ASSERT(v1[3]==3);
00168   CPPUNIT_ASSERT(v1[4]==4);
00169   CPPUNIT_ASSERT(v1[5]==0);
00170   CPPUNIT_ASSERT(v1[6]==1);
00171   CPPUNIT_ASSERT(v1[7]==2);
00172   CPPUNIT_ASSERT(v1[8]==3);
00173   CPPUNIT_ASSERT(v1[9]==4);
00174 
00175   CPPUNIT_ASSERT(v2[0]==0);
00176   CPPUNIT_ASSERT(v2[1]==42);
00177   CPPUNIT_ASSERT(v2[2]==2);
00178   CPPUNIT_ASSERT(v2[3]==42);
00179   CPPUNIT_ASSERT(v2[4]==4);
00180   CPPUNIT_ASSERT(v2[5]==0);
00181   CPPUNIT_ASSERT(v2[6]==42);
00182   CPPUNIT_ASSERT(v2[7]==2);
00183   CPPUNIT_ASSERT(v2[8]==42);
00184   CPPUNIT_ASSERT(v2[9]==4);
00185 }
00186 
00187 void RmCpTest::remove1()
00188 {
00189   int numbers[6] = { 1, 2, 3, 1, 2, 3 };
00190   remove((int*)numbers, (int*)numbers + 6, 1);
00191 
00192   // 2 3 2 3 2 3
00193   CPPUNIT_ASSERT(numbers[0]==2);
00194   CPPUNIT_ASSERT(numbers[1]==3);
00195   CPPUNIT_ASSERT(numbers[2]==2);
00196   CPPUNIT_ASSERT(numbers[3]==3);
00197   CPPUNIT_ASSERT(numbers[4]==2);
00198   CPPUNIT_ASSERT(numbers[5]==3);
00199 }
00200 
00201 void RmCpTest::remif1()
00202 {
00203   int numbers[6] = { 0, 0, 1, 1, 2, 2 };
00204 
00205   remove_if((int*)numbers, (int*)numbers + 6, odd);
00206 
00207   // 0 0 2 2 2 2
00208   CPPUNIT_ASSERT(numbers[0]==0);
00209   CPPUNIT_ASSERT(numbers[1]==0);
00210   CPPUNIT_ASSERT(numbers[2]==2);
00211   CPPUNIT_ASSERT(numbers[3]==2);
00212   CPPUNIT_ASSERT(numbers[4]==2);
00213   CPPUNIT_ASSERT(numbers[5]==2);
00214 }
00215 
00216 void RmCpTest::remcopy1()
00217 {
00218   int numbers[6] = { 1, 2, 3, 1, 2, 3 };
00219   int result[6] = { 0, 0, 0, 0, 0, 0 };
00220 
00221   remove_copy((int*)numbers, (int*)numbers + 6, (int*)result, 2);
00222 
00223   CPPUNIT_ASSERT(result[0]==1);
00224   CPPUNIT_ASSERT(result[1]==3);
00225   CPPUNIT_ASSERT(result[2]==1);
00226   CPPUNIT_ASSERT(result[3]==3);
00227   CPPUNIT_ASSERT(result[4]==0);
00228   CPPUNIT_ASSERT(result[5]==0);
00229 }
00230 
00231 void RmCpTest::remcpif1()
00232 {
00233   int numbers[6] = { 1, 2, 3, 1, 2, 3 };
00234   int result[6] = { 0, 0, 0, 0, 0, 0 };
00235 
00236   remove_copy_if((int*)numbers, (int*)numbers + 6, (int*)result, odd);
00237 
00238   // 2 2 0 0 0 0
00239   CPPUNIT_ASSERT(result[0]==2);
00240   CPPUNIT_ASSERT(result[1]==2);
00241   CPPUNIT_ASSERT(result[2]==0);
00242   CPPUNIT_ASSERT(result[3]==0);
00243   CPPUNIT_ASSERT(result[4]==0);
00244   CPPUNIT_ASSERT(result[5]==0);
00245 }

Generated on Sun May 27 2012 04:35:44 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.