Project

General

Profile

Download (12 KB) Statistics
| Branch: | Tag: | Revision:
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
import junit.framework.Assert;
15

    
16
import org.apache.log4j.Logger;
17
import org.joda.time.DateTime;
18
import org.junit.After;
19
import org.junit.AfterClass;
20
import org.junit.Before;
21
import org.junit.BeforeClass;
22
import org.junit.Test;
23

    
24
import eu.etaxonomy.cdm.model.agent.Team;
25
import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;
26
import eu.etaxonomy.cdm.model.common.Language;
27
import eu.etaxonomy.cdm.model.common.LanguageString;
28

    
29
/**
30
 * @author a.mueller
31
 * @created 05.08.2009
32
 * @version 1.0
33
 */
34
public class MediaTest {
35
	@SuppressWarnings("unused")
36
	private static final Logger logger = Logger.getLogger(MediaTest.class);
37

    
38
	private Media media1; 
39
	private Team team1;
40
	private MediaRepresentation mediaRepresentation1;
41
	private MediaRepresentation mediaRepresentation2;
42
	private MediaRepresentationPart mediaRepresentationPart1;
43
	private MediaRepresentationPart mediaRepresentationPart2;
44
	private LanguageString languageString1;
45
	private final String germanDescription = "media1Desc2";
46
	private Rights rights1;
47
	private LanguageString languageString2;
48
	private String uriString1 = "Path to image 1";
49
	private String uriString2 = "Path to image 2";
50
	/**
51
	 * @throws java.lang.Exception
52
	 */
53
	@BeforeClass
54
	public static void setUpBeforeClass() throws Exception {
55
		DefaultTermInitializer termInitializer = new DefaultTermInitializer();
56
		termInitializer.initialize();
57
	}
58

    
59
	/**
60
	 * @throws java.lang.Exception
61
	 */
62
	@AfterClass
63
	public static void tearDownAfterClass() throws Exception {
64
	}
65

    
66
	/**
67
	 * @throws java.lang.Exception
68
	 */
69
	@Before
70
	public void setUp() throws Exception {
71
		media1 = Media.NewInstance();
72
		team1 = Team.NewInstance();
73
		media1.setArtist(team1);
74
		media1.setMediaCreated(new DateTime(2002, 1,1,0,0,0,0));
75
		languageString1 = LanguageString.NewInstance("media1Desc", Language.DEFAULT());
76
		media1.addDescription(languageString1);
77
		media1.addDescription("media1Desc2", Language.GERMAN());
78
		mediaRepresentation1 = MediaRepresentation.NewInstance();
79
		mediaRepresentation2 = MediaRepresentation.NewInstance();
80
		mediaRepresentation1.setMimeType("MimeType1");
81
		mediaRepresentation2.setMimeType("MimeType1");
82
		mediaRepresentationPart1 = ImageFile.NewInstance(uriString1, 100);
83
		mediaRepresentationPart2 = ImageFile.NewInstance(uriString2, 1000);
84
		((ImageFile) mediaRepresentationPart1).setHeight(100);
85
		((ImageFile) mediaRepresentationPart1).setWidth(100);
86
		
87
		((ImageFile) mediaRepresentationPart2).setHeight(100);
88
		((ImageFile) mediaRepresentationPart2).setWidth(100);
89
		
90
		mediaRepresentation1.addRepresentationPart(mediaRepresentationPart1);
91
		mediaRepresentation2.addRepresentationPart(mediaRepresentationPart2);
92
		media1.addRepresentation(mediaRepresentation1);
93
		media1.addRepresentation(mediaRepresentation2);
94
		rights1 = Rights.NewInstance();
95
		media1.addRights(rights1);
96
		
97
		languageString2 = LanguageString.NewInstance("media1Title", Language.DEFAULT());
98
		media1.addTitle(languageString2);
99
		
100
	}
101

    
102
	/**
103
	 * @throws java.lang.Exception
104
	 */
105
	@After
106
	public void tearDown() throws Exception {
107
	}
108

    
109
//***************** TESTS *********************************/	
110
	
111
	/**
112
	 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#clone()}.
113
	 */
114
	@Test
115
	public void testClone() {
116
		try {
117
			Media mediaClone = (Media)media1.clone();
118
			Assert.assertSame("Artist must be the same", team1, mediaClone.getArtist());
119
			Assert.assertTrue("Clone must have a default language description", mediaClone.getDescription().containsKey(Language.DEFAULT()));
120
			Assert.assertSame("Description1 must be the same", languageString1, mediaClone.getDescription().get(Language.DEFAULT()) );
121
			Assert.assertTrue("Clone must have a german description", mediaClone.getDescription().containsKey(Language.GERMAN()));
122
			Assert.assertEquals("German description must equal media1Desc2", germanDescription, mediaClone.getDescription().get(Language.GERMAN()).getText() );
123
			
124
			Assert.assertEquals("Media created year must be 2002", 2002, mediaClone.getMediaCreated().getYear());
125
			Assert.assertEquals("Number of media representations must be 2", 2, mediaClone.getRepresentations().size());
126
			Assert.assertNotSame("Only media representation must not be mediaRepresentation1", mediaRepresentation1, mediaClone.getRepresentations().iterator().next());
127
			Assert.assertEquals("Only meda representation must have same MimeType as mediaRepresentation1", mediaRepresentation1.getMimeType(), mediaClone.getRepresentations().iterator().next().getMimeType());
128
			Assert.assertTrue("Rights must contain rights1", mediaClone.getRights().contains(rights1));
129
		
130
			Assert.assertTrue("Clone must have a default language title", mediaClone.getAllTitles().containsKey(Language.DEFAULT()));
131
			Assert.assertSame("Title must be the same", languageString2, mediaClone.getAllTitles().get(Language.DEFAULT()) );
132
			
133
		} catch (CloneNotSupportedException e) {
134
			Assert.fail("Media must be cloneable");
135
		}
136
		
137
	}
138

    
139
	/**
140
	 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#addRepresentation(eu.etaxonomy.cdm.model.media.MediaRepresentation)}.
141
	 */
142
	@Test
143
	public void testAddRepresentation() {
144
		Assert.assertTrue("Representations must contain mediaRepresentation1", media1.getRepresentations().contains(mediaRepresentation1));
145
	}
146

    
147
	/**
148
	 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#removeRepresentation(eu.etaxonomy.cdm.model.media.MediaRepresentation)}.
149
	 */
150
	@Test
151
	public void testRemoveRepresentation() {
152
		Assert.assertTrue("Representations must contain mediaRepresentation1", media1.getRepresentations().contains(mediaRepresentation1));
153
		media1.removeRepresentation(mediaRepresentation1);
154
		Assert.assertFalse("Representations must not contain mediaRepresentation1", media1.getRepresentations().contains(mediaRepresentation1));
155
		Assert.assertEquals("Number of representations must be 1", 1, media1.getRepresentations().size());
156
		media1.removeRepresentation(mediaRepresentation2);
157
		Assert.assertFalse("Representations must not contain mediaRepresentation2", media1.getRepresentations().contains(mediaRepresentation2));
158
		Assert.assertEquals("Number of representations must be 0", 0, media1.getRepresentations().size());
159
	}
160

    
161
	/**
162
	 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#addRights(eu.etaxonomy.cdm.model.media.Rights)}.
163
	 */
164
	@Test
165
	public void testAddRights() {
166
		Assert.assertTrue("Rights must contain rights1", media1.getRights().contains(rights1));
167
	}
168

    
169
	/**
170
	 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#removeRights(eu.etaxonomy.cdm.model.media.Rights)}.
171
	 */
172
	@Test
173
	public void testRemoveRights() {
174
		Assert.assertTrue("Rights must contain rights1", media1.getRights().contains(rights1));
175
		media1.removeRights(rights1);
176
		Assert.assertFalse("Rights must not contain rights1", media1.getRights().contains(rights1));
177
		Assert.assertEquals("Number of rights must be 0", 0, media1.getRights().size());	
178
	}
179

    
180
	/**
181
	 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#addTitle(eu.etaxonomy.cdm.model.common.LanguageString)}.
182
	 */
183
	@Test
184
	public void testAddTitle() {
185
		Assert.assertSame("Title must be the same", languageString2, media1.getAllTitles().get(Language.DEFAULT()) );
186
	}
187

    
188
	/**
189
	 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#removeTitle(eu.etaxonomy.cdm.model.common.Language)}.
190
	 */
191
	@Test
192
	public void testRemoveTitle() {
193
		Assert.assertSame("Title must be the same", languageString2, media1.getAllTitles().get(Language.DEFAULT()) );
194
		media1.removeTitle(Language.GERMAN());
195
		Assert.assertEquals("Number of titles must be 1", 1, media1.getAllTitles().size());
196
		media1.removeTitle(Language.DEFAULT());
197
		Assert.assertEquals("Number of titles must be 0", 0, media1.getAllTitles().size());
198
		Assert.assertFalse("Title must not contain languageString2", languageString2.equals(media1.getAllTitles().get(Language.DEFAULT())));
199
	}
200

    
201
	/**
202
	 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#getMediaCreated()}.
203
	 */
204
	@Test
205
	public void testGetMediaCreated() {
206
		Assert.assertEquals("Media created year must be 2002", 2002, media1.getMediaCreated().getYear());
207
		
208
	}
209

    
210
	/**
211
	 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#getDescription()}.
212
	 */
213
	@Test
214
	public void testGetDescription() {
215
		Assert.assertTrue("Clone must have a default language description", media1.getDescription().containsKey(Language.DEFAULT()));
216
		Assert.assertSame("Description1 must be the same", languageString1, media1.getDescription().get(Language.DEFAULT()) );
217
	}
218

    
219
	/**
220
	 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#addDescription(eu.etaxonomy.cdm.model.common.LanguageString)}.
221
	 */
222
	@Test
223
	public void testAddDescriptionLanguageString() {
224
		Assert.assertEquals("Number of descriptions must be 2", 2, media1.getDescription().size() );
225
		Assert.assertTrue("Clone must have a default language description", media1.getDescription().containsKey(Language.DEFAULT()));
226
		Assert.assertSame("Description1 must be the same", languageString1, media1.getDescription().get(Language.DEFAULT()) );
227
		media1.addDescription(languageString2);
228
		Assert.assertEquals("Number of descriptions must be 2", 2, media1.getDescription().size() );
229
		Assert.assertEquals("Default language description must be languageString2", languageString2, media1.getDescription().get(Language.DEFAULT()) );
230
	}
231

    
232
	/**
233
	 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#addDescription(java.lang.String, eu.etaxonomy.cdm.model.common.Language)}.
234
	 */
235
	@Test
236
	public void testAddDescriptionStringLanguage() {
237
		Assert.assertTrue("Clone must have a german language description", media1.getDescription().containsKey(Language.GERMAN()));
238
		Assert.assertSame("Description1 must be the same", "media1Desc2", media1.getDescription().get(Language.GERMAN()).getText() );
239
		media1.addDescription("testDesc", Language.DEFAULT());
240
		Assert.assertEquals("Number of descriptions must be 2", 2, media1.getDescription().size() );
241
		media1.addDescription("testDesc2", Language.DEFAULT());
242
		Assert.assertEquals("Number of descriptions must be 2", 2, media1.getDescription().size() );
243
		Assert.assertSame("Default language description must be 'testDesc2'", "testDesc2", media1.getDescription().get(Language.DEFAULT()).getText() );
244
	}
245

    
246
	/**
247
	 * Test method for {@link eu.etaxonomy.cdm.model.media.Media#removeDescription(eu.etaxonomy.cdm.model.common.Language)}.
248
	 */
249
	@Test
250
	public void testRemoveDescription() {
251
		Assert.assertEquals("Number of descriptions must be 2", 2, media1.getDescription().size() );
252
		Assert.assertTrue("Clone must have a default language description", media1.getDescription().containsKey(Language.DEFAULT()));
253
		Assert.assertSame("Description1 must be the same", languageString1, media1.getDescription().get(Language.DEFAULT()) );
254
		media1.removeDescription(Language.JAPANESE());
255
		Assert.assertEquals("Number of descriptions must be 2", 2, media1.getDescription().size() );
256
		media1.removeDescription(Language.DEFAULT());
257
		Assert.assertEquals("Number of descriptions must be 1", 1, media1.getDescription().size() );
258
		media1.removeDescription(Language.DEFAULT());
259
		Assert.assertEquals("Number of descriptions must be 1", 1, media1.getDescription().size() );
260
		media1.removeDescription(Language.GERMAN());
261
		Assert.assertEquals("Number of descriptions must be 0", 0, media1.getDescription().size() );
262
	}
263
	
264
	@Test
265
	public void testfindBestMatchingRepresentation() {
266
		String[] mimetypes = {".*"};
267
		Assert.assertEquals(mediaRepresentation1, MediaUtils.findBestMatchingRepresentation(media1, 100, 100, 100, mimetypes));
268
		Assert.assertEquals(mediaRepresentation2, MediaUtils.findBestMatchingRepresentation(media1,1000, 100, 100, mimetypes));
269
	
270
	}
271
}
    (1-1/1)