Develop and Download Open Source Software

Browse CVS Repository

Contents of /xoonips/AL/test/test_commonal.cc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.13 - (show annotations) (download) (as text)
Tue Nov 30 06:43:34 2004 UTC (19 years, 4 months ago) by youi
Branch: MAIN
CVS Tags: mv_to_sourceforge_20050217, AL_PORTING, MergePnt_20051116, REL20051226, XOONIPS_RC1, REL20060323, tag20060615, tag20070307current, tag20061115, MergePnt_20051220, tag20061130, merge_to_20060605, tag20070307, REL20060213, RELENG_2_0_0a_RELEASE, RELEASE_1_0_0, RELEASE_1_0_1, demo20050128, tag20060622, merge_to_20060411, HEAD
Branch point for: XOONIPS_STABLE_32, XOONIPS_STABLE, XOONIPS_STABLE_3, XOONIPS_STABLE_2
Changes since 1.12: +7 -2 lines
File MIME type: text/x-c++src
createSessionの引数を減らす.

1 /*
2 *
3 * commonal.cc?????鴻??
4 *
5 * gcc -o test_commonal test_commonal.cc common.cc ../criteria.cc ../account.cc ../group.cc ../session.cc ../commonal.cc ../common.cc -lmysqlclient -I/usr/include/mysql/ -lstdc++
6 *
7 * $Revision: 1.12 $
8 * $Log: test_commonal.cc,v $
9 * Revision 1.12 2004/11/30 06:36:26 youi
10 * isGroupAdmin?????鴻????菴遵??.
11 * ?<?潟???惹??篏?膤祉?????鴻????菴遵??.
12 * ?????鴻??????????違??茵?腦?????????????????????????.
13 *
14 * Revision 1.11 2004/11/27 09:29:38 youi
15 * getGroups?????鴻????菴遵??.
16 *
17 * Revision 1.10 2004/11/27 06:26:22 youi
18 * ???若?帥???若?劫?????????祉???ゃ?????鴻????菴遵??.
19 * getAccountCount?????鴻????菴遵??.
20 * insertGroup, updateGroup, deleteGroup, getGroup?????鴻????菴遵??.
21 *
22 * Revision 1.9 2004/11/27 01:07:01 youi
23 * getAccounts??篏帥?c??criteria??imit?????鴻????菴遵??.
24 *
25 * Revision 1.8 2004/11/27 00:37:27 youi
26 * getAccounts?????鴻????菴遵??.
27 *
28 * Revision 1.7 2004/11/26 09:45:01 youi
29 * *** empty log message ***
30 *
31 * Revision 1.6 2004/11/26 07:58:24 youi
32 * ???鴻??????????紊???
33 *
34 * Revision 1.5 2004/11/26 07:04:31 youi
35 * deleteAccount?????鴻????1?よ申??.
36 *
37 * Revision 1.4 2004/11/26 04:52:22 youi
38 * isValidSessionID?????鴻????菴遵??.
39 *
40 * Revision 1.3 2004/11/25 12:16:21 youi
41 * getUid?????鴻????????菴遵??????.
42 *
43 * Revision 1.2 2004/11/25 11:14:29 youi
44 * getLastErrorString/setLastErrorString?????鴻????菴遵??.
45 *
46 * Revision 1.1 2004/11/25 08:56:13 youi
47 * initial version
48 *
49 *
50 */
51 #include <time.h>
52 #include <stdio.h>
53 #include <unistd.h>
54 #include <string.h>
55
56 #include "../session.h"
57 #include "../common.h"
58 #include "../commonal.h"
59 #include "common.h"
60
61 #define TEST( x ) test( x, #x )
62
63 // 筝?????????group????????若???若?帥???祉????????
64 void fillGroup( int no, group_t* g )
65 {
66 char buf[ 1024 ];
67 snprintf( buf, 1024, "MyGroup No.%d", no );
68 g -> setGname( buf );
69
70 snprintf( buf, 1024, "Description of MyGroup No.%d", no );
71 g -> setDesc( buf );
72 }
73
74 // 筝?????????account????????若???若?帥???祉????????
75 void fillAccount( int no, account_t* a )
76 {
77 char buf[ 1024 ];
78
79 snprintf( buf, 1023, "My Address %d", no );
80 a -> setAddress( buf );
81
82 snprintf( buf, 1023, "My Institute %d", no );
83 a -> setInstitute( buf );
84
85 snprintf( buf, 1023, "My Telephone %d", no );
86 a -> setTel( buf );
87
88 snprintf( buf, 1023, "My Organization %d", no );
89 a -> setOrganization( buf );
90
91 snprintf( buf, 1023, "My Country %d", no );
92 a -> setCountry( buf );
93
94 snprintf( buf, 1023, "My Zipcode %d", no );
95 a -> setZipcode( buf );
96
97 snprintf( buf, 1023, "My Fax number %d", no );
98 a -> setFax( buf );
99
100 snprintf( buf, 1023, "My BaseURL %d", no );
101 a -> setBaseURL( buf );
102
103 snprintf( buf, 1023, "My Uname %d", no );
104 a -> setUname( buf );
105
106 snprintf( buf, 1023, "My Name %d", no );
107 a -> setName( buf );
108
109 snprintf( buf, 1023, "My Email address %d", no );
110 a -> setEmail( buf );
111
112 snprintf( buf, 1023, "My URL %d", no );
113 a -> setURL( buf );
114
115 snprintf( buf, 1023, "pass%d", no );
116 a -> setPass( buf );
117
118 a -> setTimezoneOffset( no );
119 }
120
121 void isGroupAdminTest( )
122 {
123 account_t ac;
124 group_t grp;
125 criteria_t c;
126 userid_t uid;
127 groupid_t* gids;
128 int gidsLen;
129 sessionid_t sid;
130
131 TEST( initializeDB( "localhost", "", "", "aga_xoops", "x" ) == RES_OK );
132 TEST( loginUser( "youi", "hogehoge", &sid ) == RES_OK );
133
134 //?????若???≪?????潟?????違???若?????若?帥???ゃ?潟?泣?若??
135 fillAccount( 345, &ac );
136 fillGroup( 20, &grp );
137 if( TEST( insertAccount( sid, &ac ) == RES_OK )
138 && TEST( insertGroup( sid, &grp ) == RES_OK ) ){
139 c.clearAll( );
140 c.setLimit( 0, 1 );
141 c.addOrderBy( new orderby( "gid", orderby::DESC ) );
142 if( TEST( dumpGids( sid, &c, &gids, &gidsLen ) == RES_OK ) ){
143 TEST( getUid( ac.getUname( ), &uid ) == RES_OK );
144 TEST( insertMember( sid, gids[ 0 ], uid, false ) == RES_OK );
145 TEST( isGroupAdmin( sid, gids[ 0 ], uid ) == false );
146 TEST( deleteMember( sid, gids[ 0 ], uid ) == RES_OK );
147 TEST( insertMember( sid, gids[ 0 ], uid, true ) == RES_OK );
148 TEST( isGroupAdmin( sid, gids[ 0 ], uid ) == true );
149 TEST( deleteMember( sid, gids[ 0 ], uid ) == RES_OK );
150 TEST( isGroupAdmin( sid, gids[ 0 ], uid ) == false );
151
152 deleteGroup( sid, gids[ 0 ] );
153 deleteAccount( sid, uid );
154 freeResult( gids );
155 }
156 }
157
158 logoutUser( sid );
159 }
160
161 void main( void )
162 {
163
164 isGroupAdminTest( );
165
166 //LastErrorString?????鴻??
167 TEST( strcmp( getLastErrorString( ), "" ) == 0 );
168 setLastErrorString( "no such user" );
169 TEST( strcmp( getLastErrorString( ), "no such user" ) == 0 );
170 setLastErrorString( "no such session" );
171 TEST( strcmp( getLastErrorString( ), "no such session" ) == 0 );
172
173 //DB???????????茵?????????????/span>
174 {
175 int len;
176 criteria_t cri;
177 const session_t* psession;
178 groupid_t gid;
179 group_t group;
180 const group_t* pgroup;
181 const account_t* getacc;
182 userid_t *puid;
183 groupid_t *pgid;
184 sessionid_t sid;
185 userid_t uid;
186
187 TEST( isActivated( sid, uid ) == false );
188 TEST( activate( sid, uid, false ) == RES_DB_NOT_INITIALIZED );
189 TEST( getAccountCount( sid ) == 0 );
190 TEST( deleteAccount( sid, uid ) == RES_DB_NOT_INITIALIZED );
191 TEST( getAccount( sid, uid, &getacc ) == RES_DB_NOT_INITIALIZED );
192 TEST( getAccounts( sid, &uid, 1, &cri, &getacc, &len ) == RES_DB_NOT_INITIALIZED );
193 TEST( insertAccount( sid, getacc ) == RES_DB_NOT_INITIALIZED );
194 TEST( updateAccount( sid, getacc ) == RES_DB_NOT_INITIALIZED );
195 TEST( dumpUids( sid, &cri, &puid, &len ) == RES_DB_NOT_INITIALIZED );
196 TEST( getGroupCount( sid ) == 0 );
197 TEST( getGroupsByUid( sid, uid, &cri, &pgid, &len ) == RES_DB_NOT_INITIALIZED );
198 TEST( isGroupAdmin( sid, gid, uid ) == RES_DB_NOT_INITIALIZED );
199 TEST( dumpGids( sid, &cri, &pgid, &len ) == RES_DB_NOT_INITIALIZED );
200 TEST( dumpGroupAdmins( sid, gid, &cri, &puid, &len ) == RES_DB_NOT_INITIALIZED );
201 TEST( deleteMember( sid, gid, uid ) == RES_DB_NOT_INITIALIZED );
202 TEST( insertMember( sid, gid, uid, false ) == RES_DB_NOT_INITIALIZED );
203 TEST( getMembers( sid, gid, &cri, &puid, &len ) == RES_DB_NOT_INITIALIZED );
204 TEST( deleteGroup( sid, gid ) == RES_DB_NOT_INITIALIZED );
205 TEST( insertGroup( sid, &group ) == RES_DB_NOT_INITIALIZED );
206 TEST( updateGroup( sid, &group ) == RES_DB_NOT_INITIALIZED );
207 TEST( getGroup( sid, gid, &pgroup ) == RES_DB_NOT_INITIALIZED );
208 TEST( getGroups( sid, &gid, len, &cri, &pgroup, &len ) == RES_DB_NOT_INITIALIZED );
209 TEST( isModerator( sid, uid ) == RES_DB_NOT_INITIALIZED );
210 TEST( getUid( "", &uid ) == RES_DB_NOT_INITIALIZED );
211 TEST( loginUser( "", "", &sid ) == RES_DB_NOT_INITIALIZED );
212 TEST( createSession( "", uid, &sid ) == RES_DB_NOT_INITIALIZED );
213 TEST( getSession( sid, &psession ) == RES_DB_NOT_INITIALIZED );
214 TEST( isValidSessionID( sid ) == false );
215 }
216 TEST( initializeDB( "localhost", "", "", "aga_xoops", "x" ) == RES_OK );
217
218 {
219 sessionid_t sid;
220 userid_t uid;
221
222 // 筝?罩c???祉???激?с?潟???????????????
223 TEST( isValidSessionID( sid ) == false );
224 TEST( activate( sid, uid, false ) == RES_NO_SUCH_SESSION );
225 TEST( isActivated( sid, uid ) == false );
226 // sid??筝?罩c?????≪?????潟???違??幻??
227 TEST( getAccountCount( sid ) == 0 );
228 }
229
230 {
231 sessionid_t sid;
232 userid_t uid;
233
234 // 筝?罩c?????鴻???若????????????鴻???若????????????違?ゃ?喝?????????鴻??
235 TEST( loginUser( "youi", "fugafuga", &sid ) == RES_LOGIN_FAILURE );
236 TEST( loginUser( "youi", "hogehoge", &sid ) == RES_OK );
237
238 //?祉???激?с?潟???綵??с?????с????/span>
239 TEST( isValidSessionID( sid ) == true );
240
241 // 絖?????????user="hogehoge" ??????????????????????????鴻??
242 TEST( getUid( "hogehoge", &uid ) == RES_NO_SUCH_USER );
243 TEST( activate( sid, uid, false ) == RES_NO_SUCH_USER );
244 TEST( isActivated( sid, uid ) == false );
245
246 logoutUser( sid );
247 }
248
249 {
250 sessionid_t sid;
251 userid_t uid;
252 const account_t* getacc;
253
254 TEST( loginUser( "youi", "hogehoge", &sid ) == RES_OK );
255
256 // ???鴻????紮??????≪?????潟???違??荐???/span>
257 int nAccountBase = getAccountCount( sid );
258
259 //?≪?????潟????篏????鴻??
260 account ac;
261 ac.setAddress("羆??怨?坂???-25-14");
262 ac.setInstitute("膺若?激?鴻???????篌?腓?quot;);
263 ac.setTel("03-3638-3081");
264 ac.setOrganization("????");
265 ac.setCountry("?ユ??quot;);
266 ac.setZipcode("136-0071");
267 ac.setFax("03-3638-3083");
268 ac.setBaseURL("http://10.12.60.61/~youi/");
269 ac.setUname("youi2");
270 ac.setName("YUICHIRO TANIGUCHI2");
271 ac.setEmail("yuchit@tsubasa.co.jp");
272 ac.setURL("http://www.tsubasa.co.jp/");
273 ac.setPass("hogehoge");
274 ac.setTimezoneOffset( 9.0 );
275 if( TEST( insertAccount( sid, &ac ) == RES_OK ) ){
276 //insertAccount????????????鐚?Account?違??鐚??ゅ???????????腆肴?
277 TEST( getAccountCount( sid ) == nAccountBase + 1 );
278
279 // user="youi2" ????????activate/deactivate??茵?????鐚?
280 // ?????倶??????緇??с???????????鴻??
281 TEST( getUid( "youi2", &uid ) == RES_OK );
282 printf( "youi2's uid is %d\n", uid );
283 TEST( isActivated( sid, uid ) == false );
284 TEST( activate( sid, uid, true ) == RES_OK );
285 TEST( isActivated( sid, uid ) == true );
286 TEST( activate( sid, uid, false ) == RES_OK );
287 TEST( isActivated( sid, uid ) == false );
288
289 //insert???????若?吟??ID????緇?
290 // ??絎鴻???吾????????pdate?????帥??鐚?/span>
291 if( TEST( getUid( "youi2", &uid ) == RES_OK ) ){
292 if( TEST( getAccount( sid, uid, &getacc ) == RES_OK ) ){
293 // insert????account??et????account????絎鴻??罸?莠?
294 TEST( strcmp( ac.getAddress( ), getacc->getAddress( ) ) == 0 );
295 TEST( strcmp( ac.getInstitute(), getacc->getInstitute() ) == 0 );
296 TEST( strcmp( ac.getTel(), getacc->getTel() ) == 0 );
297 TEST( strcmp( ac.getOrganization( ), getacc->getOrganization( ) ) == 0 );
298 TEST( strcmp( ac.getCountry(), getacc->getCountry() ) == 0 );
299 TEST( strcmp( ac.getZipcode(), getacc->getZipcode() ) == 0 );
300 TEST( strcmp( ac.getFax(), getacc->getFax() ) == 0 );
301 TEST( strcmp( ac.getBaseURL(), getacc->getBaseURL() ) == 0 );
302 TEST( strcmp( ac.getUname(), getacc->getUname() ) == 0 );
303 TEST( strcmp( ac.getName(), getacc->getName() ) == 0 );
304 TEST( strcmp( ac.getEmail(), getacc->getEmail() ) == 0 );
305 TEST( strcmp( ac.getURL(), getacc->getURL() ) == 0 );
306 TEST( strcmp( ac.getPass(), getacc->getPass() ) == 0 );
307 TEST( ac.getTimezoneOffset( ) == getacc->getTimezoneOffset( ) );
308 freeResult( getacc );
309 }
310
311 account_t ac2;
312 fillAccount( 220, &ac2 );
313 ac.setUID( uid );
314 ac.setAddress( ac2.getAddress( ) );
315 ac.setInstitute( ac2.getInstitute() );
316 ac.setTel( ac2.getTel() );
317 ac.setOrganization( ac2.getOrganization( ) );
318 ac.setCountry( ac2.getCountry() );
319 ac.setZipcode( ac2.getZipcode() );
320 ac.setFax( ac2.getFax() );
321 ac.setBaseURL( ac2.getBaseURL() );
322 ac.setEmail( ac2.getEmail() );
323 ac.setURL( ac2.getURL() );
324 ac.setPass( ac2.getPass() );
325 ac.setTimezoneOffset( ac2.getTimezoneOffset( ) );
326 if( TEST( updateAccount( sid, &ac ) == RES_OK ) ){
327 const account_t* updated;
328 if( TEST( getAccount( sid, uid, &updated ) == RES_OK ) ){
329 // update????account??et????account????絎鴻??罸?莠?
330 TEST( strcmp( updated->getAddress( ), ac.getAddress( ) ) == 0 );
331 TEST( strcmp( updated->getInstitute(), ac.getInstitute() ) == 0 );
332 TEST( strcmp( updated->getTel(), ac.getTel() ) == 0 );
333 TEST( strcmp( updated->getOrganization( ), ac.getOrganization( ) ) == 0 );
334 TEST( strcmp( updated->getCountry(), ac.getCountry() ) == 0 );
335 TEST( strcmp( updated->getZipcode(), ac.getZipcode() ) == 0 );
336 TEST( strcmp( updated->getFax(), ac.getFax() ) == 0 );
337 TEST( strcmp( updated->getBaseURL(), ac.getBaseURL() ) == 0 );
338 TEST( strcmp( updated->getUname(), ac.getUname() ) == 0 );
339 TEST( strcmp( updated->getName(), ac.getName() ) == 0 );
340 TEST( strcmp( updated->getEmail(), ac.getEmail() ) == 0 );
341 TEST( strcmp( updated->getURL(), ac.getURL() ) == 0 );
342 TEST( strcmp( updated->getPass(), ac.getPass() ) == 0 );
343 TEST( updated->getTimezoneOffset( ) == ac.getTimezoneOffset( ) );
344 freeResult( updated );
345 }
346 }
347 TEST( deleteAccount( sid, uid ) == RES_OK );
348 }
349 }
350 logoutUser( sid );
351 }
352
353
354
355 //getAccounts?????鴻??
356 {
357 account_t ac[ 4 ];
358 userid_t uids[ 5 ];
359 userid_t* dumpuids;
360 const account_t* accounts;
361 int accountsLen;
362 int dumpuidsLen;
363 criteria_t c;
364 sessionid_t sid;
365
366 TEST( loginUser( "youi", "hogehoge", &sid ) == RES_OK );
367
368 for( int i = 0; i < 4; i++ ) fillAccount( i, &ac[ i ] );
369 for( int i = 0; i < 4; i++ ) insertAccount( sid, &ac[ i ] );
370 for( int i = 0; i < 4; i++ ) getUid( ac[ i ].getUname( ), &uids[ i ] );
371 uids[ 4 ] = 99999999; //絖?????????UID??羞激????
372
373 c.clearAll( );
374 c.addOrderBy( new orderby( "uid", orderby::ASC ) );
375 TEST( dumpUids( sid, &c, &dumpuids, &dumpuidsLen ) == RES_OK );
376 TEST( dumpuidsLen == 4 );
377 for( int i = 0; i < 4; i++ ){
378 TEST( dumpuids[ i ] == uids[ i ] );
379 }
380
381 //????
382 c.clearAll( );
383 c.addOrderBy( new orderby( "uname", orderby::ASC ) );
384 if( TEST( getAccounts( sid, uids, 5, &c, &accounts, &accountsLen ) == RES_OK ) ){
385 if( TEST( accountsLen == 4 ) ){
386 for( int i = 0; i < 4; i++ ){
387 TEST( strcmp( accounts[ i ].getUname( ), ac[ i ].getUname( ) ) == 0 );
388 }
389 }
390 freeResult( accounts );
391 }
392
393 //????
394 c.clearAll( );
395 c.addOrderBy( new orderby( "uname", orderby::DESC ) );
396 if( TEST( getAccounts( sid, uids, 5, &c, &accounts, &accountsLen ) == RES_OK ) ){
397 TEST( accountsLen == 4 );
398 for( int i = 0; i < 4; i++ ){
399 TEST( strcmp( accounts[ i ].getUname( ), ac[ 3 - i ].getUname( ) ) == 0 );
400 }
401 freeResult( accounts );
402 }
403
404 //criteria::clearAll, Limit?????鴻??
405 c.clearAll( );
406 c.setLimit( 1, 2 );
407 c.addOrderBy( new orderby( "uname", orderby::ASC ) );
408 if( TEST( getAccounts( sid, uids, 5, &c, &accounts, &accountsLen ) == RES_OK ) ){
409 TEST( accountsLen == 2 );
410 //?脂?蚊?????≪?????潟??????ょ???筝??ょ????accounts???ャ??????
411 TEST( strcmp( accounts[ 0 ].getUname( ), ac[ 1 ].getUname( ) ) == 0 );
412 TEST( strcmp( accounts[ 1 ].getUname( ), ac[ 2 ].getUname( ) ) == 0 );
413 freeResult( accounts );
414 }
415
416 for( int i = 0; i < 4; i++ ) deleteAccount( sid, uids[ i ] );
417
418 logoutUser( sid );
419 }
420
421
422 //?違???若???????鴻??
423 {
424 //?違???若???????
425 criteria c;
426 group_t g;
427 groupid_t *gids;
428 int gidsLen = 0;
429 int gidsLenBase = 0; //???鴻???????違???若???????/span>
430 sessionid_t sid;
431
432 TEST( loginUser( "youi", "hogehoge", &sid ) == RES_OK );
433
434 gids = 0;
435 if( dumpGids( sid, &c, &gids, &gidsLenBase ) == RES_OK ){
436 freeResult( gids );
437 }
438
439 g.setGname( "???ゃ?違???若??" );
440 g.setDesc( "???鴻????????????????ゃ?違???若???с??鐚??祉???祉???祉???祉???祉???祉???祉???祉???祉???祉???祉??" );
441 TEST( insertGroup( sid, &g ) == RES_OK );
442
443 if( TEST( dumpGids( sid, &c, &gids, &gidsLen ) == RES_OK ) ){
444 TEST( gidsLen == gidsLenBase + 1 );
445
446 //?違???若????隈??
447 for( int i = 0; i < gidsLen; i++ ){
448 const group_t* pg;
449
450 if( TEST( getGroup( sid, gids[ i ], &pg ) == RES_OK )
451 && strcmp( g.getGname( ), pg -> getGname( ) ) == 0 ){
452 g.setGID( pg -> getGID( ) );
453 freeResult( pg );
454 g.setGname( "???ゃ?違???若??????????筝??吾??膩??????障????" );
455 g.setDesc( "???ゃ?違???若?????????筝??吾??膩??????障????" );
456 TEST( updateGroup( sid, &g ) == RES_OK );
457 if( TEST( getGroup( sid, gids[ i ], &pg ) == RES_OK ) ){
458 TEST( strcmp( g.getGname( ), pg -> getGname( ) ) == 0 );
459 TEST( strcmp( g.getDesc( ), pg -> getDesc( ) ) == 0 );
460 freeResult( pg );
461 }
462 }
463 }
464
465 //?違???若????????/span>
466 for( int i = 0; i < gidsLen; i++ ){
467 const group_t* pg;
468 if( TEST( getGroup( sid, gids[ i ], &pg ) == RES_OK ) ){
469 if( strcmp( g.getGname( ), pg -> getGname( ) ) == 0 ){
470 TEST( deleteGroup( sid, gids[ i ] ) == RES_OK );
471 }
472 freeResult( pg );
473 }
474 }
475 freeResult( gids );
476 }
477 if( TEST( dumpGids( sid, &c, &gids, &gidsLen ) == RES_OK ) ){
478 freeResult( gids );
479 }
480 TEST( gidsLen == gidsLenBase );
481 }
482
483 //getGroups?????鴻??
484 {
485 group_t grp[ 4 ];
486 groupid_t* gids;
487 const group_t* groups;
488 int groupsLen;
489 int gidsLen;
490 criteria_t c;
491 sessionid_t sid;
492
493 TEST( loginUser( "youi", "hogehoge", &sid ) == RES_OK );
494
495 //getGroupCount?????鴻??
496 //筝?罩c??ID????0
497 for( sessionid_t i = 9999999 ; ; i++ ){
498 if( !isValidSessionID( i ) ){
499 TEST( getGroupCount( i ) == 0 );
500 break;
501 }
502 }
503 int gidsLenBase = getGroupCount( sid );
504
505 //?????若???違???若?????若?帥???ゃ?潟?泣?若??
506 for( int i = 0; i < 4; i++ ) fillGroup( i+10, &grp[ i ] );
507 for( int i = 0; i < 4; i++ ) insertGroup( sid, &grp[ i ] );
508
509 c.clearAll( );//???違???若????D????緇?????
510 c.addOrderBy( new orderby( "gid", orderby::ASC ) );
511 TEST( dumpGids( sid, &c, &gids, &gidsLen ) == RES_OK );
512 TEST( gidsLen == gidsLenBase + 4 );
513
514 TEST( getGroupCount( sid ) == gidsLenBase + 4 ); //罩e幻??ID?????違???若?????違??菴???
515
516 //????
517 c.clearAll( );
518 c.addOrderBy( new orderby( "gname", orderby::ASC ) );
519 if( TEST( getGroups( sid, gids, 5, &c, &groups, &groupsLen ) == RES_OK ) ){
520 if( TEST( groupsLen == 4 ) ){
521 for( int i = 0; i < 4; i++ ){
522 TEST( strcmp( groups[ i ].getGname( ), grp[ i ].getGname( ) ) == 0 );
523 }
524 }
525 freeResult( groups );
526 }
527
528 //????
529 c.clearAll( );
530 c.addOrderBy( new orderby( "gname", orderby::DESC ) );
531 if( TEST( getGroups( sid, gids, 5, &c, &groups, &groupsLen ) == RES_OK ) ){
532 TEST( groupsLen == 4 );
533 for( int i = 0; i < 4; i++ ){
534 TEST( strcmp( groups[ i ].getGname( ), grp[ 3 - i ].getGname( ) ) == 0 );
535 }
536 freeResult( groups );
537 }
538
539 //criteria::clearAll, Limit?????鴻??
540 c.clearAll( );
541 c.setLimit( 1, 2 );
542 c.addOrderBy( new orderby( "gid", orderby::ASC ) );
543 if( TEST( getGroups( sid, gids, 5, &c, &groups, &groupsLen ) == RES_OK ) ){
544 TEST( groupsLen == 2 );
545 //?脂?蚊?????違???若??????ょ???筝??ょ????groups???ャ??????
546 TEST( strcmp( groups[ 0 ].getGname( ), grp[ 1 ].getGname( ) ) == 0 );
547 TEST( strcmp( groups[ 1 ].getGname( ), grp[ 2 ].getGname( ) ) == 0 );
548 freeResult( groups );
549 }
550 for( int i = 0; i < 4; i++ ) deleteGroup( sid, gids[ i ] );
551 freeResult( gids );
552
553 logoutUser( sid );
554 }
555 {//?<?潟???若??申???糸???ゃ?紫???????算??/span>
556 group_t grp;
557 groupid_t* gids;
558 int gidsLen;
559 const userid_t* uids;
560 sessionid_t sid;
561 criteria_t c;
562
563 TEST( loginUser( "youi", "hogehoge", &sid ) == RES_OK );
564
565 fillGroup( 9999, &grp );
566 insertGroup( sid, &grp );
567
568 c.clearAll( );
569 c.setLimit( 0, 1 );
570 c.addOrderBy( new orderby( "gid", orderby::DESC ) );
571 if( dumpGids( sid, &c, &gids, &gidsLen ) == RES_OK ){
572 account_t ac;
573 userid_t* dumpuids;
574 userid_t uid;
575 const account_t* accounts;
576 int accountsLen;
577 int dumpuidsLen;
578
579 fillAccount( 100, &ac );
580 insertAccount( sid, &ac );
581 getUid( ac.getUname( ), &uid );
582
583 //?違???若?????<?潟???取申??
584 TEST( insertMember( sid, gids[ 0 ], uid, false ) == RES_OK );
585 //?違???若???????<?潟???弱????/span>
586 TEST( deleteMember( sid, gids[ 0 ], uid ) == RES_OK );
587
588 //絖??????????<?潟???若??菴遵???糸????/span>
589 deleteAccount( sid, uid );
590 TEST( insertMember( sid, gids[ 0 ], uid, false ) == RES_NO_SUCH_USER );
591 TEST( deleteMember( sid, gids[ 0 ], uid ) == RES_NO_SUCH_USER );
592
593 //絖??????????違???若????申???糸????/span>
594 insertAccount( sid, &ac );
595 getUid( ac.getUname( ), &uid );
596 TEST( deleteGroup( sid, gids[ 0 ] ) == RES_OK );
597 TEST( insertMember( sid, gids[ 0 ], uid, false ) == RES_NO_SUCH_GROUP );
598 TEST( deleteMember( sid, gids[ 0 ], uid ) == RES_NO_SUCH_GROUP );
599 deleteAccount( sid, uid );
600 }
601 logoutUser( sid );
602 }
603
604 //getMembers
605 {
606 account_t ac[ 4 ];
607 userid_t uids[ 4 ];
608 const account_t* accounts;
609 int accountsLen;
610 int uidsLen;
611
612 group_t grp;
613 groupid_t* gids;
614 const group_t* groups;
615 int groupsLen;
616 int gidsLen;
617 sessionid_t sid;
618 criteria_t c;
619
620 TEST( loginUser( "youi", "hogehoge", &sid ) == RES_OK );
621
622 fillGroup( 9999, &grp ); //???鴻?????違???若??篏???
623 TEST( insertGroup( sid, &grp ) == RES_OK );
624
625 //???鴻?????≪?????潟???脂??/span>
626 for( int i = 0; i < 4; i++ ) fillAccount( i, &ac[ i ] );
627 for( int i = 0; i < 4; i++ ) TEST( insertAccount( sid, &ac[ i ] ) == RES_OK );
628 for( int i = 0; i < 4; i++ ) TEST( getUid( ac[ i ].getUname( ), &uids[ i ] ) == RES_OK );
629
630 c.clearAll( );
631 c.setLimit( 0, 1 );
632 c.addOrderBy( new orderby( "gid", orderby::DESC ) );
633 //?脂?蚊?????違???若????id????緇?
634 if( TEST( dumpGids( sid, &c, &gids, &gidsLen ) == RES_OK ) ){
635 userid_t* memberUids = 0;
636 int memberUidsLen = 0;
637
638 //???鴻????紮?
639 for( int i = 0; i < 4; i++ ) TEST( insertMember( sid, gids[ 0 ], uids[ i ], false ) == RES_OK );
640 c.clearAll( );
641 TEST( getMembers( sid, gids[ 0 ], &c, &memberUids, &memberUidsLen ) == RES_OK );
642 TEST( memberUidsLen == 4 );
643 for( int i = 0; i < memberUidsLen; i++ ) TEST( deleteMember( sid, gids[ 0 ], memberUids[ i ] ) == RES_OK );
644 freeResult( memberUids );
645
646 TEST( getMembers( sid, gids[ 0 ], &c, &memberUids, &memberUidsLen ) == RES_OK );
647 TEST( memberUidsLen == 0 );
648 freeResult( memberUids );
649 }
650 for( int i = 0; i < 4; i++ ) deleteAccount( sid, uids[ i ] );
651 deleteGroup( sid, gids[ 0 ] );
652
653 logoutUser( sid );
654 }
655
656 //getGroupsByUid
657 {
658 account_t ac[ 4 ];
659 const account_t* accounts;
660 const group_t* groups;
661 criteria_t c;
662 group_t grp[ 4 ];
663 groupid_t* gids;
664 int accountsLen;
665 int gidsLen;
666 int groupsLen;
667 int uidsLen;
668 sessionid_t sid;
669 userid_t uids[ 4 ];
670
671 TEST( loginUser( "youi", "hogehoge", &sid ) == RES_OK );
672
673
674 //???鴻?????≪?????潟???脂??/span>
675 //ac[0] .... 1?ゃ???違???若????????????蚊??/span>
676 //ac[1] .... 1?ゃ???違???若??????????蚊??/span>
677 //ac[2] .... 2?ゃ???違???若??????????蚊??/span>
678 for( int i = 0; i < 4; i++ ) fillAccount( i, &ac[ i ] );
679 for( int i = 0; i < 4; i++ ) TEST( insertAccount( sid, &ac[ i ] ) == RES_OK );
680 for( int i = 0; i < 4; i++ ) TEST( getUid( ac[ i ].getUname( ), &uids[ i ] ) == RES_OK );
681
682 //?????若???違???若?????若?帥???ゃ?潟?泣?若??
683 for( int i = 0; i < 4; i++ ) fillGroup( i+20, &grp[ i ] );
684 for( int i = 0; i < 4; i++ ) insertGroup( sid, &grp[ i ] );
685
686 c.clearAll( );
687 c.addOrderBy( new orderby( "gid", orderby::DESC ) );
688 //?脂?蚊?????違???若????id????緇?
689 if( TEST( dumpGids( sid, &c, &gids, &gidsLen ) == RES_OK ) ){
690 userid_t* belongToGids = 0;
691 int belongToGidsLen = 0;
692
693 insertMember( sid, gids[ 0 ], uids[ 1 ], false );
694 insertMember( sid, gids[ 0 ], uids[ 2 ], false );
695 insertMember( sid, gids[ 1 ], uids[ 2 ], false );
696
697 //???鴻????紮?
698 c.clearAll( );
699 belongToGidsLen = 10;
700 if( TEST( getGroupsByUid( sid, uids[ 0 ], &c, &belongToGids, &belongToGidsLen ) == RES_OK ) ){
701 TEST( belongToGidsLen == 0 );
702 freeResult( belongToGids );
703 }
704
705 belongToGidsLen = 10;
706 if( TEST( getGroupsByUid( sid, uids[ 1 ], &c, &belongToGids, &belongToGidsLen ) == RES_OK ) ){
707 TEST( belongToGidsLen == 1 );
708 TEST( belongToGids[ 0 ] == gids[ 0 ] );
709 freeResult( belongToGids );
710 }
711
712 belongToGidsLen = 10;
713 c.clearAll( );
714 c.addOrderBy( new orderby( "gid", orderby::DESC ) );
715 if( TEST( getGroupsByUid( sid, uids[ 2 ], &c, &belongToGids, &belongToGidsLen ) == RES_OK ) ){
716 TEST( belongToGidsLen == 2 );
717 TEST( belongToGids[ 0 ] == gids[ 0 ] );
718 TEST( belongToGids[ 1 ] == gids[ 1 ] );
719 freeResult( belongToGids );
720 }
721
722 deleteMember( sid, gids[ 0 ], uids[ 1 ] );
723 deleteMember( sid, gids[ 0 ], uids[ 2 ] );
724 deleteMember( sid, gids[ 1 ], uids[ 2 ] );
725 for( int i = 0; i < 4; i++ ) deleteGroup( sid, gids[ i ] );
726 for( int i = 0; i < 4; i++ ) deleteAccount( sid, uids[ i ] );
727 freeResult( gids );
728 }
729 logoutUser( sid );
730 }
731
732
733 }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26