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.condition.WidgetShowingCondition;
import com.windowtester.runtime.swt.locator.ButtonLocator;
import com.windowtester.runtime.swt.locator.NamedWidgetLocator;
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 NamedWidgetLocatorTest extends AbstractLocatorTest {
ButtonTestShell _window;
class ButtonCheckedCondition implements ICondition {
public boolean test() {
return _window.getButtonChecked();
}
}
class ButtonClickedCondition implements ICondition {
public boolean test() {
return _window.getButtonClicked();
}
}
class ButtonRadioedCondition implements ICondition {
public boolean test() {
return _window.getButtonRadioed();
}
}
@Override
public void uiSetup() {
_window = new ButtonTestShell();
_window.open();
wait(new WidgetShowingCondition(getUI(), new ButtonLocator("button")));
}
@Override
public void uiTearDown() {
_window.getShell().dispose();
}
public void testNamedWidgetLocatorClick() throws WidgetSearchException {
IUIContext ui = getUI();
assertFalse(_window.getButtonChecked());
ui.click(new ButtonLocator("check button"));
// assertTrue(_window.getButtonChecked());
ui.assertThat(new ButtonCheckedCondition());
assertFalse(_window.getButtonClicked());
ui.click(new NamedWidgetLocator("b1"));
// assertTrue(_window.getButtonClicked());
ui.assertThat(new ButtonClickedCondition());
assertFalse(_window.getButtonRadioed());
ui.click(new NamedWidgetLocator("rb1"));
// assertTrue(_window.getButtonRadioed());
ui.assertThat(new ButtonRadioedCondition());
ui.assertThat(new IsEnabledCondition(new NamedWidgetLocator("rb1"), true));
ui.assertThat(new HasTextCondition(new NamedWidgetLocator("rb1"), "radio button"));
try {
ui.assertThat(new IsEnabledCondition(new NamedWidgetLocator("rb1"), false));
fail("toggle button should have been enabled");
}
catch (WaitTimedOutException e) {
// success, so fall through
}
try {
ui.assertThat(new HasTextCondition(new NamedWidgetLocator("rb1"), "boo"));
fail("toggle button should not have text = boo");
}
catch (WaitTimedOutException e) {
// success, so fall through
}
}
}