package org.signalml.app.worker.signal; import static org.junit.Assert.assertEquals; import java.util.concurrent.ExecutionException; import org.junit.Test; import org.signalml.app.model.tag.SlopeType; import org.signalml.domain.tag.StyledTagSet; import org.signalml.plugin.export.signal.Tag; public class SynchronizeTagsWithTriggerWorkerTest extends AbstractSynchronizationTest { public void testSlope(SlopeType slopeType, Integer[] expectedPositions) throws InterruptedException, ExecutionException { parameters.setSlopeType(slopeType); FindSignalSlopesWorker signalSlopesWorker = new FindSignalSlopesWorker(parameters); signalSlopesWorker.setBusyDialogShouldBeShown(false); signalSlopesWorker.execute(); Integer[] slopes = signalSlopesWorker.get(); SynchronizeTagsWithTriggerWorker worker = new SynchronizeTagsWithTriggerWorker(parameters, slopes); worker.setBusyDialogShouldBeShown(false); worker.execute(); worker.get(); StyledTagSet tagSet = parameters.getTagSet(); int i = 0; for (Tag tag: tagSet.getTags()) { double tagPositionSample = tag.getPosition() * parameters.getSampleSource().getSamplingFrequency(); assertEquals(expectedPositions[i], tagPositionSample, 1e-5); i++; } } @Test public void testSynchronizeAscendingSlope() throws InterruptedException, ExecutionException { testSlope(SlopeType.ASCENDING, getSlopePositions(SlopeType.ASCENDING, 0)); } @Test public void testSynchronizeDescendingSlope() throws InterruptedException, ExecutionException { testSlope(SlopeType.DESCENDING, getSlopePositions(SlopeType.DESCENDING, 0)); } @Test public void testSynchronizeToBothSlopes() throws InterruptedException, ExecutionException { testSlope(SlopeType.BOTH, getSlopePositions(SlopeType.BOTH, 0)); } @Test public void testRemoveExcessiveTags() throws InterruptedException, ExecutionException { StyledTagSet tagSet = parameters.getTagSet(); Integer[] positions = new Integer[] { 1, 2 }; Tag[] remainingTags = new Tag[positions.length]; for (int i = 0; i < positions.length; i++) remainingTags[i] = tagSet.getChannelTagAt(i); SynchronizeTagsWithTriggerWorker worker = new SynchronizeTagsWithTriggerWorker(parameters, positions); worker.setBusyDialogShouldBeShown(false); worker.execute(); worker.get(); int channelStyleCount = tagSet.getChannelTagCount(); assertEquals(positions.length, channelStyleCount); for (int i = 0; i < remainingTags.length; i++) assertEquals(tagSet.getChannelTagAt(i), remainingTags[i]); } }