package jalview.ws2.actions.alignment;
+import static jalview.testutils.Matchers.matchesSequenceString;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.hasProperty;
import javax.help.UnsupportedOperationException;
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeMatcher;
import org.mockito.ArgumentCaptor;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import jalview.gui.AlignViewport;
import jalview.viewmodel.AlignmentViewport;
import jalview.ws.params.ParamDatastoreI;
+import jalview.ws2.actions.PollingTaskExecutor;
import jalview.ws2.actions.api.TaskEventListener;
import jalview.ws2.api.Credentials;
import jalview.ws2.api.JobStatus;
protected WebServiceJobHandle jobRef;
- @BeforeMethod
+ @BeforeMethod(alwaysRun = true)
public void setupMockClient() throws IOException
{
jobRef = new WebServiceJobHandle(
doThrow(new UnsupportedOperationException()).when(mockClient).cancel(any());
}
- @BeforeMethod(dependsOnMethods = { "setupMockClient" })
+ @BeforeMethod(alwaysRun = true, dependsOnMethods = { "setupMockClient" })
public void setupActionBuilder() throws IOException
{
actionBuilder = AlignmentAction.newBuilder(mockClient);
verify(mockClient).submit(argument.capture(), eq(List.of()), eq(Credentials.empty()));
assertThat(argument.getValue(),
contains(
- matchesSequence("ASTVLITOPDCMMQEGGST"),
- matchesSequence("ASCGLITOMMQEGGST"),
- matchesSequence("ASTVLOPDTMMQEL")));
+ matchesSequenceString("ASTVLITOPDCMMQEGGST"),
+ matchesSequenceString("ASCGLITOMMQEGGST"),
+ matchesSequenceString("ASTVLOPDTMMQEL")));
}
@Test(
verify(mockClient).submit(argument.capture(), eq(List.of()), eq(Credentials.empty()));
assertThat(argument.getValue(),
contains(
- matchesSequence("----ASTVLITOPDCMMQEGGST-"),
- matchesSequence("-ASCGLITO------MMQEGGST-"),
- matchesSequence("AS--TVL--OPDTMMQEL------")));
+ matchesSequenceString("----ASTVLITOPDCMMQEGGST-"),
+ matchesSequenceString("-ASCGLITO------MMQEGGST-"),
+ matchesSequenceString("AS--TVL--OPDTMMQEL------")));
}
@Test(
verify(mockListener).taskCompleted(any(), argument.capture());
var alignmentResult = argument.getValue().getAlignment();
assertThat(alignmentResult, hasProperty("sequences", contains(
- matchesSequence("ASTV-LITOPDCMMQEGGST----"),
- matchesSequence("ASC-GLITO---MMQEGGST----"),
- matchesSequence("ASTV-L--OPDTMMQE--L-----"))));
- }
-
- protected static Matcher<SequenceI> matchesSequence(String sequence)
- {
- return new TypeSafeMatcher<SequenceI>()
- {
- @Override
- public boolean matchesSafely(SequenceI obj)
- {
- if (!(obj instanceof SequenceI))
- return false;
- var seq = (SequenceI) obj;
- return seq.getSequenceAsString().equals(sequence);
- }
-
- @Override
- public void describeTo(Description description)
- {
- description.appendText("a sequence ").appendValue(sequence);
- }
-
- @Override
- public void describeMismatchSafely(SequenceI item, Description description)
- {
- description.appendText("was ").appendValue(item.getSequenceAsString());
- }
- };
+ matchesSequenceString("ASTV-LITOPDCMMQEGGST----"),
+ matchesSequenceString("ASC-GLITO---MMQEGGST----"),
+ matchesSequenceString("ASTV-L--OPDTMMQE--L-----"))));
}
protected TaskEventListener<AlignmentResult> performAction(
return null;
})
.when(listener).taskCompleted(any(), any());
- action.perform(viewport, List.of(), Credentials.empty(), listener);
+ var executor = PollingTaskExecutor.fromPool(viewport.getServiceExecutor());
+ var task = action.createTask(viewport, List.of(), Credentials.empty());
+ task.addTaskEventListener(listener);
+ var cancellable = executor.submit(task);
try
{
latch.await(100, TimeUnit.MILLISECONDS);
} catch (InterruptedException e)
{
+ cancellable.cancel(true);
}
return listener;
}
{
private AlignViewport viewport;
- @BeforeMethod
+ @BeforeMethod(alwaysRun = true)
public void setupViewport()
{
viewport = new AlignViewport(new Alignment(new SequenceI[] {