Skip to content

Commit fc8e013

Browse files
Improve unit test coverage for various core classes
Added and updated unit tests in `maven/core-unittests` to improve coverage for: - `com.codename1.io.MalformedURLException` - `com.codename1.ui.BrowserWindow$EvalRequest` - `com.codename1.ui.BrowserComponent$JSExpression` - `com.codename1.properties.UiBinding` (converters) - `com.codename1.ui.events.ComponentStateChangeEvent` - `com.codename1.charts.views.RangeStackedBarChart` - `com.codename1.ui.plaf.CSSBorder` (RadialGradient logic) The tests use `UITestBase` and `@FormTest` as per conventions.
1 parent 87bac64 commit fc8e013

File tree

7 files changed

+151
-0
lines changed

7 files changed

+151
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.codename1.charts.views;
2+
3+
import com.codename1.junit.UITestBase;
4+
import com.codename1.junit.FormTest;
5+
import org.junit.jupiter.api.Assertions;
6+
7+
public class RangeStackedBarChartTest extends UITestBase {
8+
9+
@FormTest
10+
public void testGetChartType() {
11+
RangeStackedBarChart chart = new RangeStackedBarChart();
12+
Assertions.assertEquals("RangeStackedBar", chart.getChartType());
13+
}
14+
15+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.codename1.io;
2+
3+
import com.codename1.ui.Display;
4+
import com.codename1.junit.UITestBase;
5+
import com.codename1.junit.FormTest;
6+
import com.codename1.testing.TestCodenameOneImplementation;
7+
import org.junit.jupiter.api.Assertions;
8+
9+
public class MalformedURLExceptionTest extends UITestBase {
10+
11+
@FormTest
12+
public void testMalformedURLException() {
13+
MalformedURLException ex = new MalformedURLException();
14+
Assertions.assertNull(ex.getMessage());
15+
16+
ex = new MalformedURLException("Test Message");
17+
Assertions.assertEquals("Test Message", ex.getMessage());
18+
}
19+
20+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.codename1.properties;
2+
3+
import com.codename1.junit.UITestBase;
4+
import com.codename1.junit.FormTest;
5+
import org.junit.jupiter.api.Assertions;
6+
7+
public class UiBindingConvertersTest extends UITestBase {
8+
9+
@FormTest
10+
public void testIntegerConverter() {
11+
UiBinding.IntegerConverter converter = new UiBinding.IntegerConverter();
12+
Assertions.assertNull(converter.convert(null));
13+
Assertions.assertEquals(123, converter.convert(123));
14+
Assertions.assertEquals(123, converter.convert("123"));
15+
Assertions.assertEquals(123, converter.convert(123.45));
16+
}
17+
18+
@FormTest
19+
public void testLongConverter() {
20+
UiBinding.LongConverter converter = new UiBinding.LongConverter();
21+
Assertions.assertNull(converter.convert(null));
22+
Assertions.assertEquals(123L, converter.convert(123L));
23+
Assertions.assertEquals(123L, converter.convert("123"));
24+
Assertions.assertEquals(123L, converter.convert(123.45));
25+
}
26+
27+
@FormTest
28+
public void testFloatConverter() {
29+
UiBinding.FloatConverter converter = new UiBinding.FloatConverter();
30+
Assertions.assertNull(converter.convert(null));
31+
Assertions.assertEquals(123.45f, (Float) converter.convert(123.45f), 0.001f);
32+
Assertions.assertEquals(123.45f, (Float) converter.convert("123.45"), 0.001f);
33+
}
34+
35+
@FormTest
36+
public void testDoubleConverter() {
37+
UiBinding.DoubleConverter converter = new UiBinding.DoubleConverter();
38+
Assertions.assertNull(converter.convert(null));
39+
Assertions.assertEquals(123.45, (Double) converter.convert(123.45), 0.001);
40+
Assertions.assertEquals(123.45, (Double) converter.convert("123.45"), 0.001);
41+
}
42+
}

maven/core-unittests/src/test/java/com/codename1/ui/BrowserComponentTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,4 +190,10 @@ private static class DummyPeerComponent extends PeerComponent {
190190
s.setMargin(0, 0, 0, 0);
191191
}
192192
}
193+
194+
@FormTest
195+
public void testJSExpression() {
196+
BrowserComponent.JSExpression expression = new BrowserComponent.JSExpression("window.innerWidth");
197+
assertEquals("window.innerWidth", expression.toString());
198+
}
193199
}

maven/core-unittests/src/test/java/com/codename1/ui/BrowserWindowTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,4 +59,11 @@ public void actionPerformed(ActionEvent evt) {
5959
window.removeCloseListener(closeListener);
6060
assertFalse(implementation.getNativeBrowserWindowCloseListener().contains(closeListener));
6161
}
62+
63+
@FormTest
64+
public void testEvalRequest() {
65+
BrowserWindow.EvalRequest request = new BrowserWindow.EvalRequest();
66+
request.setJS("alert('Hello');");
67+
assertEquals("alert('Hello');", request.getJS());
68+
}
6269
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.codename1.ui.events;
2+
3+
import com.codename1.ui.Component;
4+
import com.codename1.ui.Container;
5+
import com.codename1.junit.UITestBase;
6+
import com.codename1.junit.FormTest;
7+
import org.junit.jupiter.api.Assertions;
8+
9+
public class ComponentStateChangeEventTest extends UITestBase {
10+
11+
@FormTest
12+
public void testComponentStateChangeEvent() {
13+
Component cmp = new Container();
14+
ComponentStateChangeEvent event = new ComponentStateChangeEvent(cmp, true);
15+
16+
Assertions.assertEquals(cmp, event.getSource());
17+
Assertions.assertTrue(event.isInitialized());
18+
19+
event = new ComponentStateChangeEvent(cmp, false);
20+
Assertions.assertFalse(event.isInitialized());
21+
}
22+
23+
}

maven/core-unittests/src/test/java/com/codename1/ui/plaf/CSSBorderTest.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,4 +175,42 @@ public void testBoxShadow() {
175175
border.toCSSString(); // BoxShadow toCSSString throws RuntimeException as per source
176176
});
177177
}
178+
179+
@FormTest
180+
public void testRadialGradient() throws Exception {
181+
// Use reflection to test RadialGradient
182+
CSSBorder border = new CSSBorder((Resources)null);
183+
184+
// Reflection to create RadialGradient
185+
Class<?> radialGradientClass = Class.forName("com.codename1.ui.plaf.CSSBorder$RadialGradient");
186+
java.lang.reflect.Constructor<?> rgCtor = radialGradientClass.getDeclaredConstructor(CSSBorder.class);
187+
rgCtor.setAccessible(true);
188+
Object radialGradient = rgCtor.newInstance(border);
189+
190+
// Create BackgroundImage and attach RadialGradient
191+
Class<?> bgImageClass = Class.forName("com.codename1.ui.plaf.CSSBorder$BackgroundImage");
192+
java.lang.reflect.Constructor<?> bgCtor = bgImageClass.getDeclaredConstructor(CSSBorder.class);
193+
bgCtor.setAccessible(true);
194+
Object bgImage = bgCtor.newInstance(border);
195+
196+
java.lang.reflect.Field rgField = bgImageClass.getDeclaredField("radialGradient");
197+
rgField.setAccessible(true);
198+
rgField.set(bgImage, radialGradient);
199+
200+
// Attach BackgroundImage to CSSBorder
201+
java.lang.reflect.Field bgImagesField = CSSBorder.class.getDeclaredField("backgroundImages");
202+
bgImagesField.setAccessible(true);
203+
Object bgImagesArray = java.lang.reflect.Array.newInstance(bgImageClass, 1);
204+
java.lang.reflect.Array.set(bgImagesArray, 0, bgImage);
205+
bgImagesField.set(border, bgImagesArray);
206+
207+
// Verify toCSSString
208+
try {
209+
border.toCSSString();
210+
Assertions.fail("RadialGradient toCSSString should throw RuntimeException");
211+
} catch(RuntimeException ex) {
212+
// Expected
213+
Assertions.assertEquals("RadialGradlient toCSSString() not implemented yet", ex.getMessage());
214+
}
215+
}
178216
}

0 commit comments

Comments
 (0)