Я создаю сценарий автоматизации SikuliX на Java и запутался в поведении метода .close()
.
Внутри класса Sikuli App
метод close выглядит следующим образом:
/**
* tries to close the app defined by this App instance, waits max given seconds for the app to no longer be running
*
* @return this or null on failure
*/
public boolean close(int waitTime) {
if (!isRunning()) {
log("App.close: not running: %s", this);
return false;
}
if (_osUtil.close(this)) {
int timeTowait = maxWait;
if (waitTime > 0) {
timeTowait = waitTime;
}
while (isRunning(0) && timeTowait > 0) {
timeTowait--;
}
}
if (!isValid()) {
log("App.close: %s", this);
} else {
log("App.close: did not work: %s", this);
return true;
}
return false;
}
Речь идет о возвращении. Насколько я понимаю, поскольку он возвращает логическое значение, оно будет истинным, если закрытие было успешным, и ложным, если закрытие завершилось неудачно. Однако этот код делает противоположное.
Исходя из моего неправильного (?) Понимания этой логики, я изначально написал свой код примерно так:
if (myApp.close()) {
System.out.println("closed.");
isAppClosed = true;
} else {
System.out.println("NOT closed!");
isAppClosed = false;
}
Это имеет противоположный результат, что я хочу, так как приложение успешно закрывается, НО тест не пройден, потому что печатается «НЕ закрыто».
Я нашел ошибку или что-то упустил?
Спасибо.