00001 #include <cppunit/TestCaller.h>
00002 #include <cppunit/TestSuite.h>
00003 #include <cppunit/ui/text/TestRunner.h>
00004 #include <cppunit/extensions/HelperMacros.h>
00005 #include <cppunit/extensions/TestFactoryRegistry.h>
00006
00007 #include "../include/vamos/geometry/Three_Vector.h"
00008
00009 using namespace Vamos_Geometry;
00010
00011 class Null_Vector : public CppUnit::TestFixture {
00012 CPPUNIT_TEST_SUITE (Null_Vector);
00013 CPPUNIT_TEST (Zero_Length);
00014 CPPUNIT_TEST_SUITE_END ();
00015
00016 Three_Vector m_Vector;
00017
00018 public:
00019 void setUp () {}
00020 void tearDown () {}
00021
00022 void Zero_Length () {
00023 CPPUNIT_ASSERT (m_Vector.abs () == 0.0);
00024 }
00025 };
00026
00027 class Unit_Vectors : public CppUnit::TestFixture {
00028 CPPUNIT_TEST_SUITE (Unit_Vectors);
00029 CPPUNIT_TEST (dot_products);
00030 CPPUNIT_TEST (cross_products);
00031 CPPUNIT_TEST (add);
00032 CPPUNIT_TEST (subtract);
00033 CPPUNIT_TEST_SUITE_END ();
00034
00035 Three_Vector* mp_x;
00036 Three_Vector* mp_y;
00037 Three_Vector* mp_z;
00038
00039 public:
00040 void setUp () {
00041 mp_x = new Three_Vector (1.0, 0.0, 0.0);
00042 mp_y = new Three_Vector (0.0, 1.0, 0.0);
00043 mp_z = new Three_Vector (0.0, 0.0, 1.0);
00044 }
00045 void tearDown () {
00046 delete mp_x;
00047 delete mp_y;
00048 delete mp_z;
00049 }
00050
00051 void dot_products () {
00052 CPPUNIT_ASSERT (mp_x->dot (*mp_y) == 0.0);
00053 CPPUNIT_ASSERT (mp_x->dot (*mp_z) == 0.0);
00054 CPPUNIT_ASSERT (mp_y->dot (*mp_x) == 0.0);
00055 CPPUNIT_ASSERT (mp_y->dot (*mp_z) == 0.0);
00056 CPPUNIT_ASSERT (mp_z->dot (*mp_x) == 0.0);
00057 CPPUNIT_ASSERT (mp_z->dot (*mp_y) == 0.0);
00058 }
00059 void cross_products () {
00060 CPPUNIT_ASSERT (mp_x->cross (*mp_y) == *mp_z);
00061 CPPUNIT_ASSERT (mp_x->cross (*mp_z) == -*mp_y);
00062 CPPUNIT_ASSERT (mp_y->cross (*mp_x) == -*mp_z);
00063 CPPUNIT_ASSERT (mp_y->cross (*mp_z) == *mp_x);
00064 CPPUNIT_ASSERT (mp_z->cross (*mp_x) == *mp_y);
00065 CPPUNIT_ASSERT (mp_z->cross (*mp_y) == -*mp_x);
00066 }
00067 void add () {
00068 CPPUNIT_ASSERT (*mp_x + *mp_y + *mp_z == Three_Vector (1.0, 1.0, 1.0));
00069 }
00070 void subtract () {
00071 CPPUNIT_ASSERT (Three_Vector (1.0, 1.0, 1.0) - *mp_x - *mp_y == *mp_z);
00072 }
00073 };
00074
00075 class One_Two_Three : public CppUnit::TestFixture
00076 {
00077 CPPUNIT_TEST_SUITE (One_Two_Three);
00078 CPPUNIT_TEST (Negate);
00079 CPPUNIT_TEST_SUITE_END ();
00080
00081 Three_Vector* m_123;
00082
00083 public:
00084 void setUp () {
00085 m_123 = new Three_Vector (1.0, 2.0, 3.0);
00086 }
00087 void tearDown ()
00088 {
00089 delete m_123;
00090 }
00091
00092 void Negate ()
00093 {
00094 CPPUNIT_ASSERT (-*m_123 == Three_Vector (-1.0, -2.0, -3.0));
00095 }
00096 };
00097
00098 CPPUNIT_TEST_SUITE_REGISTRATION (Null_Vector);
00099 CPPUNIT_TEST_SUITE_REGISTRATION (Unit_Vectors);
00100 CPPUNIT_TEST_SUITE_REGISTRATION (One_Two_Three);
00101 int main ()
00102 {
00103 CppUnit::TextUi::TestRunner runner;
00104 runner.addTest (CppUnit::TestFactoryRegistry::getRegistry ().makeTest ());
00105 return !runner.run ();
00106 }