import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Timeout;
import static com.spotify.hamcrest.jackson.JsonMatchers.jsonObject;
import static com.spotify.hamcrest.jackson.JsonMatchers.jsonText;
import static java.nio.charset.StandardCharsets.UTF_8;
+import static java.util.Arrays.stream;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.anything;
import static org.hamcrest.Matchers.contains;
public void serverDoesNotSendEventsForExistingWindows() throws Throwable {
var window = new Window(null);
window.setVisible(true);
- try {
- try (var server = new Server()) {
- server.start();
- server.waitForNextScan();
- createConnection(server, verifyConnectedEvent((reader, ready, writer) -> {
- assertTimeout(ready, Duration.of(1, ChronoUnit.SECONDS));
- }));
- }
- } finally {
- window.setVisible(false);
+ try (var server = new Server()) {
+ server.start();
+ server.waitForNextScan();
+ createConnection(server, verifyConnectedEvent((reader, ready, writer) -> {
+ assertTimeout(ready, Duration.of(1, ChronoUnit.SECONDS));
+ }));
}
}
public void serverSendsEventWhenAWindowIsOpened() throws Throwable {
connectToServer(verifyConnectedEvent((reader, ready, writer) -> {
var window = new Window(null);
- try {
- window.setVisible(true);
- assertThat(reader.get(), isJsonStringMatching(jsonObject().where("event", jsonText("window-opened"))));
- } finally {
- window.setVisible(false);
- }
+ window.setVisible(true);
+ assertThat(reader.get(), isJsonStringMatching(jsonObject().where("event", jsonText("window-opened"))));
}));
}
connectToServer(verifyConnectedEvent((reader, ready, writer) -> {
var frame = new Frame("Frame Title");
frame.setVisible(true);
- try {
- assertThat(reader.get(), isJsonStringMatching(jsonObject().where("event", jsonText("window-opened"))));
- } finally {
- frame.setVisible(false);
- }
+ assertThat(reader.get(), isJsonStringMatching(jsonObject().where("event", jsonText("window-opened"))));
}));
}
@Timeout(value = 5, unit = TimeUnit.SECONDS, threadMode = SEPARATE_THREAD)
public void windowInfoContainsInfoAboutAllComponents() throws Throwable {
connectToServer(verifyConnectedEvent((reader, ready, writer) -> {
- var window = new Window(null);
SwingUtilities.invokeAndWait(() -> {
+ var window = new Window(null);
var mainPanel = new JPanel(new BorderLayout());
mainPanel.add(new JLabel("Label"), BorderLayout.NORTH);
mainPanel.add(new JButton("Button"), BorderLayout.SOUTH);
window.pack();
window.setVisible(true);
});
- try {
- var reply = objectMapper.readTree(reader.get());
- System.out.println(reply);
- assertThat(reply, jsonObject().where("event", jsonText("window-opened")).where("id", jsonInt(anything()))
- .where("children", jsonArray(contains(jsonObject().where("type", jsonText("javax.swing.JPanel"))
- .where("children", jsonArray(containsInAnyOrder(
- jsonObject().where("type", jsonText("javax.swing.JLabel")),
- jsonObject().where("type", jsonText("javax.swing.JButton"))))))))
- );
- } finally {
- window.setVisible(false);
- }
+ var reply = objectMapper.readTree(reader.get());
+ System.out.println(reply);
+ assertThat(reply, jsonObject().where("event", jsonText("window-opened")).where("id", jsonInt(anything()))
+ .where("children", jsonArray(contains(jsonObject().where("type", jsonText("javax.swing.JPanel"))
+ .where("children", jsonArray(containsInAnyOrder(
+ jsonObject().where("type", jsonText("javax.swing.JLabel")),
+ jsonObject().where("type", jsonText("javax.swing.JButton"))))))))
+ );
+ }));
+ }
+
+ @BeforeEach
+ @AfterEach
+ public void removeAllWindows() throws Exception {
+ SwingUtilities.invokeAndWait(() -> stream(Window.getWindows()).forEach(window -> {
+ window.setVisible(false);
+ window.dispose();
}));
}