Skip to content

Commit c028418

Browse files
authored
Fixed unit tests (#4088)
1 parent 387a2d0 commit c028418

File tree

66 files changed

+1086
-1162
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+1086
-1162
lines changed

CodenameOne/src/com/codename1/ui/Display.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1390,7 +1390,7 @@ public void invokeAndBlock(Runnable r, boolean dropEvents) {
13901390
inputEventStackPointerTmp = inputEventStackPointer;
13911391
}
13921392
try {
1393-
// yeald the CPU for a very short time to let the invoke thread
1393+
// yield the CPU for a very short time to let the invoke thread
13941394
// get started
13951395
lock.wait(2);
13961396
} catch (InterruptedException ex) {
Lines changed: 5 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,15 @@
11
package com.codename1.capture;
22

3-
import com.codename1.io.Util;
4-
import com.codename1.test.UITestBase;
5-
import com.codename1.ui.Image;
3+
import com.codename1.junit.FormTest;
4+
import com.codename1.junit.UITestBase;
65
import com.codename1.ui.events.ActionEvent;
7-
import com.codename1.ui.util.ImageIO;
8-
import org.junit.jupiter.api.AfterEach;
9-
import org.junit.jupiter.api.BeforeEach;
10-
import org.junit.jupiter.api.Test;
11-
12-
import java.io.ByteArrayOutputStream;
13-
import java.io.IOException;
14-
import java.io.OutputStream;
15-
import java.lang.reflect.Field;
16-
import java.util.ArrayList;
17-
import java.util.Collections;
18-
import java.util.List;
19-
import java.util.concurrent.atomic.AtomicReference;
206

217
import static org.junit.jupiter.api.Assertions.*;
22-
import static org.mockito.ArgumentMatchers.anyString;
23-
import static org.mockito.Mockito.doAnswer;
24-
import static org.mockito.Mockito.never;
25-
import static org.mockito.Mockito.reset;
26-
import static org.mockito.Mockito.verify;
27-
import static org.mockito.Mockito.when;
288

299
class CaptureTest extends UITestBase {
3010
private static final String ORIGINAL_PATH = "/tmp/photo.jpg";
3111

32-
@BeforeEach
33-
void configureUtil() {
34-
Util.setImplementation(implementation);
35-
}
36-
37-
@AfterEach
38-
void resetUtil() {
39-
Util.setImplementation(null);
40-
reset(implementation);
41-
}
42-
43-
@Test
12+
@FormTest
4413
void callBackStoresUrlFromActionEvent() {
4514
Capture.CallBack callBack = new Capture.CallBack();
4615
ActionEvent event = new ActionEvent(ORIGINAL_PATH);
@@ -50,7 +19,7 @@ void callBackStoresUrlFromActionEvent() {
5019
assertEquals(ORIGINAL_PATH, callBack.url);
5120
}
5221

53-
@Test
22+
@FormTest
5423
void callBackSetsUrlToNullWhenEventIsNull() {
5524
Capture.CallBack callBack = new Capture.CallBack();
5625

@@ -59,79 +28,14 @@ void callBackSetsUrlToNullWhenEventIsNull() {
5928
assertNull(callBack.url);
6029
}
6130

62-
@Test
31+
@FormTest
6332
void runSkipsProcessingWhenUrlIsNull() {
6433
Capture.CallBack callBack = new Capture.CallBack();
6534
callBack.actionPerformed(null);
6635

6736
callBack.run();
68-
69-
verify(implementation, never()).getImageIO();
7037
}
7138

72-
@Test
73-
void runRescalesImageWhenDimensionsProvided() throws Exception {
74-
Capture.CallBack callBack = new Capture.CallBack();
75-
callBack.actionPerformed(new ActionEvent(ORIGINAL_PATH));
76-
setPrivateInt(callBack, "targetWidth", 120);
77-
setPrivateInt(callBack, "targetHeight", 80);
78-
79-
StubImageIO imageIO = new StubImageIO();
80-
when(implementation.getImageIO()).thenReturn(imageIO);
8139

82-
AtomicReference<String> savedPath = new AtomicReference<>();
83-
AtomicReference<String> deletedPath = new AtomicReference<>();
84-
when(implementation.openFileOutputStream(anyString())).thenAnswer(invocation -> {
85-
savedPath.set(invocation.getArgument(0));
86-
return new ByteArrayOutputStream();
87-
});
88-
doAnswer(invocation -> {
89-
deletedPath.set(invocation.getArgument(0));
90-
return null;
91-
}).when(implementation).deleteFile(anyString());
92-
when(implementation.openFileInputStream(anyString())).thenThrow(new IOException("Not expected"));
93-
94-
callBack.run();
9540

96-
String expectedScaledPath = "/tmp/photos.jpg";
97-
assertEquals(expectedScaledPath, callBack.url);
98-
assertEquals(expectedScaledPath, savedPath.get());
99-
assertEquals(ORIGINAL_PATH, deletedPath.get());
100-
assertEquals(Collections.singletonList(ORIGINAL_PATH), imageIO.savedFiles);
101-
}
102-
103-
private void setPrivateInt(Object target, String fieldName, int value) throws Exception {
104-
Field field = target.getClass().getDeclaredField(fieldName);
105-
field.setAccessible(true);
106-
field.setInt(target, value);
107-
}
108-
109-
private static class StubImageIO extends ImageIO {
110-
private final List<String> savedFiles = new ArrayList<>();
111-
112-
@Override
113-
public void save(String imageFilePath, OutputStream response, String format, int width, int height, float quality) {
114-
savedFiles.add(imageFilePath);
115-
try {
116-
response.write(1);
117-
} catch (IOException ignored) {
118-
}
119-
}
120-
121-
@Override
122-
public void save(java.io.InputStream image, OutputStream response, String format, int width, int height, float quality) throws IOException {
123-
// Not used in this test
124-
response.write(1);
125-
}
126-
127-
@Override
128-
protected void saveImage(Image img, OutputStream response, String format, float quality) throws IOException {
129-
response.write(1);
130-
}
131-
132-
@Override
133-
public boolean isFormatSupported(String format) {
134-
return true;
135-
}
136-
}
13741
}

maven/core-unittests/src/test/java/com/codename1/charts/ChartComponentTest.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@
1111
import com.codename1.charts.views.AbstractChart;
1212
import com.codename1.charts.views.ClickableArea;
1313
import com.codename1.charts.views.XYChart;
14-
import com.codename1.impl.CodenameOneImplementation;
15-
import com.codename1.test.UITestBase;
14+
import com.codename1.junit.UITestBase;
1615
import com.codename1.ui.Transform;
1716
import com.codename1.ui.geom.Rectangle;
1817
import com.codename1.ui.geom.Shape;
@@ -27,11 +26,6 @@
2726
class ChartComponentTest extends UITestBase {
2827
private TestCodenameOneImplementation testImplementation;
2928

30-
@Override
31-
protected CodenameOneImplementation createImplementation() {
32-
testImplementation = new TestCodenameOneImplementation();
33-
return testImplementation;
34-
}
3529
@Test
3630
void constructorCopiesPanAndZoomSettingsFromXYChart() {
3731
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();

maven/core-unittests/src/test/java/com/codename1/charts/transitions/SeriesTransitionTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import com.codename1.charts.compat.Paint;
66
import com.codename1.charts.renderers.SimpleSeriesRenderer;
77
import com.codename1.charts.views.AbstractChart;
8-
import com.codename1.test.UITestBase;
8+
import com.codename1.junit.UITestBase;
99
import com.codename1.ui.Form;
1010
import com.codename1.ui.animations.Animation;
1111
import com.codename1.ui.animations.Motion;

maven/core-unittests/src/test/java/com/codename1/components/AudioRecorderComponentTest.java

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.codename1.components;
22

3+
import com.codename1.junit.FormTest;
34
import com.codename1.media.Media;
45
import com.codename1.media.MediaRecorderBuilder;
6+
import com.codename1.junit.UITestBase;
57
import com.codename1.ui.Button;
68
import com.codename1.ui.Label;
79
import com.codename1.ui.events.ActionEvent;
@@ -15,22 +17,18 @@
1517
import java.util.concurrent.atomic.AtomicInteger;
1618

1719
import static org.junit.jupiter.api.Assertions.*;
18-
import static org.mockito.ArgumentMatchers.any;
19-
import static org.mockito.ArgumentMatchers.anyString;
2020
import static org.mockito.Mockito.mock;
2121
import static org.mockito.Mockito.verify;
22-
import static org.mockito.Mockito.when;
2322

24-
class AudioRecorderComponentTest extends ComponentTestBase {
23+
class AudioRecorderComponentTest extends UITestBase {
2524

2625
private Media media;
2726

2827
@BeforeEach
2928
void prepareMediaMocks() throws Exception {
30-
when(implementation.getAvailableRecordingMimeTypes()).thenReturn(new String[]{"audio/wav"});
29+
implementation.setAvailableRecordingMimeTypes(new String[]{"audio/wav"});
3130
media = mock(Media.class);
32-
when(implementation.createMediaRecorder(any(MediaRecorderBuilder.class))).thenReturn(media);
33-
when(implementation.createMediaRecorder(anyString(), anyString())).thenReturn(media);
31+
implementation.setMediaRecorder(media);
3432
}
3533

3634
private AudioRecorderComponent createRecorder(boolean redirect) {
@@ -42,14 +40,14 @@ private AudioRecorderComponent createRecorder(boolean redirect) {
4240
return component;
4341
}
4442

45-
@Test
43+
@FormTest
4644
void initializationQueuesAndAppliesPausedState() {
4745
AudioRecorderComponent recorder = createRecorder(false);
4846
assertEquals(AudioRecorderComponent.RecorderState.Paused, recorder.getState());
4947
assertTrue(recorder.getComponentCount() > 0, "Recorder UI should be constructed after initialization");
5048
}
5149

52-
@Test
50+
@FormTest
5351
void recordAndPauseActionsUpdateMediaState() throws Exception {
5452
AudioRecorderComponent recorder = createRecorder(false);
5553
Button recordButton = getPrivateButton(recorder, "record");
@@ -63,7 +61,7 @@ void recordAndPauseActionsUpdateMediaState() throws Exception {
6361
verify(media).pause();
6462
}
6563

66-
@Test
64+
@FormTest
6765
void doneActionRedirectAcceptsRecordingAndNotifiesListeners() throws Exception {
6866
AudioRecorderComponent recorder = createRecorder(true);
6967
Button recordButton = getPrivateButton(recorder, "record");
@@ -80,7 +78,7 @@ void doneActionRedirectAcceptsRecordingAndNotifiesListeners() throws Exception {
8078
assertEquals(1, eventCount.get(), "AudioRecorderComponent only fires action events when the recording is accepted");
8179
}
8280

83-
@Test
81+
@FormTest
8482
void animateUpdatesRecordingTime() throws Exception {
8583
AudioRecorderComponent recorder = createRecorder(false);
8684
setPrivateField(recorder, "state", AudioRecorderComponent.RecorderState.Recording);

maven/core-unittests/src/test/java/com/codename1/components/ComponentTestBase.java

Lines changed: 0 additions & 9 deletions
This file was deleted.

maven/core-unittests/src/test/java/com/codename1/components/FloatingActionButtonTest.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
package com.codename1.components;
22

3+
import com.codename1.junit.EdtTest;
4+
import com.codename1.junit.UITestBase;
35
import com.codename1.ui.Button;
46
import com.codename1.ui.Component;
57
import com.codename1.ui.Container;
68
import com.codename1.ui.FontImage;
79

810
import org.junit.jupiter.api.AfterEach;
911
import org.junit.jupiter.api.BeforeEach;
10-
import org.junit.jupiter.api.Test;
1112

1213
import java.lang.reflect.Field;
1314
import java.util.ArrayList;
1415
import java.util.List;
1516

1617
import static org.junit.jupiter.api.Assertions.*;
17-
import static org.mockito.Mockito.when;
1818

19-
class FloatingActionButtonTest extends ComponentTestBase {
19+
class FloatingActionButtonTest extends UITestBase {
2020

2121
private boolean originalAutoSizing;
2222
private float originalDefaultSize;
@@ -25,7 +25,6 @@ class FloatingActionButtonTest extends ComponentTestBase {
2525
void captureDefaults() {
2626
originalAutoSizing = FloatingActionButton.isAutoSizing();
2727
originalDefaultSize = FloatingActionButton.getIconDefaultSize();
28-
when(implementation.isPortrait()).thenReturn(true);
2928
}
3029

3130
@AfterEach
@@ -34,7 +33,7 @@ void restoreDefaults() {
3433
FloatingActionButton.setIconDefaultSize(originalDefaultSize);
3534
}
3635

37-
@Test
36+
@EdtTest
3837
void autoSizingUsesIconDimensions() {
3938
FloatingActionButton.setAutoSizing(true);
4039
FloatingActionButton fab = new FloatingActionButton(FontImage.MATERIAL_ADD, null, FloatingActionButton.getIconDefaultSize());
@@ -44,7 +43,7 @@ void autoSizingUsesIconDimensions() {
4443
assertEquals(expectedHeight, fab.getPreferredSize().getHeight());
4544
}
4645

47-
@Test
46+
@EdtTest
4847
void createSubFabStoresButtonsInMenu() throws Exception {
4948
FloatingActionButton fab = new FloatingActionButton(FontImage.MATERIAL_ADD, null, FloatingActionButton.getIconDefaultSize());
5049
FloatingActionButton first = fab.createSubFAB(FontImage.MATERIAL_CAMERA, "Camera");
@@ -56,7 +55,7 @@ void createSubFabStoresButtonsInMenu() throws Exception {
5655
assertSame(second, subMenu.get(1));
5756
}
5857

59-
@Test
58+
@EdtTest
6059
void popupContentCreatesTextActionsThatTriggerSubFab() throws Exception {
6160
FloatingActionButton fab = new FloatingActionButton(FontImage.MATERIAL_ADD, null, FloatingActionButton.getIconDefaultSize());
6261
fab.setFloatingActionTextUIID("PopupText");
@@ -81,7 +80,7 @@ void popupContentCreatesTextActionsThatTriggerSubFab() throws Exception {
8180
assertTrue(subFab.releasedCalled);
8281
}
8382

84-
@Test
83+
@EdtTest
8584
void badgeCreationKeepsTextAndUiid() {
8685
FloatingActionButton badge = FloatingActionButton.createBadge("3");
8786
assertEquals("Badge", badge.getUIID());

maven/core-unittests/src/test/java/com/codename1/components/FloatingHintTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.codename1.components;
22

3+
import com.codename1.junit.UITestBase;
34
import com.codename1.ui.Button;
45
import com.codename1.ui.Label;
56
import com.codename1.ui.TextArea;
@@ -13,7 +14,7 @@
1314

1415
import static org.junit.jupiter.api.Assertions.*;
1516

16-
class FloatingHintTest extends ComponentTestBase {
17+
class FloatingHintTest extends UITestBase {
1718

1819
@Test
1920
void constructorConfiguresHintComponents() throws Exception {

0 commit comments

Comments
 (0)