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