054b6e79b919d3fce506070d4cc24554f98b42dc
[cdmlib.git] / cdmlib-model / src / test / java / eu / etaxonomy / cdm / model / reference / PublicationBaseTest.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9
10 package eu.etaxonomy.cdm.model.reference;
11
12 import static org.junit.Assert.*;
13
14 import java.util.List;
15
16 import org.apache.log4j.Logger;
17 import org.junit.After;
18 import org.junit.AfterClass;
19 import org.junit.Before;
20 import org.junit.BeforeClass;
21 import org.junit.Test;
22
23 /**
24 * @author a.mueller
25 * @created 23.03.2009
26 * @version 1.0
27 */
28 public class PublicationBaseTest {
29 @SuppressWarnings("unused")
30 private static Logger logger = Logger.getLogger(PublicationBaseTest.class);
31
32 private CdDvd publicationBase;
33 private String publisher1;
34 private String publisher2;
35 private String place1;
36 private String place2;
37
38 /**
39 * @throws java.lang.Exception
40 */
41 @BeforeClass
42 public static void setUpBeforeClass() throws Exception {
43 }
44
45 /**
46 * @throws java.lang.Exception
47 */
48 @AfterClass
49 public static void tearDownAfterClass() throws Exception {
50 }
51
52 /**
53 * @throws java.lang.Exception
54 */
55 @Before
56 public void setUp() throws Exception {
57 publisher1 = "publisher1";
58 publisher2 = "publisher2";
59 place1 = "place1";
60 place2 = "place2";
61 publicationBase = new CdDvd();
62 }
63
64 /**
65 * @throws java.lang.Exception
66 */
67 @After
68 public void tearDown() throws Exception {
69 }
70
71
72
73 /**
74 * Test method for {@link eu.etaxonomy.cdm.model.reference.PublicationBase#addPublisher(java.lang.String, java.lang.String)}.
75 */
76 @Test
77 public void testAddPublisherStringString() {
78 assertEquals("Publishers list must be empty", 0, publicationBase.getPublishers().size());
79 publicationBase.addPublisher(publisher1, place1);
80 assertEquals("Publishers list must contains exactly 1 entry", 1, publicationBase.getPublishers().size());
81 publicationBase.addPublisher(publisher2, place2);
82 assertEquals("Publishers list must contains exactly 2 entry", 2, publicationBase.getPublishers().size());
83 //List<Publisher> publishers = publicationBase.getPublishers();
84 assertEquals("First publisher must be publisher1", publisher1, publicationBase.getPublisher(0).getPublisherName());
85 assertEquals("Second publisher must be publisher2", publisher2, publicationBase.getPublisher(1).getPublisherName());
86 assertEquals("First publication place must be place1", place1, publicationBase.getPublisher(0).getPlace());
87 assertEquals("Second publication place must be place2", place2, publicationBase.getPublisher(1).getPlace());
88 }
89
90 /**
91 * Test method for {@link eu.etaxonomy.cdm.model.reference.PublicationBase#addPublisher(java.lang.String, java.lang.String, int)}.
92 */
93 @Test(expected=IndexOutOfBoundsException.class)
94 public void testAddPublisherStringStringInt() {
95 publicationBase.addPublisher(publisher1, place1);
96 publicationBase.addPublisher(publisher2, place2);
97 assertEquals("Publishers list must contains exactly 2 entry", 2, publicationBase.getPublishers().size());
98 String indexPublisher = "indexPublisher";
99 String indexPlace = "indexPlace";
100 publicationBase.addPublisher(indexPublisher, indexPlace, 1);
101 assertEquals("Publisher at position 1 (starting at 0) should be 'indexPublisher'", indexPublisher, publicationBase.getPublishers().get(1).getPublisherName());
102 publicationBase.addPublisher(indexPublisher, indexPlace, 5);
103 }
104
105
106 /**
107 * Test method for {@link eu.etaxonomy.cdm.model.reference.PublicationBase#getPublisher(java.lang.int}.
108 */
109 @Test(expected=IndexOutOfBoundsException.class)
110 public void testGetPublisherInt() {
111 publicationBase.addPublisher(publisher1, place1);
112 publicationBase.addPublisher(publisher2, place2);
113 assertEquals("Publishers list must contains exactly 2 entry", 2, publicationBase.getPublishers().size());
114 assertEquals("First publisher must be publisher1", publisher1, publicationBase.getPublisher(0).getPublisherName());
115 publicationBase.getPublisher(2);
116 publicationBase.getPublisher(-1);
117 }
118
119 /**
120 * Test method for {@link eu.etaxonomy.cdm.model.reference.PublicationBase#removePublisher(eu.etaxonomy.cdm.model.reference.Publisher)}.
121 */
122 @Test
123 public void testRemovePublisher() {
124 publicationBase.addPublisher(publisher1, place1);
125 publicationBase.addPublisher(publisher2, place2);
126 assertEquals("Publishers list must contains exactly 2 entry", 2, publicationBase.getPublishers().size());
127 publicationBase.removePublisher(publicationBase.getPublishers().get(0));
128 assertEquals("Publishers list must contains exactly 1 entry", 1, publicationBase.getPublishers().size());
129 List<Publisher> publishers = publicationBase.getPublishers();
130 assertEquals("Only publisher must be publisher2", publisher2, publishers.get(0).getPublisherName());
131 assertEquals("only publication place must be place2", place2, publishers.get(0).getPlace());
132 }
133
134 /**
135 * Test method for {@link eu.etaxonomy.cdm.model.reference.PublicationBase#clone()}.
136 */
137 @Test
138 public void testClone() {
139 publicationBase.addPublisher(publisher1, place1);
140 publicationBase.addPublisher(publisher2, place2);
141 assertEquals("Publishers list must contains exactly 2 entry", 2, publicationBase.getPublishers().size());
142 CdDvd clone = (CdDvd)publicationBase.clone();
143 assertEquals("Publisher place must be equal in original publication and cloned publication", place1, clone.getPublisher(0).getPlace());
144 assertNotSame(place1, publicationBase.getPublisher(0), clone.getPublisher(0));
145 }
146 }