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