/**
* 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.imagecompare;
import javax.swing.JLabel;
import org.apache.log4j.Logger;
import org.uispec4j.MenuBar;
import org.uispec4j.MenuItem;
import org.uispec4j.Mouse;
import org.uispec4j.Panel;
import org.uispec4j.TabGroup;
import org.uispec4j.TextBox;
import org.uispec4j.ToggleButton;
import org.uispec4j.Trigger;
import org.uispec4j.Window;
import org.uispec4j.interception.FileChooserHandler;
import org.uispec4j.interception.WindowHandler;
import org.uispec4j.interception.WindowInterceptor;
import com.comcast.cats.vision.CATSVisionTest;
import com.comcast.cats.vision.panel.imagecompare.ImageCompareUtil;
import com.comcast.cats.vision.util.CatsVisionConstants;
public class TestImageCompareAndOcr extends CATSVisionTest
{
private static final Logger logger = Logger.getLogger( TestImageCompareAndOcr.class );
public void testAllImageCompareRegions() throws Exception
{
logger.info( "testAllImageCompareRegions() started" );
MenuItem snapImageMenuItem = getSnapImageMenuItem();
/*
* Clicking 'Snap Image' menu item
*/
Window icWindow = WindowInterceptor.run( snapImageMenuItem.triggerClick() );
assertTrue( "Image Window".equals( icWindow.getTitle() ) );
MenuItem testAllRegMenuItem = loadSnapShotAndGetMenuItem( icWindow, "Test All Image Compares",
"src/test/resources/imagecompare/all_ic_regions.xml" );
testAllRegMenuItem.click();
Thread.sleep( 9000 );
checkPassFailLabel( icWindow, "Fail" );
logger.info( "testAllImageCompareRegions() completed" );
}
public void testImageComapreCurrentRegion() throws Exception
{
MenuItem snapImageMenuItem = getSnapImageMenuItem();
/*
* Clicking 'Snap Image' menu item
*/
Window icWindow = WindowInterceptor.run( snapImageMenuItem.triggerClick() );
assertTrue( "Image Window".equals( icWindow.getTitle() ) );
MenuItem testCurrentRegMenuItem = loadSnapShotAndGetMenuItem( icWindow, "Test Current Region",
"src/test/resources/imagecompare/current_ic_region.xml" );
testCurrentRegMenuItem.click();
Thread.sleep( 9000 );
checkPassFailLabel( icWindow, "Fail" );
}
public void testSaveCurrentRegion() throws Exception
{
MenuItem snapImageMenuItem = getSnapImageMenuItem();
/*
* Clicking 'Snap Image' menu item
*/
Window icWindow = WindowInterceptor.run( snapImageMenuItem.triggerClick() );
assertTrue( "Image Window".equals( icWindow.getTitle() ) );
MenuItem testAllRegMenuItem = loadSnapShotAndGetMenuItem( icWindow, "Test Current Region",
"src/test/resources/imagecompare/current_ic_region.xml" );
testAllRegMenuItem.click();
Thread.sleep( 9000 );
checkPassFailLabel( icWindow, "Fail" );
MenuItem saveSnapshotAsMenuItem = getImageWindowMenuItem( icWindow, "Save Snapshot As" );
WindowInterceptor.init( saveSnapshotAsMenuItem.triggerClick() ).process(
FileChooserHandler.init().titleEquals( "Save" ).assertIsSaveDialog().select(
"src/test/resources/imagecompare/save_ic.xml" ) ).run();
Thread.sleep( 500 );
MenuItem saveSnapshotMenuItem = getImageWindowMenuItem( icWindow, "Save Snapshot" );
saveSnapshotMenuItem.click();
}
public void testLoadRegion() throws Exception
{
logger.info( "testLoadRegion() started" );
MenuItem snapImageMenuItem = getSnapImageMenuItem();
/*
* Clicking 'Snap Image' menu item
*/
Window icWindow = WindowInterceptor.run( snapImageMenuItem.triggerClick() );
assertTrue( "Image Window".equals( icWindow.getTitle() ) );
MenuItem optionsMenu = loadSnapShotAndGetOptionsMenu( icWindow,
"src/test/resources/imagecompare/all_ic_regions.xml" );
MenuItem loadRegionMenuItem = optionsMenu.getSubMenu( "Load Region" );
Mouse.click( loadRegionMenuItem );
/*
* loadRegionMenuItem.click();
*
* Mouse.pressed ( optionsMenu, 5, 0 );
*
* Mouse.drag( optionsMenu, 5, 500 );
*
* Mouse.released ( loadRegionMenuItem, 5, 500 );
*/
assertTrue( "Expected sub menu items were 'main_menu' and 'Xfinity'", loadRegionMenuItem.contentEquals(
"main_menu", "Xfinity" ) );
MenuItem subMenuItem = loadRegionMenuItem.getSubMenu( "main_menu" );
subMenuItem.click();
Panel regionInfoPanel = icWindow.getPanel( "regionInfoPanel" );
TextBox txtBoxRegionName = regionInfoPanel.getTextBox( "txtRegionName" );
assertTrue( "Expected name of the region is 'main_menu'", txtBoxRegionName.getText()
.contentEquals( "main_menu" ) );
}
public void testClearCurrentRegion() throws Exception
{
MenuItem snapImageMenuItem = getSnapImageMenuItem();
/*
* Clicking 'Snap Image' menu item
*/
Window icWindow = WindowInterceptor.run( snapImageMenuItem.triggerClick() );
assertTrue( "Image Window".equals( icWindow.getTitle() ) );
MenuItem testClearRegMenuItem = loadSnapShotAndGetMenuItem( icWindow, "Clear Current Region",
"src/test/resources/imagecompare/current_ic_region.xml" );
testClearRegMenuItem.click();
}
public void testDeleteRegion() throws Exception
{
logger.info( "testLoadRegion() started" );
MenuItem snapImageMenuItem = getSnapImageMenuItem();
/*
* Clicking 'Snap Image' menu item
*/
Window icWindow = WindowInterceptor.run( snapImageMenuItem.triggerClick() );
assertTrue( "Image Window".equals( icWindow.getTitle() ) );
MenuItem optionsMenu = loadSnapShotAndGetOptionsMenu( icWindow,
"src/test/resources/imagecompare/all_ic_regions.xml" );
MenuItem deleteRegionMenuItem = optionsMenu.getSubMenu( "Delete Region" );
Mouse.click( deleteRegionMenuItem );
/*
* loadRegionMenuItem.click();
*
* Mouse.pressed ( optionsMenu, 5, 0 );
*
* Mouse.drag( optionsMenu, 5, 500 );
*
* Mouse.released ( loadRegionMenuItem, 5, 500 );
*/
assertTrue( "Expected sub menu items were 'main_menu' and 'Xfinity'", deleteRegionMenuItem.contentEquals(
"main_menu", "Xfinity" ) );
MenuItem subMenuItem = deleteRegionMenuItem.getSubMenu( "main_menu" );
subMenuItem.click();
/* MenuItem deleteRegionMenuItem1 = optionsMenu.getSubMenu( "Delete Region" );
Panel regionInfoPanel = icWindow.getPanel( "regionInfoPanel" );
TextBox txtBoxRegionName = regionInfoPanel.getTextBox( "txtRegionName" );
assertTrue( "Expected name of the region is 'main_menu'", txtBoxRegionName.getText()
.contentEquals( "main_menu" ) );*/
}
public void testNewRegion() throws Exception
{
MenuItem snapImageMenuItem = getSnapImageMenuItem();
/*
* Clicking 'Snap Image' menu item
*/
Window icWindow = WindowInterceptor.run( snapImageMenuItem.triggerClick() );
assertTrue( "Image Window".equals( icWindow.getTitle() ) );
MenuItem testNewRegMenuItem = getImageWindowMenuItem(icWindow,"New Region");
MenuItem testICRegion = testNewRegMenuItem.getSubMenu( "Image Compare" );
testICRegion.click();
MenuItem testOCRRegion = testNewRegMenuItem.getSubMenu( "OCR" );
testOCRRegion.click();
Thread.sleep( 9000 );
}
public void testOcrCurrentRegion() throws Exception
{
MenuItem snapImageMenuItem = getSnapImageMenuItem();
/*
* Clicking 'Snap Image' menu item
*/
Window icWindow = WindowInterceptor.run( snapImageMenuItem.triggerClick() );
assertTrue( "Image Window".equals( icWindow.getTitle() ) );
MenuItem testCurrentRegMenuItem = loadSnapShotAndGetMenuItem( icWindow, "Test Current Region",
"src/test/resources/imagecompare/ocr_region.xml" );
WindowInterceptor.init( testCurrentRegMenuItem.triggerClick() ).process( new WindowHandler()
{
public Trigger process( Window window )
{
return window.getButton( "OK" ).triggerClick();
}
} ).run();
Thread.sleep( 9000 );
checkPassFailLabel( icWindow, "Fail" );
}
private MenuItem getSnapImageMenuItem()
{
Window window = getMainWindow();
TabGroup mainTabGroup = window.getTabGroup( "visionTabs" );
mainTabGroup.selectTab( CatsVisionConstants.APPLICATION_TITLE );
Panel mainPanel = mainTabGroup.getSelectedTab();
Panel settopSelectionPanel = mainPanel.getPanel( "settopSelectionPanel" );
ToggleButton jStreamToggleButton = settopSelectionPanel.getToggleButton( "jStreamToggleButton" );
/*
* Streaming settop video
*/
if ( jStreamToggleButton.getAwtComponent().getText().equals( "Stream" ) )
{
jStreamToggleButton.click();
}
/*
* Getting menu bar from 'CATS Vision' frame.
*/
MenuBar menuBar = window.getMenuBar();
MenuItem menuItem = menuBar.getMenu( "Options" );
MenuItem snapImageMenuItem = menuItem.getSubMenu( "Snap Image" );
return snapImageMenuItem;
}
private MenuItem loadSnapShotAndGetOptionsMenu( Window icWindow, String filePath )
{
MenuBar icMenuBar = icWindow.getMenuBar();
MenuItem optionsMenu = icMenuBar.getMenu( "Options" );
MenuItem loadImageMenuItem = optionsMenu.getSubMenu( "Load Snapshot" );
WindowInterceptor.init( loadImageMenuItem.triggerClick() ).process(
FileChooserHandler.init().titleEquals( "Open" ).assertAcceptsFilesOnly().select( filePath ) ).run();
return optionsMenu;
}
private MenuItem loadSnapShotAndGetMenuItem( Window icWindow, String menuName, String filePath )
{
MenuItem optionsMenu = loadSnapShotAndGetOptionsMenu( icWindow, filePath );
MenuItem testAllMenuItem = optionsMenu.getSubMenu( menuName );
return testAllMenuItem;
}
private MenuItem getImageWindowMenuItem( Window icWindow, String menuName )
{
MenuBar icMenuBar = icWindow.getMenuBar();
MenuItem icMenuItem = icMenuBar.getMenu( "Options" );
MenuItem menuItem = icMenuItem.getSubMenu( menuName );
return menuItem;
}
private void checkPassFailLabel( Window icWindow, String status )
{
Panel addUpdatePanel = icWindow.getPanel( "addUpdatePanel" );
JLabel passFailLabel = getLabel( addUpdatePanel, "lblPassFail" );
assertTrue( "Expected text in label is '" + status + "', but text found is '" + passFailLabel.getText() + "'.",
passFailLabel.getText().equals( status ) );
}
public void testICUtils()
{
assertEquals( "file.jpg", ImageCompareUtil.changeExtensionToJPG( "file.xml" ) );
try
{
ImageCompareUtil.changeExtensionToJPG( null );
fail();
}
catch ( IllegalArgumentException e )
{}
try
{
ImageCompareUtil.changeExtensionToJPG( "" );
fail();
}
catch ( IllegalArgumentException e )
{}
assertEquals( "file.xml", ImageCompareUtil.changeExtensionToXML( "file.jpg" ) );
try
{
ImageCompareUtil.changeExtensionToXML( null );
fail();
}
catch ( IllegalArgumentException e )
{}
try
{
ImageCompareUtil.changeExtensionToXML( "" );
fail();
}
catch ( IllegalArgumentException e )
{}
assertEquals( "file.jpg", ImageCompareUtil.getFileNameFromFilePath( "\\path\\file.jpg" ) );
try
{
ImageCompareUtil.getFileNameFromFilePath( null );
fail();
}
catch ( IllegalArgumentException e )
{}
try
{
ImageCompareUtil.changeExtensionToXML( "" );
fail();
}
catch ( IllegalArgumentException e )
{}
assertNull( ImageCompareUtil.loadImageFromFile( null ) );
assertNotNull( ImageCompareUtil.loadImageFromFile( "src\\test\\resources\\imagecompare\\all_ic_regions.jpg" ) );
}
}