1 /*
   2  * Copyright (c) 2010, 2016, 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 static org.testng.AssertJUnit.*;
  29 import org.testng.annotations.Test;
  30 import org.netbeans.jemmy.ClassReference;
  31 import org.netbeans.jemmy.ComponentChooser;
  32 import org.netbeans.jemmy.operators.JButtonOperator;
  33 import org.netbeans.jemmy.operators.JFrameOperator;
  34 import org.netbeans.jemmy.operators.JProgressBarOperator;
  35 import org.testng.annotations.Listeners;
  36 
  37 /*
  38  * @test
  39  * @key headful
  40  * @summary Verifies SwingSet3 ProgressBarDemo page by pressing start and stop
  41  *          buttons and checking the progress bar and the buttons state.
  42  *
  43  * @library /sanity/client/lib/jemmy/src
  44  * @library /sanity/client/lib/Extensions/src
  45  * @library /sanity/client/lib/SwingSet3/src
  46  * @build org.jemmy2ext.JemmyExt
  47  * @build com.sun.swingset3.demos.progressbar.ProgressBarDemo
  48  * @run testng ProgressBarDemoTest
  49  */
  50 @Listeners(GuiTestListener.class)
  51 public class ProgressBarDemoTest {
  52 
  53     @Test
  54     public void test() throws Exception {
  55 
  56         new ClassReference(ProgressBarDemo.class.getCanonicalName()).startApplication();
  57 
  58         JFrameOperator frame = new JFrameOperator(DEMO_TITLE);
  59 
  60         JButtonOperator startButton = new JButtonOperator(frame, START_BUTTON);
  61         JButtonOperator stopButton = new JButtonOperator(frame, STOP_BUTTON);
  62         JProgressBarOperator jpbo = new JProgressBarOperator(frame);
  63 
  64         // Check that progress completes and corect enable/disable of start/stop buttons
  65         checkCompleteProgress(frame, startButton, stopButton, jpbo);
  66 
  67         // Check progess bar progression and start/stop button disabled/enabled states
  68         checkStartStop(frame, startButton, stopButton, jpbo);
  69     }
  70 
  71     // Check that progress completes and corect enable/disable of start/stop buttons
  72     public void checkStartStop(JFrameOperator frame, JButtonOperator startButton, JButtonOperator stopButton, JProgressBarOperator progressBar) throws Exception {
  73         int initialProgress = progressBar.getValue();
  74         System.out.println("initialProgress = " + initialProgress);
  75         int maximum = progressBar.getMaximum();
  76 
  77         startButton.pushNoBlock();
  78 
  79         progressBar.waitState(new ComponentChooser() {
  80 
  81             @Override
  82             public boolean checkComponent(Component comp) {
  83                 int value = progressBar.getValue();
  84                 System.out.println("checkComponent1 value = " + value);
  85                 return value < maximum;
  86             }
  87 
  88             @Override
  89             public String getDescription() {
  90                 return "Progress < maximum (" + maximum + ")";
  91             }
  92         });
  93 
  94         stopButton.waitComponentEnabled();
  95 
  96         progressBar.waitState(new ComponentChooser() {
  97 
  98             @Override
  99             public boolean checkComponent(Component comp) {
 100                 int value = progressBar.getValue();
 101                 System.out.println("checkComponent2 value = " + value);
 102                 return value > 0;
 103             }
 104 
 105             @Override
 106             public String getDescription() {
 107                 return "Progress > 0";
 108             }
 109         });
 110 
 111         int progress = progressBar.getValue();
 112         System.out.println("progress = " + progress);
 113 
 114         //Check that progress par has progressed and Start Button Disabled
 115         assertTrue("Progress Bar Progressing (progress > 0, actual value: " + progress + ")", progress > 0);
 116         assertFalse("Start Button Disabled", startButton.isEnabled());
 117         assertTrue("Stop Button Enabled", stopButton.isEnabled());
 118 
 119         //Wait a liitle bit longer then Press stop get progress
 120         progressBar.waitState(new ComponentChooser() {
 121 
 122             @Override
 123             public boolean checkComponent(Component comp) {
 124                 return progressBar.getValue() > progress;
 125             }
 126 
 127             @Override
 128             public String getDescription() {
 129                 return "Progress > " + progress;
 130             }
 131         });
 132 
 133         stopButton.pushNoBlock();
 134 
 135         startButton.waitComponentEnabled();
 136 
 137         int interimProgress = progressBar.getValue();
 138 
 139         // Check that progress par has Stopped and Start Button Disabled
 140         assertTrue("Progress Bar Stopped "
 141                 + "(interimProgress, actual value: " + interimProgress + " "
 142                 + "> progress, actual value: " + progress + ")",
 143                 interimProgress > progress);
 144         assertTrue("Start Button Enabled", startButton.isEnabled());
 145         assertFalse("Stop Button Disabled", stopButton.isEnabled());
 146     }
 147 
 148     // Check progess bar progression and start/stop button disabled/enabled states
 149     public void checkCompleteProgress(JFrameOperator frame, JButtonOperator startButton, JButtonOperator stopButton, JProgressBarOperator progressBar) throws Exception {
 150         startButton.pushNoBlock();
 151 
 152         progressBar.waitValue(progressBar.getMaximum());
 153 
 154         startButton.waitComponentEnabled();
 155 
 156         assertEquals("Complete Progress", progressBar.getMaximum(), progressBar.getValue());
 157         assertTrue("Start Button Enabled", startButton.isEnabled());
 158         assertFalse("Stop Button Disabled", stopButton.isEnabled());
 159     }
 160 
 161 }