ListDemoTest.java revision 13978:1993af50385d
155682Smarkm/*
2233294Sstas * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
3233294Sstas * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4233294Sstas *
555682Smarkm * This code is free software; you can redistribute it and/or modify it
6233294Sstas * under the terms of the GNU General Public License version 2 only, as
7233294Sstas * published by the Free Software Foundation.
8233294Sstas *
955682Smarkm * This code is distributed in the hope that it will be useful, but WITHOUT
10233294Sstas * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11233294Sstas * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
1255682Smarkm * version 2 for more details (a copy is included in the LICENSE file that
13233294Sstas * accompanied this code).
14233294Sstas *
15233294Sstas * You should have received a copy of the GNU General Public License version
1655682Smarkm * 2 along with this work; if not, write to the Free Software Foundation,
17233294Sstas * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18233294Sstas *
19233294Sstas * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2055682Smarkm * or visit www.oracle.com if you need additional information or have any
21233294Sstas * questions.
22233294Sstas */
23233294Sstas
24233294Sstasimport com.sun.swingset3.demos.list.ListDemo;
25233294Sstasimport static com.sun.swingset3.demos.list.ListDemo.DEMO_TITLE;
26233294Sstasimport static org.testng.AssertJUnit.*;
27233294Sstasimport org.testng.annotations.Test;
28233294Sstasimport static org.jemmy2ext.JemmyExt.getLabeledContainerOperator;
29233294Sstasimport org.netbeans.jemmy.ClassReference;
30233294Sstasimport org.netbeans.jemmy.operators.JCheckBoxOperator;
31233294Sstasimport org.netbeans.jemmy.operators.JFrameOperator;
3255682Smarkmimport org.netbeans.jemmy.operators.JListOperator;
3355682Smarkmimport static org.jemmy2ext.JemmyExt.captureDebugInfoOnFail;
3455682Smarkm
3555682Smarkm/*
36233294Sstas * @test
3755682Smarkm * @key headful
3855682Smarkm * @summary Verifies SwingSet3 ListDemo page by checking and unchecking all
3955682Smarkm *          the checkboxes on the page and verifying the number of items in the
4055682Smarkm *          list.
4155682Smarkm *
4255682Smarkm * @library /sanity/client/lib/jemmy/src
4355682Smarkm * @library /sanity/client/lib/Jemmy2Ext/src
4455682Smarkm * @library /sanity/client/lib/SwingSet3/src
4555682Smarkm * @build org.jemmy2ext.JemmyExt
4690926Snectar * @build com.sun.swingset3.demos.list.ListDemo
4790926Snectar * @run testng ListDemoTest
4855682Smarkm */
4990926Snectarpublic class ListDemoTest {
5078527Sassar
51233294Sstas    private static final int CHECKBOX_COUNT = 50;
5278527Sassar
5378527Sassar    @Test
5490926Snectar    public void test() throws Exception {
5590926Snectar        captureDebugInfoOnFail(() -> {
5690926Snectar            new ClassReference(ListDemo.class.getCanonicalName()).startApplication();
57233294Sstas
58233294Sstas            JFrameOperator frame = new JFrameOperator(DEMO_TITLE);
59233294Sstas            JListOperator listOp = new JListOperator(frame);
6078527Sassar
6172445Sassar            // Check *NO* Prefix and Suffixes Marked
6290926Snectar            for (int i = 0; i < CHECKBOX_COUNT; i++) {
6390926Snectar                JCheckBoxOperator checkBox = getJCheckBoxOperator(frame, i);
6490926Snectar                checkBox.changeSelection(false);
6590926Snectar            }
6690926Snectar            System.out.println("######## Number of Items = " + listOp.getModel().getSize());
6790926Snectar            assertEquals("Select None number of items is correct", 0, listOp.getModel().getSize());
6855682Smarkm
69            // Check *ALL* Prefix and Suffixes Marked
70            for (int i = 0; i < CHECKBOX_COUNT; i++) {
71                JCheckBoxOperator checkBox = getJCheckBoxOperator(frame, i);
72                checkBox.changeSelection(true);
73            }
74            System.out.println("######## Number of Items = " + listOp.getModel().getSize());
75            assertEquals("Select All number of items is correct", CHECKBOX_COUNT / 2 * CHECKBOX_COUNT / 2, listOp.getModel().getSize());
76
77            // Check *ALL* Prefix and *NO* Suffixes Marked
78            for (int i = 0; i < CHECKBOX_COUNT; i++) {
79                JCheckBoxOperator checkBox = getJCheckBoxOperator(frame, i);
80                if (i < CHECKBOX_COUNT / 2) {
81                    checkBox.changeSelection(true);
82                } else {
83                    checkBox.changeSelection(false);
84                }
85            }
86            System.out.println("######## Number of Items = " + listOp.getModel().getSize());
87            assertEquals("Select All Prefixes and NO Suffixes number of items is correct", 0, listOp.getModel().getSize());
88
89            // Check *NO* Prefix and *ALL* Suffixes Marked
90            for (int i = 0; i < CHECKBOX_COUNT; i++) {
91                JCheckBoxOperator checkBox = getJCheckBoxOperator(frame, i);
92                if (i < CHECKBOX_COUNT / 2) {
93                    checkBox.changeSelection(false);
94                } else {
95                    checkBox.changeSelection(true);
96                }
97            }
98            System.out.println("######## Number of Items = " + listOp.getModel().getSize());
99            assertEquals("Select NO Prefixes and All Suffixes number of items is correct", 0, listOp.getModel().getSize());
100        });
101    }
102
103    private JCheckBoxOperator getJCheckBoxOperator(JFrameOperator frame, int index) {
104
105        // We map first half of indexes to the Prefixes panel and the second half
106        // to the Suffixes panel
107        String labelText;
108        int subindex;
109        if (index < CHECKBOX_COUNT / 2) {
110            labelText = "Prefixes";
111            subindex = index;
112        } else {
113            labelText = "Suffixes";
114            subindex = index - CHECKBOX_COUNT / 2;
115        }
116
117        return new JCheckBoxOperator(getLabeledContainerOperator(frame, labelText), subindex);
118    }
119
120}
121