TimePeriodValuesCollectionTest.java 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. /* ===========================================================
  2. * JFreeChart : a free chart library for the Java(tm) platform
  3. * ===========================================================
  4. *
  5. * (C) Copyright 2000-2013, 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
  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,
  22. * USA.
  23. *
  24. * [Oracle and Java are registered trademarks of Oracle and/or its affiliates.
  25. * Other names may be trademarks of their respective owners.]
  26. *
  27. * ------------------------------------
  28. * TimePeriodValuesCollectionTests.java
  29. * ------------------------------------
  30. * (C) Copyright 2005-2008, by Object Refinery Limited.
  31. *
  32. * Original Author: David Gilbert (for Object Refinery Limited);
  33. * Contributor(s): -;
  34. *
  35. * Changes
  36. * -------
  37. * 11-Mar-2005 : Version 1 (DG);
  38. * 08-Mar-2007 : Added testGetSeries() (DG);
  39. * 11-Jun-2007 : Added tests for getDomainBounds() (DG);
  40. * 10-Jul-2007 : Fixed compile errors (DG);
  41. * 07-Apr-2008 : Added more checks to
  42. * testGetDomainBoundsWithInterval() (DG);
  43. *
  44. */
  45. package org.jfree.data.time;
  46. import static org.junit.Assert.assertTrue;
  47. import static org.junit.Assert.assertEquals;
  48. import static org.junit.Assert.assertFalse;
  49. import static org.junit.Assert.assertNull;
  50. import org.jfree.chart.TestUtilities;
  51. import org.jfree.data.Range;
  52. import org.junit.Test;
  53. /**
  54. * Some tests for the {@link TimePeriodValuesCollection} class.
  55. */
  56. public class TimePeriodValuesCollectionTest {
  57. /**
  58. * A test for bug report 1161340. I wasn't able to reproduce the problem
  59. * with this test.
  60. */
  61. @Test
  62. public void test1161340() {
  63. TimePeriodValuesCollection dataset = new TimePeriodValuesCollection();
  64. TimePeriodValues v1 = new TimePeriodValues("V1");
  65. v1.add(new Day(11, 3, 2005), 1.2);
  66. v1.add(new Day(12, 3, 2005), 3.4);
  67. dataset.addSeries(v1);
  68. assertEquals(1, dataset.getSeriesCount());
  69. dataset.removeSeries(v1);
  70. assertEquals(0, dataset.getSeriesCount());
  71. TimePeriodValues v2 = new TimePeriodValues("V2");
  72. v1.add(new Day(5, 3, 2005), 1.2);
  73. v1.add(new Day(6, 3, 2005), 3.4);
  74. dataset.addSeries(v2);
  75. assertEquals(1, dataset.getSeriesCount());
  76. }
  77. /**
  78. * Tests the equals() method.
  79. */
  80. @Test
  81. public void testEquals() {
  82. TimePeriodValuesCollection c1 = new TimePeriodValuesCollection();
  83. TimePeriodValuesCollection c2 = new TimePeriodValuesCollection();
  84. assertTrue(c1.equals(c2));
  85. c1.setDomainIsPointsInTime(!c1.getDomainIsPointsInTime());
  86. assertFalse(c1.equals(c2));
  87. c2.setDomainIsPointsInTime(c1.getDomainIsPointsInTime());
  88. assertTrue(c1.equals(c2));
  89. c1.setXPosition(TimePeriodAnchor.END);
  90. assertFalse(c1.equals(c2));
  91. c2.setXPosition(TimePeriodAnchor.END);
  92. assertTrue(c1.equals(c2));
  93. TimePeriodValues v1 = new TimePeriodValues("Test");
  94. TimePeriodValues v2 = new TimePeriodValues("Test");
  95. c1.addSeries(v1);
  96. assertFalse(c1.equals(c2));
  97. c2.addSeries(v2);
  98. assertTrue(c1.equals(c2));
  99. }
  100. /**
  101. * Serialize an instance, restore it, and check for equality.
  102. */
  103. @Test
  104. public void testSerialization() {
  105. TimePeriodValuesCollection c1 = new TimePeriodValuesCollection();
  106. TimePeriodValuesCollection c2 = (TimePeriodValuesCollection)
  107. TestUtilities.serialised(c1);
  108. assertEquals(c1, c2);
  109. }
  110. /**
  111. * Some basic checks for the getSeries() method.
  112. */
  113. @Test
  114. public void testGetSeries() {
  115. TimePeriodValuesCollection c1 = new TimePeriodValuesCollection();
  116. TimePeriodValues s1 = new TimePeriodValues("Series 1");
  117. c1.addSeries(s1);
  118. assertEquals("Series 1", c1.getSeries(0).getKey());
  119. boolean pass = false;
  120. try {
  121. c1.getSeries(-1);
  122. }
  123. catch (IllegalArgumentException e) {
  124. pass = true;
  125. }
  126. assertTrue(pass);
  127. pass = false;
  128. try {
  129. c1.getSeries(1);
  130. }
  131. catch (IllegalArgumentException e) {
  132. pass = true;
  133. }
  134. assertTrue(pass);
  135. }
  136. private static final double EPSILON = 0.0000000001;
  137. /**
  138. * Some checks for the getDomainBounds() method.
  139. */
  140. @Test
  141. public void testGetDomainBoundsWithoutInterval() {
  142. // check empty dataset
  143. TimePeriodValuesCollection dataset = new TimePeriodValuesCollection();
  144. dataset.setDomainIsPointsInTime(false);
  145. Range r = dataset.getDomainBounds(false);
  146. assertNull(r);
  147. // check dataset with one time period
  148. TimePeriodValues s1 = new TimePeriodValues("S1");
  149. s1.add(new SimpleTimePeriod(1000L, 2000L), 1.0);
  150. dataset.addSeries(s1);
  151. r = dataset.getDomainBounds(false);
  152. assertEquals(1500.0, r.getLowerBound(), EPSILON);
  153. assertEquals(1500.0, r.getUpperBound(), EPSILON);
  154. // check dataset with two time periods
  155. s1.add(new SimpleTimePeriod(1500L, 3000L), 2.0);
  156. r = dataset.getDomainBounds(false);
  157. assertEquals(1500.0, r.getLowerBound(), EPSILON);
  158. assertEquals(2250.0, r.getUpperBound(), EPSILON);
  159. }
  160. /**
  161. * Some more checks for the getDomainBounds() method.
  162. *
  163. * @see #testGetDomainBoundsWithoutInterval()
  164. */
  165. @Test
  166. public void testGetDomainBoundsWithInterval() {
  167. // check empty dataset
  168. TimePeriodValuesCollection dataset = new TimePeriodValuesCollection();
  169. Range r = dataset.getDomainBounds(true);
  170. assertNull(r);
  171. // check dataset with one time period
  172. TimePeriodValues s1 = new TimePeriodValues("S1");
  173. s1.add(new SimpleTimePeriod(1000L, 2000L), 1.0);
  174. dataset.addSeries(s1);
  175. r = dataset.getDomainBounds(true);
  176. assertEquals(1000.0, r.getLowerBound(), EPSILON);
  177. assertEquals(2000.0, r.getUpperBound(), EPSILON);
  178. // check dataset with two time periods
  179. s1.add(new SimpleTimePeriod(1500L, 3000L), 2.0);
  180. r = dataset.getDomainBounds(true);
  181. assertEquals(1000.0, r.getLowerBound(), EPSILON);
  182. assertEquals(3000.0, r.getUpperBound(), EPSILON);
  183. // add a third time period
  184. s1.add(new SimpleTimePeriod(6000L, 7000L), 1.5);
  185. r = dataset.getDomainBounds(true);
  186. assertEquals(1000.0, r.getLowerBound(), EPSILON);
  187. assertEquals(7000.0, r.getUpperBound(), EPSILON);
  188. // add a fourth time period
  189. s1.add(new SimpleTimePeriod(4000L, 5000L), 1.4);
  190. r = dataset.getDomainBounds(true);
  191. assertEquals(1000.0, r.getLowerBound(), EPSILON);
  192. assertEquals(7000.0, r.getUpperBound(), EPSILON);
  193. }
  194. }