/**
* Licensed to The Apereo Foundation under one or more contributor license
* agreements. See the NOTICE file distributed with this work for additional
* information regarding copyright ownership.
*
*
* The Apereo Foundation licenses this file to you under the Educational
* Community License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of the License
* at:
*
* http://opensource.org/licenses/ecl2.txt
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*
*/
package org.opencastproject.mediapackage;
import static org.junit.Assert.assertEquals;
import static org.opencastproject.mediapackage.MediaPackageElements.AUDIENCE_SOURCE;
import static org.opencastproject.mediapackage.MediaPackageElements.PRESENTATION_SOURCE;
import static org.opencastproject.mediapackage.MediaPackageElements.PRESENTER_SOURCE;
import org.opencastproject.mediapackage.MediaPackageElement.Type;
import org.opencastproject.mediapackage.selector.AbstractMediaPackageElementSelector;
import org.opencastproject.mediapackage.selector.SimpleElementSelector;
import org.junit.Before;
import org.junit.Test;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
/**
* Test case for {@link SimpleElementSelector}.
*/
public class SimpleElementSelectorTest {
/** The selector to be tested */
protected AbstractMediaPackageElementSelector<? extends MediaPackageElement> selector = null;
/** The media package element builder */
protected final MediaPackageElementBuilder elementBuilder = MediaPackageElementBuilderFactory.newInstance()
.newElementBuilder();
/** The media package */
protected MediaPackage mediaPackage = null;
/** The presentation track */
protected Track presentationTrack = null;
/** The presenter track */
protected Track presenterTrack = null;
/** The audience track */
protected Track audienceTrack = null;
/** The presentation attachment */
protected Attachment presentationAttachment = null;
/** Track uri (needed but irrelevant for this test) */
protected URI uri = null;
/** A tag */
protected String tag = "tag";
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception {
selector = new SimpleElementSelector();
selector.addFlavor(PRESENTATION_SOURCE);
selector.addFlavor(PRESENTER_SOURCE);
setUpPreliminaries();
}
protected void setUpPreliminaries() throws Exception {
mediaPackage = MediaPackageBuilderFactory.newInstance().newMediaPackageBuilder().createNew();
uri = new URI("http://localhost/track.mov");
presentationTrack = (Track) elementBuilder.elementFromURI(uri, Type.Track, PRESENTATION_SOURCE);
presentationTrack.addTag(tag);
mediaPackage.add(presentationTrack);
presenterTrack = (Track) elementBuilder.elementFromURI(uri, Type.Track, PRESENTATION_SOURCE);
mediaPackage.add(presenterTrack);
audienceTrack = (Track) elementBuilder.elementFromURI(uri, Type.Track, AUDIENCE_SOURCE);
mediaPackage.add(audienceTrack);
presentationAttachment = (Attachment) elementBuilder.elementFromURI(uri, Type.Attachment, PRESENTATION_SOURCE);
mediaPackage.add(presentationAttachment);
}
/**
* Test method for
* {@link org.opencastproject.mediapackage.selector.AbstractMediaPackageElementSelector#select(org.opencastproject.mediapackage.MediaPackage, boolean)}
* .
*/
@Test
public void testSelect() {
assertEquals(3, selector.select(mediaPackage, true).size());
selector.addTag(tag);
assertEquals(1, selector.select(mediaPackage, true).size());
assertEquals(presentationTrack, selector.select(mediaPackage, true).iterator().next());
selector.addTag("abc");
assertEquals(1, selector.select(mediaPackage, true).size());
assertEquals(presentationTrack, selector.select(mediaPackage, true).iterator().next());
}
/**
* Test method for
* {@link org.opencastproject.mediapackage.selector.AbstractMediaPackageElementSelector#setFlavors(java.util.List)}.
*/
@Test
public void testSetFlavors() {
List<MediaPackageElementFlavor> flavors = new ArrayList<MediaPackageElementFlavor>();
flavors.add(AUDIENCE_SOURCE);
selector.setFlavors(flavors);
assertEquals(1, selector.getFlavors().length);
assertEquals(AUDIENCE_SOURCE, selector.getFlavors()[0]);
}
/**
* Test method for
* {@link org.opencastproject.mediapackage.selector.AbstractMediaPackageElementSelector#addFlavor(org.opencastproject.mediapackage.MediaPackageElementFlavor)}
* .
*/
@Test
public void testAddFlavorMediaPackageElementFlavor() {
assertEquals(2, selector.getFlavors().length);
selector.addFlavor(PRESENTATION_SOURCE);
assertEquals(2, selector.getFlavors().length);
selector.addFlavor(AUDIENCE_SOURCE);
assertEquals(3, selector.getFlavors().length);
}
/**
* Test method for
* {@link org.opencastproject.mediapackage.selector.AbstractMediaPackageElementSelector#addFlavor(java.lang.String)}.
*/
@Test
public void testAddFlavorString() {
assertEquals(2, selector.getFlavors().length);
selector.addFlavor(PRESENTATION_SOURCE.toString());
assertEquals(2, selector.getFlavors().length);
selector.addFlavor(AUDIENCE_SOURCE.toString());
assertEquals(3, selector.getFlavors().length);
assertEquals(AUDIENCE_SOURCE, selector.getFlavors()[2]);
}
/**
* Test method for
* {@link org.opencastproject.mediapackage.selector.AbstractMediaPackageElementSelector#addFlavorAt(int, org.opencastproject.mediapackage.MediaPackageElementFlavor)}
* .
*/
@Test
public void testAddFlavorAtIntMediaPackageElementFlavor() {
// move a flavor up
selector.addFlavorAt(0, PRESENTER_SOURCE);
assertEquals(2, selector.getFlavors().length);
assertEquals(PRESENTER_SOURCE, selector.getFlavors()[0]);
assertEquals(PRESENTATION_SOURCE, selector.getFlavors()[1]);
// add a new flavor
selector.addFlavorAt(1, AUDIENCE_SOURCE);
assertEquals(3, selector.getFlavors().length);
assertEquals(PRESENTER_SOURCE, selector.getFlavors()[0]);
assertEquals(AUDIENCE_SOURCE, selector.getFlavors()[1]);
assertEquals(PRESENTATION_SOURCE, selector.getFlavors()[2]);
}
/**
* Test method for
* {@link org.opencastproject.mediapackage.selector.AbstractMediaPackageElementSelector#addFlavorAt(int, java.lang.String)}
* .
*/
@Test
public void testAddFlavorAtIntString() {
// move a flavor up
selector.addFlavorAt(0, PRESENTER_SOURCE.toString());
assertEquals(2, selector.getFlavors().length);
assertEquals(PRESENTER_SOURCE, selector.getFlavors()[0]);
assertEquals(PRESENTATION_SOURCE, selector.getFlavors()[1]);
// add a new flavor
selector.addFlavorAt(1, AUDIENCE_SOURCE.toString());
assertEquals(3, selector.getFlavors().length);
assertEquals(PRESENTER_SOURCE, selector.getFlavors()[0]);
assertEquals(AUDIENCE_SOURCE, selector.getFlavors()[1]);
assertEquals(PRESENTATION_SOURCE, selector.getFlavors()[2]);
}
/**
* Test method for
* {@link org.opencastproject.mediapackage.selector.AbstractMediaPackageElementSelector#removeFlavor(org.opencastproject.mediapackage.MediaPackageElementFlavor)}
* .
*/
@Test
public void testRemoveFlavorMediaPackageElementFlavor() {
selector.removeFlavor(PRESENTATION_SOURCE);
assertEquals(1, selector.getFlavors().length);
assertEquals(PRESENTER_SOURCE, selector.getFlavors()[0]);
selector.removeFlavor(AUDIENCE_SOURCE);
assertEquals(1, selector.getFlavors().length);
}
/**
* Test method for
* {@link org.opencastproject.mediapackage.selector.AbstractMediaPackageElementSelector#removeFlavor(java.lang.String)}
* .
*/
@Test
public void testRemoveFlavorString() {
selector.removeFlavor(PRESENTATION_SOURCE.toString());
assertEquals(1, selector.getFlavors().length);
assertEquals(PRESENTER_SOURCE, selector.getFlavors()[0]);
selector.removeFlavor(AUDIENCE_SOURCE.toString());
assertEquals(1, selector.getFlavors().length);
}
/**
* Test method for
* {@link org.opencastproject.mediapackage.selector.AbstractMediaPackageElementSelector#removeFlavorAt(int)}.
*/
@Test
public void testRemoveFlavorAt() {
selector.removeFlavorAt(0);
assertEquals(1, selector.getFlavors().length);
assertEquals(PRESENTER_SOURCE, selector.getFlavors()[0]);
}
/**
* Test method for
* {@link org.opencastproject.mediapackage.selector.AbstractMediaPackageElementSelector#addTag(java.lang.String)}.
*/
@Test
public void testAddTag() {
selector.addTag(tag);
assertEquals(1, selector.getTags().length);
selector.addTag("abc");
assertEquals(2, selector.getTags().length);
}
/**
* Test method for
* {@link org.opencastproject.mediapackage.selector.AbstractMediaPackageElementSelector#removeTag(java.lang.String)}.
*/
@Test
public void testRemoveTag() {
selector.addTag(tag);
selector.removeTag("abc");
assertEquals(1, selector.getTags().length);
selector.removeTag(tag);
assertEquals(0, selector.getTags().length);
}
/**
* Test method for {@link org.opencastproject.mediapackage.selector.AbstractMediaPackageElementSelector#clearTags()}.
*/
@Test
public void testClearTags() {
selector.clearTags();
assertEquals(0, selector.getTags().length);
}
}