Project

General

Profile

Download (5.32 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.cdm.model.media;
2

    
3
import java.net.URI;
4
import java.util.ArrayList;
5
import java.util.Collection;
6
import java.util.Map;
7
import java.util.UUID;
8

    
9
import org.junit.Assert;
10
import org.junit.Before;
11
import org.junit.Test;
12

    
13
public class MediaUtilsTest {
14

    
15
    private Media mediaImage1;
16
    private Media mediaImage2;
17
    private Media mediaImage3;
18
    private Media mediaAudio1;
19
    private MediaRepresentation smallJPGRepresentation;
20
    private MediaRepresentation bigJPGRepresentation;
21
    private MediaRepresentation smallPNGRepresentation;
22
    private MediaRepresentation bigPNGRepresentation;
23
    private MediaRepresentation bigMP3Representation;
24

    
25
    @Before
26
    public void setUp() throws Exception {
27

    
28
        ImageFile smallJPG = ImageFile.NewInstance(new URI("http://foo.bar.net/small.JPG"), 200, 100, 200);
29
        smallJPGRepresentation = MediaRepresentation.NewInstance("image/jpg", "jpg");
30
        smallJPGRepresentation.addRepresentationPart(smallJPG);
31

    
32
        ImageFile bigJPG = ImageFile.NewInstance(new URI("http://foo.bar.net/big.JPG"), 2000, 1000, 2000);
33
        bigJPGRepresentation = MediaRepresentation.NewInstance("image/jpg", "jpg");
34
        bigJPGRepresentation.addRepresentationPart(bigJPG);
35

    
36
        ImageFile smallPNG = ImageFile.NewInstance(new URI("http://foo.bar.net/small.PNG"), 200, 100, 200);
37
        smallPNGRepresentation = MediaRepresentation.NewInstance("image/png", "png");
38
        smallPNGRepresentation.addRepresentationPart(smallPNG);
39

    
40
        ImageFile bigPNG = ImageFile.NewInstance(new URI("http://foo.bar.net/big.PNG"), 2000, 1000, 2000);
41
        bigPNGRepresentation = MediaRepresentation.NewInstance("image/png", "png");
42
        bigPNGRepresentation.addRepresentationPart(bigPNG);
43

    
44
        AudioFile bigMP3 = AudioFile.NewInstance(new URI("http://foo.bar.net/big.mp3"), 40000);
45
        bigMP3Representation = MediaRepresentation.NewInstance("audio/mpeg", "mp3");
46
        bigMP3Representation.addRepresentationPart(bigMP3);
47

    
48

    
49
        mediaImage1 = Media.NewInstance();
50
        mediaImage1.addRepresentation(smallJPGRepresentation);
51
        mediaImage1.addRepresentation(bigJPGRepresentation);
52

    
53
        mediaImage2 = Media.NewInstance();
54
        mediaImage2.addRepresentation(smallPNGRepresentation);
55

    
56
        mediaImage3 = Media.NewInstance();
57
        mediaImage3.addRepresentation(bigPNGRepresentation);
58

    
59
        mediaAudio1 = Media.NewInstance();
60
        mediaAudio1.addRepresentation(bigMP3Representation);
61
    }
62

    
63
    private Media findMediaByUUID(Collection<Media> mediaList, UUID uuid){
64
        for(Media media : mediaList){
65
            if(media.getUuid().equals(uuid)){
66
                return media;
67
            }
68
        }
69
        return null;
70
    }
71

    
72
    @Test
73
    public void testFindPreferredMedia(){
74

    
75
        ArrayList<Media> imageList = new ArrayList<>();
76
        imageList.add(mediaImage1);
77
        imageList.add(mediaImage2);
78
        imageList.add(mediaImage3);
79

    
80
        Map<Media, MediaRepresentation> filteredList = MediaUtils.findPreferredMedia(
81
                imageList, ImageFile.class, null, null, null, null, null);
82

    
83
        Assert.assertNotNull(findMediaByUUID(filteredList.keySet(), mediaImage1.getUuid()));
84
        Assert.assertNotNull(findMediaByUUID(filteredList.keySet(), mediaImage2.getUuid()));
85
        Assert.assertNotNull(findMediaByUUID(filteredList.keySet(), mediaImage3.getUuid()));
86

    
87
        ArrayList<Media> mixedMediaList =  new ArrayList<>();
88
        mixedMediaList.add(mediaImage1);
89
        mixedMediaList.add(mediaImage2);
90
        mixedMediaList.add(mediaImage3);
91
        mixedMediaList.add(mediaAudio1);
92
        filteredList = MediaUtils.findPreferredMedia(mixedMediaList, null, null, null, null, null, null);
93
        Assert.assertNotNull(findMediaByUUID(filteredList.keySet(), mediaImage1.getUuid()));
94
        Assert.assertNotNull(findMediaByUUID(filteredList.keySet(), mediaImage2.getUuid()));
95
        Assert.assertNotNull(findMediaByUUID(filteredList.keySet(), mediaImage3.getUuid()));
96
        Assert.assertNotNull(findMediaByUUID(filteredList.keySet(), mediaAudio1.getUuid()));
97

    
98
        filteredList = MediaUtils.findPreferredMedia(mixedMediaList, AudioFile.class, null, null, null, null, null);
99
        Assert.assertNotNull(findMediaByUUID(filteredList.keySet(), mediaAudio1.getUuid()));
100

    
101
        filteredList = MediaUtils.findPreferredMedia(mixedMediaList, ImageFile.class, null, null, null, null, null);
102
        Assert.assertNotNull(findMediaByUUID(filteredList.keySet(), mediaImage1.getUuid()));
103
        Assert.assertNotNull(findMediaByUUID(filteredList.keySet(), mediaImage2.getUuid()));
104
        Assert.assertNotNull(findMediaByUUID(filteredList.keySet(), mediaImage3.getUuid()));
105

    
106
    }
107

    
108
    @Test
109
    public void testfindBestMatchingRepresentation() {
110

    
111
        String[] mimetypes = {".*"};
112

    
113
        Assert.assertEquals(smallJPGRepresentation, MediaUtils.findBestMatchingRepresentation(
114
                mediaImage1, null, null, 200, 300, mimetypes));
115
        Assert.assertEquals(bigJPGRepresentation, MediaUtils.findBestMatchingRepresentation(
116
                mediaImage1, null, null, 1500, 1500, mimetypes));
117

    
118
        Assert.assertEquals(smallJPGRepresentation, MediaUtils.findBestMatchingRepresentation(
119
                mediaImage1, null, 300, null, null, mimetypes));
120
        Assert.assertEquals(bigJPGRepresentation, MediaUtils.findBestMatchingRepresentation(
121
                mediaImage1, null, 1500, null, null, mimetypes));
122

    
123
    }
124

    
125
}
(2-2/2)