Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CodenameOne/src/com/codename1/ui/Display.java
Original file line number Diff line number Diff line change
Expand Up @@ -1390,7 +1390,7 @@ public void invokeAndBlock(Runnable r, boolean dropEvents) {
inputEventStackPointerTmp = inputEventStackPointer;
}
try {
// yeald the CPU for a very short time to let the invoke thread
// yield the CPU for a very short time to let the invoke thread
// get started
lock.wait(2);
} catch (InterruptedException ex) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,46 +1,15 @@
package com.codename1.capture;

import com.codename1.io.Util;
import com.codename1.test.UITestBase;
import com.codename1.ui.Image;
import com.codename1.junit.FormTest;
import com.codename1.junit.UITestBase;
import com.codename1.ui.events.ActionEvent;
import com.codename1.ui.util.ImageIO;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;

import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

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

@BeforeEach
void configureUtil() {
Util.setImplementation(implementation);
}

@AfterEach
void resetUtil() {
Util.setImplementation(null);
reset(implementation);
}

@Test
@FormTest
void callBackStoresUrlFromActionEvent() {
Capture.CallBack callBack = new Capture.CallBack();
ActionEvent event = new ActionEvent(ORIGINAL_PATH);
Expand All @@ -50,7 +19,7 @@ void callBackStoresUrlFromActionEvent() {
assertEquals(ORIGINAL_PATH, callBack.url);
}

@Test
@FormTest
void callBackSetsUrlToNullWhenEventIsNull() {
Capture.CallBack callBack = new Capture.CallBack();

Expand All @@ -59,79 +28,14 @@ void callBackSetsUrlToNullWhenEventIsNull() {
assertNull(callBack.url);
}

@Test
@FormTest
void runSkipsProcessingWhenUrlIsNull() {
Capture.CallBack callBack = new Capture.CallBack();
callBack.actionPerformed(null);

callBack.run();

verify(implementation, never()).getImageIO();
}

@Test
void runRescalesImageWhenDimensionsProvided() throws Exception {
Capture.CallBack callBack = new Capture.CallBack();
callBack.actionPerformed(new ActionEvent(ORIGINAL_PATH));
setPrivateInt(callBack, "targetWidth", 120);
setPrivateInt(callBack, "targetHeight", 80);

StubImageIO imageIO = new StubImageIO();
when(implementation.getImageIO()).thenReturn(imageIO);

AtomicReference<String> savedPath = new AtomicReference<>();
AtomicReference<String> deletedPath = new AtomicReference<>();
when(implementation.openFileOutputStream(anyString())).thenAnswer(invocation -> {
savedPath.set(invocation.getArgument(0));
return new ByteArrayOutputStream();
});
doAnswer(invocation -> {
deletedPath.set(invocation.getArgument(0));
return null;
}).when(implementation).deleteFile(anyString());
when(implementation.openFileInputStream(anyString())).thenThrow(new IOException("Not expected"));

callBack.run();

String expectedScaledPath = "/tmp/photos.jpg";
assertEquals(expectedScaledPath, callBack.url);
assertEquals(expectedScaledPath, savedPath.get());
assertEquals(ORIGINAL_PATH, deletedPath.get());
assertEquals(Collections.singletonList(ORIGINAL_PATH), imageIO.savedFiles);
}

private void setPrivateInt(Object target, String fieldName, int value) throws Exception {
Field field = target.getClass().getDeclaredField(fieldName);
field.setAccessible(true);
field.setInt(target, value);
}

private static class StubImageIO extends ImageIO {
private final List<String> savedFiles = new ArrayList<>();

@Override
public void save(String imageFilePath, OutputStream response, String format, int width, int height, float quality) {
savedFiles.add(imageFilePath);
try {
response.write(1);
} catch (IOException ignored) {
}
}

@Override
public void save(java.io.InputStream image, OutputStream response, String format, int width, int height, float quality) throws IOException {
// Not used in this test
response.write(1);
}

@Override
protected void saveImage(Image img, OutputStream response, String format, float quality) throws IOException {
response.write(1);
}

@Override
public boolean isFormatSupported(String format) {
return true;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@
import com.codename1.charts.views.AbstractChart;
import com.codename1.charts.views.ClickableArea;
import com.codename1.charts.views.XYChart;
import com.codename1.impl.CodenameOneImplementation;
import com.codename1.test.UITestBase;
import com.codename1.junit.UITestBase;
import com.codename1.ui.Transform;
import com.codename1.ui.geom.Rectangle;
import com.codename1.ui.geom.Shape;
Expand All @@ -27,11 +26,6 @@
class ChartComponentTest extends UITestBase {
private TestCodenameOneImplementation testImplementation;

@Override
protected CodenameOneImplementation createImplementation() {
testImplementation = new TestCodenameOneImplementation();
return testImplementation;
}
@Test
void constructorCopiesPanAndZoomSettingsFromXYChart() {
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import com.codename1.charts.compat.Paint;
import com.codename1.charts.renderers.SimpleSeriesRenderer;
import com.codename1.charts.views.AbstractChart;
import com.codename1.test.UITestBase;
import com.codename1.junit.UITestBase;
import com.codename1.ui.Form;
import com.codename1.ui.animations.Animation;
import com.codename1.ui.animations.Motion;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package com.codename1.components;

import com.codename1.junit.FormTest;
import com.codename1.media.Media;
import com.codename1.media.MediaRecorderBuilder;
import com.codename1.junit.UITestBase;
import com.codename1.ui.Button;
import com.codename1.ui.Label;
import com.codename1.ui.events.ActionEvent;
Expand All @@ -15,22 +17,18 @@
import java.util.concurrent.atomic.AtomicInteger;

import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

class AudioRecorderComponentTest extends ComponentTestBase {
class AudioRecorderComponentTest extends UITestBase {

private Media media;

@BeforeEach
void prepareMediaMocks() throws Exception {
when(implementation.getAvailableRecordingMimeTypes()).thenReturn(new String[]{"audio/wav"});
implementation.setAvailableRecordingMimeTypes(new String[]{"audio/wav"});
media = mock(Media.class);
when(implementation.createMediaRecorder(any(MediaRecorderBuilder.class))).thenReturn(media);
when(implementation.createMediaRecorder(anyString(), anyString())).thenReturn(media);
implementation.setMediaRecorder(media);
}

private AudioRecorderComponent createRecorder(boolean redirect) {
Expand All @@ -42,14 +40,14 @@ private AudioRecorderComponent createRecorder(boolean redirect) {
return component;
}

@Test
@FormTest
void initializationQueuesAndAppliesPausedState() {
AudioRecorderComponent recorder = createRecorder(false);
assertEquals(AudioRecorderComponent.RecorderState.Paused, recorder.getState());
assertTrue(recorder.getComponentCount() > 0, "Recorder UI should be constructed after initialization");
}

@Test
@FormTest
void recordAndPauseActionsUpdateMediaState() throws Exception {
AudioRecorderComponent recorder = createRecorder(false);
Button recordButton = getPrivateButton(recorder, "record");
Expand All @@ -63,7 +61,7 @@ void recordAndPauseActionsUpdateMediaState() throws Exception {
verify(media).pause();
}

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

@Test
@FormTest
void animateUpdatesRecordingTime() throws Exception {
AudioRecorderComponent recorder = createRecorder(false);
setPrivateField(recorder, "state", AudioRecorderComponent.RecorderState.Recording);
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
package com.codename1.components;

import com.codename1.junit.EdtTest;
import com.codename1.junit.UITestBase;
import com.codename1.ui.Button;
import com.codename1.ui.Component;
import com.codename1.ui.Container;
import com.codename1.ui.FontImage;

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.when;

class FloatingActionButtonTest extends ComponentTestBase {
class FloatingActionButtonTest extends UITestBase {

private boolean originalAutoSizing;
private float originalDefaultSize;
Expand All @@ -25,7 +25,6 @@ class FloatingActionButtonTest extends ComponentTestBase {
void captureDefaults() {
originalAutoSizing = FloatingActionButton.isAutoSizing();
originalDefaultSize = FloatingActionButton.getIconDefaultSize();
when(implementation.isPortrait()).thenReturn(true);
}

@AfterEach
Expand All @@ -34,7 +33,7 @@ void restoreDefaults() {
FloatingActionButton.setIconDefaultSize(originalDefaultSize);
}

@Test
@EdtTest
void autoSizingUsesIconDimensions() {
FloatingActionButton.setAutoSizing(true);
FloatingActionButton fab = new FloatingActionButton(FontImage.MATERIAL_ADD, null, FloatingActionButton.getIconDefaultSize());
Expand All @@ -44,7 +43,7 @@ void autoSizingUsesIconDimensions() {
assertEquals(expectedHeight, fab.getPreferredSize().getHeight());
}

@Test
@EdtTest
void createSubFabStoresButtonsInMenu() throws Exception {
FloatingActionButton fab = new FloatingActionButton(FontImage.MATERIAL_ADD, null, FloatingActionButton.getIconDefaultSize());
FloatingActionButton first = fab.createSubFAB(FontImage.MATERIAL_CAMERA, "Camera");
Expand All @@ -56,7 +55,7 @@ void createSubFabStoresButtonsInMenu() throws Exception {
assertSame(second, subMenu.get(1));
}

@Test
@EdtTest
void popupContentCreatesTextActionsThatTriggerSubFab() throws Exception {
FloatingActionButton fab = new FloatingActionButton(FontImage.MATERIAL_ADD, null, FloatingActionButton.getIconDefaultSize());
fab.setFloatingActionTextUIID("PopupText");
Expand All @@ -81,7 +80,7 @@ void popupContentCreatesTextActionsThatTriggerSubFab() throws Exception {
assertTrue(subFab.releasedCalled);
}

@Test
@EdtTest
void badgeCreationKeepsTextAndUiid() {
FloatingActionButton badge = FloatingActionButton.createBadge("3");
assertEquals("Badge", badge.getUIID());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.codename1.components;

import com.codename1.junit.UITestBase;
import com.codename1.ui.Button;
import com.codename1.ui.Label;
import com.codename1.ui.TextArea;
Expand All @@ -13,7 +14,7 @@

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

class FloatingHintTest extends ComponentTestBase {
class FloatingHintTest extends UITestBase {

@Test
void constructorConfiguresHintComponents() throws Exception {
Expand Down
Loading
Loading