Branch data Line data Source code
1 : : /*
2 : : * Copyright 2006-2009 Savarese Software Research Corporation
3 : : *
4 : : * Licensed under the Apache License, Version 2.0 (the "License");
5 : : * you may not use this file except in compliance with the License.
6 : : * You may obtain a copy of the License at
7 : : *
8 : : * http://www.savarese.com/software/ApacheLicense-2.0
9 : : *
10 : : * Unless required by applicable law or agreed to in writing, software
11 : : * distributed under the License is distributed on an "AS IS" BASIS,
12 : : * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 : : * See the License for the specific language governing permissions and
14 : : * limitations under the License.
15 : : */
16 : :
17 : : #include <tests/TestCommon.h>
18 : : #include <ssrc/wispers/group_session/GroupSessionDatabase.h>
19 : : #include <ssrc/wispers/group_session/protocol.h>
20 : : #include <ssrc/wispers/lua/Properties.h>
21 : : #include <ssrc/wispers/database/InitializeLibrary.h>
22 : :
23 : : using namespace NS_SSRC_WSPR_GROUP_SESSION;
24 : : using NS_SSRC_WSPR_LUA::load_properties;
25 : :
26 : : __BEGIN_NS_SSRC_WSPR_GROUP_SESSION
27 : 18 : bool operator<(const GroupSession & gs1, const GroupSession & gs2) {
28 : 18 : return (gs1.gsid < gs2.gsid);
29 : : }
30 : : __END_NS_SSRC_WSPR_GROUP_SESSION
31 : :
32 [ + - + - : 48 : class GroupSessionDatabaseTest : public TestCase {
- + + - ]
33 : :
34 : : InitializeLibrary _init_lib;
35 : : boost::scoped_ptr<GroupSessionDatabase> db;
36 : :
37 : : public:
38 : :
39 : : WISP_IMPORT(GroupSessionDatabase, MemberOperations);
40 : :
41 : 16 : virtual void setUp() {
42 : 16 : std::system(INITDB_COMMAND);
43 [ + - + - : 16 : db.reset(new GroupSessionDatabase(DB_FILE, *load_properties(PROP_FILE)));
+ - + - +
- + - + -
+ - + - ]
44 : 16 : }
45 : :
46 : 16 : virtual void tearDown() {
47 : 16 : db.reset();
48 : 16 : }
49 : :
50 : 3 : void test_add_get_session() {
51 : 6 : GroupSessionDatabase::GroupSessionOperations::find_result_type result;
52 : 3 : sec_type created(TimeValue::now_seconds());
53 : 3 : sec_type expires(created + 3600);
54 : : GroupSession session(5, created, expires,
55 [ + - + - : 6 : "footype", "bargroup", "foo vs. bar", 0);
+ - + - +
- + - + -
+ - ]
56 : :
57 [ + - + - : 3 : CPPUNIT_ASSERT(db->group_session_ops.insert(session));
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
58 [ + - + - : 3 : result = db->group_session_ops.find(4);
+ - ]
59 : :
60 [ + - + - : 3 : CPPUNIT_ASSERT(!result.first);
+ - + - +
- + - + -
+ - + - +
- + - ]
61 : :
62 [ + - + - : 3 : result = db->group_session_ops.find(5);
+ - ]
63 : :
64 [ + - + - : 3 : CPPUNIT_ASSERT(result.first);
+ - + - +
- + - + -
+ - + - +
- + - ]
65 [ + - + - : 3 : CPPUNIT_ASSERT(result.second.gsid == 5);
+ - + - +
- + - + -
+ - + - +
- + - ]
66 [ + - + - : 3 : CPPUNIT_ASSERT(result.second.get<0>() == 5);
+ - + - +
- + - + -
+ - + - +
- + - ]
67 [ + - + - : 3 : CPPUNIT_ASSERT(result.second.column_name<0>() == "gsid");
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - + - ]
68 [ + - + - : 3 : CPPUNIT_ASSERT(result.second.column_name(0) == "gsid");
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - + - ]
69 [ + - + - : 3 : CPPUNIT_ASSERT(result.second.table_name() == "GroupSession");
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - + - ]
70 [ + - + - : 3 : CPPUNIT_ASSERT(result.second.created > 0);
+ - + - +
- + - + -
+ - + - +
- + - ]
71 [ + - + - : 3 : CPPUNIT_ASSERT(result.second.expires == expires);
+ - + - +
- + - + -
+ - + - +
- + - ]
72 [ + - + - : 3 : CPPUNIT_ASSERT(result.second.type == "footype");
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
73 [ + - + - : 3 : CPPUNIT_ASSERT(result.second.group == "bargroup");
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
74 [ + - + - : 3 : CPPUNIT_ASSERT(result.second.name == "foo vs. bar");
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
75 : 3 : }
76 : :
77 : : typedef uid_container::iterator uid_iterator;
78 : :
79 : : typedef bool (GroupSessionDatabase::* add_fun)(const uid_type,
80 : : const gsid_type);
81 : : typedef unsigned int (GroupSessionDatabase::* remove_fun)(const uid_type);
82 : : typedef
83 : : unsigned int (GroupSessionDatabase::* get_fun)(uid_container &,
84 : : const gsid_type) const;
85 : : typedef
86 : : unsigned int (GroupSessionDatabase::* addn_fun)(const uid_iterator &,
87 : : const uid_iterator &,
88 : : const gsid_type);
89 : : typedef
90 : : unsigned int (GroupSessionDatabase::* removen_fun)(const uid_iterator &,
91 : : const uid_iterator &);
92 : :
93 : 5 : void test_add_get_member_uids(MemberOperations & row_ops, get_fun get) {
94 : 10 : uid_container results;
95 [ + - + - : 5 : CPPUNIT_ASSERT(row_ops.insert(MemberOperations::row_type(3, 31)));
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
96 [ + - + - : 5 : CPPUNIT_ASSERT(((*db).*get)(results, 3) == 1);
+ - + - +
- - + + -
+ - + - +
- + - + -
+ - ]
97 : :
98 [ + - + - : 5 : CPPUNIT_ASSERT(results.size() == 1);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
99 [ + - + - : 5 : CPPUNIT_ASSERT(results[0] == 31);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
100 : :
101 [ + - + - : 5 : CPPUNIT_ASSERT(row_ops.insert(MemberOperations::row_type(3, 32)));
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
102 [ + - + - : 5 : CPPUNIT_ASSERT(row_ops.insert(MemberOperations::row_type(3, 33)));
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
103 : :
104 [ + - ]: 5 : results.clear();
105 [ + - + - : 5 : CPPUNIT_ASSERT(((*db).*get)(results, 3) == 3);
+ - + - +
- - + + -
+ - + - +
- + - + -
+ - ]
106 : :
107 [ + - + - : 5 : CPPUNIT_ASSERT(results.size() == 3);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
108 : :
109 [ + - + - : 5 : std::sort(results.begin(), results.end());
+ - ]
110 : :
111 [ + - + - : 5 : CPPUNIT_ASSERT(results[0] == 31);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
112 [ + - + - : 5 : CPPUNIT_ASSERT(results[1] == 32);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
113 [ + - + - : 5 : CPPUNIT_ASSERT(results[2] == 33);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
114 : 5 : }
115 : :
116 : 3 : void test_add_get_participants() {
117 : 3 : test_add_get_member_uids(db->participant_ops,
118 : 6 : &GroupSessionDatabase::get_member_uids<uid_container>);
119 : 3 : }
120 : :
121 : 1 : void test_add_get_observers() {
122 : 1 : test_add_get_member_uids(db->observer_ops,
123 : 2 : &GroupSessionDatabase::get_member_uids<uid_container>);
124 : 1 : }
125 : :
126 : 1 : void test_get_member_uids() {
127 : 1 : test_add_get_participants();
128 : : //test_add_get_observers();
129 : :
130 : 2 : uid_container results;
131 [ + - ]: 1 : db->get_member_uids(results, 3);
132 : :
133 [ + - + - : 1 : CPPUNIT_ASSERT(results.size() == 3);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
134 : :
135 [ + - + - : 1 : std::sort(results.begin(), results.end());
+ - ]
136 : :
137 [ + - + - : 1 : CPPUNIT_ASSERT(results[0] == 31);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
138 [ + - + - : 1 : CPPUNIT_ASSERT(results[1] == 32);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
139 [ + - + - : 1 : CPPUNIT_ASSERT(results[2] == 33);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
140 : : /*
141 : : uid_iterator it = results.begin();
142 : : ++it;
143 : :
144 : : CPPUNIT_ASSERT(db->participant_ops.insert(results.begin(), results.end()) == 2);
145 : :
146 : : it = results.begin();
147 : : ++it;
148 : :
149 : : CPPUNIT_ASSERT(db->observer_ops.insert(Member(results.begin(), it) == 1));
150 : :
151 : : results.clear();
152 : : db->get_member_uids(results, 3);
153 : :
154 : : CPPUNIT_ASSERT(results.size() == 3);
155 : :
156 : : std::sort(results.begin(), results.end());
157 : :
158 : : CPPUNIT_ASSERT(results[0] == 31);
159 : : CPPUNIT_ASSERT(results[1] == 32);
160 : : CPPUNIT_ASSERT(results[2] == 33);
161 : : */
162 : 1 : }
163 : :
164 : 1 : void test_remove_session() {
165 : 1 : test_add_get_session();
166 : 1 : test_add_get_participants();
167 : :
168 [ + - + - : 1 : CPPUNIT_ASSERT_EQUAL(1u, db->group_session_ops.erase(5));
+ - + - +
- + - + -
+ - ]
169 [ + - + - : 1 : CPPUNIT_ASSERT_EQUAL(0u, db->group_session_ops.erase(3));
+ - + - +
- + - + -
+ - ]
170 [ + - + - : 1 : CPPUNIT_ASSERT(!db->group_session_ops.find(5).first);
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - ]
171 [ + - + - : 1 : CPPUNIT_ASSERT(!db->group_session_ops.find(3).first);
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - ]
172 : :
173 : 1 : Member observers[3] = { Member(8, 81), Member(8, 82), Member(8, 83)};
174 : 1 : Member participants[3] = { Member(8, 181), Member(8, 182), Member(8, 183)};
175 : :
176 : 1 : sec_type created(TimeValue::now_seconds());
177 : 1 : sec_type expires(created + 3600);
178 : :
179 : 1 : db->group_session_ops.save(GroupSession(8, created, expires,
180 : : "footype", "bargroup",
181 [ + - + - : 2 : "foo vs. bar", 0));
+ - + - +
- + - + -
+ - + - ]
182 : 1 : db->participant_ops.insert(&participants[0], &participants[3]);
183 : 1 : db->observer_ops.insert(&observers[0], &observers[3]);
184 : :
185 : 2 : uid_container results;
186 : :
187 [ + - ]: 1 : results.clear();
188 [ + - + - : 1 : CPPUNIT_ASSERT_EQUAL(6u, db->get_member_uids(results, 8));
+ - + - +
- + - + -
+ - ]
189 [ + - + - : 1 : CPPUNIT_ASSERT(6u == results.size());
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
190 [ + - ]: 1 : results.clear();
191 [ + - + - : 1 : CPPUNIT_ASSERT_EQUAL(1u, db->group_session_ops.erase(8));
+ - + - +
- + - + -
+ - ]
192 [ + - + - : 1 : CPPUNIT_ASSERT(!db->group_session_ops.find(8).first);
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - ]
193 [ + - + - : 1 : CPPUNIT_ASSERT_EQUAL(0u, db->get_member_uids(results, 8));
+ - + - +
- + - + -
+ - ]
194 [ + - + - : 1 : CPPUNIT_ASSERT(0u == results.size());
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
195 : 1 : }
196 : :
197 : 1 : void test_get_participant_sessions() {
198 : 1 : sec_type created(TimeValue::now_seconds());
199 : 1 : sec_type expires(created + 3600);
200 : : GroupSession session(0, created, expires,
201 [ + - + - : 2 : "footype", "bargroup", "foo vs. bar", 0);
+ - + - +
- + - +
- ]
202 : :
203 [ + + ]: 5 : for(unsigned int gsid = 22; gsid < 26; ++gsid) {
204 : 4 : session.gsid = gsid;
205 [ + - ]: 4 : db->group_session_ops.save(session);
206 : : }
207 : :
208 [ + - ]: 1 : db->participant_ops.insert(Member(22, 84));
209 [ + - ]: 1 : db->participant_ops.insert(Member(23, 84));
210 [ + - ]: 1 : db->participant_ops.insert(Member(24, 84));
211 [ + - ]: 1 : db->participant_ops.insert(Member(25, 84));
212 : :
213 [ + - + - ]: 2 : group_session_container sessions;
214 : :
215 [ + - + - : 1 : CPPUNIT_ASSERT(0 == db->get_participant_sessions(sessions, 80));
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
216 [ + - + - : 1 : CPPUNIT_ASSERT(sessions.size() == 0);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
217 [ + - + - : 1 : CPPUNIT_ASSERT(4 == db->get_participant_sessions(sessions, 84));
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
218 [ + - + - : 1 : CPPUNIT_ASSERT(sessions.size() == 4);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
219 : :
220 [ + - + - : 1 : std::sort(sessions.begin(), sessions.end());
+ - ]
221 : :
222 [ + - + - : 1 : CPPUNIT_ASSERT(sessions[0].gsid == 22);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
223 [ + - + - : 1 : CPPUNIT_ASSERT(sessions[1].gsid == 23);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
224 [ + - + - : 1 : CPPUNIT_ASSERT(sessions[2].gsid == 24);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
225 [ + - + - : 1 : CPPUNIT_ASSERT(sessions[3].gsid == 25);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
226 : 1 : }
227 : :
228 : 3 : void test_find_expired_gsids() {
229 : 3 : sec_type now(TimeValue::now_seconds());
230 [ + - + - : 6 : GroupSession session(1, now, now, "footype", "bargroup", "foo vs. bar", 0);
+ - + - +
- + - +
- ]
231 [ + - ]: 3 : db->group_session_ops.save(session);
232 : 3 : session.gsid = 2;
233 [ + - ]: 3 : db->group_session_ops.save(session);
234 : 3 : session.gsid = 3;
235 [ + - ]: 3 : db->group_session_ops.save(session);
236 : :
237 : 3 : now+=3600;
238 : 3 : session.gsid = 4;
239 : 3 : session.created = session.expires = now;
240 [ + - ]: 3 : db->group_session_ops.save(session);
241 : :
242 [ + - + - ]: 6 : gsid_container gsids;
243 : :
244 [ + - + - : 3 : CPPUNIT_ASSERT(3 == db->find_expired_gsids(gsids, now - 1));
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
245 [ + - + - : 3 : CPPUNIT_ASSERT(3 == gsids.size());
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
246 : :
247 [ + - + - : 3 : std::sort(gsids.begin(), gsids.end());
+ - ]
248 : :
249 [ + - + - : 3 : CPPUNIT_ASSERT(gsids[0] == 1);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
250 [ + - + - : 3 : CPPUNIT_ASSERT(gsids[1] == 2);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
251 [ + - + - : 3 : CPPUNIT_ASSERT(gsids[2] == 3);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
252 : 3 : }
253 : :
254 : 1 : void test_get_sessions_by_type() {
255 : 1 : sec_type now(TimeValue::now_seconds());
256 [ + - + - : 2 : GroupSession session(1, now, now, "footype", "bargroup", "foo vs. bar", 0);
+ - + - +
- + - +
- ]
257 : :
258 [ + + ]: 4 : for(unsigned int gsid = 1; gsid < 4; ++gsid) {
259 : 3 : session.gsid = gsid;
260 [ + - ]: 3 : db->group_session_ops.save(session);
261 : : }
262 : :
263 [ + - ]: 1 : session.type = "bartype";
264 : :
265 [ + + ]: 6 : for(unsigned int gsid = 5; gsid < 10; ++gsid) {
266 : 5 : session.gsid = gsid;
267 [ + - ]: 5 : db->group_session_ops.save(session);
268 : : }
269 : :
270 [ + - + - ]: 2 : group_session_container sessions;
271 : :
272 [ + - + - : 1 : CPPUNIT_ASSERT(3 == db->get_sessions_by_type(sessions, "footype"));
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - + - ]
273 : :
274 [ + - + - : 1 : std::sort(sessions.begin(), sessions.end());
+ - ]
275 : :
276 [ + - + + ]: 4 : for(unsigned int i = 0; i < sessions.size(); ++i) {
277 [ + - + - : 3 : CPPUNIT_ASSERT(sessions[i].gsid == (i + 1));
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
278 : : }
279 : :
280 [ + - ]: 1 : sessions.clear();
281 [ + - + - : 1 : CPPUNIT_ASSERT(5 == db->get_sessions_by_type(sessions, "bartype"));
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - + - ]
282 : :
283 [ + - + - : 1 : std::sort(sessions.begin(), sessions.end());
+ - ]
284 : :
285 [ + - + + ]: 6 : for(unsigned int i = 0; i < sessions.size(); ++i) {
286 [ + - + - : 5 : CPPUNIT_ASSERT(sessions[i].gsid == (i + 5));
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
287 : : }
288 : 1 : }
289 : :
290 : 1 : void test_remove_expired_sessions() {
291 : 1 : test_find_expired_gsids();
292 : :
293 : 1 : sec_type now(TimeValue::now_seconds() + 3600);
294 : :
295 [ + - + - : 1 : CPPUNIT_ASSERT_EQUAL(4u, db->remove_expired_sessions(now));
+ - + - +
- + - + -
+ - ]
296 : :
297 : 2 : gsid_container gsids;
298 : :
299 [ + - + - : 1 : CPPUNIT_ASSERT_EQUAL(0u, db->find_expired_gsids(gsids, now));
+ - + - +
- + - + -
+ - ]
300 : :
301 [ + - ]: 1 : test_find_expired_gsids();
302 : :
303 [ + - ]: 1 : db->participant_ops.insert(Member(1,17));
304 [ + - ]: 1 : db->participant_ops.insert(Member(2, 17));
305 [ + - ]: 1 : db->participant_ops.insert(Member(4, 13));
306 [ + - ]: 1 : db->observer_ops.insert(Member(1, 13));
307 [ + - ]: 1 : db->observer_ops.insert(Member(2, 13));
308 [ + - ]: 1 : db->observer_ops.insert(Member(4, 17));
309 : :
310 : 1 : now = TimeValue::now_seconds();
311 : :
312 [ + - + - ]: 2 : group_session_container sessions;
313 : :
314 [ + - + - : 1 : CPPUNIT_ASSERT_EQUAL(2u, db->get_participant_sessions(sessions, 17));
+ - + - +
- + - + -
+ - ]
315 [ + - + - : 1 : CPPUNIT_ASSERT_EQUAL(1u, db->get_observer_sessions(sessions, 17));
+ - + - +
- + - + -
+ - ]
316 [ + - + - : 1 : CPPUNIT_ASSERT_EQUAL(1u, db->get_participant_sessions(sessions, 13));
+ - + - +
- + - + -
+ - ]
317 [ + - + - : 1 : CPPUNIT_ASSERT_EQUAL(2u, db->get_observer_sessions(sessions, 13));
+ - + - +
- + - + -
+ - ]
318 [ + - + - : 1 : CPPUNIT_ASSERT_EQUAL(3u, db->remove_expired_sessions(now));
+ - + - +
- + - + -
+ - ]
319 [ + - + - : 1 : CPPUNIT_ASSERT_EQUAL(0u, db->get_participant_sessions(sessions, 17));
+ - + - +
- + - + -
+ - ]
320 [ + - + - : 1 : CPPUNIT_ASSERT_EQUAL(1u, db->get_observer_sessions(sessions, 17));
+ - + - +
- + - + -
+ - ]
321 [ + - + - : 1 : CPPUNIT_ASSERT_EQUAL(1u, db->get_participant_sessions(sessions, 13));
+ - + - +
- + - + -
+ - ]
322 [ + - + - : 1 : CPPUNIT_ASSERT_EQUAL(0u, db->get_observer_sessions(sessions, 13));
+ - + - +
- + - + -
+ - ]
323 : :
324 [ + - + - : 1 : CPPUNIT_ASSERT(!db->group_session_ops.find(1).first);
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - ]
325 [ + - + - : 1 : CPPUNIT_ASSERT(!db->group_session_ops.find(2).first);
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - ]
326 [ + - + - : 1 : CPPUNIT_ASSERT(!db->group_session_ops.find(3).first);
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - ]
327 [ + - + - : 1 : CPPUNIT_ASSERT(db->group_session_ops.find(4).first);
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - ]
328 : 1 : }
329 : :
330 : 2 : void test_add_get_reservation() {
331 : 4 : GroupSessionDatabase::ReservationOperations::find_result_type result;
332 : 2 : sec_type created(TimeValue::now_seconds());
333 : 2 : sec_type expires = created + 3600;
334 : :
335 : 2 : db->reservation_ops.insert(Reservation(5, created, expires,
336 : : "footype", "bargroup",
337 [ + - + - : 4 : "foo vs. bar", 9, 28, 808));
+ - + - +
- + - + -
+ - + - ]
338 [ + - + - : 2 : result = db->reservation_ops.find(4);
+ - ]
339 : :
340 [ + - + - : 2 : CPPUNIT_ASSERT(!result.first);
+ - + - +
- + - + -
+ - + - +
- + - ]
341 : :
342 [ + - + - : 2 : result = db->reservation_ops.find(5);
+ - ]
343 : :
344 [ + - + - : 2 : CPPUNIT_ASSERT(result.first);
+ - + - +
- + - + -
+ - + - +
- + - ]
345 [ + - + - : 2 : CPPUNIT_ASSERT(result.second.gsid == 5);
+ - + - +
- + - + -
+ - + - +
- + - ]
346 [ + - + - : 2 : CPPUNIT_ASSERT(result.second.created == created);
+ - + - +
- + - + -
+ - + - +
- + - ]
347 [ + - + - : 2 : CPPUNIT_ASSERT(result.second.expires == expires);
+ - + - +
- + - + -
+ - + - +
- + - ]
348 [ + - + - : 2 : CPPUNIT_ASSERT(result.second.type == "footype");
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
349 [ + - + - : 2 : CPPUNIT_ASSERT(result.second.group == "bargroup");
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
350 [ + - + - : 2 : CPPUNIT_ASSERT(result.second.name == "foo vs. bar");
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
351 [ + - + - : 2 : CPPUNIT_ASSERT(result.second.max_observers == 9);
+ - + - +
- + - + -
+ - + - +
- + - ]
352 [ + - + - : 2 : CPPUNIT_ASSERT(result.second.creator_uid == 28);
+ - + - +
- + - + -
+ - + - +
- + - ]
353 [ + - + - : 2 : CPPUNIT_ASSERT(result.second.gs_lifetime == 808);
+ - + - +
- + - + -
+ - + - +
- + - ]
354 : 2 : }
355 : :
356 : 1 : void test_add_get_reservation_participants() {
357 : 1 : test_add_get_member_uids(db->reservation_participant_ops,
358 : 2 : &GroupSessionDatabase::get_reservation_participants<uid_container>);
359 : :
360 : 1 : }
361 : :
362 : 1 : void test_find_sessions() {
363 : 1 : sec_type created(TimeValue::now_seconds());
364 : 1 : sec_type expires(created + 3600);
365 : : GroupSession session(5, created, expires,
366 [ + - + - : 2 : "footype", "bargroup", "foo vs. bar", 2);
+ - + - +
- + - +
- ]
367 : :
368 [ + - + - : 1 : CPPUNIT_ASSERT(db->group_session_ops.insert(session));
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
369 : :
370 [ + - + - ]: 2 : group_session_container sessions;
371 : :
372 [ + - ]: 1 : db->find_sessions(sessions);
373 : :
374 [ + - + - : 1 : CPPUNIT_ASSERT(sessions.size() == 1);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
375 : :
376 [ + - + - : 1 : CPPUNIT_ASSERT(sessions[0].gsid == 5);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
377 [ + - + - : 1 : CPPUNIT_ASSERT(sessions[0].get<0>() == 5);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
378 [ + - + - : 1 : CPPUNIT_ASSERT(sessions[0].column_name<0>() == "gsid");
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - + - +
- ]
379 [ + - + - : 1 : CPPUNIT_ASSERT(sessions[0].column_name(0) == "gsid");
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - + - +
- ]
380 [ + - + - : 1 : CPPUNIT_ASSERT(sessions[0].table_name() == "GroupSession");
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - + - +
- ]
381 [ + - + - : 1 : CPPUNIT_ASSERT(sessions[0].created > 0);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
382 [ + - + - : 1 : CPPUNIT_ASSERT(sessions[0].expires == expires);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
383 [ + - + - : 1 : CPPUNIT_ASSERT(sessions[0].type == "footype");
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - ]
384 [ + - + - : 1 : CPPUNIT_ASSERT(sessions[0].group == "bargroup");
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - ]
385 [ + - + - : 1 : CPPUNIT_ASSERT(sessions[0].name == "foo vs. bar");
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - ]
386 [ + - + - : 1 : CPPUNIT_ASSERT(sessions[0].max_observers == 2);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
387 : 1 : }
388 : :
389 : 1 : void test_is_member() {
390 : 1 : const uid_type uid = 31;
391 : 1 : const gsid_type gsid = 3;
392 : :
393 [ + - + - : 1 : CPPUNIT_ASSERT_EQUAL(false, db->is_member(uid, gsid));
+ - + - +
- + - + -
+ - ]
394 [ + - + - : 1 : CPPUNIT_ASSERT(db->observer_ops.insert(Member(gsid, uid)));
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
395 [ + - + - : 1 : CPPUNIT_ASSERT_EQUAL(true, db->is_member(uid, gsid));
+ - + - +
- + - + -
+ - ]
396 : 1 : }
397 : :
398 : 1 : void test_find_members_for_uid() {
399 : 1 : sec_type created(TimeValue::now_seconds());
400 : 1 : sec_type expires(created + 3600);
401 : :
402 : 1 : db->group_session_ops.save(GroupSession(8, created, expires,
403 : : "footype", "bargroup",
404 [ + - + - : 2 : "foo vs. bar", 0));
+ - + - +
- + - + -
+ - + - ]
405 : 1 : db->group_session_ops.save(GroupSession(9, created, expires,
406 : : "footype", "bargroup",
407 [ + - + - : 2 : "foo vs. bar", 0));
+ - + - +
- + - + -
+ - + - ]
408 : :
409 : 1 : db->participant_ops.insert(Member(8, 22));
410 : 1 : db->participant_ops.insert(Member(8, 24));
411 : 1 : db->observer_ops.insert(Member(8, 23));
412 : 1 : db->observer_ops.insert(Member(9, 22));
413 : 1 : db->observer_ops.insert(Member(9, 23));
414 : :
415 : 2 : uid_container results;
416 : :
417 [ + - + - : 1 : CPPUNIT_ASSERT_EQUAL(2u, db->find_members_for_uid(results, 22));
+ - + - +
- + - + -
+ - ]
418 [ + - + - : 1 : CPPUNIT_ASSERT(2u == results.size());
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
419 [ + - + - : 1 : CPPUNIT_ASSERT(results[0] == 23);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
420 [ + - + - : 1 : CPPUNIT_ASSERT(results[1] == 24);
+ - + - +
- + - + -
+ - + - +
- + - +
- ]
421 : 1 : }
422 : :
423 : 1 : void test_count_sessions() {
424 [ + - + - : 1 : CPPUNIT_ASSERT_EQUAL(0u, db->count_sessions());
+ - + - +
- + - + -
+ - ]
425 : 1 : test_add_get_session();
426 [ + - + - : 1 : CPPUNIT_ASSERT_EQUAL(1u, db->count_sessions());
+ - + - +
- + - + -
+ - ]
427 : 1 : }
428 : :
429 : 1 : void test_count_reservations() {
430 [ + - + - : 1 : CPPUNIT_ASSERT_EQUAL(0u, db->count_reservations());
+ - + - +
- + - + -
+ - ]
431 : 1 : test_add_get_reservation();
432 [ + - + - : 1 : CPPUNIT_ASSERT_EQUAL(1u, db->count_reservations());
+ - + - +
- + - + -
+ - ]
433 : 1 : }
434 : :
435 [ + - + - : 4 : CPPUNIT_TEST_SUITE(GroupSessionDatabaseTest);
+ - # # ]
436 [ + - + - : 1 : CPPUNIT_TEST(test_add_get_session);
+ - + - +
- + - + -
+ - ]
437 [ + - + - : 1 : CPPUNIT_TEST(test_add_get_participants);
+ - + - +
- + - + -
+ - ]
438 [ + - + - : 1 : CPPUNIT_TEST(test_add_get_observers);
+ - + - +
- + - + -
+ - ]
439 [ + - + - : 1 : CPPUNIT_TEST(test_get_member_uids);
+ - + - +
- + - + -
+ - ]
440 [ + - + - : 1 : CPPUNIT_TEST(test_remove_session);
+ - + - +
- + - + -
+ - ]
441 [ + - + - : 1 : CPPUNIT_TEST(test_get_participant_sessions);
+ - + - +
- + - + -
+ - ]
442 [ + - + - : 1 : CPPUNIT_TEST(test_find_expired_gsids);
+ - + - +
- + - + -
+ - ]
443 [ + - + - : 1 : CPPUNIT_TEST(test_get_sessions_by_type);
+ - + - +
- + - + -
+ - ]
444 [ + - + - : 1 : CPPUNIT_TEST(test_remove_expired_sessions);
+ - + - +
- + - + -
+ - ]
445 [ + - + - : 1 : CPPUNIT_TEST(test_add_get_reservation);
+ - + - +
- + - + -
+ - ]
446 [ + - + - : 1 : CPPUNIT_TEST(test_add_get_reservation_participants);
+ - + - +
- + - + -
+ - ]
447 [ + - + - : 1 : CPPUNIT_TEST(test_find_sessions);
+ - + - +
- + - + -
+ - ]
448 [ + - + - : 1 : CPPUNIT_TEST(test_is_member);
+ - + - +
- + - + -
+ - ]
449 [ + - + - : 1 : CPPUNIT_TEST(test_find_members_for_uid);
+ - + - +
- + - + -
+ - ]
450 [ + - + - : 1 : CPPUNIT_TEST(test_count_sessions);
+ - + - +
- + - + -
+ - ]
451 [ + - + - : 1 : CPPUNIT_TEST(test_count_reservations);
+ - + - +
- + - + -
+ - ]
452 [ + - + - : 2 : CPPUNIT_TEST_SUITE_END();
+ - + - +
- + - ]
453 : : };
454 : :
455 [ - + # # ]: 1 : CPPUNIT_TEST_SUITE_REGISTRATION(GroupSessionDatabaseTest);
456 [ + - + - : 4 : WISP_TEST_MAIN()
+ - + - +
- + - + -
+ - + - +
- + - ]
|