1. /* ===========================================================
  2. * JFreeChart : a free chart library for the Java(tm) platform
  3. * ===========================================================
  4. *
  5. * (C) Copyright 2000-2004, by Object Refinery Limited and Contributors.
  6. *
  7. * Project Info: http://www.jfree.org/jfreechart/index.html
  8. *
  9. * This library is free software; you can redistribute it and/or modify it under the terms
  10. * of the GNU Lesser General Public License as published by the Free Software Foundation;
  11. * either version 2.1 of the License, or (at your option) any later version.
  12. *
  13. * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
  14. * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  15. * See the GNU Lesser General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU Lesser General Public License along with this
  18. * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
  19. * Boston, MA 02111-1307, USA.
  20. *
  21. * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
  22. * in the United States and other countries.]
  23. *
  24. * --------------------
  25. * LegendItemTests.java
  26. * --------------------
  27. * (C) Copyright 2004, by Object Refinery Limited and Contributors.
  28. *
  29. * Original Author: David Gilbert (for Object Refinery Limited);
  30. * Contributor(s): -;
  31. *
  32. * $Id: LegendItemTests.java,v 1.2 2004/11/27 17:13:46 mungady Exp $
  33. *
  34. * Changes
  35. * -------
  36. * 04-Jun-2004 : Version 1 (DG);
  37. *
  38. */
  39. package org.jfree.chart.junit;
  40. import java.awt.BasicStroke;
  41. import java.awt.Color;
  42. import java.awt.geom.Line2D;
  43. import java.awt.geom.Rectangle2D;
  44. import java.io.ByteArrayInputStream;
  45. import java.io.ByteArrayOutputStream;
  46. import java.io.ObjectInput;
  47. import java.io.ObjectInputStream;
  48. import java.io.ObjectOutput;
  49. import java.io.ObjectOutputStream;
  50. import junit.framework.Test;
  51. import junit.framework.TestCase;
  52. import junit.framework.TestSuite;
  53. import org.jfree.chart.LegendItem;
  54. /**
  55. * Tests for the {@link LegendItem} class.
  56. */
  57. public class LegendItemTests extends TestCase {
  58. /**
  59. * Returns the tests as a test suite.
  60. *
  61. * @return The test suite.
  62. */
  63. public static Test suite() {
  64. return new TestSuite(LegendItemTests.class);
  65. }
  66. /**
  67. * Constructs a new set of tests.
  68. *
  69. * @param name the name of the tests.
  70. */
  71. public LegendItemTests(String name) {
  72. super(name);
  73. }
  74. /**
  75. * Confirm that the equals method can distinguish all the required fields.
  76. */
  77. public void testEquals() {
  78. LegendItem item1 = new LegendItem(
  79. "Label", "Description", true, new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0),
  80. true, Color.red, true, Color.blue, new BasicStroke(1.2f), true,
  81. new Line2D.Double(1.0, 2.0, 3.0, 4.0), new BasicStroke(2.1f), Color.green
  82. );
  83. LegendItem item2 = new LegendItem(
  84. "Label", "Description", true, new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0),
  85. true, Color.red, true, Color.blue, new BasicStroke(1.2f), true,
  86. new Line2D.Double(1.0, 2.0, 3.0, 4.0), new BasicStroke(2.1f), Color.green
  87. );
  88. assertTrue(item1.equals(item2));
  89. assertTrue(item2.equals(item1));
  90. item1 = new LegendItem(
  91. "Label2", "Description", true, new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0),
  92. true, Color.red, true, Color.blue, new BasicStroke(1.2f), true,
  93. new Line2D.Double(1.0, 2.0, 3.0, 4.0), new BasicStroke(2.1f), Color.green
  94. );
  95. assertFalse(item1.equals(item2));
  96. item2 = new LegendItem(
  97. "Label2", "Description", true, new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0),
  98. true, Color.red, true, Color.blue, new BasicStroke(1.2f), true,
  99. new Line2D.Double(1.0, 2.0, 3.0, 4.0), new BasicStroke(2.1f), Color.green
  100. );
  101. assertTrue(item1.equals(item2));
  102. item1 = new LegendItem(
  103. "Label2", "Description2", true, new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0),
  104. true, Color.red, true, Color.blue, new BasicStroke(1.2f), true,
  105. new Line2D.Double(1.0, 2.0, 3.0, 4.0), new BasicStroke(2.1f), Color.green
  106. );
  107. assertFalse(item1.equals(item2));
  108. item2 = new LegendItem(
  109. "Label2", "Description2", true, new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0),
  110. true, Color.red, true, Color.blue, new BasicStroke(1.2f), true,
  111. new Line2D.Double(1.0, 2.0, 3.0, 4.0), new BasicStroke(2.1f), Color.green
  112. );
  113. assertTrue(item1.equals(item2));
  114. item1 = new LegendItem(
  115. "Label2", "Description2", false, new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0),
  116. true, Color.red, true, Color.blue, new BasicStroke(1.2f), true,
  117. new Line2D.Double(1.0, 2.0, 3.0, 4.0), new BasicStroke(2.1f), Color.green
  118. );
  119. assertFalse(item1.equals(item2));
  120. item2 = new LegendItem(
  121. "Label2", "Description2", false, new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0),
  122. true, Color.red, true, Color.blue, new BasicStroke(1.2f), true,
  123. new Line2D.Double(1.0, 2.0, 3.0, 4.0), new BasicStroke(2.1f), Color.green
  124. );
  125. assertTrue(item1.equals(item2));
  126. item1 = new LegendItem(
  127. "Label2", "Description2", false, new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0),
  128. true, Color.red, true, Color.blue, new BasicStroke(1.2f), true,
  129. new Line2D.Double(1.0, 2.0, 3.0, 4.0), new BasicStroke(2.1f), Color.green
  130. );
  131. assertFalse(item1.equals(item2));
  132. item2 = new LegendItem(
  133. "Label2", "Description2", false, new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0),
  134. true, Color.red, true, Color.blue, new BasicStroke(1.2f), true,
  135. new Line2D.Double(1.0, 2.0, 3.0, 4.0), new BasicStroke(2.1f), Color.green
  136. );
  137. assertTrue(item1.equals(item2));
  138. item1 = new LegendItem(
  139. "Label2", "Description2", false, new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0),
  140. false, Color.red, true, Color.blue, new BasicStroke(1.2f), true,
  141. new Line2D.Double(1.0, 2.0, 3.0, 4.0), new BasicStroke(2.1f), Color.green
  142. );
  143. assertFalse(item1.equals(item2));
  144. item2 = new LegendItem(
  145. "Label2", "Description2", false, new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0),
  146. false, Color.red, true, Color.blue, new BasicStroke(1.2f), true,
  147. new Line2D.Double(1.0, 2.0, 3.0, 4.0), new BasicStroke(2.1f), Color.green
  148. );
  149. assertTrue(item1.equals(item2));
  150. item1 = new LegendItem(
  151. "Label2", "Description2", false, new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0),
  152. false, Color.black, true, Color.blue, new BasicStroke(1.2f), true,
  153. new Line2D.Double(1.0, 2.0, 3.0, 4.0), new BasicStroke(2.1f), Color.green
  154. );
  155. assertFalse(item1.equals(item2));
  156. item2 = new LegendItem(
  157. "Label2", "Description2", false, new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0),
  158. false, Color.black, true, Color.blue, new BasicStroke(1.2f), true,
  159. new Line2D.Double(1.0, 2.0, 3.0, 4.0), new BasicStroke(2.1f), Color.green
  160. );
  161. assertTrue(item1.equals(item2));
  162. item1 = new LegendItem(
  163. "Label2", "Description2", false, new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0),
  164. false, Color.black, false, Color.blue, new BasicStroke(1.2f), true,
  165. new Line2D.Double(1.0, 2.0, 3.0, 4.0), new BasicStroke(2.1f), Color.green
  166. );
  167. assertFalse(item1.equals(item2));
  168. item2 = new LegendItem(
  169. "Label2", "Description2", false, new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0),
  170. false, Color.black, false, Color.blue, new BasicStroke(1.2f), true,
  171. new Line2D.Double(1.0, 2.0, 3.0, 4.0), new BasicStroke(2.1f), Color.green
  172. );
  173. assertTrue(item1.equals(item2));
  174. item1 = new LegendItem(
  175. "Label2", "Description2", false, new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0),
  176. false, Color.black, false, Color.yellow, new BasicStroke(1.2f), true,
  177. new Line2D.Double(1.0, 2.0, 3.0, 4.0), new BasicStroke(2.1f), Color.green
  178. );
  179. assertFalse(item1.equals(item2));
  180. item2 = new LegendItem(
  181. "Label2", "Description2", false, new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0),
  182. false, Color.black, false, Color.yellow, new BasicStroke(1.2f), true,
  183. new Line2D.Double(1.0, 2.0, 3.0, 4.0), new BasicStroke(2.1f), Color.green
  184. );
  185. assertTrue(item1.equals(item2));
  186. item1 = new LegendItem(
  187. "Label2", "Description2", false, new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0),
  188. false, Color.black, false, Color.yellow, new BasicStroke(2.1f), true,
  189. new Line2D.Double(1.0, 2.0, 3.0, 4.0), new BasicStroke(2.1f), Color.green
  190. );
  191. assertFalse(item1.equals(item2));
  192. item2 = new LegendItem(
  193. "Label2", "Description2", false, new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0),
  194. false, Color.black, false, Color.yellow, new BasicStroke(2.1f), true,
  195. new Line2D.Double(1.0, 2.0, 3.0, 4.0), new BasicStroke(2.1f), Color.green
  196. );
  197. assertTrue(item1.equals(item2));
  198. item1 = new LegendItem(
  199. "Label2", "Description2", false, new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0),
  200. false, Color.black, false, Color.yellow, new BasicStroke(2.1f), false,
  201. new Line2D.Double(1.0, 2.0, 3.0, 4.0), new BasicStroke(2.1f), Color.green
  202. );
  203. assertFalse(item1.equals(item2));
  204. item2 = new LegendItem(
  205. "Label2", "Description2", false, new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0),
  206. false, Color.black, false, Color.yellow, new BasicStroke(2.1f), false,
  207. new Line2D.Double(1.0, 2.0, 3.0, 4.0), new BasicStroke(2.1f), Color.green
  208. );
  209. assertTrue(item1.equals(item2));
  210. item1 = new LegendItem(
  211. "Label2", "Description2", false, new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0),
  212. false, Color.black, false, Color.yellow, new BasicStroke(2.1f), false,
  213. new Line2D.Double(4.0, 3.0, 2.0, 1.0), new BasicStroke(2.1f), Color.green
  214. );
  215. assertFalse(item1.equals(item2));
  216. item2 = new LegendItem(
  217. "Label2", "Description2", false, new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0),
  218. false, Color.black, false, Color.yellow, new BasicStroke(2.1f), false,
  219. new Line2D.Double(4.0, 3.0, 2.0, 1.0), new BasicStroke(2.1f), Color.green
  220. );
  221. assertTrue(item1.equals(item2));
  222. item1 = new LegendItem(
  223. "Label2", "Description2", false, new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0),
  224. false, Color.black, false, Color.yellow, new BasicStroke(2.1f), false,
  225. new Line2D.Double(4.0, 3.0, 2.0, 1.0), new BasicStroke(3.3f), Color.green
  226. );
  227. assertFalse(item1.equals(item2));
  228. item2 = new LegendItem(
  229. "Label2", "Description2", false, new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0),
  230. false, Color.black, false, Color.yellow, new BasicStroke(2.1f), false,
  231. new Line2D.Double(4.0, 3.0, 2.0, 1.0), new BasicStroke(3.3f), Color.green
  232. );
  233. assertTrue(item1.equals(item2));
  234. item1 = new LegendItem(
  235. "Label2", "Description2", false, new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0),
  236. false, Color.black, false, Color.yellow, new BasicStroke(2.1f), false,
  237. new Line2D.Double(4.0, 3.0, 2.0, 1.0), new BasicStroke(3.3f), Color.white
  238. );
  239. assertFalse(item1.equals(item2));
  240. item2 = new LegendItem(
  241. "Label2", "Description2", false, new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0),
  242. false, Color.black, false, Color.yellow, new BasicStroke(2.1f), false,
  243. new Line2D.Double(4.0, 3.0, 2.0, 1.0), new BasicStroke(3.3f), Color.white
  244. );
  245. assertTrue(item1.equals(item2));
  246. }
  247. /**
  248. * Serialize an instance, restore it, and check for equality.
  249. */
  250. public void testSerialization() {
  251. LegendItem item1 = new LegendItem(
  252. "Item", "Description", new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0), Color.red
  253. );
  254. LegendItem item2 = null;
  255. try {
  256. ByteArrayOutputStream buffer = new ByteArrayOutputStream();
  257. ObjectOutput out = new ObjectOutputStream(buffer);
  258. out.writeObject(item1);
  259. out.close();
  260. ObjectInput in = new ObjectInputStream(new ByteArrayInputStream(buffer.toByteArray()));
  261. item2 = (LegendItem) in.readObject();
  262. in.close();
  263. }
  264. catch (Exception e) {
  265. System.out.println(e.toString());
  266. }
  267. assertEquals(item1, item2);
  268. }
  269. }