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
|
#include <qcoreapplication.h>
#include <qdebug.h>
#include <QtTest/QtTest>
#include <dbus/qdbus.h>
class tst_Hal: public QObject
{
Q_OBJECT
private slots:
void getDevices();
void lock();
};
class Spy: public QObject
{
Q_OBJECT
public:
int count;
QDBusConnection conn;
Spy(QDBusConnection c) : count(0), conn(c)
{ }
public slots:
void spySlot(int, const QVariantList&)
{
++count;
QDBusMessage msg = QDBusMessage::methodCall("org.freedesktop.Hal",
"/org/freedesktop/Hal/devices/acpi_CPU0",
"org.freedesktop.Hal.Device", "GetProperty");
msg << "info.locked";
QDBusMessage reply = conn.sendWithReply(msg);
QVERIFY(!reply.isEmpty());
}
};
void tst_Hal::getDevices()
{
QDBusConnection con = QDBusConnection::addConnection(QDBusConnection::SystemBus);
QVERIFY(con.isConnected());
QDBusMessage msg = QDBusMessage::methodCall("org.freedesktop.Hal",
"/org/freedesktop/Hal/Manager", "org.freedesktop.Hal.Manager",
"GetAllDevices");
QDBusMessage reply = con.sendWithReply(msg);
QVERIFY(!reply.isEmpty());
qDebug() << reply;
}
void tst_Hal::lock()
{
QDBusConnection con = QDBusConnection::addConnection(QDBusConnection::SystemBus);
QVERIFY(con.isConnected());
Spy spy( con );
con.connect("org.freedesktop.Hal", "/org/freedesktop/Hal/devices/acpi_CPU0",
"org.freedesktop.Hal.Device", "PropertyModified",
&spy, SLOT(spySlot(int, QVariantList)));
QDBusMessage msg = QDBusMessage::methodCall("org.freedesktop.Hal",
"/org/freedesktop/Hal/devices/acpi_CPU0", "org.freedesktop.Hal.Device",
"Lock");
msg << "No reason...";
QDBusMessage reply = con.sendWithReply(msg);
qDebug() << reply;
QCOMPARE(spy.count, 3);
QCOMPARE(reply.type(), QDBusMessage::ReplyMessage);
}
QTEST_MAIN(tst_Hal)
#include "tst_hal.moc"
|