ListDemoTest.java revision 14801:b97dc13c55b2
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
24import com.sun.swingset3.demos.list.ListDemo;
25import static com.sun.swingset3.demos.list.ListDemo.DEMO_TITLE;
26
27import java.awt.Component;
28import javax.swing.JList;
29
30import org.netbeans.jemmy.ClassReference;
31import org.netbeans.jemmy.ComponentChooser;
32import org.netbeans.jemmy.operators.JCheckBoxOperator;
33import org.netbeans.jemmy.operators.JFrameOperator;
34import org.netbeans.jemmy.operators.JListOperator;
35
36import static org.jemmy2ext.JemmyExt.*;
37
38import org.jtregext.GuiTestListener;
39
40import org.testng.annotations.Listeners;
41import org.testng.annotations.Test;
42import static org.testng.AssertJUnit.*;
43
44/*
45 * @test
46 * @key headful
47 * @summary Verifies SwingSet3 ListDemo page by checking and unchecking all
48 *          the checkboxes on the page and verifying the number of items in the
49 *          list.
50 *
51 * @library /sanity/client/lib/jemmy/src
52 * @library /sanity/client/lib/Extensions/src
53 * @library /sanity/client/lib/SwingSet3/src
54 * @modules java.desktop
55 *          java.logging
56 * @build org.jemmy2ext.JemmyExt
57 * @build com.sun.swingset3.demos.list.ListDemo
58 * @run testng ListDemoTest
59 */
60@Listeners(GuiTestListener.class)
61public class ListDemoTest {
62
63    private static final int CHECKBOX_COUNT = 50;
64
65    private void waitModelSize(JListOperator listOp, int size) {
66        listOp.waitState(new ComponentChooser() {
67            public boolean checkComponent(Component comp) {
68                return getUIValue(listOp, (JList list) -> list.getModel().getSize()) == size;
69            }
70            public String getDescription() {
71                return "Model size to be equal to " + size;
72            }
73        });
74    }
75
76    @Test
77    public void test() throws Exception {
78
79        new ClassReference(ListDemo.class.getCanonicalName()).startApplication();
80
81        JFrameOperator frame = new JFrameOperator(DEMO_TITLE);
82        JListOperator listOp = new JListOperator(frame);
83
84        // Check *NO* Prefix and Suffixes Marked
85        for (int i = 0; i < CHECKBOX_COUNT; i++) {
86            JCheckBoxOperator checkBox = getJCheckBoxOperator(frame, i);
87            checkBox.changeSelection(false);
88        }
89        waitModelSize(listOp, 0);
90
91        // Check *ALL* Prefix and Suffixes Marked
92        for (int i = 0; i < CHECKBOX_COUNT; i++) {
93            JCheckBoxOperator checkBox = getJCheckBoxOperator(frame, i);
94            checkBox.changeSelection(true);
95        }
96        waitModelSize(listOp, CHECKBOX_COUNT * CHECKBOX_COUNT / 4);
97
98        // Check *ALL* Prefix and *NO* Suffixes Marked
99        for (int i = 0; i < CHECKBOX_COUNT; i++) {
100            JCheckBoxOperator checkBox = getJCheckBoxOperator(frame, i);
101            if (i < CHECKBOX_COUNT / 2) {
102                checkBox.changeSelection(true);
103            } else {
104                checkBox.changeSelection(false);
105            }
106        }
107        waitModelSize(listOp, 0);
108
109        // Check *NO* Prefix and *ALL* Suffixes Marked
110        for (int i = 0; i < CHECKBOX_COUNT; i++) {
111            JCheckBoxOperator checkBox = getJCheckBoxOperator(frame, i);
112            if (i < CHECKBOX_COUNT / 2) {
113                checkBox.changeSelection(false);
114            } else {
115                checkBox.changeSelection(true);
116            }
117        }
118        waitModelSize(listOp, 0);
119    }
120
121    private JCheckBoxOperator getJCheckBoxOperator(JFrameOperator frame, int index) {
122
123        // We map first half of indexes to the Prefixes panel and the second half
124        // to the Suffixes panel
125        String labelText;
126        int subindex;
127        if (index < CHECKBOX_COUNT / 2) {
128            labelText = "Prefixes";
129            subindex = index;
130        } else {
131            labelText = "Suffixes";
132            subindex = index - CHECKBOX_COUNT / 2;
133        }
134
135        JCheckBoxOperator result = new JCheckBoxOperator(getLabeledContainerOperator(frame, labelText), subindex);
136        result.setVerification(true);
137        return result;
138    }
139
140}
141