00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "ADH_test.h"
00011 #include "rational.h"
00012
00013
00014
00015
00016
00017
00018 template <class INT>
00019 class rational_TestFixture : public TestCase {
00020 protected:
00021 rational<INT> m_half, m_quarter, m_one ,m_three, m_eight ;
00022 public:
00023 virtual void setUp();
00024 };
00025 template <class INT>
00026 void rational_TestFixture<INT>::setUp() {
00027 m_half.set(1,2);
00028 m_quarter.set(1,4);
00029 m_one.set(1);
00030 m_three.set(3);
00031 m_eight.set(8);
00032 }
00033
00034 template <class INT>
00035 class rational_Test_Add : public rational_TestFixture<INT> {
00036 public:
00037 bool run();
00038 };
00039
00040
00041
00042 template <class INT>
00043 bool rational_Test_Add<INT>::run() {
00044 assertTrue( m_half+m_quarter == rational<INT>(30,40) );
00045 assertTrue( rational<INT>(30,40) == m_quarter+m_half );
00046
00047 assertTrue( m_one+m_quarter == rational<INT>(125,100) );
00048 assertTrue( rational<INT>(125,100) == m_quarter+m_one );
00049
00050 assertTrue( rational<INT>(1,3) == rational<INT>(33,100) );
00051
00052
00053 m_half = m_quarter = m_one = 0;
00054 return nError() == 0;
00055 }
00056
00057
00058 template <class INT>
00059 class rational_Test_Substract : public rational_TestFixture<INT> {
00060 public:
00061 bool run();
00062 };
00063
00064
00065
00066 template <class INT>
00067 bool rational_Test_Substract<INT>::run() {
00068 assertTrue( m_half-m_quarter == rational<INT>(10,40) );
00069 assertTrue( rational<INT>(10,40) == -m_quarter+m_half );
00070
00071 assertTrue( m_one-m_quarter == rational<INT>(75,100) );
00072 assertTrue( rational<INT>(-75,100) == m_quarter-m_one );
00073
00074 assertEquals( rational<INT>(75,100) , m_quarter-m_one );
00075 assertTrue( rational<INT>(75,100) == m_one+m_quarter );
00076
00077
00078 m_half = m_quarter = m_one = 0;
00079 return nError() == 0;
00080 }
00081
00082
00083 template <class INT>
00084 class rational_Test_Divicion : public rational_TestFixture<INT> {
00085 public:
00086 bool run();
00087 };
00088
00089
00090
00091 template <class INT>
00092 bool rational_Test_Divicion<INT>::run() {
00093 assertTrue( m_half/m_quarter == rational<INT>(10,40) );
00094 assertTrue( rational<INT>(10,40) == -m_quarter/m_half );
00095
00096 assertTrue( -m_three/m_quarter == rational<INT>(75,100) );
00097 assertTrue( rational<INT>(160,60) == m_eight/m_three );
00098
00099 assertEquals( rational<INT>(75,100) , m_quarter/m_one );
00100 assertTrue( rational<INT>(75,100) == m_one/m_quarter );
00101
00102
00103 m_half = m_quarter = m_one = 0;
00104 return nError() == 0;
00105 }
00106
00107
00108 template <class INT>
00109 class rational_Test_Multiplication : public rational_TestFixture<INT> {
00110 public:
00111 bool run();
00112 };
00113
00114
00115
00116 template <class INT>
00117 bool rational_Test_Multiplication<INT>::run() {
00118 assertTrue( m_half * m_quarter == rational<INT>(10,40) );
00119 assertTrue( rational<INT>(4,32) == m_quarter * m_half );
00120
00121 assertTrue( m_one/m_quarter == rational<INT>(75,100) );
00122 assertTrue( rational<INT>(-75,100) == m_quarter * m_one );
00123
00124 assertEquals( rational<INT>(75,100) , m_quarter * m_one );
00125 assertTrue( rational<INT>(75,100) == m_one * m_quarter);
00126
00127
00128 m_half = m_quarter = m_one = 0;
00129 return nError() == 0;
00130 }
00131
00132
00133 int main() {
00134 rational_Test_Add<long> rational_Test_Add_Instance;
00135
00136 cout << endl << endl << "1) Prueba directa con \"TestFixture\"" << endl;
00137 rational_Test_Add_Instance.setUp();
00138 rational_Test_Add_Instance.run();
00139 Report(cout, rational_Test_Add_Instance);
00140 if (rational_Test_Add_Instance.nError() != 0 ) {
00141 cout << "El error" << endl << rational_Test_Add_Instance.toString();
00142 }
00143
00144 rational_Test_Substract<short> rational_Test_Substract_Instance;
00145 cout << endl << endl << "2) Prueba directa con \"TestFixture\"" << endl;
00146 rational_Test_Substract_Instance.setUp();
00147 rational_Test_Substract_Instance.run();
00148 Report(cout, rational_Test_Substract_Instance);
00149 if (rational_Test_Substract_Instance.nError() != 0 ) {
00150 cout << "El error" << endl << rational_Test_Substract_Instance.toString();
00151 }
00152
00153 rational_Test_Divicion<int> rational_Test_Divicion_Instance;
00154 cout << endl << endl << "2) Prueba directa con \"TestFixture\"" << endl;
00155 rational_Test_Divicion_Instance.setUp();
00156 rational_Test_Divicion_Instance.run();
00157 Report(cout, rational_Test_Divicion_Instance);
00158 if (rational_Test_Divicion_Instance.nError() != 0 ) {
00159 cout << "El error" << endl << rational_Test_Divicion_Instance.toString();
00160 }
00161
00162 rational_Test_Multiplication<long> rational_Test_Multiplication_Instance;
00163 cout << endl << endl << "2) Prueba directa con \"TestFixture\"" << endl;
00164 rational_Test_Multiplication_Instance.setUp();
00165 rational_Test_Multiplication_Instance.run();
00166 Report(cout, rational_Test_Multiplication_Instance);
00167 if (rational_Test_Multiplication_Instance.nError() != 0 ) {
00168 cout << "El error" << endl << rational_Test_Multiplication_Instance.toString();
00169 }
00170 cin.get();
00171 return 0;
00172 }
00173
00174