1
/* ========================================================================
2
* JCommon : a free general purpose class library for the Java(tm) platform
3
* ========================================================================
5
* (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
7
* Project Info: http://www.jfree.org/jcommon/index.html
9
* This library is free software; you can redistribute it and/or modify it
10
* under the terms of the GNU Lesser General Public License as published by
11
* the Free Software Foundation; either version 2.1 of the License, or
12
* (at your option) any later version.
14
* This library is distributed in the hope that it will be useful, but
15
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
17
* License for more details.
19
* You should have received a copy of the GNU Lesser General Public
20
* License along with this library; if not, write to the Free Software
21
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
24
* [Java is a trademark or registered trademark of Sun Microsystems, Inc.
25
* in the United States and other countries.]
27
* -------------------------
28
* RectangleInsetsTests.java
29
* -------------------------
30
* (C) Copyright 2004, 2005, by Object Refinery Limited and Contributors.
32
* Original Author: David Gilbert (for Object Refinery Limited);
35
* $Id: RectangleInsetsTests.java,v 1.6 2005/10/18 13:22:36 mungady Exp $
39
* 14-Jun-2004 : Version 1 (DG);
40
* 03-May-2005 : Fixed tests for changes to RectangleInsets constructor (DG);
44
package org.jfree.ui.junit;
46
import java.awt.geom.Rectangle2D;
47
import java.io.ByteArrayInputStream;
48
import java.io.ByteArrayOutputStream;
49
import java.io.ObjectInput;
50
import java.io.ObjectInputStream;
51
import java.io.ObjectOutput;
52
import java.io.ObjectOutputStream;
54
import junit.framework.Test;
55
import junit.framework.TestCase;
56
import junit.framework.TestSuite;
58
import org.jfree.ui.RectangleInsets;
59
import org.jfree.ui.LengthAdjustmentType;
60
import org.jfree.util.UnitType;
63
* Tests for the {@link RectangleInsets} class.
65
public class RectangleInsetsTests extends TestCase {
68
* Returns the tests as a test suite.
70
* @return The test suite.
72
public static Test suite() {
73
return new TestSuite(RectangleInsetsTests.class);
77
* Constructs a new set of tests.
79
* @param name the name of the tests.
81
public RectangleInsetsTests(final String name) {
86
* Some checks for the createAdjustedRectangle() method.
88
public void testCreateAdjustedRectangleAbsolute() {
90
RectangleInsets i1 = new RectangleInsets(
91
UnitType.ABSOLUTE, 1.0, 2.0, 3.0, 4.0
93
Rectangle2D base = new Rectangle2D.Double(10.0, 20.0, 30.0, 40.0);
96
Rectangle2D adjusted = i1.createAdjustedRectangle(
97
base, LengthAdjustmentType.NO_CHANGE, LengthAdjustmentType.NO_CHANGE
99
assertEquals(new Rectangle2D.Double(10.0, 20.0, 30.0, 40.0), adjusted);
102
adjusted = i1.createAdjustedRectangle(
103
base, LengthAdjustmentType.NO_CHANGE, LengthAdjustmentType.EXPAND
105
assertEquals(new Rectangle2D.Double(10.0, 19.0, 30.0, 44.0), adjusted);
108
adjusted = i1.createAdjustedRectangle(
109
base, LengthAdjustmentType.NO_CHANGE, LengthAdjustmentType.CONTRACT
111
assertEquals(new Rectangle2D.Double(10.0, 21.0, 30.0, 36.0), adjusted);
114
adjusted = i1.createAdjustedRectangle(
115
base, LengthAdjustmentType.EXPAND, LengthAdjustmentType.NO_CHANGE
117
assertEquals(new Rectangle2D.Double(8.0, 20.0, 36.0, 40.0), adjusted);
120
adjusted = i1.createAdjustedRectangle(
121
base, LengthAdjustmentType.CONTRACT, LengthAdjustmentType.NO_CHANGE
123
assertEquals(new Rectangle2D.Double(12.0, 20.0, 24.0, 40.0), adjusted);
126
adjusted = i1.createAdjustedRectangle(
127
base, LengthAdjustmentType.EXPAND, LengthAdjustmentType.EXPAND
129
assertEquals(new Rectangle2D.Double(8.0, 19.0, 36.0, 44.0), adjusted);
131
// expand width contract height
132
adjusted = i1.createAdjustedRectangle(
133
base, LengthAdjustmentType.EXPAND, LengthAdjustmentType.CONTRACT
135
assertEquals(new Rectangle2D.Double(8.0, 21.0, 36.0, 36.0), adjusted);
138
adjusted = i1.createAdjustedRectangle(
139
base, LengthAdjustmentType.CONTRACT, LengthAdjustmentType.CONTRACT
141
assertEquals(new Rectangle2D.Double(12.0, 21.0, 24.0, 36.0), adjusted);
143
// contract width expand height
144
adjusted = i1.createAdjustedRectangle(
145
base, LengthAdjustmentType.CONTRACT, LengthAdjustmentType.EXPAND
147
assertEquals(new Rectangle2D.Double(12.0, 19.0, 24.0, 44.0), adjusted);
151
private static final double EPSILON = 0.0000001;
154
* Some checks for the createAdjustedRectangle() method.
156
public void testCreateAdjustedRectangleRelative() {
158
RectangleInsets i1 = new RectangleInsets(
159
UnitType.RELATIVE, 0.04, 0.03, 0.02, 0.01
161
Rectangle2D base = new Rectangle2D.Double(10.0, 20.0, 30.0, 40.0);
164
Rectangle2D adjusted = i1.createAdjustedRectangle(
165
base, LengthAdjustmentType.NO_CHANGE, LengthAdjustmentType.NO_CHANGE
167
assertEquals(new Rectangle2D.Double(10.0, 20.0, 30.0, 40.0), adjusted);
170
adjusted = i1.createAdjustedRectangle(
171
base, LengthAdjustmentType.NO_CHANGE, LengthAdjustmentType.EXPAND
173
assertEquals(10.0, adjusted.getX(), EPSILON);
174
assertEquals(18.2978723404, adjusted.getY(), EPSILON);
175
assertEquals(30.0, adjusted.getWidth(), EPSILON);
176
assertEquals(42.553191489, adjusted.getHeight(), EPSILON);
179
adjusted = i1.createAdjustedRectangle(
180
base, LengthAdjustmentType.NO_CHANGE, LengthAdjustmentType.CONTRACT
182
assertEquals(10.0, adjusted.getX(), EPSILON);
183
assertEquals(21.6, adjusted.getY(), EPSILON);
184
assertEquals(30.0, adjusted.getWidth(), EPSILON);
185
assertEquals(37.6, adjusted.getHeight(), EPSILON);
188
adjusted = i1.createAdjustedRectangle(
189
base, LengthAdjustmentType.EXPAND, LengthAdjustmentType.NO_CHANGE
191
assertEquals(9.0625, adjusted.getX(), EPSILON);
192
assertEquals(20.0, adjusted.getY(), EPSILON);
193
assertEquals(31.25, adjusted.getWidth(), EPSILON);
194
assertEquals(40.0, adjusted.getHeight(), EPSILON);
197
adjusted = i1.createAdjustedRectangle(
198
base, LengthAdjustmentType.CONTRACT, LengthAdjustmentType.NO_CHANGE
200
assertEquals(10.9, adjusted.getX(), EPSILON);
201
assertEquals(20.0, adjusted.getY(), EPSILON);
202
assertEquals(28.8, adjusted.getWidth(), EPSILON);
203
assertEquals(40.0, adjusted.getHeight(), EPSILON);
206
adjusted = i1.createAdjustedRectangle(
207
base, LengthAdjustmentType.EXPAND, LengthAdjustmentType.EXPAND
209
assertEquals(9.0625, adjusted.getX(), EPSILON);
210
assertEquals(18.2978723404, adjusted.getY(), EPSILON);
211
assertEquals(31.25, adjusted.getWidth(), EPSILON);
212
assertEquals(42.553191489, adjusted.getHeight(), EPSILON);
214
// expand width contract height
215
adjusted = i1.createAdjustedRectangle(
216
base, LengthAdjustmentType.EXPAND, LengthAdjustmentType.CONTRACT
218
assertEquals(9.0625, adjusted.getX(), EPSILON);
219
assertEquals(21.6, adjusted.getY(), EPSILON);
220
assertEquals(31.25, adjusted.getWidth(), EPSILON);
221
assertEquals(37.6, adjusted.getHeight(), EPSILON);
224
adjusted = i1.createAdjustedRectangle(
225
base, LengthAdjustmentType.CONTRACT, LengthAdjustmentType.CONTRACT
227
assertEquals(10.9, adjusted.getX(), EPSILON);
228
assertEquals(21.6, adjusted.getY(), EPSILON);
229
assertEquals(28.8, adjusted.getWidth(), EPSILON);
230
assertEquals(37.6, adjusted.getHeight(), EPSILON);
232
// contract width expand height
233
adjusted = i1.createAdjustedRectangle(
234
base, LengthAdjustmentType.CONTRACT, LengthAdjustmentType.EXPAND
236
assertEquals(10.9, adjusted.getX(), EPSILON);
237
assertEquals(18.2978723404, adjusted.getY(), EPSILON);
238
assertEquals(28.8, adjusted.getWidth(), EPSILON);
239
assertEquals(42.553191489, adjusted.getHeight(), EPSILON);
244
* Test the equals() method.
246
public void testEquals() {
247
RectangleInsets i1 = new RectangleInsets(
248
UnitType.ABSOLUTE, 1.0, 2.0, 3.0, 4.0
250
RectangleInsets i2 = new RectangleInsets(
251
UnitType.ABSOLUTE, 1.0, 2.0, 3.0, 4.0
253
assertTrue(i1.equals(i2));
254
assertTrue(i2.equals(i1));
256
i1 = new RectangleInsets(UnitType.RELATIVE, 1.0, 2.0, 3.0, 4.0);
257
assertFalse(i1.equals(i2));
258
i2 = new RectangleInsets(UnitType.RELATIVE, 1.0, 2.0, 3.0, 4.0);
259
assertTrue(i1.equals(i2));
261
i1 = new RectangleInsets(UnitType.RELATIVE, 0.0, 2.0, 3.0, 4.0);
262
assertFalse(i1.equals(i2));
263
i2 = new RectangleInsets(UnitType.RELATIVE, 0.0, 2.0, 3.0, 4.0);
264
assertTrue(i1.equals(i2));
266
i1 = new RectangleInsets(UnitType.RELATIVE, 0.0, 0.0, 3.0, 4.0);
267
assertFalse(i1.equals(i2));
268
i2 = new RectangleInsets(UnitType.RELATIVE, 0.0, 0.0, 3.0, 4.0);
269
assertTrue(i1.equals(i2));
271
i1 = new RectangleInsets(UnitType.RELATIVE, 0.0, 0.0, 0.0, 4.0);
272
assertFalse(i1.equals(i2));
273
i2 = new RectangleInsets(UnitType.RELATIVE, 0.0, 0.0, 0.0, 4.0);
274
assertTrue(i1.equals(i2));
276
i1 = new RectangleInsets(UnitType.RELATIVE, 0.0, 0.0, 0.0, 0.0);
277
assertFalse(i1.equals(i2));
278
i2 = new RectangleInsets(UnitType.RELATIVE, 0.0, 0.0, 0.0, 0.0);
279
assertTrue(i1.equals(i2));
284
* Serialize an instance, restore it, and check for identity.
286
public void testSerialization() {
287
final RectangleInsets i1 = new RectangleInsets(
288
UnitType.ABSOLUTE, 1.0, 2.0, 3.0, 4.0
290
RectangleInsets i2 = null;
292
final ByteArrayOutputStream buffer = new ByteArrayOutputStream();
293
final ObjectOutput out = new ObjectOutputStream(buffer);
297
final ObjectInput in = new ObjectInputStream(
298
new ByteArrayInputStream(buffer.toByteArray())
300
i2 = (RectangleInsets) in.readObject();
303
catch (Exception e) {
304
System.out.println(e.toString());
306
assertTrue(i1.equals(i2));
310
* Runs the test suite using the JUnit text-based runner.
312
* @param args ignored.
314
public static void main(String[] args) {
315
junit.textui.TestRunner.run(suite());