负反馈模型测试成功
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
#include "../Renderive/base/Tool.h"
|
||||
#include <QApplication>
|
||||
#include <QElapsedTimer>
|
||||
#include <QMouseEvent>
|
||||
#include <QPushButton>
|
||||
#include <QThread>
|
||||
#include <QWheelEvent>
|
||||
#include <memory>
|
||||
namespace {
|
||||
QPushButton* find_performance_button(QWidget* control) {
|
||||
const auto buttons = control->findChildren<QPushButton*>();
|
||||
for (QPushButton* button : buttons) {
|
||||
if (button->text().contains("性能测试"))
|
||||
return button;
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
void click_button(QPushButton* button) {
|
||||
QPoint pos = button->rect().center();
|
||||
QMouseEvent press(QEvent::MouseButtonPress, pos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
|
||||
QApplication::sendEvent(button, &press);
|
||||
QMouseEvent release(QEvent::MouseButtonRelease, pos, Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
|
||||
QApplication::sendEvent(button, &release);
|
||||
}
|
||||
void double_click_button(QPushButton* button) {
|
||||
QPoint pos = button->rect().center();
|
||||
QMouseEvent press(QEvent::MouseButtonPress, pos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
|
||||
QApplication::sendEvent(button, &press);
|
||||
QMouseEvent release(QEvent::MouseButtonRelease, pos, Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
|
||||
QApplication::sendEvent(button, &release);
|
||||
QMouseEvent double_click(QEvent::MouseButtonDblClick, pos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
|
||||
QApplication::sendEvent(button, &double_click);
|
||||
QMouseEvent double_release(QEvent::MouseButtonRelease, pos, Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
|
||||
QApplication::sendEvent(button, &double_release);
|
||||
}
|
||||
void click_plot(QWidget* plot, const QPoint& pos, QEvent::Type type) {
|
||||
QMouseEvent event(type, pos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
|
||||
QApplication::sendEvent(plot, &event);
|
||||
}
|
||||
void wheel_plot(QWidget* plot, const QPoint& pos, int delta) {
|
||||
QWheelEvent event(pos, plot->mapToGlobal(pos), QPoint(), QPoint(0, delta), Qt::NoButton, Qt::NoModifier, Qt::NoScrollPhase, false);
|
||||
QApplication::sendEvent(plot, &event);
|
||||
}
|
||||
bool pump(QApplication& app, renderive::Plot& plot, int milliseconds) {
|
||||
QElapsedTimer timer;
|
||||
timer.start();
|
||||
while (timer.elapsed() < milliseconds) {
|
||||
plot.mark_render_state_dirty();
|
||||
app.processEvents(QEventLoop::AllEvents, 5);
|
||||
QThread::msleep(1);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
int main(int argc, char** argv) {
|
||||
qputenv("QT_QPA_PLATFORM", "offscreen");
|
||||
qputenv("RENDERIVE_PERFORMANCE_LOG", "0");
|
||||
QApplication app(argc, argv);
|
||||
renderive::start_render_scheduler();
|
||||
renderive::Plot plot;
|
||||
plot.resize(320, 240);
|
||||
plot.init();
|
||||
plot.show();
|
||||
plot.start_render(240);
|
||||
std::unique_ptr<QWidget> control(create_control(&plot));
|
||||
control->show();
|
||||
app.processEvents();
|
||||
QPushButton* performance_button = find_performance_button(control.get());
|
||||
if (!performance_button)
|
||||
return 1;
|
||||
QElapsedTimer total;
|
||||
total.start();
|
||||
for (int i = 0; i < 40; ++i) {
|
||||
click_button(performance_button);
|
||||
pump(app, plot, 15);
|
||||
if (total.elapsed() > 5000)
|
||||
return 2;
|
||||
}
|
||||
double_click_button(performance_button);
|
||||
pump(app, plot, 200);
|
||||
plot.set_use_performance_shower(true);
|
||||
pump(app, plot, 200);
|
||||
click_plot(&plot, QPoint(8, 8), QEvent::MouseButtonPress);
|
||||
click_plot(&plot, QPoint(8, 8), QEvent::MouseButtonRelease);
|
||||
click_plot(&plot, QPoint(8, 8), QEvent::MouseButtonDblClick);
|
||||
click_plot(&plot, QPoint(8, 8), QEvent::MouseButtonRelease);
|
||||
for (int i = 0; i < 12; ++i) {
|
||||
wheel_plot(&plot, QPoint(8, 8), -120);
|
||||
pump(app, plot, 10);
|
||||
}
|
||||
for (int i = 0; i < 12; ++i) {
|
||||
wheel_plot(&plot, QPoint(8, 8), 120);
|
||||
pump(app, plot, 10);
|
||||
}
|
||||
pump(app, plot, 200);
|
||||
if (!plot.get_use_performance_shower())
|
||||
return 3;
|
||||
plot.pause_render();
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user