xref: /haiku/src/tests/kits/interface/bpolygon/CreatePolygonTest.cpp (revision 13581b3d2a71545960b98fefebc5225b5bf29072)
1 /*
2 	$Id: CreatePolygonTest.cpp 2067 2002-11-23 04:42:57Z jrand $
3 
4 	This file contains the implementation of the tests which show
5 	that BPolygons can be created successfully a number of
6 	different ways.  The following use cases are tested:
7 		- Construction 1
8 		- Construction 2
9 		- Construction 3
10 		- Destruction
11 		- Add Points
12 		- Count Points
13 		- Frame
14 		- Assignment Operator
15 
16 	*/
17 
18 
19 #include "CreatePolygonTest.h"
20 #include "DummyPolygon.h"
21 #include <Point.h>
22 #include <Rect.h>
23 #include <Polygon.h>
24 
25 #include <assert.h>
26 
27 
28 /*
29  *  Method:  CreatePolygonTest::CreatePolygonTest()
30  *   Descr:  This is the constructor for this class.
31  */
32 
33 
34 	CreatePolygonTest::CreatePolygonTest(std::string name) :
35 		TestCase(name)
36 {
37 	}
38 
39 
40 /*
41  *  Method:  CreatePolygonTest::~CreatePolygonTest()
42  *   Descr:  This is the destructor for this class.
43  */
44 
45 
46 	CreatePolygonTest::~CreatePolygonTest()
47 {
48 	}
49 
50 
51 /*
52  *  Method:  CreatePolygonTest::polygonMatches()
53  *   Descr:  This member function compares the passed in polygon to the
54  *           set of points and the expected frame rectangle.
55  */
56 
57 void CreatePolygonTest::polygonMatches(BPolygon *srcPoly, const BPoint *pointArray,
58                                        int numPoints, const BRect expectedFrame)
59 {
60 	assert(numPoints == srcPoly->CountPoints());
61 	assert(expectedFrame == srcPoly->Frame());
62 
63 	const BPoint *srcPointArray = ((DummyPolygon *)srcPoly)->GetPoints();
64 	int i;
65 	for(i = 0; i < numPoints; i++) {
66 		assert(srcPointArray[i] == pointArray[i]);
67 	}
68 }
69 
70 
71 /*
72  *  Method:  CreatePolygonTest::PerformTest()
73  *   Descr:  This member function tests the creation of BPolygon's.
74  *
75  *           The code does the following:
76  *             - creates an array of points to test with
77  *             - creates five polygons which should all be the same but in
78  *               different ways:
79  *                  1. By passing the point array in the constructor
80  *                  2. By using the copy constructor from the first polygon
81  *                  3. By using the AddPoints() member to add points to an
82  *                     empty polygon
83  *                  4. By using the assignment operator to replace an existing
84  *                     polygon with a copy of the one from 1
85  *                  5. By adding three points from the array on the constructor
86  *                     and then adding th remaining points using the AddPoints()
87  *                     member.
88  *              - In each case, the polygonMatches() member is called to make
89  *                sure the polygon is what is expected.
90  */
91 
92 
93 	void CreatePolygonTest::PerformTest(void)
94 {
95 	const int numPoints = 7;
96 	BPoint pointArray[numPoints];
97 	pointArray[0].x =  0.0;  pointArray[0].y = 10.0;
98 	pointArray[1].x = 10.0;  pointArray[1].y =  0.0;
99 	pointArray[2].x = 10.0;  pointArray[2].y =  5.0;
100 	pointArray[3].x = 30.0;  pointArray[3].y =  5.0;
101 	pointArray[4].x = 30.0;  pointArray[4].y = 15.0;
102 	pointArray[5].x = 10.0;  pointArray[5].y = 15.0;
103 	pointArray[6].x = 10.0;  pointArray[6].y = 20.0;
104 	BRect pointArrayFrame(0.0, 0.0, 30.0, 20.0);
105 
106 	BPolygon testPoly1(pointArray, numPoints);
107 	polygonMatches(&testPoly1, pointArray, numPoints, pointArrayFrame);
108 
109 	BPolygon testPoly2(&testPoly1);
110 	polygonMatches(&testPoly2, pointArray, numPoints, pointArrayFrame);
111 
112 	BPolygon testPoly3;
113 	testPoly3.AddPoints(pointArray, numPoints);
114 	polygonMatches(&testPoly3, pointArray, numPoints, pointArrayFrame);
115 
116 	BPolygon testPoly4;
117 	testPoly4.AddPoints(&pointArray[2], 2);
118 	testPoly4 = testPoly1;
119 	polygonMatches(&testPoly4, pointArray, numPoints, pointArrayFrame);
120 
121 	BPolygon testPoly5(pointArray, 3);
122 	testPoly5.AddPoints(&pointArray[3], numPoints - 3);
123 	polygonMatches(&testPoly5, pointArray, numPoints, pointArrayFrame);
124 }
125 
126 
127 /*
128  *  Method:  PropertyConstructionTest::suite()
129  *   Descr:  This static member function returns a test caller for performing
130  *           all combinations of "CreatePolygonTest".
131  */
132 
133  Test *CreatePolygonTest::suite(void)
134 {
135 	typedef CppUnit::TestCaller<CreatePolygonTest>
136 		CreatePolygonTestCaller;
137 
138 	return(new CreatePolygonTestCaller("BPolygon::Create Polygon Test", &CreatePolygonTest::PerformTest));
139 	}
140