~ubuntu-branches/ubuntu/utopic/psi/utopic

« back to all changes in this revision

Viewing changes to src/capabilities/unittest/capsmanagertest.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Jan Niehusmann
  • Date: 2009-09-25 17:49:51 UTC
  • mfrom: (6.1.3 sid)
  • Revision ID: james.westby@ubuntu.com-20090925174951-lvm7kdap82o8xhn3
Tags: 0.13-1
* Updated to upstream version 0.13
* Set Standards-Version to 3.8.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
 
6
6
// FIXME: This test suite is far from complete
7
7
 
8
 
#include <cppunit/extensions/HelperMacros.h>
9
 
#include <cppunit/extensions/TestFactoryRegistry.h>
 
8
#include <QObject>
 
9
#include <QtTest/QtTest>
10
10
 
 
11
#include "qttestutil/qttestutil.h"
11
12
#include "protocol/discoinfoquerier.h"
12
 
#include "xmpp_jid.h"
13
 
#include "capsmanager.h"
 
13
#include "xmpp/jid/jid.h"
 
14
#include "capabilities/capsmanager.h"
14
15
 
15
16
using namespace XMPP;
16
17
 
57
58
 
58
59
// -----------------------------------------------------------------------------
59
60
 
60
 
class CapsManagerTest : public CppUnit::TestFixture
 
61
class CapsManagerTest : public QObject
61
62
{
62
 
        CPPUNIT_TEST_SUITE(CapsManagerTest);
63
 
 
64
 
        CPPUNIT_TEST(testUpdateCaps);
65
 
 
66
 
        CPPUNIT_TEST(testCapsEnabled);
67
 
        CPPUNIT_TEST(testCapsEnabled_NoCaps);
68
 
 
69
 
        CPPUNIT_TEST(testDisableCaps);
70
 
 
71
 
        CPPUNIT_TEST_SUITE_END();
72
 
 
73
 
public:
74
 
        CapsManagerTest();
75
 
 
76
 
        void setUp();
77
 
        void tearDown();
78
 
 
79
 
        void addContact(const QString& jid, const QString& client, const QString& version, const QStringList& capabilities);
80
 
        CapsManager* createManager(const QString& jid);
81
 
 
82
 
        void testUpdateCaps();
83
 
        void testCapsEnabled();
84
 
        void testCapsEnabled_NoCaps();
85
 
        void testDisableCaps();
86
 
 
87
 
private:
88
 
        CapsRegistry registry_;
89
 
        TestDiscoInfoQuerier* querier_;
90
 
        CapsManager* manager_;
 
63
                Q_OBJECT
 
64
 
 
65
        private slots:
 
66
                void initTestCase() {
 
67
                        manager_ = NULL;
 
68
                        querier_ = new TestDiscoInfoQuerier();
 
69
                }
 
70
 
 
71
                void cleanupTestCase() {
 
72
                        delete manager_;
 
73
                }
 
74
 
 
75
                void testUpdateCaps()
 
76
                {
 
77
                        QStringList capabilities;
 
78
                        capabilities << "c1" << "c2" << "c3";
 
79
                        addContact("you@example.com/a", "myclient", "myversion", capabilities);
 
80
                        CapsManager* manager = createManager("me@example.com");
 
81
 
 
82
                        manager->updateCaps("you@example.com/a", "myclient", "myversion", "c1 c2");
 
83
                        XMPP::Features features(manager->features("you@example.com/a"));
 
84
 
 
85
                        QCOMPARE(querier_->nb_getdiscoinfo_called_, 3U);
 
86
                        QVERIFY(features.test(QStringList("myversion_f1")));
 
87
                        QVERIFY(features.test(QStringList("c1_f1")));
 
88
                        QVERIFY(features.test(QStringList("c1_f2")));
 
89
                        QVERIFY(features.test(QStringList("c2_f1")));
 
90
                        QVERIFY(features.test(QStringList("c2_f2")));
 
91
                }
 
92
 
 
93
                void testCapsEnabled() {
 
94
                        QStringList capabilities;
 
95
                        capabilities << "c1" << "c2";
 
96
                        addContact("you@example.com/a", "myclient", "myversion", capabilities);
 
97
                        CapsManager* manager = createManager("me@example.com");
 
98
 
 
99
                        manager->updateCaps("you@example.com/a", "myclient", "myversion", "c1 c2");
 
100
 
 
101
                        QVERIFY(manager->capsEnabled("you@example.com/a"));
 
102
                }
 
103
 
 
104
                void testCapsEnabled_NoCaps() {
 
105
                        CapsManager* manager = createManager("me@example.com/a");
 
106
 
 
107
                        QVERIFY(!manager->capsEnabled("you@example.com/b"));
 
108
                }
 
109
 
 
110
                void testDisableCaps() {
 
111
                        QStringList capabilities;
 
112
                        capabilities << "c1" << "c2";
 
113
                        addContact("you@example.com/a", "myclient", "myversion", capabilities);
 
114
                        CapsManager* manager = createManager("me@example.com");
 
115
                        manager->updateCaps("you@example.com/a", "myclient", "myversion", "c1 c2");
 
116
 
 
117
                        manager->disableCaps("you@example.com/a");
 
118
 
 
119
                        QVERIFY(!manager->capsEnabled("you@example.com/a"));
 
120
                }
 
121
 
 
122
        private:
 
123
                void addContact(const QString& jid, const QString& client, const QString& version, const QStringList& capabilities) {
 
124
                        XMPP::DiscoItem i;
 
125
                        i.setFeatures(XMPP::Features(version + "_f1"));
 
126
                        querier_->addInfo(jid, client + '#' + version, i);
 
127
 
 
128
                        foreach(QString s, capabilities) {
 
129
                                XMPP::DiscoItem i2;
 
130
                                QStringList f;
 
131
                                f << s + "_f1" << s + "_f2";
 
132
                                i2.setFeatures(XMPP::Features(f));
 
133
                                querier_->addInfo(jid, client + '#' + s, i2);
 
134
                        }
 
135
                }
 
136
 
 
137
                CapsManager* createManager(const QString& jid) {
 
138
                        manager_ = new CapsManager(jid, &registry_, querier_);
 
139
                        return manager_;
 
140
                }
 
141
 
 
142
        private:
 
143
                CapsRegistry registry_;
 
144
                TestDiscoInfoQuerier* querier_;
 
145
                CapsManager* manager_;
91
146
};
92
147
 
93
 
CPPUNIT_TEST_SUITE_REGISTRATION(CapsManagerTest);
94
 
 
95
 
// -----------------------------------------------------------------------------
96
 
 
97
 
CapsManagerTest::CapsManagerTest()
98
 
{
99
 
}
100
 
 
101
 
void CapsManagerTest::setUp()
102
 
{
103
 
        manager_ = NULL;
104
 
        querier_ = new TestDiscoInfoQuerier();
105
 
}
106
 
 
107
 
void CapsManagerTest::tearDown()
108
 
{
109
 
        delete manager_;
110
 
}
111
 
 
112
 
CapsManager* CapsManagerTest::createManager(const QString& jid)
113
 
{
114
 
        manager_ = new CapsManager(jid, &registry_, querier_);
115
 
        return manager_;
116
 
}
117
 
 
118
 
void CapsManagerTest::addContact(const QString& jid, const QString& client,
119
 
const QString& version, const QStringList& capabilities) 
120
 
121
 
        XMPP::DiscoItem i;
122
 
        i.setFeatures(XMPP::Features(version + "_f1"));
123
 
        querier_->addInfo(jid, client + "#" + version, i);
124
 
 
125
 
        foreach(QString s, capabilities) {
126
 
                XMPP::DiscoItem i2;
127
 
                QStringList f;
128
 
                f << s + "_f1" << s + "_f2";
129
 
                i2.setFeatures(XMPP::Features(f));
130
 
                querier_->addInfo(jid, client + "#" + s, i2);
131
 
        }
132
 
}
133
 
 
134
 
 
135
 
void CapsManagerTest::testUpdateCaps()
136
 
{
137
 
        QStringList capabilities;
138
 
        capabilities << "c1" << "c2" << "c3";
139
 
        addContact("you@example.com/a", "myclient", "myversion", capabilities);
140
 
        CapsManager* manager = createManager("me@example.com");
141
 
 
142
 
        manager->updateCaps("you@example.com/a", "myclient", "myversion", "c1 c2");
143
 
        XMPP::Features features(manager->features("you@example.com/a"));
144
 
 
145
 
        CPPUNIT_ASSERT_EQUAL(3U, querier_->nb_getdiscoinfo_called_);
146
 
        CPPUNIT_ASSERT(features.test(QStringList("myversion_f1")));
147
 
        CPPUNIT_ASSERT(features.test(QStringList("c1_f1")));
148
 
        CPPUNIT_ASSERT(features.test(QStringList("c1_f2")));
149
 
        CPPUNIT_ASSERT(features.test(QStringList("c2_f1")));
150
 
        CPPUNIT_ASSERT(features.test(QStringList("c2_f2")));
151
 
}
152
 
 
153
 
void CapsManagerTest::testCapsEnabled()
154
 
{
155
 
        QStringList capabilities;
156
 
        capabilities << "c1" << "c2";
157
 
        addContact("you@example.com/a", "myclient", "myversion", capabilities);
158
 
        CapsManager* manager = createManager("me@example.com");
159
 
 
160
 
        manager->updateCaps("you@example.com/a", "myclient", "myversion", "c1 c2");
161
 
 
162
 
        CPPUNIT_ASSERT(manager->capsEnabled("you@example.com/a"));
163
 
}
164
 
 
165
 
void CapsManagerTest::testCapsEnabled_NoCaps()
166
 
{
167
 
        CapsManager* manager = createManager("me@example.com/a");
168
 
 
169
 
        CPPUNIT_ASSERT(!manager->capsEnabled("you@example.com/b"));
170
 
}
171
 
 
172
 
void CapsManagerTest::testDisableCaps()
173
 
{
174
 
        QStringList capabilities;
175
 
        capabilities << "c1" << "c2";
176
 
        addContact("you@example.com/a", "myclient", "myversion", capabilities);
177
 
        CapsManager* manager = createManager("me@example.com");
178
 
        manager->updateCaps("you@example.com/a", "myclient", "myversion", "c1 c2");
179
 
 
180
 
        manager->disableCaps("you@example.com/a");
181
 
 
182
 
        CPPUNIT_ASSERT(!manager->capsEnabled("you@example.com/a"));
183
 
}
 
148
QTTESTUTIL_REGISTER_TEST(CapsManagerTest);
 
149
#include "capsmanagertest.moc"