6b822d6552103bd20c20be408239ef896a0083e0
[cdmlib.git] / cdmlib-model / src / test / java / eu / etaxonomy / cdm / model / media / MediaTest.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10
11 package eu.etaxonomy.cdm.model.media;
12
13 import java.net.URI;
14
15 import org.junit.Assert;
16
17 import org.apache.log4j.Logger;
18 import org.joda.time.DateTime;
19 import org.junit.After;
20 import org.junit.AfterClass;
21 import org.junit.Before;
22 import org.junit.BeforeClass;
23 import org.junit.Test;
24
25 import eu.etaxonomy.cdm.model.agent.Team;
26 import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;
27 import eu.etaxonomy.cdm.model.common.Language;
28 import eu.etaxonomy.cdm.model.common.LanguageString;
29
30 /**
31 * @author a.mueller
32 * @created 05.08.2009
33 * @version 1.0
34 */
35 public class MediaTest {
36 @SuppressWarnings("unused")
37 private static final Logger logger = Logger.getLogger(MediaTest.class);
38
39 private Media media1;
40 private Team team1;
41 private MediaRepresentation mediaRepresentation1;
42 private MediaRepresentation mediaRepresentation2;
43 private MediaRepresentationPart mediaRepresentationPart1;
44 private MediaRepresentationPart mediaRepresentationPart2;
45 private LanguageString languageString1;
46 private final String germanDescription = "media1Desc2";
47 private Rights rights1;
48 private LanguageString languageString2;
49 private static URI uriString1;
50 private static URI uriString2;
51
52 /**
53 * @throws java.lang.Exception
54 */
55 @BeforeClass
56 public static void setUpBeforeClass() throws Exception {
57 DefaultTermInitializer termInitializer = new DefaultTermInitializer();
58 termInitializer.initialize();
59 try {
60 uriString1 = new URI("http://Pathtoimage1/");
61 uriString2 = new URI("http://Path_to_image_2/");
62 } catch (Exception e) {
63 e.printStackTrace();
64 Assert.fail("Error in URI syntax");
65 }
66
67 }
68
69 /**
70 * @throws java.lang.Exception
71 */
72 @AfterClass
73 public static void tearDownAfterClass() throws Exception {
74 }
75
76 /**
77 * @throws java.lang.Exception
78 */
79 @Before
80 public void setUp() throws Exception {
81 media1 = Media.NewInstance();
82 team1 = Team.NewInstance();
83 media1.setArtist(team1);
84 media1.setMediaCreated(new DateTime(2002, 1,1,0,0,0,0));
85 languageString1 = LanguageString.NewInstance("media1Desc", Language.DEFAULT());
86 media1.addDescription(languageString1);
87 media1.addDescription("media1Desc2", Language.GERMAN());
88 mediaRepresentation1 = MediaRepresentation.NewInstance();
89 mediaRepresentation2 = MediaRepresentation.NewInstance();
90 mediaRepresentation1.setMimeType("MimeType1");
91 mediaRepresentation2.setMimeType("MimeType1");
92 mediaRepresentationPart1 = ImageFile.NewInstance(uriString1, 100);
93 mediaRepresentationPart2 = ImageFile.NewInstance(uriString2, 1000);
94 ((ImageFile) mediaRepresentationPart1).setHeight(100);
95 ((ImageFile) mediaRepresentationPart1).setWidth(100);
96
97 ((ImageFile) mediaRepresentationPart2).setHeight(100);
98 ((ImageFile) mediaRepresentationPart2).setWidth(100);
99
100 mediaRepresentation1.addRepresentationPart(mediaRepresentationPart1);
101 mediaRepresentation2.addRepresentationPart(mediaRepresentationPart2);
102 media1.addRepresentation(mediaRepresentation1);
103 media1.addRepresentation(mediaRepresentation2);
104 rights1 = Rights.NewInstance();
105 media1.addRights(rights1);
106
107 languageString2 = LanguageString.NewInstance("media1Title", Language.DEFAULT());
108 media1.putTitle(languageString2);
109
110 }
111
112 /**
113 * @throws java.lang.Exception
114 */
115 @After
116 public void tearDown() throws Exception {
117 }
118
119 //***************** TESTS *********************************/
120
121 /**
122 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#clone()}.
123 */
124 @Test
125 public void testClone() {
126 try {
127 Media mediaClone = (Media)media1.clone();
128 Assert.assertSame("Artist must be the same", team1, mediaClone.getArtist());
129 Assert.assertTrue("Clone must have a default language description", mediaClone.getAllDescriptions().containsKey(Language.DEFAULT()));
130 Assert.assertSame("Description1 must be the same", languageString1, mediaClone.getAllDescriptions().get(Language.DEFAULT()) );
131 Assert.assertTrue("Clone must have a german description", mediaClone.getAllDescriptions().containsKey(Language.GERMAN()));
132 Assert.assertEquals("German description must equal media1Desc2", germanDescription, mediaClone.getAllDescriptions().get(Language.GERMAN()).getText() );
133
134 Assert.assertEquals("Media created year must be 2002", 2002, mediaClone.getMediaCreated().getYear());
135 Assert.assertEquals("Number of media representations must be 2", 2, mediaClone.getRepresentations().size());
136 Assert.assertNotSame("Only media representation must not be mediaRepresentation1", mediaRepresentation1, mediaClone.getRepresentations().iterator().next());
137 Assert.assertEquals("Only meda representation must have same MimeType as mediaRepresentation1", mediaRepresentation1.getMimeType(), mediaClone.getRepresentations().iterator().next().getMimeType());
138 Assert.assertTrue("Rights must contain rights1", mediaClone.getRights().contains(rights1));
139
140 Assert.assertTrue("Clone must have a default language title", mediaClone.getAllTitles().containsKey(Language.DEFAULT()));
141 Assert.assertSame("Title must be the same", languageString2, mediaClone.getAllTitles().get(Language.DEFAULT()) );
142
143 } catch (CloneNotSupportedException e) {
144 Assert.fail("Media must be cloneable");
145 }
146
147 }
148
149 /**
150 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#addRepresentation(eu.etaxonomy.cdm.model.media.MediaRepresentation)}.
151 */
152 @Test
153 public void testAddRepresentation() {
154 Assert.assertTrue("Representations must contain mediaRepresentation1", media1.getRepresentations().contains(mediaRepresentation1));
155 }
156
157 /**
158 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#removeRepresentation(eu.etaxonomy.cdm.model.media.MediaRepresentation)}.
159 */
160 @Test
161 public void testRemoveRepresentation() {
162 Assert.assertTrue("Representations must contain mediaRepresentation1", media1.getRepresentations().contains(mediaRepresentation1));
163 media1.removeRepresentation(mediaRepresentation1);
164 Assert.assertFalse("Representations must not contain mediaRepresentation1", media1.getRepresentations().contains(mediaRepresentation1));
165 Assert.assertEquals("Number of representations must be 1", 1, media1.getRepresentations().size());
166 media1.removeRepresentation(mediaRepresentation2);
167 Assert.assertFalse("Representations must not contain mediaRepresentation2", media1.getRepresentations().contains(mediaRepresentation2));
168 Assert.assertEquals("Number of representations must be 0", 0, media1.getRepresentations().size());
169 }
170
171 /**
172 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#addRights(eu.etaxonomy.cdm.model.media.Rights)}.
173 */
174 @Test
175 public void testAddRights() {
176 Assert.assertTrue("Rights must contain rights1", media1.getRights().contains(rights1));
177 }
178
179 /**
180 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#removeRights(eu.etaxonomy.cdm.model.media.Rights)}.
181 */
182 @Test
183 public void testRemoveRights() {
184 Assert.assertTrue("Rights must contain rights1", media1.getRights().contains(rights1));
185 media1.removeRights(rights1);
186 Assert.assertFalse("Rights must not contain rights1", media1.getRights().contains(rights1));
187 Assert.assertEquals("Number of rights must be 0", 0, media1.getRights().size());
188 }
189
190 /**
191 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#addTitle(eu.etaxonomy.cdm.model.common.LanguageString)}.
192 */
193 @Test
194 public void testAddTitle() {
195 Assert.assertSame("Title must be the same", languageString2, media1.getAllTitles().get(Language.DEFAULT()) );
196 }
197
198 /**
199 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#removeTitle(eu.etaxonomy.cdm.model.common.Language)}.
200 */
201 @Test
202 public void testRemoveTitle() {
203 Assert.assertSame("Title must be the same", languageString2, media1.getAllTitles().get(Language.DEFAULT()) );
204 media1.removeTitle(Language.GERMAN());
205 Assert.assertEquals("Number of titles must be 1", 1, media1.getAllTitles().size());
206 media1.removeTitle(Language.DEFAULT());
207 Assert.assertEquals("Number of titles must be 0", 0, media1.getAllTitles().size());
208 Assert.assertFalse("Title must not contain languageString2", languageString2.equals(media1.getAllTitles().get(Language.DEFAULT())));
209 }
210
211 /**
212 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#getMediaCreated()}.
213 */
214 @Test
215 public void testGetMediaCreated() {
216 Assert.assertEquals("Media created year must be 2002", 2002, media1.getMediaCreated().getYear());
217
218 }
219
220 /**
221 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#getDescription()}.
222 */
223 @Test
224 public void testGetDescription() {
225 Assert.assertTrue("Clone must have a default language description", media1.getAllDescriptions().containsKey(Language.DEFAULT()));
226 Assert.assertSame("Description1 must be the same", languageString1, media1.getAllDescriptions().get(Language.DEFAULT()) );
227 }
228
229 /**
230 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#addDescription(eu.etaxonomy.cdm.model.common.LanguageString)}.
231 */
232 @Test
233 public void testAddDescriptionLanguageString() {
234 Assert.assertEquals("Number of descriptions must be 2", 2, media1.getAllDescriptions().size() );
235 Assert.assertTrue("Clone must have a default language description", media1.getAllDescriptions().containsKey(Language.DEFAULT()));
236 Assert.assertSame("Description1 must be the same", languageString1, media1.getAllDescriptions().get(Language.DEFAULT()) );
237 media1.addDescription(languageString2);
238 Assert.assertEquals("Number of descriptions must be 2", 2, media1.getAllDescriptions().size() );
239 Assert.assertEquals("Default language description must be languageString2", languageString2, media1.getAllDescriptions().get(Language.DEFAULT()) );
240 }
241
242 /**
243 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#addDescription(java.lang.String, eu.etaxonomy.cdm.model.common.Language)}.
244 */
245 @Test
246 public void testAddDescriptionStringLanguage() {
247 Assert.assertTrue("Clone must have a german language description", media1.getAllDescriptions().containsKey(Language.GERMAN()));
248 Assert.assertSame("Description1 must be the same", "media1Desc2", media1.getAllDescriptions().get(Language.GERMAN()).getText() );
249 media1.addDescription("testDesc", Language.DEFAULT());
250 Assert.assertEquals("Number of descriptions must be 2", 2, media1.getAllDescriptions().size() );
251 media1.addDescription("testDesc2", Language.DEFAULT());
252 Assert.assertEquals("Number of descriptions must be 2", 2, media1.getAllDescriptions().size() );
253 Assert.assertSame("Default language description must be 'testDesc2'", "testDesc2", media1.getAllDescriptions().get(Language.DEFAULT()).getText() );
254 }
255
256 /**
257 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#removeDescription(eu.etaxonomy.cdm.model.common.Language)}.
258 */
259 @Test
260 public void testRemoveDescription() {
261 Assert.assertEquals("Number of descriptions must be 2", 2, media1.getAllDescriptions().size() );
262 Assert.assertTrue("Clone must have a default language description", media1.getAllDescriptions().containsKey(Language.DEFAULT()));
263 Assert.assertSame("Description1 must be the same", languageString1, media1.getAllDescriptions().get(Language.DEFAULT()) );
264 media1.removeDescription(Language.JAPANESE());
265 Assert.assertEquals("Number of descriptions must be 2", 2, media1.getAllDescriptions().size() );
266 media1.removeDescription(Language.DEFAULT());
267 Assert.assertEquals("Number of descriptions must be 1", 1, media1.getAllDescriptions().size() );
268 media1.removeDescription(Language.DEFAULT());
269 Assert.assertEquals("Number of descriptions must be 1", 1, media1.getAllDescriptions().size() );
270 media1.removeDescription(Language.GERMAN());
271 Assert.assertEquals("Number of descriptions must be 0", 0, media1.getAllDescriptions().size() );
272 }
273
274 }