3713
|
1 /**
|
|
2 * Automated SDL_RWops test.
|
|
3 *
|
|
4 * Written by Edgar Simo "bobbens"
|
|
5 *
|
|
6 * Released under Public Domain.
|
|
7 */
|
|
8
|
|
9
|
|
10 #include "SDL.h"
|
|
11 #include "SDL_at.h"
|
|
12
|
|
13
|
|
14 static const char hello_world[] = "Hello World!";
|
|
15
|
|
16
|
|
17 /**
|
|
18 * @brief Does a generic rwops test.
|
|
19 *
|
|
20 * RWops should have "Hello World!" in it already if write is disabled.
|
|
21 *
|
|
22 * @param write Test writing also.
|
|
23 * @return 1 if an assert is failed.
|
|
24 */
|
|
25 static int rwops_testGeneric( SDL_RWops *rw, int write )
|
|
26 {
|
|
27 char buf[sizeof(hello_world)];
|
|
28 int i;
|
|
29
|
|
30 if (write) {
|
|
31 /* Test write. */
|
|
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;
|
|
35 }
|
|
36
|
|
37 /* Test seek. */
|
|
38 i = SDL_RWseek( rw, 6, RW_SEEK_SET );
|
|
39 if (SDL_ATassert( "Seeking with SDL_RWseek", i == 6 ))
|
|
40 return 1;
|
|
41
|
|
42 /* Test seek. */
|
|
43 i = SDL_RWseek( rw, 0, RW_SEEK_SET );
|
|
44 if (SDL_ATassert( "Seeking with SDL_RWseek", i == 0 ))
|
|
45 return 1;
|
|
46
|
|
47 /* Test read. */
|
|
48 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 ))
|
|
52 return 1;
|
|
53 if (SDL_ATassert( "Memory read does not match memory written",
|
|
54 memcmp( buf, hello_world, sizeof(hello_world)-1 ) == 0 ))
|
|
55 return 1;
|
|
56
|
|
57 return 0;
|
|
58 }
|
|
59
|
|
60
|
|
61 /**
|
|
62 * @brief Tests opening from memory.
|
|
63 */
|
|
64 static void rwops_testMem (void)
|
|
65 {
|
|
66 char mem[sizeof(hello_world)];
|
|
67 SDL_RWops *rw;
|
|
68
|
|
69 /* Begin testcase. */
|
|
70 SDL_ATbegin( "SDL_RWFromMem" );
|
|
71
|
|
72 /* Open. */
|
|
73 rw = SDL_RWFromMem( mem, sizeof(mem) );
|
|
74 if (SDL_ATassert( "Opening memory with SDL_RWFromMem", rw != NULL ))
|
|
75 return;
|
|
76
|
|
77 /* Run generic tests. */
|
|
78 if (rwops_testGeneric( rw, 1 ))
|
|
79 return;
|
|
80
|
|
81 /* Close. */
|
|
82 SDL_FreeRW( rw );
|
|
83
|
|
84 /* End testcase. */
|
|
85 SDL_ATend();
|
|
86 }
|
|
87
|
|
88
|
|
89 static const char const_mem[] = "Hello World!";
|
|
90 /**
|
|
91 * @brief Tests opening from memory.
|
|
92 */
|
|
93 static void rwops_testConstMem (void)
|
|
94 {
|
|
95 SDL_RWops *rw;
|
|
96
|
|
97 /* Begin testcase. */
|
|
98 SDL_ATbegin( "SDL_RWFromConstMem" );
|
|
99
|
|
100 /* Open. */
|
|
101 rw = SDL_RWFromConstMem( const_mem, sizeof(const_mem) );
|
|
102 if (SDL_ATassert( "Opening memory with SDL_RWFromConstMem", rw != NULL ))
|
|
103 return;
|
|
104
|
|
105 /* Run generic tests. */
|
|
106 if (rwops_testGeneric( rw, 0 ))
|
|
107 return;
|
|
108
|
|
109 /* Close. */
|
|
110 SDL_FreeRW( rw );
|
|
111
|
|
112 /* End testcase. */
|
|
113 SDL_ATend();
|
|
114 }
|
|
115
|
|
116
|
|
117 /**
|
|
118 * @brief Tests opening from memory.
|
|
119 */
|
|
120 static void rwops_testFile (void)
|
|
121 {
|
|
122 SDL_RWops *rw;
|
|
123 int i;
|
|
124
|
|
125 /* Begin testcase. */
|
|
126 SDL_ATbegin( "SDL_RWFromFile" );
|
|
127
|
|
128 /* Open. */
|
|
129 rw = SDL_RWFromFile( "rwops/read", "r" );
|
|
130 if (SDL_ATassert( "Opening memory with SDL_RWFromFile", rw != NULL ))
|
|
131 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 ))
|
|
140 return;
|
|
141
|
|
142 /* Close. */
|
|
143 SDL_FreeRW( rw );
|
|
144
|
|
145 /* End testcase. */
|
|
146 SDL_ATend();
|
|
147 }
|
|
148
|
|
149
|
|
150 /**
|
|
151 * @brief Tests opening from memory.
|
|
152 */
|
|
153 static void rwops_testFP (void)
|
|
154 {
|
|
155 #ifdef HAVE_STDIO_H
|
|
156 FILE *fp;
|
|
157 SDL_RWops *rw;
|
|
158 int i;
|
|
159
|
|
160 /* Begin testcase. */
|
|
161 SDL_ATbegin( "SDL_RWFromFP" );
|
|
162
|
|
163 /* Open. */
|
|
164 fp = fopen( "rwops/write", "w+" );
|
|
165 if (fp == NULL) {
|
|
166 SDL_ATprint("Failed to open file rwops/write");
|
|
167 SDL_ATend();
|
|
168 return;
|
|
169 }
|
|
170 rw = SDL_RWFromFP( fp, 1 );
|
|
171 if (SDL_ATassert( "Opening memory with SDL_RWFromFP", rw != NULL ))
|
|
172 return;
|
|
173
|
|
174 /* Run generic tests. */
|
|
175 if (rwops_testGeneric( rw, 1 ))
|
|
176 return;
|
|
177
|
|
178 /* Close. */
|
|
179 SDL_FreeRW( rw );
|
|
180
|
|
181 /* End testcase. */
|
|
182 SDL_ATend();
|
|
183 #endif /* HAVE_STDIO_H */
|
|
184 }
|
|
185
|
|
186
|
|
187 /**
|
|
188 * @brief Entry point.
|
|
189 */
|
|
190 int main( int argc, const char *argv[] )
|
|
191 {
|
|
192 SDL_ATinit( "SDL_RWops" );
|
|
193
|
|
194 rwops_testMem();
|
|
195 rwops_testConstMem();
|
|
196 rwops_testFile();
|
|
197 rwops_testFP();
|
|
198
|
|
199 return SDL_ATfinish(1);
|
|
200 }
|