Skip to content

Commit ee39a5c

Browse files
committed
added tests for the ui
1 parent 2c042a3 commit ee39a5c

File tree

2 files changed

+114
-3
lines changed

2 files changed

+114
-3
lines changed

bloC/pom.xml

+16-3
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@
88
<artifactId>java-design-patterns</artifactId>
99
<version>1.26.0-SNAPSHOT</version>
1010
</parent>
11-
1211
<artifactId>bloC</artifactId>
13-
1412
<properties>
1513
<maven.compiler.source>17</maven.compiler.source>
1614
<maven.compiler.target>17</maven.compiler.target>
@@ -22,6 +20,21 @@
2220
<artifactId>junit-jupiter-api</artifactId>
2321
<scope>test</scope>
2422
</dependency>
23+
<dependency>
24+
<groupId>org.testng</groupId>
25+
<artifactId>testng</artifactId>
26+
<version>RELEASE</version>
27+
<scope>test</scope>
28+
</dependency>
29+
<dependency>
30+
<groupId>junit</groupId>
31+
<artifactId>junit</artifactId>
32+
<scope>test</scope>
33+
</dependency>
34+
<dependency>
35+
<groupId>org.assertj</groupId>
36+
<artifactId>assertj-core</artifactId>
37+
<scope>test</scope>
38+
</dependency>
2539
</dependencies>
26-
2740
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
package com.iluwatar.bloc;
2+
3+
import org.junit.After;
4+
import org.junit.Before;
5+
import org.junit.Test;
6+
7+
import javax.swing.*;
8+
import java.awt.*;
9+
10+
import static org.junit.Assert.assertEquals;
11+
12+
public class MainTest {
13+
14+
private JFrame frame;
15+
private JLabel counterLabel;
16+
private JButton incrementButton;
17+
private JButton decrementButton;
18+
private JButton toggleListenerButton;
19+
private Bloc bloc;
20+
private StateListener<State> stateListener;
21+
22+
@Before
23+
public void setUp() {
24+
bloc = new Bloc(); // Re-initialize the Bloc for each test
25+
26+
frame = new JFrame("BloC example");
27+
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
28+
frame.setSize(400, 300);
29+
30+
counterLabel = new JLabel("Counter: 0", SwingConstants.CENTER);
31+
counterLabel.setFont(new Font("Arial", Font.BOLD, 20));
32+
33+
incrementButton = new JButton("Increment");
34+
decrementButton = new JButton("Decrement");
35+
toggleListenerButton = new JButton("Disable Listener");
36+
37+
frame.setLayout(new BorderLayout());
38+
frame.add(counterLabel, BorderLayout.CENTER);
39+
frame.add(incrementButton, BorderLayout.NORTH);
40+
frame.add(decrementButton, BorderLayout.SOUTH);
41+
frame.add(toggleListenerButton, BorderLayout.EAST);
42+
43+
stateListener = state -> counterLabel.setText("Counter: " + state.getValue());
44+
bloc.addListener(stateListener);
45+
46+
incrementButton.addActionListener(e -> bloc.increment());
47+
decrementButton.addActionListener(e -> bloc.decrement());
48+
toggleListenerButton.addActionListener(e -> {
49+
if (bloc.getListeners().contains(stateListener)) {
50+
bloc.removeListener(stateListener);
51+
toggleListenerButton.setText("Enable Listener");
52+
} else {
53+
bloc.addListener(stateListener);
54+
toggleListenerButton.setText("Disable Listener");
55+
}
56+
});
57+
58+
frame.setVisible(true);
59+
}
60+
61+
@After
62+
public void tearDown() {
63+
frame.dispose();
64+
bloc = new Bloc(); // Reset Bloc state after each test to avoid state carryover
65+
}
66+
67+
68+
@Test
69+
public void testIncrementButton() {
70+
simulateButtonClick(incrementButton);
71+
assertEquals("Counter: 1", counterLabel.getText());
72+
}
73+
74+
@Test
75+
public void testDecrementButton() {
76+
simulateButtonClick(decrementButton);
77+
assertEquals("Counter: -1", counterLabel.getText());
78+
}
79+
80+
@Test
81+
public void testToggleListener() {
82+
// Disable listener
83+
simulateButtonClick(toggleListenerButton);
84+
simulateButtonClick(incrementButton);
85+
assertEquals("Counter: 0", counterLabel.getText()); // Listener is disabled
86+
87+
// Enable listener
88+
simulateButtonClick(toggleListenerButton);
89+
simulateButtonClick(incrementButton);
90+
assertEquals("Counter: 2", counterLabel.getText()); // Listener is re-enabled
91+
}
92+
93+
private void simulateButtonClick(JButton button) {
94+
for (var listener : button.getActionListeners()) {
95+
listener.actionPerformed(null);
96+
}
97+
}
98+
}

0 commit comments

Comments
 (0)