test_rational.cpp

Ir a la documentación de este archivo.
00001 // test_rational.cpp (C) 2006 [email protected]
00002 
00003 /** \file  test_rational.cpp
00004     \brief Programa de prueba para la clase \c rational
00005 
00006     \author Adolfo Di Mare <[email protected]>
00007     \date   2006
00008 */
00009 
00010 #include "ADH_test.h"
00011 #include "rational.h"
00012 
00013 
00014 /// Ambiente de prueba para la clase complicada para probar \c rational.
00015 /// - No es necesario definir el m�todo \c tearDown() pues para este
00016 ///   caso espec�fico \c TestFixture::tearDown() funciona bien.
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(); ///< Establece el ambiente de prueba
00023 }; // rational_TestFixture 
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 }; // rational_TestFixture
00038 
00039 /// Funci�n principal del la prueba
00040 /// - Requiere que reci�n haya sido ejecutado \c setUp()
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     // Esto est� aqu� s�lo para destrozar los valores de *this
00052     m_half = m_quarter = m_one = 0;
00053     return nError() == 0;
00054 }
00055 
00056 /// Clase para probar la resta de racionales.
00057 template <class INT>
00058 class rational_Test_Substract : public rational_TestFixture<INT> {
00059 public:
00060     bool run();
00061 }; // rational_TestFixture
00062 
00063 /// Funci�n principal del la prueba
00064 /// - Requiere que reci�n haya sido ejecutado \c setUp()
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     // Esto est� aqu� s�lo para destrozar los valores de *this
00077     m_half = m_quarter = m_one = 0;
00078     return nError() == 0;
00079 }
00080 
00081 
00082 /// Clase para probar la multiplicaci�n de racionales.
00083 template <class INT>
00084 class rational_Test_Multiply : public rational_TestFixture<INT> {
00085 public:
00086     bool run();
00087 }; // rational_TestFixture
00088 
00089 /// Funci�n principal del la prueba
00090 /// * Requiere que reci�n haya sido ejecutado \c setUp()
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     // Esto est� aqu� s�lo para destrozar los valores de *this
00102     m_half = m_quarter = m_one = 0;
00103     return nError() == 0;
00104 }
00105 
00106 /// Clase para probar la divisi�n de racionales.
00107 template <class INT>
00108 class rational_Test_Divide : public rational_TestFixture<INT> {
00109 public:
00110     bool run();
00111 }; // rational_TestFixture
00112 
00113 /// Funci�n principal del la prueba
00114 /// * Requiere que reci�n haya sido ejecutado \c setUp()
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     // Esto est� aqu� s�lo para destrozar los valores de *this
00126     m_half = m_quarter = m_one = 0;
00127     return nError() == 0;
00128 }
00129 
00130 /// Programa principal desde donse se invocan todas las pruebas
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 // EOF: test_rational.cpp

Generado el Thu Sep 6 23:18:36 2007 para Prueba de la clase rational: por  doxygen 1.5.3
Hosted by www.Geocities.ws

1