Java tutorial
/** * Copyright 2014 Comcast Cable Communications Management, LLC * * This file is part of CATS. * * CATS is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * CATS is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with CATS. If not, see <http://www.gnu.org/licenses/>. */ package com.comcast.cats.vision; import java.awt.Component; import java.util.Arrays; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTable; import javax.swing.JTextField; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.uispec4j.AbstractSwingUIComponent; import org.uispec4j.Button; import org.uispec4j.CheckBox; import org.uispec4j.Mouse; import org.uispec4j.Panel; import org.uispec4j.Table; import org.uispec4j.ToggleButton; import org.uispec4j.UISpec4J; import org.uispec4j.UISpecTestCase; import org.uispec4j.Window; import org.uispec4j.assertion.Assertion; import org.uispec4j.interception.MainClassAdapter; import org.uispec4j.interception.WindowInterceptor; import com.comcast.cats.vision.test.utils.CommonTestUtils; public class CATSVisionTest extends UISpecTestCase { protected final Log LOGGER = LogFactory.getLog(getClass()); protected void setUp() throws Exception { System.setProperty("uispec4j.test.library", "junit"); // CatsFramework framework = new CatsFrameworkLocal(); UISpec4J.setWindowInterceptionTimeLimit(360000); String[] args = { "--server=http://cats-dev2.cable.comcast.com:8080/", "--mac=00:22:10:21:A4:17", "--authToken=dummy-auth-token" }; setAdapter(new MainClassAdapter(CATSVisionApplication.class, args)); } protected void enableComponent(AbstractSwingUIComponent component) { component.getAwtComponent().setEnabled(true); } protected Assertion selectCheckBox(CheckBox checkBox) { enableComponent(checkBox); if (!checkBox.isSelected().isTrue()) { checkBox.getAwtComponent().doClick(); } return checkBox.isSelected(); } protected Assertion deselectCheckBox(CheckBox checkBox) { enableComponent(checkBox); if (checkBox.isSelected().isTrue()) { checkBox.getAwtComponent().doClick(); } return checkBox.isSelected(); } protected JLabel getLabel(Panel parentPanel, String labelName) { JLabel label = null; Component[] components = parentPanel.getSwingComponents(JLabel.class); for (Component component : components) { if (component.getName() == labelName) { label = (JLabel) component; break; } } return label; } protected void streamAndAllocateSettop(Window window) { Panel panel = window.getPanel("mainPanel"); Panel mainControlPanel = panel.getPanel("mainControlPanel"); Panel settopSelectionPanel = mainControlPanel.getPanel("settopSelectionPanel"); ToggleButton jStreamToggleButton = settopSelectionPanel.getToggleButton("jStreamToggleButton"); if (jStreamToggleButton.getAwtComponent().getText().equals("Stream")) { jStreamToggleButton.getAwtComponent().doClick(); } try { Thread.sleep(500); } catch (InterruptedException interruptedException) { fail(interruptedException.getMessage()); } /* * Locking Settop */ CheckBox checkBoxLock = settopSelectionPanel.getCheckBox("Lock"); assertTrue("Unable to lock settop", selectCheckBox(checkBoxLock)); } protected void releaseSettop(Window window) { Panel panel = window.getPanel("mainPanel"); Panel mainControlPanel = panel.getPanel("mainControlPanel"); Panel settopSelectionPanel = mainControlPanel.getPanel("settopSelectionPanel"); CheckBox checkBoxLock = settopSelectionPanel.getCheckBox("Lock"); assertFalse("Unable to release settop", deselectCheckBox(checkBoxLock)); } protected void testRemoteKeyPress(Window window, String... buttonNames) throws Exception { Panel panel = window.getPanel("mainPanel"); streamAndAllocateSettop(window); Panel remotePanel = panel.getPanel("remotePanel"); for (String buttonName : buttonNames) { Button button = remotePanel.getButton(buttonName); assertTrue(button.getLabel().contentEquals(buttonName)); Mouse.click(button); Thread.sleep(1500); } releaseSettop(window); } protected Window launchMultivision(Window mainWindow, int... rows) throws Exception { Window videoGridWindow = null; JPanel configPanel = CommonTestUtils.getConfigPanel(mainWindow); final Button launchVideoButton = CommonTestUtils.getConfigPanelButton(mainWindow, "launchVideoButton"); Table uiTable = CommonTestUtils.getTableFromConfigPanel(configPanel, "availableSettopsScrollPane", "Available Settops", 0); assertTrue( "Expected header for the table is - " + Arrays.asList(CommonTestUtils.AVAILABLE_TABLE_STRINGS) + "\n but actual header is - " + Arrays.asList(uiTable.getHeader().getColumnNames()), Arrays.equals(uiTable.getHeader().getColumnNames(), CommonTestUtils.AVAILABLE_TABLE_STRINGS)); assertTrue(uiTable.getRowCount() > (rows.length + 1)); uiTable.selectRows(rows); assertTrue("No Settops selected", uiTable.rowsAreSelected(rows)); videoGridWindow = WindowInterceptor.run(launchVideoButton.triggerClick()); assertTrue(videoGridWindow.titleEquals("CATS MultiVision")); return videoGridWindow; } protected int[] searchAvailableSettopsAndGetRowsSelected(Window mainWindow, String keyword) { JPanel configPanel = CommonTestUtils.getConfigPanel(mainWindow); final Button searchButton = CommonTestUtils.getConfigPanelButton(mainWindow, "searchButton"); final JTextField searchTextField = CommonTestUtils.getConfigPanelTextField(mainWindow, "searchTextField"); Table uiTable = CommonTestUtils.getTableFromConfigPanel(configPanel, "availableSettopsScrollPane", "Available Settops", 0); assertTrue( "Expected header for the table is - " + Arrays.asList(CommonTestUtils.AVAILABLE_TABLE_STRINGS) + "\n but actual header is - " + Arrays.asList(uiTable.getHeader().getColumnNames()), Arrays.equals(uiTable.getHeader().getColumnNames(), CommonTestUtils.AVAILABLE_TABLE_STRINGS)); int numberOfRows = (uiTable.getRowCount() > 0) ? uiTable.getRowCount() : 0; assertTrue("'Available Settops' donot have any rows", numberOfRows > 0); searchTextField.setText(keyword); searchButton.click(); Table uiTableAfterSearch = CommonTestUtils.getTableFromConfigPanel(configPanel, "availableSettopsScrollPane", "Available Settops", 0); int rows = (uiTableAfterSearch.getRowCount() > 0) ? uiTableAfterSearch.getRowCount() : 0; assertTrue("No matching settop found", rows > 0); uiTableAfterSearch.selectRow(0); searchTextField.setText(""); searchButton.click(); uiTableAfterSearch = CommonTestUtils.getTableFromConfigPanel(configPanel, "availableSettopsScrollPane", "Available Settops", 0); JTable table = uiTableAfterSearch.getAwtComponent(); int numberOfRowsAfterSearch = (table.getSelectedRows().length > 0) ? table.getSelectedRows().length : 0; assertTrue(numberOfRowsAfterSearch <= numberOfRows); return table.getSelectedRows(); } protected CheckBox getAllocateAllCheckBox(Window multivisionWindow) throws InterruptedException { Panel videoControlPanel = multivisionWindow.getPanel("videoControlPanel"); Panel allocationPanel = videoControlPanel.getPanel("allocationPanel"); return allocationPanel.getCheckBox("allocateAllCheckBox"); } }