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

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

(trunk libT) forgot to "svn add" request-list-test.c before committing...

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