1/*
2	$Id: MapPolygonTest.cpp 2136 2002-12-03 04:07:21Z 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		- Map To
8
9	*/
10
11
12#include "MapPolygonTest.h"
13#include "DummyPolygon.h"
14#include <Point.h>
15#include <Rect.h>
16#include <Polygon.h>
17
18#include <assert.h>
19
20
21/*
22 *  Method:  MapPolygonTest::MapPolygonTest()
23 *   Descr:  This is the constructor for this class.
24 */
25
26
27	MapPolygonTest::MapPolygonTest(std::string name) :
28		TestCase(name)
29{
30	}
31
32
33/*
34 *  Method:  MapPolygonTest::~MapPolygonTest()
35 *   Descr:  This is the destructor for this class.
36 */
37
38
39	MapPolygonTest::~MapPolygonTest()
40{
41	}
42
43
44/*
45 *  Method:  MapPolygonTest::polygonMatches()
46 *   Descr:  This member function compares the passed in polygon to the
47 *           set of points and the expected frame rectangle.
48 */
49
50void MapPolygonTest::polygonMatches(BPolygon *srcPoly, const BPoint *pointArray,
51                                       int numPoints, const BRect expectedFrame)
52{
53	assert(numPoints == srcPoly->CountPoints());
54	assert(expectedFrame == srcPoly->Frame());
55
56	const BPoint *srcPointArray = ((DummyPolygon *)srcPoly)->GetPoints();
57	int i;
58	for(i = 0; i < numPoints; i++) {
59		assert(srcPointArray[i] == pointArray[i]);
60	}
61}
62
63
64/*
65 *  Method:  MapPolygonTest::PerformTest()
66 *   Descr:  This member function tests the creation of BPolygon's.
67 *
68 *           The code does the following:
69 */
70
71
72	void MapPolygonTest::PerformTest(void)
73{
74	const int numPoints = 7;
75	BPoint pointArray[numPoints];
76	pointArray[0].x =  0.0;  pointArray[0].y = 10.0;
77	pointArray[1].x = 10.0;  pointArray[1].y =  0.0;
78	pointArray[2].x = 10.0;  pointArray[2].y =  5.0;
79	pointArray[3].x = 30.0;  pointArray[3].y =  5.0;
80	pointArray[4].x = 30.0;  pointArray[4].y = 15.0;
81	pointArray[5].x = 10.0;  pointArray[5].y = 15.0;
82	pointArray[6].x = 10.0;  pointArray[6].y = 20.0;
83	BRect pointArrayFrame(0.0, 0.0, 30.0, 20.0);
84
85	BRect fromRect(1.0, 1.0, 3.0, 3.0);
86	BRect toRect(1.0, 4.0, 5.0, 10.0);
87
88	BPoint mapPointArray[numPoints];
89	mapPointArray[0].x = -1.0;  mapPointArray[0].y = 31.0;
90	mapPointArray[1].x = 19.0;  mapPointArray[1].y =  1.0;
91	mapPointArray[2].x = 19.0;  mapPointArray[2].y = 16.0;
92	mapPointArray[3].x = 59.0;  mapPointArray[3].y = 16.0;
93	mapPointArray[4].x = 59.0;  mapPointArray[4].y = 46.0;
94	mapPointArray[5].x = 19.0;  mapPointArray[5].y = 46.0;
95	mapPointArray[6].x = 19.0;  mapPointArray[6].y = 61.0;
96	BRect mapPointArrayFrame(-1.0, 1.0, 59.0, 61.0);
97
98	BPolygon testPoly1(pointArray, numPoints);
99	polygonMatches(&testPoly1, pointArray, numPoints, pointArrayFrame);
100	testPoly1.MapTo(fromRect, toRect);
101	polygonMatches(&testPoly1, mapPointArray, numPoints, mapPointArrayFrame);
102}
103
104
105/*
106 *  Method:  PropertyConstructionTest::suite()
107 *   Descr:  This static member function returns a test caller for performing
108 *           all combinations of "MapPolygonTest".
109 */
110
111 Test *MapPolygonTest::suite(void)
112{
113	typedef CppUnit::TestCaller<MapPolygonTest>
114		MapPolygonTestCaller;
115
116	return(new MapPolygonTestCaller("BPolygon::Map Polygon Test", &MapPolygonTest::PerformTest));
117	}
118