-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvirtual_machine_gui_test.cpp
85 lines (67 loc) · 2.95 KB
/
virtual_machine_gui_test.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <QTest>
#include <QPlainTextEdit>
#include <QTableView>
#include <QLineEdit>
#include <QPushButton>
#include <QSignalSpy>
#include "virtual_machine_gui.hpp"
#include "test_config.hpp"
class VirtualMachineGUITest : public QObject {
Q_OBJECT
private slots:
void initTestCase();
void buttonTest();
void buttonTest1();
// TODO: implement additional tests here
private:
VirtualMachineGUI widget;
};
// this section just verifies the object names and API
void VirtualMachineGUITest::initTestCase(){
widget.load(QString::fromStdString(TEST_FILE_DIR + "/vm/test00.asm"));
auto textWidget = widget.findChild<QPlainTextEdit *>("text");
QVERIFY2(textWidget, "Could not find QPLainText widget");
auto registerViewWidget = widget.findChild<QTableView *>("registers");
QVERIFY2(registerViewWidget, "Could not find QTableView widget for registers");
auto memoryViewWidget = widget.findChild<QTableView *>("memory");
QVERIFY2(memoryViewWidget, "Could not find QTableView widget for memory");
auto statusViewWidget = widget.findChild<QLineEdit *>("status");
QVERIFY2(statusViewWidget, "Could not find QLineEdit widget for status");
auto stepButtonWidget = widget.findChild<QPushButton *>("step");
QVERIFY2(stepButtonWidget, "Could not find QTableView widget for memory");
}
void VirtualMachineGUITest::buttonTest() {
widget.load(QString::fromStdString(TEST_FILE_DIR + "/vm/test01.asm"));
auto stepButtonWidget = widget.findChild<QPushButton *>("step");
QTest::mouseClick(stepButtonWidget, Qt::LeftButton, Qt::KeyboardModifiers(), QPoint(), 1);
widget.update();
//auto runButtonWidget = widget.findChild<QPushButton *>("run");
//auto breakButtonWidget = widget.findChild<QPushButton *>("break");
//QSignalSpy spy(runButtonWidget, SIGNAL(clicked()));
//QSignalSpy spy1(breakButtonWidget, SIGNAL(clicked()));
for (size_t i = 0; i < 6; i++) {
widget.changeReg();
//QTest::mouseClick(runButtonWidget, Qt::LeftButton, Qt::KeyboardModifiers(), QPoint(), 1);
}
//QTest::mouseClick(breakButtonWidget, Qt::LeftButton, Qt::KeyboardModifiers(), QPoint(), 1);
//QTest::mouseClick(runButtonWidget, Qt::LeftButton, Qt::KeyboardModifiers(), QPoint(), 1);
//QCOMPARE(spy.isValid(), true);
//widget.setUpThread();
//widget.runStop();
//widget.closeEvent(QTest::QCloseE);
//auto textWidget = widget.findChild<QPlainTextEdit *>("text");
//QVERIFY(textWidget != nullptr);
////QObject::connect(stepButtonWidget, SIGNAL(clicked()), this, SLOT(changeReg()));
//QSignalSpy spy(textWidget, SIGNAL(stepButtonWidget->animateClick()));
//QCOMPARE(spy.isValid(), true);
}
void VirtualMachineGUITest::buttonTest1() {
widget.load(QString::fromStdString(TEST_FILE_DIR + "/vm/test18.asm"));
auto stepButtonWidget = widget.findChild<QPushButton *>("step");
QTest::mouseClick(stepButtonWidget, Qt::LeftButton, Qt::KeyboardModifiers(), QPoint(), 1);
for (size_t i = 0; i < 12; i++) {
widget.changeReg();
}
}
QTEST_MAIN(VirtualMachineGUITest)
#include "virtual_machine_gui_test.moc"