source: trunk/libtransmission/request-list-test.c @ 8050

Last change on this file since 8050 was 7783, checked in by charles, 13 years ago

(trunk libT) fix some code that the newly-added gcc warnings didn't like

File size: 3.1 KB
Line 
1#include <stdio.h>
2#include "transmission.h"
3#include "request-list.h"
4
5#undef VERBOSE
6
7static int test = 0;
8
9#ifdef VERBOSE
10  #define check( A ) \
11    { \
12        ++test; \
13        if( A ){ \
14            fprintf( stderr, "PASS test #%d (%s, %d)\n", test, __FILE__, __LINE__ ); \
15        } else { \
16            fprintf( stderr, "FAIL test #%d (%s, %d)\n", test, __FILE__, __LINE__ ); \
17            return test; \
18        } \
19    }
20#else
21  #define check( A ) \
22    { \
23        ++test; \
24        if( !( A ) ){ \
25            fprintf( stderr, "FAIL test #%d (%s, %d)\n", test, __FILE__, __LINE__ ); \
26            return test; \
27        } \
28    }
29#endif
30
31static int
32testFoo( void )
33{
34    tr_bool success;
35    struct request_list list = REQUEST_LIST_INIT;
36    struct peer_request a, b, c, tmp;
37
38    a.index = a.offset = a.length = 10;
39    b.index = b.offset = b.length = 20;
40    c.index = c.offset = c.length = 30;
41
42    check( list.len == 0 );
43
44    reqListAppend( &list, &a );
45    reqListAppend( &list, &b );
46    reqListAppend( &list, &c );
47
48    check( list.len == 3 );
49    check( list.fifo[0].index == 10 );
50    check( list.fifo[1].index == 20 );
51    check( list.fifo[2].index == 30 );
52    check( reqListHas( &list, &a ) );
53    check( reqListHas( &list, &b ) );
54    check( reqListHas( &list, &c ) );
55
56    success = reqListRemove( &list, &b );
57    check( success );
58    check( list.len == 2 );
59    check( list.fifo[0].index == 10 );
60    check( list.fifo[1].index == 30 );
61    check( reqListHas( &list, &a ) );
62    check( !reqListHas( &list, &b ) );
63    check( reqListHas( &list, &c ) );
64
65    success = reqListPop( &list, &tmp );
66    check( success );
67    check( list.len == 1 );
68    check( tmp.index == 10 );
69    check( list.fifo[0].index == 30 );
70    check( !reqListHas( &list, &a ) );
71    check( !reqListHas( &list, &b ) );
72    check( reqListHas( &list, &c ) );
73
74    success = reqListPop( &list, &tmp );
75    check( success );
76    check( list.len == 0 );
77    check( tmp.index == 30 );
78    check( !reqListHas( &list, &a ) );
79    check( !reqListHas( &list, &b ) );
80    check( !reqListHas( &list, &c ) );
81
82    success = reqListPop( &list, &tmp );
83    check( !success );
84
85    reqListAppend( &list, &a );
86    reqListAppend( &list, &b );
87    reqListAppend( &list, &c );
88
89    /* remove from middle, front, end */
90
91    success = reqListRemove( &list, &b );
92    check( success );
93    check( list.len == 2 );
94    check( reqListHas( &list, &a ) );
95    check( !reqListHas( &list, &b ) );
96    check( reqListHas( &list, &c ) );
97
98    success = reqListRemove( &list, &c );
99    check( success );
100    check( list.len == 1 );
101    check( reqListHas( &list, &a ) );
102    check( !reqListHas( &list, &b ) );
103    check( !reqListHas( &list, &c ) );
104
105    success = reqListRemove( &list, &c );
106    check( !success );
107    check( list.len == 1 );
108
109    success = reqListRemove( &list, &a );
110    check( success );
111    check( list.len == 0 );
112    check( !reqListHas( &list, &a ) );
113    check( !reqListHas( &list, &b ) );
114    check( !reqListHas( &list, &c ) );
115
116    reqListClear( &list );
117    return 0;
118}
119
120int
121main( void )
122{
123    int i;
124
125    if(( i = testFoo( )))
126        return i;
127
128    return 0;
129}
130
Note: See TracBrowser for help on using the repository browser.