publicstaticvoid main(String[] args) throws Exception {
System.out.println( "PLEASE DO NOT TOUCH KEYBOARD AND MOUSE DURING THE TEST RUN!"); // log.setLevel(java.util.logging.Level.FINE); // log.setLevel(java.util.logging.Level.FINEST); try {
SwingUtilities.invokeAndWait(new Runnable() { publicvoid run() {
frame = new JFrame();
frame.setUndecorated(true);
setup(frame);
}
}); final Robot robot = new Robot();
robot.delay(100);
robot.waitForIdle();
robot.setAutoDelay(10);
robot.setAutoWaitForIdle(true);
SwingUtilities.invokeAndWait(new Runnable() {
@Override publicvoid run() {
point = button.getLocationOnScreen();
}
});
robot.mouseMove( point.x + 5, point.y + 5 );
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
robot.delay(100);
robot.waitForIdle();
testExitBeforeEnter();
System.out.println("Run random test in EDT");
runInEDT = true;
testRandomly();
System.out.println("Run random test in another thread");
runInEDT = false;
testRandomly();
System.out.println("ok");
privatestaticvoid testRandomly() throws AWTException {
disorderCounter = 0; final Robot robot = new Robot();
robot.setAutoDelay(1); for (int i = 0; i < ATTEMPTS; i++) {
enterReturn = null;
exitReturn = null;
dispatchedEvents = 0; synchronized (bug6980209.class) { try { for (int j = 0; j < EVENTS; j++) {
robot.keyPress(KeyEvent.VK_1);
robot.keyRelease(KeyEvent.VK_1);
}
// trigger the button action that starts secondary loop
robot.keyPress(KeyEvent.VK_SPACE);
robot.keyRelease(KeyEvent.VK_SPACE);
for (int j = 0; j < EVENTS; j++) {
robot.keyPress(KeyEvent.VK_1);
robot.keyRelease(KeyEvent.VK_1);
} long time = System.nanoTime(); // wait for enter() returns
bug6980209.class.wait(1000); if (enterReturn == null) {
System.out.println("wait time=" +
((System.nanoTime() - time) / 1E9) + " seconds"); thrownew RuntimeException( "It seems the secondary loop will never end");
} if (!enterReturn) disorderCounter++;
robot.waitForIdle(); if (dispatchedEvents < 2 * EVENTS) { //check that all events are dispatched thrownew RuntimeException( "KeyEvent.VK_1 has been lost!");
}
} catch (InterruptedException e) { thrownew RuntimeException("Interrupted!");
}
}
} if (disorderCounter == 0) {
System.out.println( "Zero disordered enter/exit caught. It is recommended to run scenario again");
} else {
System.out.println( "Disordered calls is " + disorderCounter + " from " +
ATTEMPTS);
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.