Skip to content

Commit 569c80f

Browse files
authored
Add CircleProgress sample unit test (#4194)
1 parent aa795b6 commit 569c80f

File tree

1 file changed

+99
-0
lines changed

1 file changed

+99
-0
lines changed
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
package com.codename1.samples;
2+
3+
import com.codename1.junit.FormTest;
4+
import com.codename1.junit.UITestBase;
5+
import com.codename1.ui.Button;
6+
import com.codename1.ui.Component;
7+
import com.codename1.ui.Display;
8+
import com.codename1.ui.DisplayTest;
9+
import com.codename1.ui.Form;
10+
import com.codename1.ui.Label;
11+
import com.codename1.ui.Toolbar;
12+
import com.codename1.ui.animations.CommonTransitions;
13+
import com.codename1.ui.layouts.BorderLayout;
14+
import com.codename1.ui.layouts.BoxLayout;
15+
import com.codename1.util.AsyncResource;
16+
import com.codename1.ui.CommonProgressAnimations.CircleProgress;
17+
18+
import static org.junit.jupiter.api.Assertions.*;
19+
20+
class CircleProgressSampleTest extends UITestBase {
21+
22+
private static final int DISPLAY_WIDTH = 1080;
23+
private static final int DISPLAY_HEIGHT = 1920;
24+
25+
@FormTest
26+
void circleProgressIndicatorIsReplacedWhenDataIsReady() {
27+
implementation.setDisplaySize(DISPLAY_WIDTH, DISPLAY_HEIGHT);
28+
29+
final AsyncResource<MyData> dataResource = new AsyncResource<MyData>();
30+
final Form[] detailsHolder = new Form[1];
31+
final Label[] nameHolder = new Label[1];
32+
final CircleProgress[] progressHolder = new CircleProgress[1];
33+
34+
Form launcher = new Form("Hi World", BoxLayout.y());
35+
Button showDetails = new Button("Show Details");
36+
showDetails.addActionListener(evt -> showCircleProgressForm(dataResource, detailsHolder, nameHolder, progressHolder));
37+
launcher.add(showDetails);
38+
launcher.show();
39+
launcher.revalidate();
40+
flushSerialCalls();
41+
42+
ensureSized(showDetails, launcher);
43+
implementation.tapComponent(showDetails);
44+
flushSerialCalls();
45+
DisplayTest.flushEdt();
46+
flushSerialCalls();
47+
48+
assertNotNull(detailsHolder[0]);
49+
assertSame(detailsHolder[0], Display.getInstance().getCurrent());
50+
51+
assertNotNull(progressHolder[0]);
52+
assertSame(progressHolder[0], detailsHolder[0].getContentPane().getComponentAt(0));
53+
54+
dataResource.complete(new MyData());
55+
flushSerialCalls();
56+
DisplayTest.flushEdt();
57+
flushSerialCalls();
58+
59+
assertEquals("Steve", nameHolder[0].getText());
60+
assertSame(nameHolder[0], detailsHolder[0].getContentPane().getComponentAt(0));
61+
}
62+
63+
private void showCircleProgressForm(AsyncResource<MyData> resource, Form[] detailsHolder, Label[] nameHolder, CircleProgress[] progressHolder) {
64+
Form previous = Display.getInstance().getCurrent();
65+
Form details = new Form("Hello", new BorderLayout(BorderLayout.CENTER_BEHAVIOR_CENTER_ABSOLUTE));
66+
Toolbar toolbar = new Toolbar();
67+
details.setToolbar(toolbar);
68+
toolbar.addCommandToLeftBar("Back", null, evt -> previous.showBack());
69+
70+
Label nameLabel = new Label("placeholder");
71+
nameHolder[0] = nameLabel;
72+
details.add(BorderLayout.CENTER, nameLabel);
73+
74+
CircleProgress progress = CircleProgress.markComponentLoading(nameLabel);
75+
progress.getStyle().setFgColor(0xff0000);
76+
progressHolder[0] = progress;
77+
78+
resource.ready(data -> {
79+
nameLabel.setText(data.getName());
80+
CircleProgress.markComponentReady(nameLabel, null);
81+
});
82+
83+
detailsHolder[0] = details;
84+
details.show();
85+
}
86+
87+
private void ensureSized(Component component, Form form) {
88+
for (int i = 0; i < 5 && (component.getWidth() <= 0 || component.getHeight() <= 0); i++) {
89+
form.revalidate();
90+
flushSerialCalls();
91+
}
92+
}
93+
94+
private static class MyData {
95+
String getName() {
96+
return "Steve";
97+
}
98+
}
99+
}

0 commit comments

Comments
 (0)