Add tests for MyClipboard#getSystemClipboard
parent
b9bd99b79b
commit
b7b279b924
@ -0,0 +1,67 @@
|
||||
package me.goudham;
|
||||
|
||||
import java.util.stream.Stream;
|
||||
import me.goudham.exception.UnsupportedSystemException;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.instanceOf;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
class MyClipboardTest {
|
||||
|
||||
@Mock
|
||||
private SystemUtils systemUtilsMock;
|
||||
|
||||
private MyClipboard sut;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
MockitoAnnotations.openMocks(this);
|
||||
MyClipboard.setSystemUtils(systemUtilsMock);
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("provideArgumentsForSuccessfullyRetrievingCorrectClipboardListenerForSystem")
|
||||
void successfullyRetrieveCorrectClipboardListenerForSystem(boolean isMac, boolean isWindows, boolean isUnix, Class<?> expectedListener) throws UnsupportedSystemException {
|
||||
when(systemUtilsMock.isMac()).thenReturn(isMac);
|
||||
when(systemUtilsMock.isWindows()).thenReturn(isWindows);
|
||||
when(systemUtilsMock.isUnix()).thenReturn(isUnix);
|
||||
|
||||
MyClipboard actualMyClipboard = MyClipboard.getSystemClipboard();
|
||||
|
||||
assertThat(actualMyClipboard.getClipboardListener(), instanceOf(expectedListener));
|
||||
}
|
||||
|
||||
@Test
|
||||
void failToRetrieveCorrectClipboardListenerForSystem() {
|
||||
String expectedOperatingSystem = "unknown";
|
||||
System.setProperty("os.name", expectedOperatingSystem);
|
||||
Throwable expectedException = new UnsupportedSystemException("Your Operating System: '" + System.getProperty("os.name") + "' is not supported");
|
||||
|
||||
when(systemUtilsMock.isMac()).thenReturn(false);
|
||||
when(systemUtilsMock.isWindows()).thenReturn(false);
|
||||
when(systemUtilsMock.isUnix()).thenReturn(false);
|
||||
|
||||
Throwable actualException = assertThrows(UnsupportedSystemException.class, MyClipboard::getSystemClipboard);
|
||||
|
||||
assertThat(actualException, instanceOf(expectedException.getClass()));
|
||||
assertThat(actualException.getMessage(), is(expectedException.getMessage()));
|
||||
}
|
||||
|
||||
static Stream<Arguments> provideArgumentsForSuccessfullyRetrievingCorrectClipboardListenerForSystem() {
|
||||
return Stream.of(
|
||||
Arguments.of(false, true, false, WindowsOrUnixClipboardListener.class),
|
||||
Arguments.of(false, false, true, WindowsOrUnixClipboardListener.class),
|
||||
Arguments.of(true, false, false, MacClipboardListener.class)
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue