1/*
2	$Id: RegionOffsetBy.cpp 4235 2003-08-06 06:46:06Z jackburton $
3
4	This file implements the OffsetBy test for the Haiku BRegion
5	code.
6
7	*/
8
9
10#include "RegionOffsetBy.h"
11#include <Region.h>
12#include <Rect.h>
13
14#include <assert.h>
15
16
17/*
18 *  Method:  RegionOffsetBy::RegionOffsetBy()
19 *   Descr:  This is the constructor for this class.
20 */
21
22RegionOffsetBy::RegionOffsetBy(std::string name) :
23	RegionTestcase(name)
24{
25	}
26
27
28/*
29 *  Method:  RegionOffsetBy::~RegionOffsetBy()
30 *   Descr:  This is the destructor for this class.
31 */
32
33RegionOffsetBy::~RegionOffsetBy()
34{
35	}
36
37
38/*
39 *  Method:  RegionOffsetBy::testOneRegion()
40 *   Descr:  This member function performs a test on a single passed in
41 *           region.
42 */
43
44void RegionOffsetBy::testOneRegion(BRegion *testRegion)
45{
46	BRegion tempRegion1(*testRegion);
47	CheckFrame(&tempRegion1);
48
49	tempRegion1.OffsetBy(10.0, 20.0);
50	if (RegionIsEmpty(testRegion)) {
51		assert(RegionsAreEqual(&tempRegion1, testRegion));
52	} else {
53		assert(!RegionsAreEqual(&tempRegion1, testRegion));
54	}
55
56	BRegion tempRegion2;
57	CheckFrame(&tempRegion2);
58	assert(RegionIsEmpty(&tempRegion2));
59
60	for(int i = testRegion->CountRects() - 1; i >= 0; i--) {
61		BRect tempRect = testRegion->RectAt(i);
62		tempRect.OffsetBy(10.0, 20.0);
63		tempRegion2.Include(tempRect);
64		CheckFrame(&tempRegion2);
65		assert(!RegionIsEmpty(&tempRegion2));
66	}
67	assert(RegionsAreEqual(&tempRegion1, &tempRegion2));
68	if (RegionIsEmpty(testRegion)) {
69		assert(RegionsAreEqual(&tempRegion2, testRegion));
70	} else {
71		assert(!RegionsAreEqual(&tempRegion2, testRegion));
72	}
73
74	tempRegion1.OffsetBy(-10.0, -20.0);
75	CheckFrame(&tempRegion1);
76	if (RegionIsEmpty(testRegion)) {
77		assert(RegionsAreEqual(&tempRegion1, testRegion));
78		assert(RegionsAreEqual(&tempRegion1, &tempRegion2));
79	} else {
80		assert(RegionsAreEqual(&tempRegion1, testRegion));
81		assert(!RegionsAreEqual(&tempRegion1, &tempRegion2));
82	}
83
84	tempRegion2.OffsetBy(-10.0, -20.0);
85	CheckFrame(&tempRegion2);
86	assert(RegionsAreEqual(&tempRegion1, testRegion));
87	assert(RegionsAreEqual(&tempRegion2, testRegion));
88	assert(RegionsAreEqual(&tempRegion1, &tempRegion2));
89}
90
91
92/*
93 *  Method:  RegionOffsetBy::testTwoRegions()
94 *   Descr:  This member function performs a test on two regions passed in.
95 */
96
97void RegionOffsetBy::testTwoRegions(BRegion *testRegionA, BRegion *testRegionB)
98{
99
100}
101
102
103/*
104 *  Method:  RegionOffsetBy::suite()
105 *   Descr:  This static member function returns a test caller for performing
106 *           all combinations of "RegionOffsetBy".
107 */
108
109 Test *RegionOffsetBy::suite(void)
110{
111	typedef CppUnit::TestCaller<RegionOffsetBy>
112		RegionOffsetByCaller;
113
114	return(new RegionOffsetByCaller("BRegion::OffsetBy Test", &RegionOffsetBy::PerformTest));
115	}
116