point.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. ///////////////////////////////////////////////////////////////////////////////
  2. // Name: tests/geometry/point.cpp
  3. // Purpose: wxPoint unit test
  4. // Author: Wlodzimierz ABX Skiba
  5. // Created: 2004-12-14
  6. // Copyright: (c) 2004 wxWindows
  7. ///////////////////////////////////////////////////////////////////////////////
  8. // ----------------------------------------------------------------------------
  9. // headers
  10. // ----------------------------------------------------------------------------
  11. #include "testprec.h"
  12. #ifdef __BORLANDC__
  13. #pragma hdrstop
  14. #endif
  15. #ifndef WX_PRECOMP
  16. #include "wx/gdicmn.h"
  17. #endif // WX_PRECOMP
  18. #include "wx/math.h"
  19. // ----------------------------------------------------------------------------
  20. // test class
  21. // ----------------------------------------------------------------------------
  22. class PointTestCase : public CppUnit::TestCase
  23. {
  24. public:
  25. PointTestCase() { }
  26. private:
  27. CPPUNIT_TEST_SUITE( PointTestCase );
  28. CPPUNIT_TEST( Operators );
  29. CPPUNIT_TEST_SUITE_END();
  30. void Operators();
  31. DECLARE_NO_COPY_CLASS(PointTestCase)
  32. };
  33. class RealPointTestCase : public CppUnit::TestCase
  34. {
  35. public:
  36. RealPointTestCase() { }
  37. private:
  38. CPPUNIT_TEST_SUITE( RealPointTestCase );
  39. CPPUNIT_TEST( Operators );
  40. CPPUNIT_TEST_SUITE_END();
  41. void Operators();
  42. DECLARE_NO_COPY_CLASS(RealPointTestCase)
  43. };
  44. // register in the unnamed registry so that these tests are run by default
  45. CPPUNIT_TEST_SUITE_REGISTRATION( PointTestCase );
  46. CPPUNIT_TEST_SUITE_REGISTRATION( RealPointTestCase );
  47. // also include in its own registry so that these tests can be run alone
  48. CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( PointTestCase, "PointTestCase" );
  49. CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( RealPointTestCase, "RealPointTestCase" );
  50. void PointTestCase::Operators()
  51. {
  52. wxPoint p1(1,2);
  53. wxPoint p2(6,3);
  54. wxPoint p3(7,5);
  55. wxPoint p4(5,1);
  56. wxPoint p5 = p2 + p1;
  57. wxPoint p6 = p2 - p1;
  58. CPPUNIT_ASSERT( p3.x == p5.x && p3.y == p5.y );
  59. CPPUNIT_ASSERT( p4.x == p6.x && p4.y == p6.y );
  60. CPPUNIT_ASSERT( p3 == p5 );
  61. CPPUNIT_ASSERT( p4 == p6 );
  62. CPPUNIT_ASSERT( p3 != p4 );
  63. p5 = p2; p5 += p1;
  64. p6 = p2; p6 -= p1;
  65. CPPUNIT_ASSERT( p3 == p5 );
  66. CPPUNIT_ASSERT( p4 == p6 );
  67. wxSize s(p1.x,p1.y);
  68. p5 = p2; p5 = p2 + s;
  69. p6 = p2; p6 = p2 - s;
  70. CPPUNIT_ASSERT( p3 == p5 );
  71. CPPUNIT_ASSERT( p4 == p6 );
  72. p5 = p2; p5 = s + p2;
  73. p6 = p2; p6 = s - p2;
  74. CPPUNIT_ASSERT( p3 == p5 );
  75. CPPUNIT_ASSERT( p4 == -p6 );
  76. p5 = p2; p5 += s;
  77. p6 = p2; p6 -= s;
  78. CPPUNIT_ASSERT( p3 == p5 );
  79. CPPUNIT_ASSERT( p4 == p6 );
  80. }
  81. void RealPointTestCase::Operators()
  82. {
  83. const double EPSILON = 0.00001;
  84. wxRealPoint p1(1.2,3.4);
  85. wxRealPoint p2(8.7,5.4);
  86. wxRealPoint p3(9.9,8.8);
  87. wxRealPoint p4(7.5,2.0);
  88. wxRealPoint p5 = p2 + p1;
  89. wxRealPoint p6 = p2 - p1;
  90. /*
  91. CPPUNIT_ASSERT( p3 == p5 );
  92. CPPUNIT_ASSERT( p4 == p6 );
  93. CPPUNIT_ASSERT( p3 != p4 );
  94. */
  95. CPPUNIT_ASSERT( fabs( p3.x - p5.x ) < EPSILON && fabs( p3.y - p5.y ) < EPSILON );
  96. CPPUNIT_ASSERT( fabs( p4.x - p6.x ) < EPSILON && fabs( p4.y - p6.y ) < EPSILON );
  97. }