1. /* ===========================================================
  2. * JFreeChart : a free chart library for the Java(tm) platform
  3. * ===========================================================
  4. *
  5. * (C) Copyright 2000-2005, 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
  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.
  13. *
  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.
  18. *
  19. * You should have received a copy of the GNU Lesser General Public License
  20. * along with this library; if not, write to the Free Software Foundation,
  21. * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
  22. *
  23. * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
  24. * in the United States and other countries.]
  25. *
  26. * ------------------------
  27. * LineRenderer3DTests.java
  28. * ------------------------
  29. * (C) Copyright 2004, by Object Refinery Limited and Contributors.
  30. *
  31. * Original Author: David Gilbert (for Object Refinery Limited);
  32. * Contributor(s): -;
  33. *
  34. * $Id: LineRenderer3DTests.java,v 1.3 2005/03/08 10:35:26 mungady Exp $
  35. *
  36. * Changes
  37. * -------
  38. * 15-Oct-2004 : Version 1 (DG);
  39. *
  40. */
  41. package org.jfree.chart.renderer.category.junit;
  42. import java.io.ByteArrayInputStream;
  43. import java.io.ByteArrayOutputStream;
  44. import java.io.ObjectInput;
  45. import java.io.ObjectInputStream;
  46. import java.io.ObjectOutput;
  47. import java.io.ObjectOutputStream;
  48. import junit.framework.Test;
  49. import junit.framework.TestCase;
  50. import junit.framework.TestSuite;
  51. import org.jfree.chart.renderer.category.LineRenderer3D;
  52. /**
  53. * Tests for the {@link LineRenderer3D} class.
  54. */
  55. public class LineRenderer3DTests extends TestCase {
  56. /**
  57. * Returns the tests as a test suite.
  58. *
  59. * @return The test suite.
  60. */
  61. public static Test suite() {
  62. return new TestSuite(LineAndShapeRendererTests.class);
  63. }
  64. /**
  65. * Constructs a new set of tests.
  66. *
  67. * @param name the name of the tests.
  68. */
  69. public LineRenderer3DTests(String name) {
  70. super(name);
  71. }
  72. /**
  73. * Test that the equals() method distinguishes all fields.
  74. */
  75. public void testEquals() {
  76. LineRenderer3D r1 = new LineRenderer3D();
  77. LineRenderer3D r2 = new LineRenderer3D();
  78. assertEquals(r1, r2);
  79. }
  80. /**
  81. * Two objects that are equal are required to return the same hashCode.
  82. */
  83. public void testHashcode() {
  84. LineRenderer3D r1 = new LineRenderer3D();
  85. LineRenderer3D r2 = new LineRenderer3D();
  86. assertTrue(r1.equals(r2));
  87. int h1 = r1.hashCode();
  88. int h2 = r2.hashCode();
  89. assertEquals(h1, h2);
  90. }
  91. /**
  92. * Confirm that cloning works.
  93. */
  94. public void testCloning() {
  95. LineRenderer3D r1 = new LineRenderer3D();
  96. LineRenderer3D r2 = null;
  97. try {
  98. r2 = (LineRenderer3D) r1.clone();
  99. }
  100. catch (CloneNotSupportedException e) {
  101. System.err.println("Failed to clone.");
  102. }
  103. assertTrue(r1 != r2);
  104. assertTrue(r1.getClass() == r2.getClass());
  105. assertTrue(r1.equals(r2));
  106. assertTrue(checkIndependence(r1, r2));
  107. }
  108. /**
  109. * Checks that the two renderers are equal but independent of one another.
  110. *
  111. * @param r1 renderer 1.
  112. * @param r2 renderer 2.
  113. *
  114. * @return A boolean.
  115. */
  116. private boolean checkIndependence(LineRenderer3D r1, LineRenderer3D r2) {
  117. // should be equal...
  118. boolean b0 = r1.equals(r2);
  119. // and independent...
  120. r1.setShapesVisible(!r1.isShapesVisible());
  121. boolean b1 = !r1.equals(r2);
  122. r2.setShapesVisible(r1.isShapesVisible());
  123. boolean b2 = r1.equals(r2);
  124. r1.setLinesVisible(!r1.isLinesVisible());
  125. boolean b3 = !r1.equals(r2);
  126. r2.setLinesVisible(r1.isLinesVisible());
  127. boolean b4 = r1.equals(r2);
  128. boolean flag = true;
  129. Boolean existing = r1.getShapesFilled();
  130. if (existing != null) {
  131. flag = !existing.booleanValue();
  132. }
  133. r1.setShapesFilled(flag);
  134. boolean b5 = !r1.equals(r2);
  135. r2.setShapesFilled(flag);
  136. boolean b6 = r1.equals(r2);
  137. r1.setShapesFilled(false);
  138. r2.setShapesFilled(false);
  139. r1.setSeriesShapesFilled(0, false);
  140. r2.setSeriesShapesFilled(0, true);
  141. boolean b7 = !r1.equals(r2);
  142. r2.setSeriesShapesFilled(0, false);
  143. boolean b8 = (r1.equals(r2));
  144. r1.setDefaultShapesFilled(false);
  145. r2.setDefaultShapesFilled(true);
  146. boolean b9 = !r1.equals(r2);
  147. r2.setDefaultShapesFilled(false);
  148. boolean b10 = (r1.equals(r2));
  149. return b0 && b1 && b2 && b3 && b4 && b5 && b6 && b7 && b8 && b9 && b10;
  150. }
  151. /**
  152. * Serialize an instance, restore it, and check for equality.
  153. */
  154. public void testSerialization() {
  155. LineRenderer3D r1 = new LineRenderer3D();
  156. LineRenderer3D r2 = null;
  157. try {
  158. ByteArrayOutputStream buffer = new ByteArrayOutputStream();
  159. ObjectOutput out = new ObjectOutputStream(buffer);
  160. out.writeObject(r1);
  161. out.close();
  162. ObjectInput in = new ObjectInputStream(
  163. new ByteArrayInputStream(buffer.toByteArray())
  164. );
  165. r2 = (LineRenderer3D) in.readObject();
  166. in.close();
  167. }
  168. catch (Exception e) {
  169. System.out.println(e.toString());
  170. }
  171. assertEquals(r1, r2);
  172. }
  173. }