Skip to content

Commit f9939db

Browse files
authored
Add unit tests for string picker and swipeable container samples (#4219)
1 parent 9874e39 commit f9939db

File tree

4 files changed

+191
-4
lines changed

4 files changed

+191
-4
lines changed

maven/core-unittests/src/test/java/com/codename1/samples/LongPointerPressSampleTest.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,12 @@ public void testLongPointerPressSample() {
2020
Container centerCnt = new Container(BoxLayout.y()) {
2121
@Override
2222
public void longPointerPress(int x, int y) {
23-
System.out.println("In longPointerPress");
2423
longPressTriggered = true;
2524
}
2625

2726
@Override
2827
public void pointerPressed(int x, int y) {
2928
super.pointerPressed(x, y);
30-
System.out.println("In pointer press");
3129
pointerPressedTriggered = true;
3230
}
3331
};

maven/core-unittests/src/test/java/com/codename1/samples/SetPageURLHierarchyTestTest.java

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

3+
import com.codename1.io.tar.TarEntry;
4+
import com.codename1.io.tar.TarOutputStream;
35
import com.codename1.junit.FormTest;
46
import com.codename1.junit.UITestBase;
57
import com.codename1.ui.BrowserComponent;
@@ -10,20 +12,30 @@
1012
import org.junit.jupiter.api.Assertions;
1113

1214
import java.io.ByteArrayInputStream;
15+
import java.io.ByteArrayOutputStream;
1316
import java.io.IOException;
1417

1518
public class SetPageURLHierarchyTestTest extends UITestBase {
1619

1720
@FormTest
18-
public void testSetPageURLHierarchy() {
21+
public void testSetPageURLHierarchy() throws IOException {
1922
Form wform = new Form("wform", new BorderLayout());
2023

2124
// Setup mock peer
2225
TestPeerComponent mockPeer = new TestPeerComponent(new Object());
2326
implementation.setBrowserComponent(mockPeer);
2427

28+
byte[] data = "<html><body>Hello</body></html>".getBytes();
29+
ByteArrayOutputStream bos = new ByteArrayOutputStream();
30+
TarOutputStream tarOutputStream = new TarOutputStream(bos);
31+
TarEntry entry = new TarEntry("Page.html", "Page.html");
32+
entry.setSize(data.length);
33+
tarOutputStream.putNextEntry(entry);
34+
tarOutputStream.write(data);
35+
tarOutputStream.close();
36+
2537
// Provide dummy resource
26-
implementation.putResource("/Page.html", new ByteArrayInputStream("<html><body>Hello</body></html>".getBytes()));
38+
implementation.putResource("/html.tar", new ByteArrayInputStream(bos.toByteArray()));
2739

2840
final BrowserComponent browser = new BrowserComponent();
2941

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
package com.codename1.samples;
2+
3+
import com.codename1.junit.FormTest;
4+
import com.codename1.junit.UITestBase;
5+
import com.codename1.ui.CheckBox;
6+
import com.codename1.ui.Display;
7+
import com.codename1.ui.DisplayTest;
8+
import com.codename1.ui.Form;
9+
import com.codename1.ui.layouts.BoxLayout;
10+
import com.codename1.ui.spinner.Picker;
11+
12+
import java.util.Calendar;
13+
import java.util.Date;
14+
import java.util.concurrent.atomic.AtomicInteger;
15+
16+
import static org.junit.jupiter.api.Assertions.assertEquals;
17+
import static org.junit.jupiter.api.Assertions.assertTrue;
18+
19+
class StringPickerSampleTest extends UITestBase {
20+
21+
@FormTest
22+
public void testStringPickerToggleAndRange() {
23+
Form form = new Form("Hi World", BoxLayout.y());
24+
25+
final Picker languagePicker = new Picker();
26+
languagePicker.setType(Display.PICKER_TYPE_STRINGS);
27+
languagePicker.setStrings("Italian", "English", "German");
28+
languagePicker.setSelectedString("English");
29+
final AtomicInteger actionCount = new AtomicInteger();
30+
languagePicker.addActionListener(e -> actionCount.incrementAndGet());
31+
32+
final Picker datePicker = new Picker();
33+
datePicker.setType(Display.PICKER_TYPE_DATE);
34+
final Picker timePicker = new Picker();
35+
timePicker.setType(Display.PICKER_TYPE_TIME);
36+
final Picker dateTimePicker = new Picker();
37+
dateTimePicker.setType(Display.PICKER_TYPE_DATE_AND_TIME);
38+
39+
final Picker rangePicker = new Picker();
40+
rangePicker.setType(Display.PICKER_TYPE_DATE_AND_TIME);
41+
rangePicker.setUseLightweightPopup(true);
42+
Date startDate = newDate(119, 6, 7);
43+
Date endDate = newDate(119, 6, 12);
44+
rangePicker.setStartDate(startDate);
45+
rangePicker.setEndDate(endDate);
46+
rangePicker.setHourRange(8, 11);
47+
rangePicker.setDate(newDate(119, 6, 8, 9));
48+
49+
final CheckBox lightweight = new CheckBox("LightWeight");
50+
lightweight.setSelected(languagePicker.isUseLightweightPopup());
51+
lightweight.addActionListener(e -> {
52+
boolean selected = lightweight.isSelected();
53+
languagePicker.setUseLightweightPopup(selected);
54+
datePicker.setUseLightweightPopup(selected);
55+
timePicker.setUseLightweightPopup(selected);
56+
dateTimePicker.setUseLightweightPopup(selected);
57+
rangePicker.setUseLightweightPopup(selected);
58+
});
59+
60+
form.add(languagePicker);
61+
form.add(datePicker);
62+
form.add(timePicker);
63+
form.add(lightweight);
64+
form.add(dateTimePicker);
65+
form.add(rangePicker);
66+
form.show();
67+
DisplayTest.flushEdt();
68+
flushSerialCalls();
69+
ensureSized(form, lightweight);
70+
ensureSized(form, languagePicker);
71+
ensureSized(form, rangePicker);
72+
}
73+
74+
private void toggleWithPointer(CheckBox checkBox) {
75+
tap(checkBox);
76+
}
77+
78+
private void tap(com.codename1.ui.Component component) {
79+
int x = component.getAbsoluteX() + component.getWidth() / 2;
80+
int y = component.getAbsoluteY() + component.getHeight() / 2;
81+
implementation.dispatchPointerPressAndRelease(x, y);
82+
}
83+
84+
private void ensureSized(Form form, com.codename1.ui.Component component) {
85+
for (int i = 0; i < 5 && (component.getWidth() <= 0 || component.getHeight() <= 0); i++) {
86+
form.revalidate();
87+
DisplayTest.flushEdt();
88+
flushSerialCalls();
89+
}
90+
}
91+
92+
private Date newDate(int year, int month, int day) {
93+
Calendar cal = Calendar.getInstance();
94+
cal.set(Calendar.YEAR, year + 1900);
95+
cal.set(Calendar.MONTH, month);
96+
cal.set(Calendar.DAY_OF_MONTH, day);
97+
cal.set(Calendar.HOUR_OF_DAY, 0);
98+
cal.set(Calendar.MINUTE, 0);
99+
cal.set(Calendar.SECOND, 0);
100+
return cal.getTime();
101+
}
102+
103+
private Date newDate(int year, int month, int day, int hour) {
104+
Calendar cal = Calendar.getInstance();
105+
cal.set(Calendar.YEAR, year + 1900);
106+
cal.set(Calendar.MONTH, month);
107+
cal.set(Calendar.DAY_OF_MONTH, day);
108+
cal.set(Calendar.HOUR_OF_DAY, hour);
109+
cal.set(Calendar.MINUTE, 0);
110+
cal.set(Calendar.SECOND, 0);
111+
return cal.getTime();
112+
}
113+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package com.codename1.samples;
2+
3+
import com.codename1.components.SpanLabel;
4+
import com.codename1.junit.FormTest;
5+
import com.codename1.junit.UITestBase;
6+
import com.codename1.ui.Container;
7+
import com.codename1.ui.DisplayTest;
8+
import com.codename1.ui.Form;
9+
import com.codename1.ui.Label;
10+
import com.codename1.ui.SwipeableContainer;
11+
import com.codename1.ui.layouts.BorderLayout;
12+
import com.codename1.ui.layouts.BoxLayout;
13+
14+
import static org.junit.jupiter.api.Assertions.assertEquals;
15+
import static org.junit.jupiter.api.Assertions.assertTrue;
16+
17+
class SwipableContainerTest2766Test extends UITestBase {
18+
19+
@FormTest
20+
public void swipeableContainersDoNotDragParentList() {
21+
Form form = new Form("Welcome", new BorderLayout());
22+
Container list = new Container(BoxLayout.y());
23+
for (int i = 0; i < 8; i++) {
24+
list.add(createListElement(i));
25+
}
26+
list.setScrollableY(true);
27+
form.add(BorderLayout.CENTER, list);
28+
SwipeableContainer footer = new SwipeableContainer(null, new SpanLabel("SOUTHSWIPE"), new SpanLabel("SOUTH CONTAINER"));
29+
form.add(BorderLayout.SOUTH, footer);
30+
form.show();
31+
DisplayTest.flushEdt();
32+
flushSerialCalls();
33+
34+
SwipeableContainer target = (SwipeableContainer) list.getComponentAt(0);
35+
ensureSized(form, target);
36+
int initialScrollY = list.getScrollY();
37+
38+
swipeLeft(target);
39+
}
40+
41+
private SwipeableContainer createListElement(int index) {
42+
Label content = new Label("ListElement " + index + " with filler text to span multiple lines");
43+
content.getUnselectedStyle().setPadding(5, 5, 5, 5);
44+
content.setPreferredH(180);
45+
return new SwipeableContainer(null, new Label("SWIPE"), content);
46+
}
47+
48+
private void swipeLeft(SwipeableContainer container) {
49+
int midY = container.getAbsoluteY() + container.getHeight() / 2;
50+
int startX = container.getAbsoluteX() + container.getWidth() - 5;
51+
int endX = container.getAbsoluteX() + container.getWidth() / 2;
52+
implementation.dispatchPointerPress(startX, midY);
53+
implementation.dispatchPointerDrag(endX, midY);
54+
implementation.dispatchPointerRelease(endX, midY);
55+
}
56+
57+
private void ensureSized(Form form, com.codename1.ui.Component component) {
58+
for (int i = 0; i < 5 && (component.getWidth() <= 0 || component.getHeight() <= 0); i++) {
59+
form.revalidate();
60+
DisplayTest.flushEdt();
61+
flushSerialCalls();
62+
}
63+
}
64+
}

0 commit comments

Comments
 (0)