comparison test/automated/rwops/rwops.c @ 3737:9689eaa6d2e3 gsoc2009_unit_tests

Made rwops tests a bit more complete.
author Edgar Simo <bobbens@gmail.com>
date Sun, 02 Aug 2009 09:37:14 +0000
parents d8772964e402
children e451d5d288e9
comparison
equal deleted inserted replaced
3736:78f544eded7b 3737:9689eaa6d2e3
9 9
10 #include "SDL.h" 10 #include "SDL.h"
11 #include "SDL_at.h" 11 #include "SDL_at.h"
12 12
13 13
14 #define RWOPS_READ "rwops/read"
15 #define RWOPS_WRITE "rwops/write"
16
14 static const char hello_world[] = "Hello World!"; 17 static const char hello_world[] = "Hello World!";
18
19
20 /**
21 * @brief Makes sure parameters work properly.
22 */
23 static void rwops_testParam (void)
24 {
25 SDL_RWops *rwops;
26
27 /* Begin testcase. */
28 SDL_ATbegin( "RWops Parameters" );
29
30 /* These should all fail. */
31 rwops = SDL_RWFromFile(NULL, NULL);
32 if (SDL_ATassert( "SDL_RWFromFile(NULL, NULL) worked", rwops == NULL ))
33 return;
34 rwops = SDL_RWFromFile(NULL, "ab+");
35 if (SDL_ATassert( "SDL_RWFromFile(NULL, \"ab+\") worked", rwops == NULL ))
36 return;
37 rwops = SDL_RWFromFile(NULL, "sldfkjsldkfj");
38 if (SDL_ATassert( "SDL_RWFromFile(NULL, \"sldfkjsldkfj\") worked", rwops == NULL ))
39 return;
40 rwops = SDL_RWFromFile("something", "");
41 if (SDL_ATassert( "SDL_RWFromFile(\"something\", \"\") worked", rwops == NULL ))
42 return;
43 rwops = SDL_RWFromFile("something", NULL);
44 if (SDL_ATassert( "SDL_RWFromFile(\"something\", NULL) worked", rwops == NULL ))
45 return;
46
47
48 /* End testcase. */
49 SDL_ATend();
50 }
15 51
16 52
17 /** 53 /**
18 * @brief Does a generic rwops test. 54 * @brief Does a generic rwops test.
19 * 55 *
25 static int rwops_testGeneric( SDL_RWops *rw, int write ) 61 static int rwops_testGeneric( SDL_RWops *rw, int write )
26 { 62 {
27 char buf[sizeof(hello_world)]; 63 char buf[sizeof(hello_world)];
28 int i; 64 int i;
29 65
66 /* Set to start. */
67 i = SDL_RWseek( rw, 0, RW_SEEK_SET );
68 if (SDL_ATvassert( i == 0,
69 "Seeking with SDL_RWseek (RW_SEEK_SET): got %d, expected %d",
70 i, 0 ))
71 return 1;
72
73 /* Test write. */
74 i = SDL_RWwrite( rw, hello_world, sizeof(hello_world)-1, 1 );
30 if (write) { 75 if (write) {
31 /* Test write. */ 76 if (SDL_ATassert( "Writing with SDL_RWwrite (failed to write)", i == 1 ))
32 i = SDL_RWwrite( rw, hello_world, sizeof(hello_world)-1, 1 );
33 if (SDL_ATassert( "Writing with SDL_RWwrite", i == 1 ))
34 return 1; 77 return 1;
35 } 78 }
79 else {
80 if (SDL_ATassert( "Writing with SDL_RWwrite (wrote when shouldn't have)", i <= 0 ))
81 return 1;
82 }
36 83
37 /* Test seek. */ 84 /* Test seek. */
38 i = SDL_RWseek( rw, 6, RW_SEEK_SET ); 85 i = SDL_RWseek( rw, 6, RW_SEEK_SET );
39 if (SDL_ATassert( "Seeking with SDL_RWseek", i == 6 )) 86 if (SDL_ATvassert( i == 6,
40 return 1; 87 "Seeking with SDL_RWseek (RW_SEEK_SET): got %d, expected %d",
88 i, 0 ))
89 return 1;
41 90
42 /* Test seek. */ 91 /* Test seek. */
43 i = SDL_RWseek( rw, 0, RW_SEEK_SET ); 92 i = SDL_RWseek( rw, 0, RW_SEEK_SET );
44 if (SDL_ATassert( "Seeking with SDL_RWseek", i == 0 )) 93 if (SDL_ATvassert( i == 0,
94 "Seeking with SDL_RWseek (RW_SEEK_SET): got %d, expected %d",
95 i, 0 ))
45 return 1; 96 return 1;
46 97
47 /* Test read. */ 98 /* Test read. */
48 i = SDL_RWread( rw, buf, 1, sizeof(hello_world)-1 ); 99 i = SDL_RWread( rw, buf, 1, sizeof(hello_world)-1 );
49 if (i != sizeof(hello_world)-1)
50 printf("%s\n", SDL_GetError());
51 if (SDL_ATassert( "Reading with SDL_RWread", i == sizeof(hello_world)-1 )) 100 if (SDL_ATassert( "Reading with SDL_RWread", i == sizeof(hello_world)-1 ))
52 return 1; 101 return 1;
53 if (SDL_ATassert( "Memory read does not match memory written", 102 if (SDL_ATassert( "Memory read does not match memory written",
54 memcmp( buf, hello_world, sizeof(hello_world)-1 ) == 0 )) 103 memcmp( buf, hello_world, sizeof(hello_world)-1 ) == 0 ))
55 return 1; 104 return 1;
56 105
106 /* More seek tests. */
107 i = SDL_RWseek( rw, -4, RW_SEEK_CUR );
108 if (SDL_ATvassert( i == sizeof(hello_world)-5,
109 "Seeking with SDL_RWseek (RW_SEEK_CUR): got %d, expected %d",
110 i, sizeof(hello_world)-5 ))
111 return 1;
112 i = SDL_RWseek( rw, -1, RW_SEEK_END );
113 if (SDL_ATvassert( i == sizeof(hello_world)-2,
114 "Seeking with SDL_RWseek (RW_SEEK_END): got %d, expected %d",
115 i, sizeof(hello_world)-2 ))
116 return 1;
117
57 return 0; 118 return 0;
58 } 119 }
59 120
60 121
61 /** 122 /**
68 129
69 /* Begin testcase. */ 130 /* Begin testcase. */
70 SDL_ATbegin( "SDL_RWFromMem" ); 131 SDL_ATbegin( "SDL_RWFromMem" );
71 132
72 /* Open. */ 133 /* Open. */
73 rw = SDL_RWFromMem( mem, sizeof(mem) ); 134 rw = SDL_RWFromMem( mem, sizeof(hello_world)-1 );
74 if (SDL_ATassert( "Opening memory with SDL_RWFromMem", rw != NULL )) 135 if (SDL_ATassert( "Opening memory with SDL_RWFromMem", rw != NULL ))
75 return; 136 return;
76 137
77 /* Run generic tests. */ 138 /* Run generic tests. */
78 if (rwops_testGeneric( rw, 1 )) 139 if (rwops_testGeneric( rw, 1 ))
96 157
97 /* Begin testcase. */ 158 /* Begin testcase. */
98 SDL_ATbegin( "SDL_RWFromConstMem" ); 159 SDL_ATbegin( "SDL_RWFromConstMem" );
99 160
100 /* Open. */ 161 /* Open. */
101 rw = SDL_RWFromConstMem( const_mem, sizeof(const_mem) ); 162 rw = SDL_RWFromConstMem( const_mem, sizeof(const_mem)-1 );
102 if (SDL_ATassert( "Opening memory with SDL_RWFromConstMem", rw != NULL )) 163 if (SDL_ATassert( "Opening memory with SDL_RWFromConstMem", rw != NULL ))
103 return; 164 return;
104 165
105 /* Run generic tests. */ 166 /* Run generic tests. */
106 if (rwops_testGeneric( rw, 0 )) 167 if (rwops_testGeneric( rw, 0 ))
118 * @brief Tests opening from memory. 179 * @brief Tests opening from memory.
119 */ 180 */
120 static void rwops_testFile (void) 181 static void rwops_testFile (void)
121 { 182 {
122 SDL_RWops *rw; 183 SDL_RWops *rw;
123 int i;
124 184
125 /* Begin testcase. */ 185 /* Begin testcase. */
126 SDL_ATbegin( "SDL_RWFromFile" ); 186 SDL_ATbegin( "SDL_RWFromFile" );
127 187
128 /* Open. */ 188 /* Read test. */
129 rw = SDL_RWFromFile( "rwops/read", "r" ); 189 rw = SDL_RWFromFile( RWOPS_READ, "r" );
130 if (SDL_ATassert( "Opening memory with SDL_RWFromFile", rw != NULL )) 190 if (SDL_ATassert( "Opening memory with SDL_RWFromFile '"RWOPS_READ"'", rw != NULL ))
131 return; 191 return;
132
133 /* Test writing. */
134 i = SDL_RWwrite( rw, hello_world, sizeof(hello_world), 1 );
135 if (SDL_ATassert( "Writing with SDL_RWwrite", i == 0 ))
136 return;
137
138 /* Run generic tests. */
139 if (rwops_testGeneric( rw, 0 )) 192 if (rwops_testGeneric( rw, 0 ))
140 return; 193 return;
141 194 SDL_FreeRW( rw );
142 /* Close. */ 195
196 /* Write test. */
197 rw = SDL_RWFromFile( RWOPS_WRITE, "w+" );
198 if (SDL_ATassert( "Opening memory with SDL_RWFromFile '"RWOPS_WRITE"'", rw != NULL ))
199 return;
200 if (rwops_testGeneric( rw, 1 ))
201 return;
143 SDL_FreeRW( rw ); 202 SDL_FreeRW( rw );
144 203
145 /* End testcase. */ 204 /* End testcase. */
146 SDL_ATend(); 205 SDL_ATend();
147 } 206 }
157 SDL_RWops *rw; 216 SDL_RWops *rw;
158 217
159 /* Begin testcase. */ 218 /* Begin testcase. */
160 SDL_ATbegin( "SDL_RWFromFP" ); 219 SDL_ATbegin( "SDL_RWFromFP" );
161 220
162 /* Open. */ 221 /* Run read tests. */
163 fp = fopen( "rwops/write", "w+" ); 222 fp = fopen( RWOPS_READ, "r" );
164 if (fp == NULL) { 223 if (SDL_ATassert( "Failed to open file '"RWOPS_READ"'", fp != NULL))
165 SDL_ATprint("Failed to open file rwops/write"); 224 return;
166 SDL_ATend();
167 return;
168 }
169 rw = SDL_RWFromFP( fp, 1 ); 225 rw = SDL_RWFromFP( fp, 1 );
170 if (SDL_ATassert( "Opening memory with SDL_RWFromFP", rw != NULL )) 226 if (SDL_ATassert( "Opening memory with SDL_RWFromFP", rw != NULL ))
171 return; 227 return;
172 228 if (rwops_testGeneric( rw, 0 ))
173 /* Run generic tests. */ 229 return;
230 SDL_FreeRW( rw );
231
232 /* Run write tests. */
233 fp = fopen( RWOPS_WRITE, "w+" );
234 if (SDL_ATassert( "Failed to open file '"RWOPS_WRITE"'", fp != NULL))
235 return;
236 rw = SDL_RWFromFP( fp, 1 );
237 if (SDL_ATassert( "Opening memory with SDL_RWFromFP", rw != NULL ))
238 return;
174 if (rwops_testGeneric( rw, 1 )) 239 if (rwops_testGeneric( rw, 1 ))
175 return; 240 return;
176
177 /* Close. */
178 SDL_FreeRW( rw ); 241 SDL_FreeRW( rw );
179 242
180 /* End testcase. */ 243 /* End testcase. */
181 SDL_ATend(); 244 SDL_ATend();
182 #endif /* HAVE_STDIO_H */ 245 #endif /* HAVE_STDIO_H */
191 (void) argc; 254 (void) argc;
192 (void) argv; 255 (void) argv;
193 256
194 SDL_ATinit( "SDL_RWops" ); 257 SDL_ATinit( "SDL_RWops" );
195 258
259 rwops_testParam();
196 rwops_testMem(); 260 rwops_testMem();
197 rwops_testConstMem(); 261 rwops_testConstMem();
198 rwops_testFile(); 262 rwops_testFile();
199 rwops_testFP(); 263 rwops_testFP();
200 264