AbstractRendererTest.java 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041
  1. /* ===========================================================
  2. * JFreeChart : a free chart library for the Java(tm) platform
  3. * ===========================================================
  4. *
  5. * (C) Copyright 2000-2014, 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. * AbstractRendererTest.java
  29. * -------------------------
  30. * (C) Copyright 2003-2014, by Object Refinery Limited and Contributors.
  31. *
  32. * Original Author: David Gilbert (for Object Refinery Limited);
  33. * Contributor(s): -;
  34. *
  35. * Changes
  36. * -------
  37. * 23-Oct-2003 : Version 1 (DG);
  38. * 01-Mar-2004 : Added serialization test (DG);
  39. * 19-Feb-2007 : Added testCloning (DG);
  40. * 28-Feb-2007 : Added checks for cloning (DG);
  41. * 17-Jun-2008 : Added new fields to testEquals() and testCloning() (DG);
  42. * 28-Jan-2009 : Updated testEquals() (DG);
  43. * 28-Apr-2009 : Updated testEquals() (DG);
  44. *
  45. */
  46. package org.jfree.chart.renderer;
  47. import static org.junit.Assert.assertEquals;
  48. import static org.junit.Assert.assertNotEquals;
  49. import static org.junit.Assert.assertFalse;
  50. import static org.junit.Assert.assertNotNull;
  51. import static org.junit.Assert.assertNull;
  52. import static org.junit.Assert.assertTrue;
  53. import static org.junit.Assert.fail;
  54. import org.junit.Test;
  55. import java.awt.BasicStroke;
  56. import java.awt.Color;
  57. import java.awt.Font;
  58. import java.awt.GradientPaint;
  59. import java.awt.Rectangle;
  60. import java.awt.Shape;
  61. import java.awt.Stroke;
  62. import java.awt.geom.Ellipse2D;
  63. import java.awt.geom.Line2D;
  64. import java.awt.geom.Rectangle2D;
  65. import org.jfree.chart.TestUtilities;
  66. import org.jfree.chart.axis.CategoryAxis;
  67. import org.jfree.chart.axis.NumberAxis;
  68. import org.jfree.chart.event.RendererChangeEvent;
  69. import org.jfree.chart.event.RendererChangeListener;
  70. import org.jfree.chart.labels.ItemLabelAnchor;
  71. import org.jfree.chart.labels.ItemLabelPosition;
  72. import org.jfree.chart.plot.CategoryPlot;
  73. import org.jfree.chart.plot.DefaultDrawingSupplier;
  74. import org.jfree.chart.renderer.category.BarRenderer;
  75. import org.jfree.chart.renderer.category.LineAndShapeRenderer;
  76. import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
  77. import org.jfree.ui.TextAnchor;
  78. /**
  79. * Tests for the {@link AbstractRenderer} class.
  80. */
  81. public class AbstractRendererTest {
  82. /**
  83. * Test that the equals() method distinguishes all fields.
  84. */
  85. @Test
  86. public void testEquals() {
  87. // have to use a concrete subclass...
  88. BarRenderer r1 = new BarRenderer();
  89. BarRenderer r2 = new BarRenderer();
  90. assertTrue(r1.equals(r2));
  91. assertTrue(r2.equals(r1));
  92. // seriesVisible
  93. r1.setSeriesVisible(Boolean.TRUE);
  94. assertFalse(r1.equals(r2));
  95. r2.setSeriesVisible(Boolean.TRUE);
  96. assertTrue(r1.equals(r2));
  97. // seriesVisibleList
  98. r1.setSeriesVisible(2, Boolean.TRUE);
  99. assertFalse(r1.equals(r2));
  100. r2.setSeriesVisible(2, Boolean.TRUE);
  101. assertTrue(r1.equals(r2));
  102. // baseSeriesVisible
  103. r1.setBaseSeriesVisible(false);
  104. assertFalse(r1.equals(r2));
  105. r2.setBaseSeriesVisible(false);
  106. assertTrue(r1.equals(r2));
  107. // seriesVisibleInLegend
  108. r1.setSeriesVisibleInLegend(Boolean.TRUE);
  109. assertFalse(r1.equals(r2));
  110. r2.setSeriesVisibleInLegend(Boolean.TRUE);
  111. assertTrue(r1.equals(r2));
  112. // seriesVisibleInLegendList
  113. r1.setSeriesVisibleInLegend(1, Boolean.TRUE);
  114. assertFalse(r1.equals(r2));
  115. r2.setSeriesVisibleInLegend(1, Boolean.TRUE);
  116. assertTrue(r1.equals(r2));
  117. // baseSeriesVisibleInLegend
  118. r1.setBaseSeriesVisibleInLegend(false);
  119. assertFalse(r1.equals(r2));
  120. r2.setBaseSeriesVisibleInLegend(false);
  121. assertTrue(r1.equals(r2));
  122. // paint
  123. r1.setPaint(new GradientPaint(1.0f, 2.0f, Color.blue,
  124. 3.0f, 4.0f, Color.red));
  125. assertFalse(r1.equals(r2));
  126. r2.setPaint(new GradientPaint(1.0f, 2.0f, Color.blue,
  127. 3.0f, 4.0f, Color.red));
  128. assertTrue(r1.equals(r2));
  129. // paintList
  130. r1.setSeriesPaint(0, new GradientPaint(1.0f, 2.0f, Color.red,
  131. 3.0f, 4.0f, Color.white));
  132. assertFalse(r1.equals(r2));
  133. r2.setSeriesPaint(0, new GradientPaint(1.0f, 2.0f, Color.red,
  134. 3.0f, 4.0f, Color.white));
  135. assertTrue(r1.equals(r2));
  136. // basePaint
  137. r1.setBasePaint(new GradientPaint(1.0f, 2.0f, Color.blue,
  138. 3.0f, 4.0f, Color.red));
  139. assertFalse(r1.equals(r2));
  140. r2.setBasePaint(new GradientPaint(1.0f, 2.0f, Color.blue,
  141. 3.0f, 4.0f, Color.red));
  142. assertTrue(r1.equals(r2));
  143. // fillPaint
  144. r1.setFillPaint(new GradientPaint(1.0f, 2.0f, Color.blue,
  145. 3.0f, 4.0f, Color.red));
  146. assertFalse(r1.equals(r2));
  147. r2.setFillPaint(new GradientPaint(1.0f, 2.0f, Color.blue,
  148. 3.0f, 4.0f, Color.red));
  149. assertTrue(r1.equals(r2));
  150. // fillPaintList
  151. r1.setSeriesFillPaint(0, new GradientPaint(1.0f, 2.0f, Color.blue,
  152. 3.0f, 4.0f, Color.red));
  153. assertFalse(r1.equals(r2));
  154. r2.setSeriesFillPaint(0, new GradientPaint(1.0f, 2.0f, Color.blue,
  155. 3.0f, 4.0f, Color.red));
  156. assertTrue(r1.equals(r2));
  157. // baseFillPaint
  158. r1.setBaseFillPaint(new GradientPaint(1.0f, 2.0f, Color.blue,
  159. 3.0f, 4.0f, Color.red));
  160. assertFalse(r1.equals(r2));
  161. r2.setBaseFillPaint(new GradientPaint(1.0f, 2.0f, Color.blue,
  162. 3.0f, 4.0f, Color.red));
  163. assertTrue(r1.equals(r2));
  164. // outlinePaint
  165. r1.setOutlinePaint(new GradientPaint(1.0f, 2.0f, Color.blue,
  166. 3.0f, 4.0f, Color.red));
  167. assertFalse(r1.equals(r2));
  168. r2.setOutlinePaint(new GradientPaint(1.0f, 2.0f, Color.blue,
  169. 3.0f, 4.0f, Color.red));
  170. assertTrue(r1.equals(r2));
  171. // outlinePaintList
  172. r1.setSeriesOutlinePaint(0, new GradientPaint(1.0f, 2.0f, Color.blue,
  173. 3.0f, 4.0f, Color.red));
  174. assertFalse(r1.equals(r2));
  175. r2.setSeriesOutlinePaint(0, new GradientPaint(1.0f, 2.0f, Color.blue,
  176. 3.0f, 4.0f, Color.red));
  177. assertTrue(r1.equals(r2));
  178. // baseOutlinePaint
  179. r1.setBaseOutlinePaint(new GradientPaint(1.0f, 2.0f, Color.blue,
  180. 3.0f, 4.0f, Color.red));
  181. assertFalse(r1.equals(r2));
  182. r2.setBaseOutlinePaint(new GradientPaint(1.0f, 2.0f, Color.blue,
  183. 3.0f, 4.0f, Color.red));
  184. assertTrue(r1.equals(r2));
  185. // stroke
  186. Stroke s = new BasicStroke(3.21f);
  187. r1.setStroke(s);
  188. assertFalse(r1.equals(r2));
  189. r2.setStroke(s);
  190. assertTrue(r1.equals(r2));
  191. // strokeList
  192. r1.setSeriesStroke(1, s);
  193. assertFalse(r1.equals(r2));
  194. r2.setSeriesStroke(1, s);
  195. assertTrue(r1.equals(r2));
  196. // baseStroke
  197. r1.setBaseStroke(s);
  198. assertFalse(r1.equals(r2));
  199. r2.setBaseStroke(s);
  200. assertTrue(r1.equals(r2));
  201. // outlineStroke
  202. r1.setOutlineStroke(s);
  203. assertFalse(r1.equals(r2));
  204. r2.setOutlineStroke(s);
  205. assertTrue(r1.equals(r2));
  206. // outlineStrokeList
  207. r1.setSeriesOutlineStroke(0, s);
  208. assertFalse(r1.equals(r2));
  209. r2.setSeriesOutlineStroke(0, s);
  210. assertTrue(r1.equals(r2));
  211. // baseOutlineStroke
  212. r1.setBaseOutlineStroke(s);
  213. assertFalse(r1.equals(r2));
  214. r2.setBaseOutlineStroke(s);
  215. assertTrue(r1.equals(r2));
  216. // shape
  217. r1.setShape(new Ellipse2D.Double(1, 2, 3, 4));
  218. assertFalse(r1.equals(r2));
  219. r2.setShape(new Ellipse2D.Double(1, 2, 3, 4));
  220. assertTrue(r1.equals(r2));
  221. // shapeList
  222. r1.setSeriesShape(1, new Ellipse2D.Double(1, 2, 3, 4));
  223. assertFalse(r1.equals(r2));
  224. r2.setSeriesShape(1, new Ellipse2D.Double(1, 2, 3, 4));
  225. assertTrue(r1.equals(r2));
  226. // baseShape
  227. r1.setBaseShape(new Ellipse2D.Double(1, 2, 3, 4));
  228. assertFalse(r1.equals(r2));
  229. r2.setBaseShape(new Ellipse2D.Double(1, 2, 3, 4));
  230. assertTrue(r1.equals(r2));
  231. // itemLabelsVisible
  232. r1.setItemLabelsVisible(true);
  233. assertFalse(r1.equals(r2));
  234. r2.setItemLabelsVisible(true);
  235. assertTrue(r1.equals(r2));
  236. // itemLabelsVisibleList
  237. r1.setSeriesItemLabelsVisible(1, Boolean.TRUE);
  238. assertFalse(r1.equals(r2));
  239. r2.setSeriesItemLabelsVisible(1, Boolean.TRUE);
  240. assertTrue(r1.equals(r2));
  241. // baseItemLabelsVisible
  242. r1.setBaseItemLabelsVisible(true);
  243. assertFalse(r1.equals(r2));
  244. r2.setBaseItemLabelsVisible(true);
  245. assertTrue(r1.equals(r2));
  246. // itemLabelFont
  247. r1.setItemLabelFont(new Font("Serif", Font.PLAIN, 10));
  248. assertFalse(r1.equals(r2));
  249. r2.setItemLabelFont(new Font("Serif", Font.PLAIN, 10));
  250. assertTrue(r1.equals(r2));
  251. // itemLabelFontList
  252. r1.setSeriesItemLabelFont(1, new Font("Serif", Font.BOLD, 9));
  253. assertFalse(r1.equals(r2));
  254. r2.setSeriesItemLabelFont(1, new Font("Serif", Font.BOLD, 9));
  255. assertTrue(r1.equals(r2));
  256. // baseItemLabelFont
  257. r1.setBaseItemLabelFont(new Font("Serif", Font.PLAIN, 10));
  258. assertFalse(r1.equals(r2));
  259. r2.setBaseItemLabelFont(new Font("Serif", Font.PLAIN, 10));
  260. assertTrue(r1.equals(r2));
  261. // itemLabelPaint
  262. r1.setItemLabelPaint(new GradientPaint(1.0f, 2.0f, Color.red,
  263. 3.0f, 4.0f, Color.gray));
  264. assertFalse(r1.equals(r2));
  265. r2.setItemLabelPaint(new GradientPaint(1.0f, 2.0f, Color.red,
  266. 3.0f, 4.0f, Color.gray));
  267. assertTrue(r1.equals(r2));
  268. // itemLabelPaintList
  269. r1.setSeriesItemLabelPaint(0, new GradientPaint(1.0f, 2.0f, Color.red,
  270. 3.0f, 4.0f, Color.gray));
  271. assertFalse(r1.equals(r2));
  272. r2.setSeriesItemLabelPaint(0, new GradientPaint(1.0f, 2.0f, Color.red,
  273. 3.0f, 4.0f, Color.gray));
  274. assertTrue(r1.equals(r2));
  275. // baseItemLabelPaint
  276. r1.setBaseItemLabelPaint(new GradientPaint(1.0f, 2.0f, Color.red,
  277. 3.0f, 4.0f, Color.gray));
  278. assertFalse(r1.equals(r2));
  279. r2.setBaseItemLabelPaint(new GradientPaint(1.0f, 2.0f, Color.red,
  280. 3.0f, 4.0f, Color.gray));
  281. assertTrue(r1.equals(r2));
  282. // positiveItemLabelPosition;
  283. r1.setPositiveItemLabelPosition(new ItemLabelPosition());
  284. assertFalse(r1.equals(r2));
  285. r2.setPositiveItemLabelPosition(new ItemLabelPosition());
  286. assertTrue(r1.equals(r2));
  287. // positiveItemLabelPositionList;
  288. r1.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition());
  289. assertFalse(r1.equals(r2));
  290. r2.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition());
  291. assertTrue(r1.equals(r2));
  292. // basePositiveItemLabelPosition;
  293. r1.setBasePositiveItemLabelPosition(new ItemLabelPosition(
  294. ItemLabelAnchor.INSIDE10, TextAnchor.BASELINE_RIGHT));
  295. assertFalse(r1.equals(r2));
  296. r2.setBasePositiveItemLabelPosition(new ItemLabelPosition(
  297. ItemLabelAnchor.INSIDE10, TextAnchor.BASELINE_RIGHT));
  298. assertTrue(r1.equals(r2));
  299. // negativeItemLabelPosition;
  300. r1.setNegativeItemLabelPosition(new ItemLabelPosition(
  301. ItemLabelAnchor.INSIDE10, TextAnchor.BASELINE_RIGHT));
  302. assertFalse(r1.equals(r2));
  303. r2.setNegativeItemLabelPosition(new ItemLabelPosition(
  304. ItemLabelAnchor.INSIDE10, TextAnchor.BASELINE_RIGHT));
  305. assertTrue(r1.equals(r2));
  306. // negativeItemLabelPositionList;
  307. r1.setSeriesNegativeItemLabelPosition(1, new ItemLabelPosition(
  308. ItemLabelAnchor.INSIDE10, TextAnchor.BASELINE_RIGHT));
  309. assertFalse(r1.equals(r2));
  310. r2.setSeriesNegativeItemLabelPosition(1, new ItemLabelPosition(
  311. ItemLabelAnchor.INSIDE10, TextAnchor.BASELINE_RIGHT));
  312. assertTrue(r1.equals(r2));
  313. // baseNegativeItemLabelPosition;
  314. r1.setBaseNegativeItemLabelPosition(new ItemLabelPosition(
  315. ItemLabelAnchor.INSIDE10, TextAnchor.BASELINE_RIGHT));
  316. assertFalse(r1.equals(r2));
  317. r2.setBaseNegativeItemLabelPosition(new ItemLabelPosition(
  318. ItemLabelAnchor.INSIDE10, TextAnchor.BASELINE_RIGHT));
  319. assertTrue(r1.equals(r2));
  320. // itemLabelAnchorOffset
  321. r1.setItemLabelAnchorOffset(3.0);
  322. assertFalse(r1.equals(r2));
  323. r2.setItemLabelAnchorOffset(3.0);
  324. assertTrue(r1.equals(r2));
  325. // createEntities;
  326. r1.setCreateEntities(Boolean.TRUE);
  327. assertFalse(r1.equals(r2));
  328. r2.setCreateEntities(Boolean.TRUE);
  329. assertTrue(r1.equals(r2));
  330. // createEntitiesList;
  331. r1.setSeriesCreateEntities(0, Boolean.TRUE);
  332. assertFalse(r1.equals(r2));
  333. r2.setSeriesCreateEntities(0, Boolean.TRUE);
  334. assertTrue(r1.equals(r2));
  335. // baseCreateEntities;
  336. r1.setBaseCreateEntities(false);
  337. assertFalse(r1.equals(r2));
  338. r2.setBaseCreateEntities(false);
  339. assertTrue(r1.equals(r2));
  340. // legendShape
  341. r1.setLegendShape(0, new Ellipse2D.Double(1.0, 2.0, 3.0, 4.0));
  342. assertFalse(r1.equals(r2));
  343. r2.setLegendShape(0, new Ellipse2D.Double(1.0, 2.0, 3.0, 4.0));
  344. assertTrue(r1.equals(r2));
  345. // baseLegendShape
  346. r1.setBaseLegendShape(new Ellipse2D.Double(5.0, 6.0, 7.0, 8.0));
  347. assertFalse(r1.equals(r2));
  348. r2.setBaseLegendShape(new Ellipse2D.Double(5.0, 6.0, 7.0, 8.0));
  349. assertTrue(r1.equals(r2));
  350. // legendTextFont
  351. r1.setLegendTextFont(0, new Font("Dialog", Font.PLAIN, 7));
  352. assertFalse(r1.equals(r2));
  353. r2.setLegendTextFont(0, new Font("Dialog", Font.PLAIN, 7));
  354. assertTrue(r1.equals(r2));
  355. // baseLegendTextFont
  356. r1.setBaseLegendTextFont(new Font("Dialog", Font.PLAIN, 7));
  357. assertFalse(r1.equals(r2));
  358. r2.setBaseLegendTextFont(new Font("Dialog", Font.PLAIN, 7));
  359. assertTrue(r1.equals(r2));
  360. // legendTextPaint
  361. r1.setLegendTextPaint(0, new GradientPaint(1.0f, 2.0f, Color.blue,
  362. 3.0f, 4.0f, Color.red));
  363. assertFalse(r1.equals(r2));
  364. r2.setLegendTextPaint(0, new GradientPaint(1.0f, 2.0f, Color.blue,
  365. 3.0f, 4.0f, Color.red));
  366. assertTrue(r1.equals(r2));
  367. // baseOutlinePaint
  368. r1.setBaseLegendTextPaint(new GradientPaint(1.0f, 2.0f, Color.blue,
  369. 3.0f, 4.0f, Color.red));
  370. assertFalse(r1.equals(r2));
  371. r2.setBaseLegendTextPaint(new GradientPaint(1.0f, 2.0f, Color.blue,
  372. 3.0f, 4.0f, Color.red));
  373. assertTrue(r1.equals(r2));
  374. }
  375. @Test
  376. public void testEquals_ObjectList() {
  377. BarRenderer r1 = new BarRenderer();
  378. r1.setSeriesItemLabelFont(0, new Font(Font.DIALOG, Font.BOLD, 10));
  379. BarRenderer r2 = new BarRenderer();
  380. r2.setSeriesItemLabelFont(0, new Font(Font.DIALOG, Font.BOLD, 10));
  381. assertEquals(r1, r2);
  382. r2.setSeriesItemLabelFont(1, new Font(Font.DIALOG, Font.PLAIN, 5));
  383. assertNotEquals(r1, r2);
  384. }
  385. @Test
  386. public void testEquals_ObjectList2() {
  387. BarRenderer r1 = new BarRenderer();
  388. r1.setLegendTextFont(0, new Font(Font.DIALOG, Font.BOLD, 10));
  389. BarRenderer r2 = new BarRenderer();
  390. r2.setLegendTextFont(0, new Font(Font.DIALOG, Font.BOLD, 10));
  391. assertEquals(r1, r2);
  392. r2.setLegendTextFont(1, new Font(Font.DIALOG, Font.PLAIN, 5));
  393. assertNotEquals(r1, r2);
  394. }
  395. @Test
  396. public void testEquals_ObjectList3() {
  397. BarRenderer r1 = new BarRenderer();
  398. r1.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));
  399. BarRenderer r2 = new BarRenderer();
  400. r2.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));
  401. assertEquals(r1, r2);
  402. r2.setSeriesPositiveItemLabelPosition(1, new ItemLabelPosition(ItemLabelAnchor.INSIDE1, TextAnchor.CENTER));
  403. assertNotEquals(r1, r2);
  404. }
  405. @Test
  406. public void testEquals_ObjectList4() {
  407. BarRenderer r1 = new BarRenderer();
  408. r1.setSeriesNegativeItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));
  409. BarRenderer r2 = new BarRenderer();
  410. r2.setSeriesNegativeItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));
  411. assertEquals(r1, r2);
  412. r2.setSeriesNegativeItemLabelPosition(1, new ItemLabelPosition(ItemLabelAnchor.INSIDE1, TextAnchor.CENTER));
  413. assertNotEquals(r1, r2);
  414. }
  415. private static class TestRenderer extends XYLineAndShapeRenderer {
  416. @Override
  417. public void setTreatLegendShapeAsLine(boolean flag) {
  418. super.setTreatLegendShapeAsLine(flag);
  419. }
  420. }
  421. /**
  422. * Check that the treatLegendShapeAsLine flag is included in the equals()
  423. * comparison.
  424. */
  425. @Test
  426. public void testEquals2() {
  427. TestRenderer r1 = new TestRenderer();
  428. TestRenderer r2 = new TestRenderer();
  429. assertTrue(r1.equals(r2));
  430. r1.setTreatLegendShapeAsLine(true);
  431. assertFalse(r1.equals(r2));
  432. r2.setTreatLegendShapeAsLine(true);
  433. assertTrue(r1.equals(r2));
  434. }
  435. /**
  436. * Confirm that cloning works.
  437. */
  438. @Test
  439. public void testCloning() throws CloneNotSupportedException {
  440. LineAndShapeRenderer r1 = new LineAndShapeRenderer();
  441. Rectangle2D shape = new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0);
  442. Rectangle2D baseShape = new Rectangle2D.Double(11.0, 12.0, 13.0, 14.0);
  443. r1.setShape(shape);
  444. r1.setBaseShape(baseShape);
  445. r1.setBaseLegendShape(new Rectangle(4, 3, 2, 1));
  446. r1.setBaseLegendTextFont(new Font("Dialog", Font.PLAIN, 3));
  447. r1.setBaseLegendTextPaint(new Color(1, 2, 3));
  448. LineAndShapeRenderer r2 = (LineAndShapeRenderer) r1.clone();
  449. assertTrue(r1 != r2);
  450. assertTrue(r1.getClass() == r2.getClass());
  451. assertTrue(r1.equals(r2));
  452. r1.setSeriesVisible(0, Boolean.FALSE);
  453. assertFalse(r1.equals(r2));
  454. r2.setSeriesVisible(0, Boolean.FALSE);
  455. assertTrue(r1.equals(r2));
  456. r1.setSeriesVisibleInLegend(0, Boolean.FALSE);
  457. assertFalse(r1.equals(r2));
  458. r2.setSeriesVisibleInLegend(0, Boolean.FALSE);
  459. assertTrue(r1.equals(r2));
  460. r1.setSeriesPaint(0, Color.black);
  461. assertFalse(r1.equals(r2));
  462. r2.setSeriesPaint(0, Color.black);
  463. assertTrue(r1.equals(r2));
  464. r1.setSeriesFillPaint(0, Color.yellow);
  465. assertFalse(r1.equals(r2));
  466. r2.setSeriesFillPaint(0, Color.yellow);
  467. assertTrue(r1.equals(r2));
  468. r1.setSeriesOutlinePaint(0, Color.yellow);
  469. assertFalse(r1.equals(r2));
  470. r2.setSeriesOutlinePaint(0, Color.yellow);
  471. assertTrue(r1.equals(r2));
  472. r1.setSeriesStroke(0, new BasicStroke(2.2f));
  473. assertFalse(r1.equals(r2));
  474. r2.setSeriesStroke(0, new BasicStroke(2.2f));
  475. assertTrue(r1.equals(r2));
  476. r1.setSeriesOutlineStroke(0, new BasicStroke(2.2f));
  477. assertFalse(r1.equals(r2));
  478. r2.setSeriesOutlineStroke(0, new BasicStroke(2.2f));
  479. assertTrue(r1.equals(r2));
  480. shape.setRect(4.0, 3.0, 2.0, 1.0);
  481. assertFalse(r1.equals(r2));
  482. r2.setShape(new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0));
  483. assertTrue(r1.equals(r2));
  484. baseShape.setRect(4.0, 3.0, 2.0, 1.0);
  485. assertFalse(r1.equals(r2));
  486. r2.setBaseShape(new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0));
  487. assertTrue(r1.equals(r2));
  488. r1.setSeriesShape(0, new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0));
  489. assertFalse(r1.equals(r2));
  490. r2.setSeriesShape(0, new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0));
  491. assertTrue(r1.equals(r2));
  492. r1.setSeriesItemLabelsVisible(0, Boolean.TRUE);
  493. assertFalse(r1.equals(r2));
  494. r2.setSeriesItemLabelsVisible(0, Boolean.TRUE);
  495. assertTrue(r1.equals(r2));
  496. r1.setSeriesItemLabelPaint(0, Color.red);
  497. assertFalse(r1.equals(r2));
  498. r2.setSeriesItemLabelPaint(0, Color.red);
  499. assertTrue(r1.equals(r2));
  500. r1.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition());
  501. assertFalse(r1.equals(r2));
  502. r2.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition());
  503. assertTrue(r1.equals(r2));
  504. r1.setSeriesNegativeItemLabelPosition(0, new ItemLabelPosition());
  505. assertFalse(r1.equals(r2));
  506. r2.setSeriesNegativeItemLabelPosition(0, new ItemLabelPosition());
  507. assertTrue(r1.equals(r2));
  508. r1.setSeriesCreateEntities(0, Boolean.FALSE);
  509. assertFalse(r1.equals(r2));
  510. r2.setSeriesCreateEntities(0, Boolean.FALSE);
  511. assertTrue(r1.equals(r2));
  512. r1.setLegendShape(0, new Rectangle(9, 7, 3, 4));
  513. assertFalse(r1.equals(r2));
  514. r2.setLegendShape(0, new Rectangle(9, 7, 3, 4));
  515. assertTrue(r1.equals(r2));
  516. r1.setBaseLegendShape(new Rectangle(3, 4, 1, 5));
  517. assertFalse(r1.equals(r2));
  518. r2.setBaseLegendShape(new Rectangle(3, 4, 1, 5));
  519. assertTrue(r1.equals(r2));
  520. r1.setLegendTextFont(1, new Font("Dialog", Font.PLAIN, 33));
  521. assertFalse(r1.equals(r2));
  522. r2.setLegendTextFont(1, new Font("Dialog", Font.PLAIN, 33));
  523. assertTrue(r1.equals(r2));
  524. r1.setBaseLegendTextFont(new Font("Dialog", Font.PLAIN, 11));
  525. assertFalse(r1.equals(r2));
  526. r2.setBaseLegendTextFont(new Font("Dialog", Font.PLAIN, 11));
  527. assertTrue(r1.equals(r2));
  528. r1.setLegendTextPaint(3, Color.red);
  529. assertFalse(r1.equals(r2));
  530. r2.setLegendTextPaint(3, Color.red);
  531. assertTrue(r1.equals(r2));
  532. r1.setBaseLegendTextPaint(Color.green);
  533. assertFalse(r1.equals(r2));
  534. r2.setBaseLegendTextPaint(Color.green);
  535. assertTrue(r1.equals(r2));
  536. }
  537. /**
  538. * A utility class for listening to changes to a renderer.
  539. */
  540. static class MyRendererChangeListener implements RendererChangeListener {
  541. /** The last event received. */
  542. public RendererChangeEvent lastEvent;
  543. /**
  544. * Creates a new instance.
  545. */
  546. public MyRendererChangeListener() {
  547. this.lastEvent = null;
  548. }
  549. @Override
  550. public void rendererChanged(RendererChangeEvent event) {
  551. this.lastEvent = event;
  552. }
  553. }
  554. /**
  555. * A check for cloning.
  556. */
  557. @Test
  558. public void testCloning2() throws CloneNotSupportedException {
  559. LineAndShapeRenderer r1 = new LineAndShapeRenderer();
  560. r1.setBasePaint(Color.blue);
  561. r1.setBaseLegendTextPaint(new GradientPaint(1.0f, 2.0f, Color.red,
  562. 3.0f, 4.0f, Color.blue));
  563. LineAndShapeRenderer r2 = (LineAndShapeRenderer) r1.clone();
  564. assertTrue(r1 != r2);
  565. assertTrue(r1.getClass() == r2.getClass());
  566. assertTrue(r1.equals(r2));
  567. MyRendererChangeListener listener = new MyRendererChangeListener();
  568. r2.addChangeListener(listener);
  569. r2.setBasePaint(Color.red);
  570. assertTrue(listener.lastEvent.getRenderer() == r2);
  571. assertFalse(r1.hasListener(listener));
  572. }
  573. /**
  574. * Test that setting the series visibility for ALL series does in fact work.
  575. */
  576. @Test
  577. public void testSetSeriesVisible() {
  578. BarRenderer r = new BarRenderer();
  579. r.setSeriesVisible(Boolean.TRUE);
  580. assertTrue(r.getItemVisible(0, 0));
  581. }
  582. /**
  583. * Test that setting the paint for ALL series does in fact work.
  584. */
  585. @Test
  586. public void testSetPaint() {
  587. BarRenderer r = new BarRenderer();
  588. r.setPaint(Color.orange);
  589. assertEquals(Color.orange, r.getItemPaint(0, 0));
  590. }
  591. /**
  592. * Test that setting the outline paint for ALL series does in fact work.
  593. */
  594. @Test
  595. public void testSetOutlinePaint() {
  596. BarRenderer r = new BarRenderer();
  597. r.setOutlinePaint(Color.orange);
  598. assertEquals(Color.orange, r.getItemOutlinePaint(0, 0));
  599. }
  600. /**
  601. * Test that setting the stroke for ALL series does in fact work.
  602. */
  603. @Test
  604. public void testSetStroke() {
  605. BarRenderer r = new BarRenderer();
  606. Stroke s = new BasicStroke(10.0f);
  607. r.setStroke(s);
  608. assertEquals(s, r.getItemStroke(0, 0));
  609. }
  610. /**
  611. * Test that setting the outline stroke for ALL series does in fact work.
  612. */
  613. @Test
  614. public void testSetOutlineStroke() {
  615. BarRenderer r = new BarRenderer();
  616. Stroke s = new BasicStroke(10.0f);
  617. r.setOutlineStroke(s);
  618. assertEquals(s, r.getItemOutlineStroke(0, 0));
  619. }
  620. /**
  621. * Test that setting the shape for ALL series does in fact work.
  622. */
  623. @Test
  624. public void testSetShape() {
  625. BarRenderer r = new BarRenderer();
  626. Shape s = new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0);
  627. r.setShape(s);
  628. assertEquals(s, r.getItemShape(0, 0));
  629. }
  630. /**
  631. * Test that setting the item label visibility for ALL series does in fact
  632. * work.
  633. */
  634. @Test
  635. public void testSetItemLabelsVisible() {
  636. BarRenderer r = new BarRenderer();
  637. r.setItemLabelsVisible(true);
  638. assertTrue(r.isItemLabelVisible(0, 0));
  639. }
  640. /**
  641. * Test that setting the font for ALL series does in fact work (it was
  642. * broken at one point).
  643. */
  644. @Test
  645. public void testSetItemLabelFont() {
  646. BarRenderer r = new BarRenderer();
  647. r.setItemLabelFont(new Font("SansSerif", Font.PLAIN, 33));
  648. assertEquals(new Font("SansSerif", Font.PLAIN, 33),
  649. r.getItemLabelFont(0, 0));
  650. }
  651. /**
  652. * Test that setting the paint for ALL series does in fact work (it was
  653. * broken at one point).
  654. */
  655. @Test
  656. public void testSetItemLabelPaint() {
  657. BarRenderer r = new BarRenderer();
  658. r.setItemLabelPaint(Color.green);
  659. assertEquals(Color.green, r.getItemLabelPaint(0, 0));
  660. }
  661. /**
  662. * Test that setting the positive item label position for ALL series does
  663. * in fact work.
  664. */
  665. @Test
  666. public void testSetPositiveItemLabelPosition() {
  667. BarRenderer r = new BarRenderer();
  668. r.setPositiveItemLabelPosition(new ItemLabelPosition(
  669. ItemLabelAnchor.INSIDE1, TextAnchor.BASELINE_LEFT));
  670. assertEquals(new ItemLabelPosition(
  671. ItemLabelAnchor.INSIDE1, TextAnchor.BASELINE_LEFT),
  672. r.getPositiveItemLabelPosition(0, 0));
  673. }
  674. /**
  675. * Test that setting the negative item label position for ALL series does
  676. * in fact work.
  677. */
  678. @Test
  679. public void testSetNegativeItemLabelPosition() {
  680. BarRenderer r = new BarRenderer();
  681. r.setNegativeItemLabelPosition(new ItemLabelPosition(
  682. ItemLabelAnchor.INSIDE1, TextAnchor.BASELINE_LEFT));
  683. assertEquals(new ItemLabelPosition(
  684. ItemLabelAnchor.INSIDE1, TextAnchor.BASELINE_LEFT),
  685. r.getNegativeItemLabelPosition(0, 0));
  686. }
  687. /**
  688. * Tests each setter method to ensure that it sends an event notification.
  689. */
  690. @Test
  691. public void testEventNotification() {
  692. RendererChangeDetector detector = new RendererChangeDetector();
  693. BarRenderer r1 = new BarRenderer(); // have to use a subclass of
  694. // AbstractRenderer
  695. r1.addChangeListener(detector);
  696. // PAINT
  697. detector.setNotified(false);
  698. r1.setPaint(Color.red);
  699. assertTrue(detector.getNotified());
  700. detector.setNotified(false);
  701. r1.setSeriesPaint(0, Color.red);
  702. assertTrue(detector.getNotified());
  703. detector.setNotified(false);
  704. r1.setBasePaint(Color.red);
  705. assertTrue(detector.getNotified());
  706. // OUTLINE PAINT
  707. detector.setNotified(false);
  708. r1.setOutlinePaint(Color.red);
  709. assertTrue(detector.getNotified());
  710. detector.setNotified(false);
  711. r1.setSeriesOutlinePaint(0, Color.red);
  712. assertTrue(detector.getNotified());
  713. detector.setNotified(false);
  714. r1.setBaseOutlinePaint(Color.red);
  715. assertTrue(detector.getNotified());
  716. // STROKE
  717. detector.setNotified(false);
  718. r1.setStroke(new BasicStroke(1.0f));
  719. assertTrue(detector.getNotified());
  720. detector.setNotified(false);
  721. r1.setSeriesStroke(0, new BasicStroke(1.0f));
  722. assertTrue(detector.getNotified());
  723. detector.setNotified(false);
  724. r1.setBaseStroke(new BasicStroke(1.0f));
  725. assertTrue(detector.getNotified());
  726. // OUTLINE STROKE
  727. detector.setNotified(false);
  728. r1.setOutlineStroke(new BasicStroke(1.0f));
  729. assertTrue(detector.getNotified());
  730. detector.setNotified(false);
  731. r1.setSeriesOutlineStroke(0, new BasicStroke(1.0f));
  732. assertTrue(detector.getNotified());
  733. detector.setNotified(false);
  734. r1.setBaseOutlineStroke(new BasicStroke(1.0f));
  735. assertTrue(detector.getNotified());
  736. // SHAPE
  737. detector.setNotified(false);
  738. r1.setShape(new Rectangle2D.Float());
  739. assertTrue(detector.getNotified());
  740. detector.setNotified(false);
  741. r1.setSeriesShape(0, new Rectangle2D.Float());
  742. assertTrue(detector.getNotified());
  743. detector.setNotified(false);
  744. r1.setBaseShape(new Rectangle2D.Float());
  745. assertTrue(detector.getNotified());
  746. // ITEM_LABELS_VISIBLE
  747. detector.setNotified(false);
  748. r1.setItemLabelsVisible(Boolean.TRUE);
  749. assertTrue(detector.getNotified());
  750. detector.setNotified(false);
  751. r1.setSeriesItemLabelsVisible(0, Boolean.TRUE);
  752. assertTrue(detector.getNotified());
  753. detector.setNotified(false);
  754. r1.setBaseItemLabelsVisible(Boolean.TRUE);
  755. assertTrue(detector.getNotified());
  756. // ITEM_LABEL_FONT
  757. detector.setNotified(false);
  758. r1.setItemLabelFont(new Font("Serif", Font.PLAIN, 12));
  759. assertTrue(detector.getNotified());
  760. detector.setNotified(false);
  761. r1.setSeriesItemLabelFont(0, new Font("Serif", Font.PLAIN, 12));
  762. assertTrue(detector.getNotified());
  763. detector.setNotified(false);
  764. r1.setBaseItemLabelFont(new Font("Serif", Font.PLAIN, 12));
  765. assertTrue(detector.getNotified());
  766. // ITEM_LABEL_PAINT
  767. detector.setNotified(false);
  768. r1.setItemLabelPaint(Color.blue);
  769. assertTrue(detector.getNotified());
  770. detector.setNotified(false);
  771. r1.setSeriesItemLabelPaint(0, Color.blue);
  772. assertTrue(detector.getNotified());
  773. detector.setNotified(false);
  774. r1.setBaseItemLabelPaint(Color.blue);
  775. assertTrue(detector.getNotified());
  776. // POSITIVE ITEM LABEL POSITION
  777. detector.setNotified(false);
  778. r1.setPositiveItemLabelPosition(new ItemLabelPosition(
  779. ItemLabelAnchor.CENTER, TextAnchor.CENTER));
  780. assertTrue(detector.getNotified());
  781. detector.setNotified(false);
  782. r1.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition(
  783. ItemLabelAnchor.CENTER, TextAnchor.CENTER));
  784. assertTrue(detector.getNotified());
  785. detector.setNotified(false);
  786. r1.setBasePositiveItemLabelPosition(new ItemLabelPosition(
  787. ItemLabelAnchor.CENTER, TextAnchor.CENTER));
  788. assertTrue(detector.getNotified());
  789. // NEGATIVE ITEM LABEL ANCHOR
  790. detector.setNotified(false);
  791. r1.setNegativeItemLabelPosition(
  792. new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER)
  793. );
  794. assertTrue(detector.getNotified());
  795. detector.setNotified(false);
  796. r1.setSeriesNegativeItemLabelPosition(0, new ItemLabelPosition(
  797. ItemLabelAnchor.CENTER, TextAnchor.CENTER));
  798. assertTrue(detector.getNotified());
  799. detector.setNotified(false);
  800. r1.setBaseNegativeItemLabelPosition(new ItemLabelPosition(
  801. ItemLabelAnchor.CENTER, TextAnchor.CENTER));
  802. assertTrue(detector.getNotified());
  803. }
  804. /**
  805. * Serialize an instance, restore it, and check for equality. In addition,
  806. * test for a bug that was reported where the listener list is 'null' after
  807. * deserialization.
  808. */
  809. @Test
  810. public void testSerialization() {
  811. BarRenderer r1 = new BarRenderer();
  812. r1.setBaseLegendTextFont(new Font("Dialog", Font.PLAIN, 4));
  813. r1.setBaseLegendTextPaint(new GradientPaint(1.0f, 2.0f, Color.red,
  814. 3.0f, 4.0f, Color.green));
  815. r1.setBaseLegendShape(new Line2D.Double(1.0, 2.0, 3.0, 4.0));
  816. BarRenderer r2 = (BarRenderer) TestUtilities.serialised(r1);
  817. assertEquals(r1, r2);
  818. try {
  819. r2.notifyListeners(new RendererChangeEvent(r2));
  820. }
  821. catch (NullPointerException e) {
  822. fail("No exception should be thrown."); // failed
  823. }
  824. }
  825. /**
  826. * Some checks for the autoPopulate flag default values.
  827. */
  828. @Test
  829. public void testAutoPopulateFlagDefaults() {
  830. BarRenderer r = new BarRenderer();
  831. assertEquals(true, r.getAutoPopulateSeriesPaint());
  832. assertEquals(false, r.getAutoPopulateSeriesFillPaint());
  833. assertEquals(false, r.getAutoPopulateSeriesOutlinePaint());
  834. assertEquals(true, r.getAutoPopulateSeriesStroke());
  835. assertEquals(false, r.getAutoPopulateSeriesOutlineStroke());
  836. assertEquals(true, r.getAutoPopulateSeriesShape());
  837. }
  838. /**
  839. * Some checks for the paint lookup mechanism.
  840. */
  841. @Test
  842. public void testPaintLookup() {
  843. BarRenderer r = new BarRenderer();
  844. assertEquals(Color.blue, r.getBasePaint());
  845. // first check that autoPopulate==false works as expected
  846. r.setAutoPopulateSeriesPaint(false);
  847. assertEquals(Color.blue, r.lookupSeriesPaint(0));
  848. assertNull(r.getSeriesPaint(0));
  849. // now check autoPopulate==true
  850. r.setAutoPopulateSeriesPaint(true);
  851. /*CategoryPlot plot =*/ new CategoryPlot(null, new CategoryAxis(
  852. "Category"), new NumberAxis("Value"), r);
  853. assertEquals(DefaultDrawingSupplier.DEFAULT_PAINT_SEQUENCE[0],
  854. r.lookupSeriesPaint(0));
  855. assertNotNull(r.getSeriesPaint(0));
  856. }
  857. /**
  858. * Some checks for the fill paint lookup mechanism.
  859. */
  860. @Test
  861. public void testFillPaintLookup() {
  862. BarRenderer r = new BarRenderer();
  863. assertEquals(Color.white, r.getBaseFillPaint());
  864. // first check that autoPopulate==false works as expected
  865. r.setAutoPopulateSeriesFillPaint(false);
  866. assertEquals(Color.white, r.lookupSeriesFillPaint(0));
  867. assertNull(r.getSeriesFillPaint(0));
  868. // now check autoPopulate==true
  869. r.setAutoPopulateSeriesFillPaint(true);
  870. /*CategoryPlot plot =*/ new CategoryPlot(null, new CategoryAxis(
  871. "Category"), new NumberAxis("Value"), r);
  872. assertEquals(DefaultDrawingSupplier.DEFAULT_FILL_PAINT_SEQUENCE[0],
  873. r.lookupSeriesFillPaint(0));
  874. assertNotNull(r.getSeriesFillPaint(0));
  875. }
  876. /**
  877. * Some checks for the outline paint lookup mechanism.
  878. */
  879. @Test
  880. public void testOutlinePaintLookup() {
  881. BarRenderer r = new BarRenderer();
  882. assertEquals(Color.gray, r.getBaseOutlinePaint());
  883. // first check that autoPopulate==false works as expected
  884. r.setAutoPopulateSeriesOutlinePaint(false);
  885. assertEquals(Color.gray, r.lookupSeriesOutlinePaint(0));
  886. assertNull(r.getSeriesOutlinePaint(0));
  887. // now check autoPopulate==true
  888. r.setAutoPopulateSeriesOutlinePaint(true);
  889. /*CategoryPlot plot =*/ new CategoryPlot(null, new CategoryAxis(
  890. "Category"), new NumberAxis("Value"), r);
  891. assertEquals(DefaultDrawingSupplier.DEFAULT_OUTLINE_PAINT_SEQUENCE[0],
  892. r.lookupSeriesOutlinePaint(0));
  893. assertNotNull(r.getSeriesOutlinePaint(0));
  894. }
  895. }