2 // Test Suite for geos::geom::Envelope class.
7 #include <geos/geom/Envelope.h>
8 #include <geos/geom/Coordinate.h>
16 // dummy data, not used
17 struct test_envelope_data
{};
19 typedef test_group
<test_envelope_data
> group
;
20 typedef group::object object
;
22 group
test_envelope_group("geos::geom::Envelope");
28 // 1 - Test of default constructor
31 void object::test
<1>()
33 geos::geom::Envelope empty
;
35 ensure( empty
.isNull() );
37 ensure_equals( empty
.getWidth(), 0 );
38 ensure_equals( empty
.getHeight(), 0 );
41 // 2 - Test of overriden constructor
44 void object::test
<2>()
46 geos::geom::Envelope
box(0, 100, 0, 100);
48 ensure( !box
.isNull() );
50 ensure_equals( box
.getMinX(), 0 );
51 ensure_equals( box
.getMaxX(), 100 );
52 ensure_equals( box
.getMinY(), 0 );
53 ensure_equals( box
.getMaxY(), 100 );
55 ensure_equals( box
.getMinX(), box
.getMinY() );
56 ensure_equals( box
.getMaxX(), box
.getMaxY() );
58 ensure_equals( box
.getWidth(), box
.getHeight() );
61 // 3 - Test of copy constructor
64 void object::test
<3>()
66 geos::geom::Envelope
box(0, 100, 0, 100);
68 ensure( !box
.isNull() );
69 ensure_equals( box
.getWidth(), box
.getHeight() );
71 geos::geom::Envelope
copied(box
);
73 ensure( !copied
.isNull() );
74 ensure( copied
== box
);
75 ensure_equals( copied
.getWidth(), copied
.getHeight() );
78 // 4 - Test of setToNull()
81 void object::test
<4>()
83 geos::geom::Envelope
e(100, 200, 100, 200);
85 ensure( !e
.isNull() );
90 // 5 - Test of equals()
93 void object::test
<5>()
95 geos::geom::Envelope empty
;
96 geos::geom::Envelope
zero(0, 0, 0, 0);
97 geos::geom::Envelope
zero2(0, 0, 0, 0);
98 geos::geom::Envelope
box(0, 100, 0, 100);
100 ensure( empty
.isNull() );
101 ensure( !zero
.isNull() );
102 ensure( !zero2
.isNull() );
103 ensure( !box
.isNull() );
105 /* See http://trac.osgeo.org/geos/ticket/703 */
106 ensure( empty
.equals( &empty
) );
108 ensure( !empty
.equals( &zero
) );
109 ensure( !zero
.equals( &empty
) );
111 ensure( zero
.equals( &zero2
) );
112 ensure( zero2
.equals( &zero
) );
114 ensure( !box
.equals( &empty
) );
115 ensure( !box
.equals( &zero
) );
118 // 6 - Test of contains()
121 void object::test
<6>()
123 geos::geom::Envelope empty
;
124 geos::geom::Envelope
small(-1, 1, -1, 1);
125 geos::geom::Envelope
big(-5, 5, -5, 5);
127 ensure( empty
.isNull() );
128 ensure( !small
.isNull() );
129 ensure( !big
.isNull() );
131 // Test empty envelope by reference
132 ensure( "empty envelope is not empty!", !empty
.contains( small
) );
133 ensure( "empty envelope is not empty!", !small
.contains( empty
) );
135 // Test empty envelope by pointer
136 ensure( "empty envelope is not empty!", !empty
.contains( &small
) );
137 ensure( "empty envelope is not empty!", !small
.contains( &empty
) );
139 // Test non-empty envelope by reference
140 ensure( !small
.contains( big
) );
141 ensure( big
.contains( small
) );
144 ensure( small
.contains( 0, 0 ) );
145 ensure( small
.contains( -1, -1 ) );
146 ensure( !small
.contains( 5, 5 ) );
149 geos::geom::Coordinate
origin(0, 0, 0);
151 ensure_equals( origin
.x
, 0 );
152 ensure_equals( origin
.y
, 0 );
153 ensure_equals( origin
.z
, 0 );
154 ensure( small
.contains( origin
) );
157 // Test of intersects()
160 void object::test
<7>()
162 geos::geom::Envelope empty
;
163 geos::geom::Envelope
with_origin(-100, 100, -100, 100);
164 geos::geom::Envelope
moved(50, 150, 50, 150);
166 ensure( empty
.isNull() );
167 ensure( !with_origin
.isNull() );
168 ensure( !moved
.isNull() );
170 // Test empty envelope by reference
171 ensure( "empty envelope seems not empty!", !empty
.intersects( with_origin
) );
172 ensure( "empty envelope seems not empty!", !with_origin
.intersects( empty
) );
174 // Test empty envelope by pointer
175 ensure( "empty envelope seems not empty!", !empty
.intersects( &with_origin
) );
176 ensure( "empty envelope seems not empty!", !with_origin
.intersects( &empty
) );
178 // Test non-empty envelope by reference
179 ensure( with_origin
.intersects( moved
) );
180 ensure( moved
.intersects( with_origin
) );
182 // Test intersection with raw point
183 ensure( with_origin
.intersects( 0, 0 ) );
184 ensure( with_origin
.intersects( -100, 100 ) );
185 ensure( !with_origin
.intersects( -200, 200 ) );
187 // Test intersection with coordinate
188 geos::geom::Coordinate
origin(0, 0, 0);
190 ensure_equals( origin
.x
, 0 );
191 ensure_equals( origin
.y
, 0 );
192 ensure_equals( origin
.z
, 0 );
193 ensure( with_origin
.intersects( origin
) );
200 void object::test
<8>()
202 geos::geom::Envelope empty
;
203 geos::geom::Envelope
box(-5, 5, -5, 5); // Includes (0,0) point
204 const geos::geom::Envelope
exemplar(-5, 5, -5, 5);
206 ensure( empty
.isNull() );
207 ensure( !box
.isNull() );
208 ensure( !exemplar
.isNull() );
210 // Expand box envelope to include null envelope
211 box
.expandToInclude(&empty
);
212 ensure( box
== exemplar
); // no change expected
214 // Expand null envelope to include box envelope
215 empty
.expandToInclude(&box
);
216 ensure( empty
== exemplar
);
219 // Second test of expand()
222 void object::test
<9>()
224 geos::geom::Envelope empty
;
225 geos::geom::Envelope
box(100, 101, 100, 101); // Does not include (0,0) point
226 const geos::geom::Envelope
exemplar(100, 101, 100, 101);
228 // Expand box envelope to include null envelope
229 box
.expandToInclude(&empty
);
230 ensure( box
== exemplar
); // no change expected
232 // Expand empty envelope to include bigger envelope
233 empty
.expandToInclude(&box
);
234 ensure( empty
== exemplar
);