package com.github.drapostolos.rdp4j; import java.util.LinkedHashSet; import java.util.Set; import org.mockito.InOrder; import org.mockito.Mockito; import com.github.drapostolos.rdp4j.spi.FileElement; import com.github.drapostolos.rdp4j.spi.PolledDirectory; class EventVerifier { protected ScheduledRunnable pollerTask; protected AbstractRdp4jListener listenerMock; protected InOrder inOrder; protected Set<PolledDirectory> directories = new LinkedHashSet<PolledDirectory>(); protected PolledDirectory directoryMock; protected DirectoryPoller directoryPollerMock; protected void executeNumberOfPollCycles(int numOfPollCycles) { for (int i = 0; i < numOfPollCycles; i++) { pollerTask.run(); } } /* * Dispatch event to the "verifyInOrder_" methods below. */ protected void verifyEventsInOrder(Class<?>... events) throws Exception { for (Class<?> event : events) { if (event.equals(InitialContentEvent.class)) { inOrder.verify(listenerMock).initialContent(Mockito.any(InitialContentEvent.class)); } else if (event.equals(BeforePollingCycleEvent.class)) { inOrder.verify(listenerMock).beforePollingCycle(Mockito.any(BeforePollingCycleEvent.class)); } else if (event.equals(AfterPollingCycleEvent.class)) { inOrder.verify(listenerMock).afterPollingCycle(Mockito.any(AfterPollingCycleEvent.class)); } else if (event.equals(FileAddedEvent.class)) { inOrder.verify(listenerMock).fileAdded(Mockito.any(FileAddedEvent.class)); } else if (event.equals(FileRemovedEvent.class)) { inOrder.verify(listenerMock).fileRemoved(Mockito.any(FileRemovedEvent.class)); } else if (event.equals(FileModifiedEvent.class)) { inOrder.verify(listenerMock).fileModified(Mockito.any(FileModifiedEvent.class)); } else if (event.equals(IoErrorCeasedEvent.class)) { inOrder.verify(listenerMock).ioErrorCeased(Mockito.any(IoErrorCeasedEvent.class)); } else if (event.equals(IoErrorRaisedEvent.class)) { inOrder.verify(listenerMock).ioErrorRaised(Mockito.any(IoErrorRaisedEvent.class)); } else if (event.equals(BeforeStartEvent.class)) { inOrder.verify(listenerMock).beforeStart(Mockito.any(BeforeStartEvent.class)); } else if (event.equals(AfterStopEvent.class)) { inOrder.verify(listenerMock).afterStop(Mockito.any(AfterStopEvent.class)); } else { throw new RuntimeException("Missing event in When verifying order: " + event); } } } /* * input argument is in the form: "file-name/lastModified" * Example "my.txt/1233" */ public Set<FileElement> list(String... files) throws Exception { Set<FileElement> result = new LinkedHashSet<FileElement>(); for (String nameAndTime : files) { String[] t = nameAndTime.split("/"); String fileName = t[0]; long lastModified = Long.parseLong(t[1]); FileElement file = new StubbedFileElement(fileName, lastModified); result.add(file); } return result; } public FileElement[] array(String... files) throws Exception { return list(files).toArray(new StubbedFileElement[0]); } }