Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/sanity/client/SwingSet/src/SwingSet2DemoTest.java
41153 views
1
/*
2
* Copyright (c) 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 static org.jemmy2ext.JemmyExt.EXACT_STRING_COMPARATOR;
25
import static org.testng.Assert.assertTrue;
26
27
import javax.swing.JCheckBoxMenuItem;
28
import javax.swing.JRadioButtonMenuItem;
29
import javax.swing.ToolTipManager;
30
import javax.swing.UIManager;
31
import javax.swing.plaf.metal.MetalLookAndFeel;
32
33
import org.jtregext.GuiTestListener;
34
import org.netbeans.jemmy.ClassReference;
35
import org.netbeans.jemmy.ComponentChooser;
36
import org.netbeans.jemmy.TimeoutExpiredException;
37
import org.netbeans.jemmy.Timeouts;
38
import org.netbeans.jemmy.operators.ComponentOperator;
39
import org.netbeans.jemmy.operators.JButtonOperator;
40
import org.netbeans.jemmy.operators.JCheckBoxMenuItemOperator;
41
import org.netbeans.jemmy.operators.JFrameOperator;
42
import org.netbeans.jemmy.operators.JMenuOperator;
43
import org.netbeans.jemmy.operators.JRadioButtonMenuItemOperator;
44
import org.netbeans.jemmy.operators.JToggleButtonOperator;
45
import org.netbeans.jemmy.util.NameComponentChooser;
46
import org.testng.annotations.Listeners;
47
import org.testng.annotations.Test;
48
49
/*
50
* @test
51
* @key headful
52
* @summary Verifies check box menu item, radio button menu item, nested menus
53
* and themes using SwingSet2 main window. Testing of other swing components
54
* are covered in SwingSet3 demo tests.
55
*
56
* @library /sanity/client/lib/jemmy/src
57
* @library /sanity/client/lib/Extensions/src
58
* @library /sanity/client/lib/SwingSet2/src
59
* @modules java.desktop
60
* java.logging
61
* @build org.jemmy2ext.JemmyExt
62
* @build SwingSet2
63
* @run testng/timeout=600 SwingSet2DemoTest
64
*/
65
@Listeners(GuiTestListener.class)
66
public class SwingSet2DemoTest {
67
68
private static final String OCEAN_THEME_NAME = "Ocean";
69
private static final String STEEL_THEME_NAME = "Steel";
70
private static final int TOOLTIP_DISMISS_DELAY = 60000;
71
private final static long TOOLTIP_TIMEOUT = 5000;
72
73
/**
74
* Testing check box menu item, radio button menu item, nested menus and
75
* themes. Testing of all other main swing components are covered in
76
* SwingSet3 demo tests.
77
*
78
* @throws Exception
79
*/
80
@Test(dataProvider = "availableLookAndFeels", dataProviderClass = TestHelpers.class)
81
public void test(String lookAndFeel) throws Exception {
82
UIManager.setLookAndFeel(lookAndFeel);
83
84
new ClassReference(SwingSet2.class.getCanonicalName()).startApplication();
85
JFrameOperator frameOperator = new JFrameOperator(SwingSet2.FRAME_TITLE);
86
frameOperator.setComparator(EXACT_STRING_COMPARATOR);
87
88
checkCheckBoxMenuItem(frameOperator);
89
JMenuOperator themesMenu = new JMenuOperator(frameOperator, SwingSet2.THEMES_MENU_TEXT);
90
// Themes menu will be enabled only on MetalLookAndFeel
91
if(themesMenu.isEnabled()) {
92
checkMenuOnMenuAndRadioButtonMenuItem(frameOperator, themesMenu);
93
checkThemes(frameOperator, themesMenu);
94
}
95
}
96
97
/**
98
* Verifies the properties of nested menu and radio button menu item
99
* @param frameOperator
100
* @param themesMenu
101
*/
102
private void checkMenuOnMenuAndRadioButtonMenuItem(
103
JFrameOperator frameOperator, JMenuOperator themesMenu) {
104
105
themesMenu.push();
106
themesMenu.waitSelected(true);
107
// Font menu is a nested menu, selecting that and verifying its
108
// sub menu items are launched
109
JMenuOperator fontMenu = new JMenuOperator(frameOperator, SwingSet2.FONT_MENU_TEXT);
110
JRadioButtonMenuItemOperator fontPlainMenuItem = new JRadioButtonMenuItemOperator(
111
(JRadioButtonMenuItem)fontMenu.showMenuItem(
112
SwingSet2.FONT_PLAIN_MENU_TEXT, "/").getSource());
113
JRadioButtonMenuItemOperator fontBoldMenuItem = new JRadioButtonMenuItemOperator(
114
(JRadioButtonMenuItem)fontMenu.showMenuItem(
115
SwingSet2.FONT_BOLD_MENU_TEXT, "/").getSource());
116
JButtonOperator testComp =
117
new JButtonOperator(frameOperator, OptionPaneDemo.INPUT_BUTTON);
118
checkRadioButtonMenuItem(fontBoldMenuItem, fontPlainMenuItem, testComp,
119
component -> component.getFont().isBold());
120
checkRadioButtonMenuItem(fontPlainMenuItem, fontBoldMenuItem, testComp,
121
component -> component.getFont().isPlain());
122
}
123
124
/**
125
* Verifies the properties of radio button menu item
126
* @param pressMenuItem
127
* @param unPressMenuItem
128
* @param testComp
129
* @param validator
130
*/
131
private void checkRadioButtonMenuItem(JRadioButtonMenuItemOperator pressMenuItem,
132
JRadioButtonMenuItemOperator unPressMenuItem,
133
ComponentOperator testComp, ComponentChooser validator){
134
135
// Selecting a radio button menu item and verifying the pressed menu
136
// item is selected, other one is unselected and corresponding ui
137
// changes also happened
138
pressMenuItem.push();
139
pressMenuItem.waitSelected(true);
140
unPressMenuItem.waitSelected(false);
141
testComp.waitStateOnQueue(validator);
142
}
143
144
/**
145
* Verifies the properties of check box menu item
146
* @param frameOperator
147
*/
148
private void checkCheckBoxMenuItem(JFrameOperator frameOperator) {
149
150
ToolTipManager.sharedInstance().setDismissDelay(TOOLTIP_DISMISS_DELAY);
151
JToggleButtonOperator testComp = new JToggleButtonOperator(
152
frameOperator, new NameComponentChooser(SwingSet2.getString(
153
OptionPaneDemo.DEMO_NAME + SwingSet2.NAME_PROP_SUFFIX)));
154
JMenuOperator optionsMenu = new JMenuOperator(frameOperator, SwingSet2.OPTIONS_MENU_TEXT);
155
JCheckBoxMenuItemOperator toolTipMenuItem = new JCheckBoxMenuItemOperator(
156
(JCheckBoxMenuItem)optionsMenu.showMenuItem(
157
SwingSet2.TOOLTIP_MENU_TEXT, "/").getSource());
158
// Selecting and deselecting tooltip checkbox menu item and verifying
159
// tooltip is showing for demo toggle button
160
toolTipMenuItem.push();
161
toolTipMenuItem.waitSelected(false);
162
// Set tooltip timeout as 5 seconds
163
testComp.getTimeouts().setTimeout("JToolTipOperator.WaitToolTipTimeout", TOOLTIP_TIMEOUT);
164
boolean isToolTipTimeout = false;
165
try {
166
testComp.showToolTip();
167
} catch (TimeoutExpiredException e) {
168
isToolTipTimeout = true;
169
}
170
assertTrue(isToolTipTimeout, "Tooltip is showing even after unchecking the checkbox menu"
171
+ " item 'Enable Tool Tips'");
172
toolTipMenuItem.push();
173
toolTipMenuItem.waitSelected(true);
174
testComp.showToolTip();
175
}
176
177
/**
178
* Verifies the different themes by applying different themes
179
* @param frameOperator
180
* @param themesMenu
181
*/
182
private void checkThemes(JFrameOperator frameOperator, JMenuOperator themesMenu) {
183
String themeMenuNames [] = {SwingSet2.OCEAN_MENU_TEXT, SwingSet2.AQUA_MENU_TEXT,
184
SwingSet2.STEEL_MENU_TEXT, SwingSet2.CHARCOAL_MENU_TEXT,
185
SwingSet2.CONTRAST_MENU_TEXT, SwingSet2.EMERALD_MENU_TEXT, SwingSet2.RUBY_MENU_TEXT};
186
String themeNames [] = {OCEAN_THEME_NAME, AquaTheme.NAME, STEEL_THEME_NAME,
187
CharcoalTheme.NAME, ContrastTheme.NAME, EmeraldTheme.NAME, RubyTheme.NAME};
188
189
for (int i = 0; i < themeMenuNames.length; i++) {
190
int themeIndex = i;
191
JRadioButtonMenuItemOperator menuItem = new JRadioButtonMenuItemOperator(
192
(JRadioButtonMenuItem)themesMenu.showMenuItem(
193
themeMenuNames[themeIndex], "/").getSource());
194
menuItem.push();
195
menuItem.waitSelected(true);
196
menuItem.waitStateOnQueue(comp -> themeNames[themeIndex].
197
equals(MetalLookAndFeel.getCurrentTheme().getName()));
198
}
199
}
200
201
}
202
203