RendererUtilitiesTest.java 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505
  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. * RendererUtilitiesTest.java
  29. * --------------------------
  30. * (C) Copyright 2007-2013, by Object Refinery Limited and Contributors.
  31. *
  32. * Original Author: David Gilbert (for Object Refinery Limited);
  33. * Contributor(s): -;
  34. *
  35. * Changes
  36. * -------
  37. * 19-Apr-2007 : Version 1 (DG);
  38. * 23-Aug-2012 : Added test3561093() (DG);
  39. *
  40. */
  41. package org.jfree.chart.renderer;
  42. import static org.junit.Assert.assertEquals;
  43. import org.jfree.data.DomainOrder;
  44. import org.jfree.data.xy.DefaultXYDataset;
  45. import org.jfree.data.xy.XYSeries;
  46. import org.jfree.data.xy.XYSeriesCollection;
  47. import org.junit.Test;
  48. /**
  49. * Some checks for the {@link RendererUtilities} class.
  50. */
  51. public class RendererUtilitiesTest {
  52. /**
  53. * Some checks for the findLiveItemsLowerBound() method when the dataset is
  54. * unordered.
  55. */
  56. @Test
  57. public void testFindLiveItemsLowerBound_Unordered() {
  58. DefaultXYDataset d = new DefaultXYDataset();
  59. // check a series with no items
  60. d.addSeries("S1", new double[][] {{}, {}});
  61. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 0, 10.0,
  62. 11.0));
  63. // check a series with one item
  64. d.addSeries("S2", new double[][] {{0.0}, {9.9}});
  65. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 1, 0.0,
  66. 1.1));
  67. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 1, 2.0,
  68. 3.3));
  69. // check a series with two items
  70. d.addSeries("S3", new double[][] {{0.0, 1.0}, {9.9, 9.9}});
  71. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 2, 0.0,
  72. 1.1));
  73. assertEquals(1, RendererUtilities.findLiveItemsLowerBound(d, 2, 1.0,
  74. 2.2));
  75. assertEquals(1, RendererUtilities.findLiveItemsLowerBound(d, 2, 2.0,
  76. 3.3));
  77. assertEquals(1, RendererUtilities.findLiveItemsLowerBound(d, 2, 3.0,
  78. 4.4));
  79. // check a series with three items
  80. d.addSeries("S4", new double[][] {{1.0, 2.0, 1.5}, {9.9, 9.9, 9.9}});
  81. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 3, 0.0,
  82. 1.1));
  83. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 3, 1.0,
  84. 2.2));
  85. assertEquals(1, RendererUtilities.findLiveItemsLowerBound(d, 3, 2.0,
  86. 3.3));
  87. assertEquals(2, RendererUtilities.findLiveItemsLowerBound(d, 3, 3.0,
  88. 4.4));
  89. // check a series with four items
  90. d.addSeries("S5", new double[][] {{1.0, 2.0, 1.5, 1.8}, {9.9, 9.9,
  91. 9.9, 9.9}});
  92. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 4, 0.0,
  93. 1.1));
  94. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 4, 1.0,
  95. 2.2));
  96. assertEquals(1, RendererUtilities.findLiveItemsLowerBound(d, 4, 2.0,
  97. 3.3));
  98. assertEquals(3, RendererUtilities.findLiveItemsLowerBound(d, 4, 3.0,
  99. 4.4));
  100. assertEquals(3, RendererUtilities.findLiveItemsLowerBound(d, 4, 4.0,
  101. 5.5));
  102. }
  103. /**
  104. * Some checks for the findLiveItemsLowerBound() method when the dataset is
  105. * ASCENDING.
  106. */
  107. @Test
  108. public void testFindLiveItemsLowerBound_Ascending() {
  109. DefaultXYDataset d = new DefaultXYDataset() {
  110. @Override
  111. public DomainOrder getDomainOrder() {
  112. // we're doing this for testing only, and make sure that we
  113. // only add data in ascending order by x-value
  114. return DomainOrder.ASCENDING;
  115. }
  116. };
  117. // check a series with no items
  118. d.addSeries("S1", new double[][] {{}, {}});
  119. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 0, 10.0,
  120. 11.1));
  121. // check a series with one item
  122. d.addSeries("S2", new double[][] {{1.0}, {9.9}});
  123. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 1, 0.0,
  124. 1.1));
  125. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 1, 2.0,
  126. 2.2));
  127. // check a series with two items
  128. d.addSeries("S3", new double[][] {{1.0, 2.0}, {9.9, 9.9}});
  129. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 2, 0.0,
  130. 1.1));
  131. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 2, 1.0,
  132. 2.2));
  133. assertEquals(1, RendererUtilities.findLiveItemsLowerBound(d, 2, 2.0,
  134. 3.3));
  135. assertEquals(1, RendererUtilities.findLiveItemsLowerBound(d, 2, 3.0,
  136. 4.4));
  137. // check a series with three items
  138. d.addSeries("S4", new double[][] {{1.0, 2.0, 3.0}, {9.9, 9.9, 9.9}});
  139. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 3, 0.0,
  140. 1.1));
  141. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 3, 1.0,
  142. 2.2));
  143. assertEquals(1, RendererUtilities.findLiveItemsLowerBound(d, 3, 2.0,
  144. 3.3));
  145. assertEquals(2, RendererUtilities.findLiveItemsLowerBound(d, 3, 3.0,
  146. 4.4));
  147. // check a series with four items
  148. d.addSeries("S5", new double[][] {{1.0, 2.0, 3.0, 4.0}, {9.9, 9.9,
  149. 9.9, 9.9}});
  150. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 4, 0.0,
  151. 1.1));
  152. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 4, 1.0,
  153. 2.2));
  154. assertEquals(1, RendererUtilities.findLiveItemsLowerBound(d, 4, 2.0,
  155. 3.3));
  156. assertEquals(2, RendererUtilities.findLiveItemsLowerBound(d, 4, 3.0,
  157. 4.4));
  158. assertEquals(3, RendererUtilities.findLiveItemsLowerBound(d, 4, 4.0,
  159. 5.5));
  160. // check a series with repeating items
  161. d.addSeries("S5", new double[][] {{1.0, 2.0, 2.0, 2.0, 3.0}, {9.9, 9.9,
  162. 9.9, 9.9, 9.9}});
  163. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 4, 0.0,
  164. 4.0));
  165. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 4, 1.0,
  166. 4.0));
  167. assertEquals(1, RendererUtilities.findLiveItemsLowerBound(d, 4, 2.0,
  168. 4.0));
  169. assertEquals(4, RendererUtilities.findLiveItemsLowerBound(d, 4, 3.0,
  170. 4.0));
  171. }
  172. /**
  173. * Some checks for the findLiveItemsLowerBound() method when the dataset is
  174. * DESCENDING.
  175. */
  176. @Test
  177. public void testFindLiveItemsLowerBound_Descending() {
  178. DefaultXYDataset d = new DefaultXYDataset() {
  179. @Override
  180. public DomainOrder getDomainOrder() {
  181. // we're doing this for testing only, and make sure that we
  182. // only add data in descending order by x-value
  183. return DomainOrder.DESCENDING;
  184. }
  185. };
  186. // check a series with no items
  187. d.addSeries("S1", new double[][] {{}, {}});
  188. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 0, 10.0,
  189. 11.0));
  190. // check a series with one item
  191. d.addSeries("S2", new double[][] {{1.0}, {9.9}});
  192. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 1, 0.0,
  193. 1.0));
  194. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 1, 1.1,
  195. 2.0));
  196. // check a series with two items
  197. d.addSeries("S3", new double[][] {{2.0, 1.0}, {9.9, 9.9}});
  198. assertEquals(1, RendererUtilities.findLiveItemsLowerBound(d, 2, 0.1,
  199. 0.5));
  200. assertEquals(1, RendererUtilities.findLiveItemsLowerBound(d, 2, 0.1,
  201. 1.0));
  202. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 2, 1.1,
  203. 2.0));
  204. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 2, 2.2,
  205. 3.0));
  206. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 2, 3.3,
  207. 4.0));
  208. // check a series with three items
  209. d.addSeries("S4", new double[][] {{3.0, 2.0, 1.0}, {9.9, 9.9, 9.9}});
  210. assertEquals(2, RendererUtilities.findLiveItemsLowerBound(d, 3, 0.0,
  211. 1.0));
  212. assertEquals(1, RendererUtilities.findLiveItemsLowerBound(d, 3, 1.0,
  213. 2.0));
  214. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 3, 2.0,
  215. 3.0));
  216. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 3, 3.0,
  217. 4.0));
  218. // check a series with four items
  219. d.addSeries("S5", new double[][] {{4.0, 3.0, 2.0, 1.0}, {9.9, 9.9,
  220. 9.9, 9.9}});
  221. assertEquals(3, RendererUtilities.findLiveItemsLowerBound(d, 4, 0.1,
  222. 0.5));
  223. assertEquals(3, RendererUtilities.findLiveItemsLowerBound(d, 4, 0.1,
  224. 1.0));
  225. assertEquals(2, RendererUtilities.findLiveItemsLowerBound(d, 4, 1.1,
  226. 2.0));
  227. assertEquals(1, RendererUtilities.findLiveItemsLowerBound(d, 4, 2.2,
  228. 3.0));
  229. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 4, 3.3,
  230. 4.0));
  231. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 4, 4.4,
  232. 5.0));
  233. // check a series with repeating items
  234. d.addSeries("S6", new double[][] {{3.0, 2.0, 2.0, 2.0, 1.0}, {9.9, 9.9,
  235. 9.9, 9.9, 9.9}});
  236. assertEquals(0, RendererUtilities.findLiveItemsLowerBound(d, 5, 0.0,
  237. 3.0));
  238. assertEquals(1, RendererUtilities.findLiveItemsLowerBound(d, 5, 0.0,
  239. 2.0));
  240. assertEquals(4, RendererUtilities.findLiveItemsLowerBound(d, 5, 0.0,
  241. 1.0));
  242. assertEquals(4, RendererUtilities.findLiveItemsLowerBound(d, 5, 0.0,
  243. 0.5));
  244. }
  245. /**
  246. * Some checks for the findLiveItemsUpperBound() method when the dataset is
  247. * unordered.
  248. */
  249. @Test
  250. public void testFindLiveItemsUpperBound_Unordered() {
  251. DefaultXYDataset d = new DefaultXYDataset();
  252. // check a series with no items
  253. d.addSeries("S1", new double[][] {{}, {}});
  254. assertEquals(0, RendererUtilities.findLiveItemsUpperBound(d, 0, 10.0,
  255. 11.0));
  256. // check a series with one item
  257. d.addSeries("S2", new double[][] {{1.0}, {9.9}});
  258. assertEquals(0, RendererUtilities.findLiveItemsUpperBound(d, 1, 0.0,
  259. 1.1));
  260. assertEquals(0, RendererUtilities.findLiveItemsUpperBound(d, 1, 2.0,
  261. 3.3));
  262. // check a series with two items
  263. d.addSeries("S3", new double[][] {{1.0, 2.0}, {9.9, 9.9}});
  264. assertEquals(0, RendererUtilities.findLiveItemsUpperBound(d, 2, 0.0,
  265. 1.1));
  266. assertEquals(1, RendererUtilities.findLiveItemsUpperBound(d, 2, 1.0,
  267. 2.2));
  268. assertEquals(1, RendererUtilities.findLiveItemsUpperBound(d, 2, 2.0,
  269. 3.3));
  270. assertEquals(1, RendererUtilities.findLiveItemsUpperBound(d, 2, 3.0,
  271. 4.4));
  272. // check a series with three items
  273. d.addSeries("S4", new double[][] {{1.0, 2.0, 1.5}, {9.9, 9.9, 9.9}});
  274. assertEquals(0, RendererUtilities.findLiveItemsUpperBound(d, 3, 0.0,
  275. 1.1));
  276. assertEquals(2, RendererUtilities.findLiveItemsUpperBound(d, 3, 1.0,
  277. 2.2));
  278. assertEquals(2, RendererUtilities.findLiveItemsUpperBound(d, 3, 2.0,
  279. 3.3));
  280. assertEquals(2, RendererUtilities.findLiveItemsUpperBound(d, 3, 3.0,
  281. 4.4));
  282. // check a series with four items
  283. d.addSeries("S5", new double[][] {{1.0, 2.0, 1.5, 1.8}, {9.9, 9.9,
  284. 9.9, 9.9}});
  285. assertEquals(0, RendererUtilities.findLiveItemsUpperBound(d, 4, 0.0,
  286. 1.1));
  287. assertEquals(3, RendererUtilities.findLiveItemsUpperBound(d, 4, 1.0,
  288. 2.2));
  289. assertEquals(3, RendererUtilities.findLiveItemsUpperBound(d, 4, 2.0,
  290. 3.3));
  291. assertEquals(3, RendererUtilities.findLiveItemsUpperBound(d, 4, 3.0,
  292. 4.4));
  293. assertEquals(3, RendererUtilities.findLiveItemsUpperBound(d, 4, 4.0,
  294. 5.5));
  295. }
  296. /**
  297. * Some checks for the findLiveItemsUpperBound() method when the dataset is
  298. * ASCENDING.
  299. */
  300. @Test
  301. public void testFindLiveItemsUpperBound_Ascending() {
  302. DefaultXYDataset d = new DefaultXYDataset() {
  303. @Override
  304. public DomainOrder getDomainOrder() {
  305. // we're doing this for testing only, and make sure that we
  306. // only add data in ascending order by x-value
  307. return DomainOrder.ASCENDING;
  308. }
  309. };
  310. // check a series with no items
  311. d.addSeries("S1", new double[][] {{}, {}});
  312. assertEquals(0, RendererUtilities.findLiveItemsUpperBound(d, 0, 10.0,
  313. 11.1));
  314. // check a series with one item
  315. d.addSeries("S2", new double[][] {{1.0}, {9.9}});
  316. assertEquals(0, RendererUtilities.findLiveItemsUpperBound(d, 1, 0.0,
  317. 1.1));
  318. assertEquals(0, RendererUtilities.findLiveItemsUpperBound(d, 1, 2.0,
  319. 2.2));
  320. // check a series with two items
  321. d.addSeries("S3", new double[][] {{1.0, 2.0}, {9.9, 9.9}});
  322. assertEquals(0, RendererUtilities.findLiveItemsUpperBound(d, 2, 0.0,
  323. 1.0));
  324. assertEquals(1, RendererUtilities.findLiveItemsUpperBound(d, 2, 1.0,
  325. 2.2));
  326. assertEquals(1, RendererUtilities.findLiveItemsUpperBound(d, 2, 2.0,
  327. 3.3));
  328. assertEquals(1, RendererUtilities.findLiveItemsUpperBound(d, 2, 3.0,
  329. 4.4));
  330. // check a series with three items
  331. d.addSeries("S4", new double[][] {{1.0, 2.0, 3.0}, {9.9, 9.9, 9.9}});
  332. assertEquals(0, RendererUtilities.findLiveItemsUpperBound(d, 3, 0.0,
  333. 1.1));
  334. assertEquals(1, RendererUtilities.findLiveItemsUpperBound(d, 3, 1.0,
  335. 2.2));
  336. assertEquals(2, RendererUtilities.findLiveItemsUpperBound(d, 3, 2.0,
  337. 3.3));
  338. assertEquals(2, RendererUtilities.findLiveItemsUpperBound(d, 3, 3.0,
  339. 4.4));
  340. // check a series with four items
  341. d.addSeries("S5", new double[][] {{1.0, 2.0, 3.0, 4.0}, {9.9, 9.9,
  342. 9.9, 9.9}});
  343. assertEquals(0, RendererUtilities.findLiveItemsUpperBound(d, 4, 0.0,
  344. 1.1));
  345. assertEquals(1, RendererUtilities.findLiveItemsUpperBound(d, 4, 1.0,
  346. 2.2));
  347. assertEquals(2, RendererUtilities.findLiveItemsUpperBound(d, 4, 2.0,
  348. 3.3));
  349. assertEquals(3, RendererUtilities.findLiveItemsUpperBound(d, 4, 3.0,
  350. 4.4));
  351. assertEquals(3, RendererUtilities.findLiveItemsUpperBound(d, 4, 4.0,
  352. 5.5));
  353. // check a series with repeating items
  354. d.addSeries("S5", new double[][] {{1.0, 2.0, 2.0, 2.0, 3.0}, {9.9, 9.9,
  355. 9.9, 9.9, 9.9}});
  356. assertEquals(0, RendererUtilities.findLiveItemsUpperBound(d, 4, 0.0,
  357. 1.0));
  358. assertEquals(3, RendererUtilities.findLiveItemsUpperBound(d, 4, 0.0,
  359. 2.0));
  360. assertEquals(4, RendererUtilities.findLiveItemsUpperBound(d, 4, 0.0,
  361. 3.0));
  362. assertEquals(4, RendererUtilities.findLiveItemsUpperBound(d, 4, 0.0,
  363. 4.0));
  364. }
  365. /**
  366. * Some checks for the findLiveItemsUpperBound() method when the dataset is
  367. * DESCENDING.
  368. */
  369. @Test
  370. public void testFindLiveItemsUpperBound_Descending() {
  371. DefaultXYDataset d = new DefaultXYDataset() {
  372. @Override
  373. public DomainOrder getDomainOrder() {
  374. // we're doing this for testing only, and make sure that we
  375. // only add data in descending order by x-value
  376. return DomainOrder.DESCENDING;
  377. }
  378. };
  379. // check a series with no items
  380. d.addSeries("S1", new double[][] {{}, {}});
  381. assertEquals(0, RendererUtilities.findLiveItemsUpperBound(d, 0, 10.0,
  382. 11.0));
  383. // check a series with one item
  384. d.addSeries("S2", new double[][] {{1.0}, {9.9}});
  385. assertEquals(0, RendererUtilities.findLiveItemsUpperBound(d, 1, 0.0,
  386. 1.0));
  387. assertEquals(0, RendererUtilities.findLiveItemsUpperBound(d, 1, 1.1,
  388. 2.0));
  389. // check a series with two items
  390. d.addSeries("S3", new double[][] {{2.0, 1.0}, {9.9, 9.9}});
  391. assertEquals(1, RendererUtilities.findLiveItemsUpperBound(d, 2, 0.1,
  392. 0.5));
  393. assertEquals(1, RendererUtilities.findLiveItemsUpperBound(d, 2, 0.1,
  394. 1.0));
  395. assertEquals(0, RendererUtilities.findLiveItemsUpperBound(d, 2, 1.1,
  396. 2.0));
  397. assertEquals(0, RendererUtilities.findLiveItemsUpperBound(d, 2, 2.2,
  398. 3.0));
  399. assertEquals(0, RendererUtilities.findLiveItemsUpperBound(d, 2, 3.3,
  400. 4.0));
  401. // check a series with three items
  402. d.addSeries("S4", new double[][] {{3.0, 2.0, 1.0}, {9.9, 9.9, 9.9}});
  403. assertEquals(2, RendererUtilities.findLiveItemsUpperBound(d, 3, 0.0,
  404. 1.0));
  405. assertEquals(2, RendererUtilities.findLiveItemsUpperBound(d, 3, 1.0,
  406. 2.0));
  407. assertEquals(1, RendererUtilities.findLiveItemsUpperBound(d, 3, 2.0,
  408. 3.0));
  409. assertEquals(0, RendererUtilities.findLiveItemsUpperBound(d, 3, 3.0,
  410. 4.0));
  411. // check a series with four items
  412. d.addSeries("S5", new double[][] {{4.0, 3.0, 2.0, 1.0}, {9.9, 9.9,
  413. 9.9, 9.9}});
  414. assertEquals(3, RendererUtilities.findLiveItemsUpperBound(d, 4, 0.1,
  415. 0.5));
  416. assertEquals(3, RendererUtilities.findLiveItemsUpperBound(d, 4, 0.1,
  417. 1.0));
  418. assertEquals(2, RendererUtilities.findLiveItemsUpperBound(d, 4, 1.1,
  419. 2.0));
  420. assertEquals(1, RendererUtilities.findLiveItemsUpperBound(d, 4, 2.2,
  421. 3.0));
  422. assertEquals(0, RendererUtilities.findLiveItemsUpperBound(d, 4, 3.3,
  423. 4.0));
  424. assertEquals(0, RendererUtilities.findLiveItemsUpperBound(d, 4, 4.4,
  425. 5.0));
  426. // check a series with repeating items
  427. d.addSeries("S6", new double[][] {{3.0, 2.0, 2.0, 2.0, 1.0}, {9.9, 9.9,
  428. 9.9, 9.9, 9.9}});
  429. assertEquals(4, RendererUtilities.findLiveItemsUpperBound(d, 5, 0.0,
  430. 5.0));
  431. assertEquals(4, RendererUtilities.findLiveItemsUpperBound(d, 5, 1.0,
  432. 5.0));
  433. assertEquals(3, RendererUtilities.findLiveItemsUpperBound(d, 5, 2.0,
  434. 5.0));
  435. assertEquals(0, RendererUtilities.findLiveItemsUpperBound(d, 5, 3.0,
  436. 5.0));
  437. }
  438. /**
  439. * Checks the bounds calculation for a series where the x-ordering is not
  440. * known. See bug 3561093.
  441. */
  442. @Test
  443. public void test3561093() {
  444. XYSeries s = new XYSeries("S1", false);
  445. s.add(0.0, 0.0);
  446. s.add(21.0, 0.0);
  447. s.add(2.0, 0.0);
  448. s.add(23.0, 0.0);
  449. XYSeriesCollection dataset = new XYSeriesCollection();
  450. dataset.addSeries(s);
  451. assertEquals(1, RendererUtilities.findLiveItemsLowerBound(dataset, 0,
  452. 10.0, 20.0));
  453. assertEquals(2, RendererUtilities.findLiveItemsUpperBound(dataset, 0,
  454. 10.0, 20.0));
  455. int[] bounds = RendererUtilities.findLiveItems(dataset, 0, 10.0, 20.0);
  456. assertEquals(1, bounds[0]);
  457. assertEquals(2, bounds[1]);
  458. }
  459. }