Página principal | Lista de namespace | Jerarquía de la clase | Lista de componentes | Lista de archivos | Miembros de las clases | Archivos de los miembros

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 
00015 /// Ambiente de prueba para la clase complicada para probar \c rational.
00016 /// - No es necesario definir el método \c tearDown() pues para este
00017 ///   caso específico \c TestFixture::tearDown() funciona bien.
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(); ///< Establece el ambiente de prueba
00024 }; // rational_TestFixture 
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 }; // rational_TestFixture
00039 
00040 /// Función principal del la prueba
00041 /// - Requiere que recién haya sido ejecutado \c setUp()
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     // Esto está aquí sólo para destrozar los valores de *this
00053     m_half = m_quarter = m_one = 0;
00054     return nError() == 0;
00055 }
00056 
00057 /// Clase para probar la resta de racionales.
00058 template <class INT>
00059 class rational_Test_Substract : public rational_TestFixture<INT> {
00060 public:
00061     bool run();
00062 }; // rational_TestFixture
00063 
00064 /// Función principal del la prueba
00065 /// - Requiere que recién haya sido ejecutado \c setUp()
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     // Esto está aquí sólo para destrozar los valores de *this
00078     m_half = m_quarter = m_one = 0;
00079     return nError() == 0;
00080 }
00081 
00082 /// Clase para probar la divicion de racionales.
00083 template <class INT>
00084 class rational_Test_Divicion : 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_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     // Esto está aquí sólo para destrozar los valores de *this
00103     m_half = m_quarter = m_one = 0;
00104     return nError() == 0;
00105 }
00106 
00107 /// Clase para probar la multiplicacion de racionales.
00108 template <class INT>
00109 class rational_Test_Multiplication : public rational_TestFixture<INT> {
00110 public:
00111     bool run();
00112 }; // rational_TestFixture
00113 
00114 /// Función principal del la prueba
00115 /// - Requiere que recién haya sido ejecutado \c setUp()
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     // Esto está aquí sólo para destrozar los valores de *this
00128     m_half = m_quarter = m_one = 0;
00129     return nError() == 0;
00130 }
00131 /// Programa principal desde donse se invocan todas las pruebas
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 // EOF: test_rational.cpp

Generado el Thu Sep 6 18:17:41 2007 para 952809 Tarea Programada #1 por  doxygen 1.4.1
Hosted by www.Geocities.ws

1