1 /*
2  * Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.
8  *
9  * This code is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12  * version 2 for more details (a copy is included in the LICENSE file that
13  * accompanied this code).
14  *
15  * You should have received a copy of the GNU General Public License version
16  * 2 along with this work; if not, write to the Free Software Foundation,
17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18  *
19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20  * or visit www.oracle.com if you need additional information or have any
21  * questions.
22  */
23 
24 import org.jtregext.GuiTestListener;
25 import com.sun.swingset3.demos.progressbar.ProgressBarDemo;
26 import static com.sun.swingset3.demos.progressbar.ProgressBarDemo.*;
27 import java.awt.Component;
28 import javax.swing.UIManager;
29 import static org.testng.AssertJUnit.*;
30 import org.testng.annotations.Test;
31 import org.netbeans.jemmy.ClassReference;
32 import org.netbeans.jemmy.ComponentChooser;
33 import org.netbeans.jemmy.Timeouts;
34 import org.netbeans.jemmy.operators.JButtonOperator;
35 import org.netbeans.jemmy.operators.JFrameOperator;
36 import org.netbeans.jemmy.operators.JProgressBarOperator;
37 import org.testng.annotations.Listeners;
38 
39 /*
40  * @test
41  * @key headful
42  * @summary Verifies SwingSet3 ProgressBarDemo page by pressing start and stop
43  *          buttons and checking the progress bar and the buttons state.
44  *
45  * @library /sanity/client/lib/jemmy/src
46  * @library /sanity/client/lib/Extensions/src
47  * @library /sanity/client/lib/SwingSet3/src
48  * @modules java.desktop
49  *          java.logging
50  * @build org.jemmy2ext.JemmyExt
51  * @build com.sun.swingset3.demos.progressbar.ProgressBarDemo
52  * @run testng/timeout=1200 ProgressBarDemoTest
53  */
54 @Listeners(GuiTestListener.class)
55 public class ProgressBarDemoTest {
56 
57     private final static long PROGRESS_BAR_TIMEOUT = 180000;
58 
59     @Test(dataProvider = "availableLookAndFeels", dataProviderClass = TestHelpers.class)
test(String lookAndFeel)60     public void test(String lookAndFeel) throws Exception {
61         UIManager.setLookAndFeel(lookAndFeel);
62         new ClassReference(ProgressBarDemo.class.getCanonicalName()).startApplication();
63 
64         JFrameOperator frame = new JFrameOperator(DEMO_TITLE);
65 
66         JButtonOperator startButton = new JButtonOperator(frame, START_BUTTON);
67         JButtonOperator stopButton = new JButtonOperator(frame, STOP_BUTTON);
68         JProgressBarOperator jpbo = new JProgressBarOperator(frame);
69 
70         // Check that progress completes and corect enable/disable of start/stop buttons
71         checkCompleteProgress(frame, startButton, stopButton, jpbo);
72 
73         // Check progess bar progression and start/stop button disabled/enabled states
74         checkStartStop(frame, startButton, stopButton, jpbo);
75     }
76 
77     // Check that progress completes and corect enable/disable of start/stop buttons
checkStartStop(JFrameOperator frame, JButtonOperator startButton, JButtonOperator stopButton, JProgressBarOperator progressBar)78     public void checkStartStop(JFrameOperator frame, JButtonOperator startButton, JButtonOperator stopButton, JProgressBarOperator progressBar) throws Exception {
79         int initialProgress = progressBar.getValue();
80         System.out.println("initialProgress = " + initialProgress);
81         int maximum = progressBar.getMaximum();
82 
83         startButton.pushNoBlock();
84 
85         progressBar.waitState(new ComponentChooser() {
86 
87             @Override
88             public boolean checkComponent(Component comp) {
89                 int value = progressBar.getValue();
90                 return value < maximum;
91             }
92 
93             @Override
94             public String getDescription() {
95                 return "Progress < maximum (" + maximum + ")";
96             }
97         });
98 
99         stopButton.waitComponentEnabled();
100 
101         progressBar.waitState(new ComponentChooser() {
102 
103             @Override
104             public boolean checkComponent(Component comp) {
105                 int value = progressBar.getValue();
106                 return value > 0;
107             }
108 
109             @Override
110             public String getDescription() {
111                 return "Progress > 0";
112             }
113         });
114 
115         int progress = progressBar.getValue();
116         System.out.println("progress = " + progress);
117 
118         //Check that progress par has progressed and Start Button Disabled
119         assertTrue("Progress Bar Progressing (progress > 0, actual value: " + progress + ")", progress > 0);
120         assertFalse("Start Button Disabled", startButton.isEnabled());
121         assertTrue("Stop Button Enabled", stopButton.isEnabled());
122 
123         //Wait a liitle bit longer then Press stop get progress
124         progressBar.waitState(new ComponentChooser() {
125 
126             @Override
127             public boolean checkComponent(Component comp) {
128                 return progressBar.getValue() > progress;
129             }
130 
131             @Override
132             public String getDescription() {
133                 return "Progress > " + progress;
134             }
135         });
136 
137         stopButton.pushNoBlock();
138 
139         startButton.waitComponentEnabled();
140 
141         int interimProgress = progressBar.getValue();
142 
143         // Check that progress par has Stopped and Start Button Disabled
144         assertTrue("Progress Bar Stopped "
145                 + "(interimProgress, actual value: " + interimProgress + " "
146                 + "> progress, actual value: " + progress + ")",
147                 interimProgress > progress);
148         assertTrue("Start Button Enabled", startButton.isEnabled());
149         assertFalse("Stop Button Disabled", stopButton.isEnabled());
150     }
151 
152     // Check progess bar progression and start/stop button disabled/enabled states
checkCompleteProgress(JFrameOperator frame, JButtonOperator startButton, JButtonOperator stopButton, JProgressBarOperator progressBar)153     public void checkCompleteProgress(JFrameOperator frame, JButtonOperator startButton, JButtonOperator stopButton, JProgressBarOperator progressBar) throws Exception {
154         Timeouts timeouts = progressBar.getTimeouts();
155         long defaultTimeout = timeouts.getTimeout("ComponentOperator.WaitStateTimeout");
156         startButton.pushNoBlock();
157 
158         // Set progress bar timeout as 3 minutes as it take long time to reach maximum
159         timeouts.setTimeout("ComponentOperator.WaitStateTimeout", PROGRESS_BAR_TIMEOUT);
160         progressBar.waitValue(progressBar.getMaximum());
161         // Reset timeout to default timeout value
162         timeouts.setTimeout("ComponentOperator.WaitStateTimeout", defaultTimeout);
163 
164         startButton.waitComponentEnabled();
165 
166         assertEquals("Complete Progress", progressBar.getMaximum(), progressBar.getValue());
167         assertTrue("Start Button Enabled", startButton.isEnabled());
168         assertFalse("Stop Button Disabled", stopButton.isEnabled());
169     }
170 
171 }
172