package com.github.anno4j.model.impl; import com.github.anno4j.Anno4j; import com.github.anno4j.model.impl.selector.FragmentSelector; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openrdf.repository.object.ObjectConnection; import static org.junit.Assert.assertEquals; public class FragmentSelectorTest { private Anno4j anno4j; private ObjectConnection connection; @Before public void setUp() throws Exception { this.anno4j = new Anno4j(); this.connection = this.anno4j.getObjectRepository().getConnection(); } @After public void tearDown() throws Exception { connection.close(); } @Test public void createSpatialFragment() throws Exception { FragmentSelector fragmentSelector = anno4j.createObject(FragmentSelector.class); fragmentSelector.setSpatialFragment(160, 120, 320, 240); assertEquals("#xywh=160,120,320,240", fragmentSelector.getValue()); assertEquals(null, fragmentSelector.getSpatialFormat()); assertEquals((Integer) 160, fragmentSelector.getX()); assertEquals((Integer) 120, fragmentSelector.getY()); assertEquals((Integer) 320, fragmentSelector.getWidth()); assertEquals((Integer) 240, fragmentSelector.getHeight()); } @Test public void createTemporalFragment() throws Exception { FragmentSelector fragmentSelector = anno4j.createObject(FragmentSelector.class); fragmentSelector.setTemporalFragment(null, 121.5); assertEquals("#t=npt:,121.5", fragmentSelector.getValue()); assertEquals("npt:", fragmentSelector.getTemporalFormat()); assertEquals(null, fragmentSelector.getStart()); assertEquals((Double) 121.5, fragmentSelector.getEnd()); } @Test public void createSpatialAndTemporalFragment() throws Exception { FragmentSelector fragmentSelector = anno4j.createObject(FragmentSelector.class); fragmentSelector.setSpatialFragment(160, 120, 320, 240); fragmentSelector.setTemporalFragment(80.0, 121.5); assertEquals("#xywh=160,120,320,240&t=npt:80.0,121.5", fragmentSelector.getValue()); assertEquals(null, fragmentSelector.getSpatialFormat()); assertEquals((Integer) 160, fragmentSelector.getX()); assertEquals((Integer) 120, fragmentSelector.getY()); assertEquals((Integer) 320, fragmentSelector.getWidth()); assertEquals((Integer) 240, fragmentSelector.getHeight()); assertEquals("npt:", fragmentSelector.getTemporalFormat()); assertEquals((Double) 80.0, fragmentSelector.getStart()); assertEquals((Double) 121.5, fragmentSelector.getEnd()); } @Test public void deleteTemporalFragment() throws Exception { FragmentSelector fragmentSelector = anno4j.createObject(FragmentSelector.class); fragmentSelector.setValue("#xywh=160,120,320,240&t=npt:80.0,121.5"); fragmentSelector.setTemporalFragment(null, null); assertEquals("#xywh=160,120,320,240", fragmentSelector.getValue()); assertEquals(null, fragmentSelector.getSpatialFormat()); assertEquals((Integer) 160, fragmentSelector.getX()); assertEquals((Integer) 120, fragmentSelector.getY()); assertEquals((Integer) 320, fragmentSelector.getWidth()); assertEquals((Integer) 240, fragmentSelector.getHeight()); assertEquals(null, fragmentSelector.getTemporalFormat()); assertEquals(null, fragmentSelector.getStart()); assertEquals(null, fragmentSelector.getEnd()); } @Test public void deleteSpatialFragment() throws Exception { FragmentSelector fragmentSelector = anno4j.createObject(FragmentSelector.class); fragmentSelector.setValue("#xywh=160,120,320,240&t=npt:80.0,121.5"); fragmentSelector.setSpatialFragment(null, null, null, null); assertEquals("#t=npt:80.0,121.5", fragmentSelector.getValue()); assertEquals(null, fragmentSelector.getSpatialFormat()); assertEquals(null, fragmentSelector.getX()); assertEquals(null, fragmentSelector.getY()); assertEquals(null, fragmentSelector.getWidth()); assertEquals(null, fragmentSelector.getHeight()); assertEquals("npt:", fragmentSelector.getTemporalFormat()); assertEquals((Double) 80.0, fragmentSelector.getStart()); assertEquals((Double) 121.5, fragmentSelector.getEnd()); } @Test public void testXYWH() throws Exception { FragmentSelector fragmentSelector = anno4j.createObject(FragmentSelector.class); fragmentSelector.setValue("#xywh=160,120,320,240"); assertEquals(null, fragmentSelector.getSpatialFormat()); assertEquals((Integer) 160, fragmentSelector.getX()); assertEquals((Integer) 120, fragmentSelector.getY()); assertEquals((Integer) 320, fragmentSelector.getWidth()); assertEquals((Integer) 240, fragmentSelector.getHeight()); } @Test public void testXYWHAndStartAndEnd() throws Exception { FragmentSelector fragmentSelector = anno4j.createObject(FragmentSelector.class); fragmentSelector.setValue("#xywh=160,120,320,240&t=npt:10,20"); assertEquals(null, fragmentSelector.getSpatialFormat()); assertEquals((Integer) 160, fragmentSelector.getX()); assertEquals((Integer) 120, fragmentSelector.getY()); assertEquals((Integer) 320, fragmentSelector.getWidth()); assertEquals((Integer) 240, fragmentSelector.getHeight()); assertEquals("npt:", fragmentSelector.getTemporalFormat()); assertEquals((Double) 10.0 , fragmentSelector.getStart()); assertEquals((Double) 20.0 , fragmentSelector.getEnd()); } @Test public void testXYWHWithFormatAndStartAndEnd() throws Exception { FragmentSelector fragmentSelector = anno4j.createObject(FragmentSelector.class); fragmentSelector.setValue("#xywh=percent:21,22,23,24&t=npt:10,20"); assertEquals("percent:", fragmentSelector.getSpatialFormat()); assertEquals((Integer) 21, fragmentSelector.getX()); assertEquals((Integer) 22, fragmentSelector.getY()); assertEquals((Integer) 23, fragmentSelector.getWidth()); assertEquals((Integer) 24, fragmentSelector.getHeight()); assertEquals("npt:", fragmentSelector.getTemporalFormat()); assertEquals((Double) 10.0 , fragmentSelector.getStart()); assertEquals((Double) 20.0 , fragmentSelector.getEnd()); } @Test public void testXYWHandStartAndEndMiliseconds() throws Exception { FragmentSelector fragmentSelector = anno4j.createObject(FragmentSelector.class); fragmentSelector.setValue("#xywh=160,120,320,240&t=npt:10.23,20.232"); assertEquals(null, fragmentSelector.getSpatialFormat()); assertEquals((Integer) 160, fragmentSelector.getX()); assertEquals((Integer) 120, fragmentSelector.getY()); assertEquals((Integer) 320, fragmentSelector.getWidth()); assertEquals((Integer) 240, fragmentSelector.getHeight()); assertEquals("npt:", fragmentSelector.getTemporalFormat()); assertEquals((Double) 10.23 , fragmentSelector.getStart()); assertEquals((Double) 20.232 , fragmentSelector.getEnd()); } @Test public void testStartandEndMilisecondsAndXYWH() throws Exception { FragmentSelector fragmentSelector = anno4j.createObject(FragmentSelector.class); fragmentSelector.setValue("#t=npt:10.23,20.232&xywh=160,120,320,240"); assertEquals(null, fragmentSelector.getSpatialFormat()); assertEquals((Integer) 160, fragmentSelector.getX()); assertEquals((Integer) 120, fragmentSelector.getY()); assertEquals((Integer) 320, fragmentSelector.getWidth()); assertEquals((Integer) 240, fragmentSelector.getHeight()); assertEquals("npt:", fragmentSelector.getTemporalFormat()); assertEquals((Double) 10.23 , fragmentSelector.getStart()); assertEquals((Double) 20.232 , fragmentSelector.getEnd()); } @Test public void testNoStartButEndMiliseconds() throws Exception { FragmentSelector fragmentSelector = anno4j.createObject(FragmentSelector.class); fragmentSelector.setValue("#t=npt:,121.5"); assertEquals("npt:", fragmentSelector.getTemporalFormat()); assertEquals(null, fragmentSelector.getStart()); assertEquals((Double) 121.5 , fragmentSelector.getEnd()); } }