package com.windowtester.test.locator.swt;
import com.windowtester.runtime.IUIContext;
import com.windowtester.runtime.WaitTimedOutException;
import com.windowtester.runtime.WidgetSearchException;
import com.windowtester.runtime.condition.HasTextCondition;
import com.windowtester.runtime.condition.ICondition;
import com.windowtester.runtime.condition.IsEnabledCondition;
import com.windowtester.runtime.locator.IWidgetReference;
import com.windowtester.runtime.swt.locator.ButtonLocator;
import com.windowtester.test.locator.swt.shells.ButtonTestShell;
/*******************************************************************************
* Copyright (c) 2012 Google, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Google, Inc. - initial API and implementation
*******************************************************************************/
public class ButtonLocatorTest extends AbstractLocatorTest {
ButtonTestShell window;
@Override
public void uiSetup() {
window = new ButtonTestShell();
window.open();
wait(new ButtonLocator("button").isVisible());
}
@Override
public void uiTearDown() {
window.getShell().dispose();
}
public void testClick() throws WidgetSearchException {
IUIContext ui = getUI();
assertFalse(window.getButtonClicked());
ui.click(new ButtonLocator("button"));
//NOTICE How verbose this is...
//ui.click(new XYLocator(new ButtonLocator("button"), 60,20, WT.TOP | WT.LEFT));
//ui.pause(3000);
ui.assertThat(new ICondition() {
public boolean test() {
return window.getButtonClicked();
}
});
// assertFalse(window.getButtonChecked());
ui.assertThat(new ICondition() {
public boolean test() {
return !window.getButtonChecked();
}
});
ui.click(new ButtonLocator("check button"));
//assertTrue(window.getButtonClicked());
ui.assertThat(new ICondition() {
public boolean test() {
return window.getButtonClicked();
}
});
ui.assertThat("Check button should be enabled", new ButtonLocator("check button").isEnabled());
ui.assertThat(new ButtonLocator("check button").hasText("check button"));
// assertFalse(window.getButtonRadioed());
ui.assertThat(new ICondition() {
public boolean test() {
return !window.getButtonRadioed();
}
});
ui.click(new ButtonLocator("radio button"));
// assertTrue(window.getButtonRadioed());
ui.assertThat(new ICondition() {
public boolean test() {
return window.getButtonRadioed();
}
});
ui.assertThat(new IsEnabledCondition(new ButtonLocator("radio button")));
ui.assertThat(new HasTextCondition(new ButtonLocator("radio button"), "radio button"));
// assertFalse(window.getButtonToggled());
ui.assertThat(new ICondition() {
public boolean test() {
return !window.getButtonToggled();
}
});
ui.click(new ButtonLocator("toggle button"));
// assertTrue(window.getButtonToggled());
ui.assertThat(new ICondition() {
public boolean test() {
return window.getButtonToggled();
}
});
ui.assertThat(new ButtonLocator("toggle button").isEnabled());
ui.assertThat(new ButtonLocator("toggle button").hasText("toggle button"));
String failMsg = "Check button should not be enabled";
try {
ui.assertThat(failMsg, new ButtonLocator("toggle button").isEnabled(false));
fail("toggle button should have been enabled");
}
catch (WaitTimedOutException e) {
assertTrue(e.getMessage().contains(failMsg));
// success, so fall through
}
try {
ui.assertThat(new ButtonLocator("toggle button").hasText("boo"));
fail("toggle button should not have text = boo");
}
catch (WaitTimedOutException e) {
// success, so fall through
}
}
public void testWidgetRefClick() throws WidgetSearchException {
//WRefs should be selectable
IUIContext ui = getUI();
IWidgetReference widget = (IWidgetReference)ui.find(new ButtonLocator("button"));
final boolean state = window.getButtonClicked();
ui.click(widget);
// assertTrue(window.getButtonClicked() != state);
ui.assertThat(new ICondition() {
public boolean test() {
return window.getButtonClicked() != state;
}
});
}
public void testSelection() throws Exception {
IUIContext ui = getUI();
ui.assertThat(new ButtonLocator("toggle button").isSelected(false));
ui.click(new ButtonLocator("toggle button"));
ui.assertThat(new ButtonLocator("toggle button").isSelected(true));
}
public void testWidgetEnabled() throws WidgetSearchException {
// all of the buttons should be enabled
IUIContext ui = getUI();
ui.assertThat((new ButtonLocator("button")).isEnabled());
ui.assertThat((new ButtonLocator("toggle button")).isEnabled());
ui.assertThat((new ButtonLocator("radio button")).isEnabled());
ui.assertThat((new ButtonLocator("check button")).isEnabled());
ui.assertThat((new ButtonLocator("button")).isEnabled(true));
ui.assertThat((new ButtonLocator("toggle button")).isEnabled(true));
ui.assertThat((new ButtonLocator("radio button")).isEnabled(true));
ui.assertThat((new ButtonLocator("check button")).isEnabled(true));
}
public void testFocus() throws Exception {
IUIContext ui = getUI();
ui.ensureThat((new ButtonLocator("button")).hasFocus());
ui.assertThat((new ButtonLocator("button")).hasFocus());
ui.ensureThat((new ButtonLocator("toggle button")).hasFocus());
ui.assertThat((new ButtonLocator("toggle button")).hasFocus());
ui.ensureThat((new ButtonLocator("radio button")).hasFocus());
ui.assertThat((new ButtonLocator("radio button")).hasFocus());
}
}