package org.eclipse.nebula.widgets.cdatetime;
import org.eclipse.nebula.cwt.test.AbstractVTestCase;
import org.eclipse.swt.SWT;
public class DropDownTests extends AbstractVTestCase {
private CdtTester cdt;
private boolean running;
private Runnable callback = new Runnable() {
public void run() {
running = false;
}
};
public void setUp() throws Exception {
cdt = new CdtTester(getShell(), CDT.BORDER | CDT.DROP_DOWN);
}
public void testOpenAndCloseByKeys() throws Exception {
cdt.setFocus();
assertTrue(hasFocus(cdt.getTextWidget()));
keyDown(SWT.CTRL);
keyPress(' ');
keyUp(SWT.CTRL);
assertTrue(cdt.isOpen());
// TODO should not need pauses!
pause(1000);
keyPress(SWT.ESC);
assertFalse(cdt.isOpen());
}
public void testOpenAndCloseByMouse() throws Exception {
assertFalse(cdt.isOpen());
click(cdt.getButton());
assertTrue(cdt.isOpen());
click(cdt.getButton());
assertFalse(cdt.isOpen());
}
public void testOpenAndCloseByCode() throws Exception {
assertFalse(cdt.isOpen());
cdt.setOpen(true);
assertTrue(cdt.isOpen());
cdt.setOpen(false);
assertFalse(cdt.isOpen());
}
public void testOpenAndCloseByCodeWithCallbacks() throws Exception {
assertFalse(cdt.isOpen());
running = true;
cdt.setOpen(true, callback);
waitForCallback();
assertTrue(cdt.isOpen());
running = true;
cdt.setOpen(false, callback);
waitForCallback();
assertFalse(cdt.isOpen());
}
private void waitForCallback() {
while(running) {
try {
Thread.sleep(100);
} catch(InterruptedException e) {
e.printStackTrace();
}
}
}
}