16
16
17
17
#include " mp4parse.h"
18
18
19
- intptr_t abort_read (uint8_t *buffer, uintptr_t size, void *userdata)
20
- {
21
- // This shouldn't be called when allocating a parser.
22
- abort ();
23
- }
24
-
25
19
intptr_t error_read (uint8_t *buffer, uintptr_t size, void *userdata)
26
20
{
27
21
return -1 ;
@@ -39,36 +33,28 @@ intptr_t io_read(uint8_t *buffer, uintptr_t size, void *userdata)
39
33
return r;
40
34
}
41
35
42
- void test_new_parser ()
43
- {
44
- int dummy_value = 42 ;
45
- Mp4parseIo io = { abort_read, &dummy_value };
46
- Mp4parseParser *parser = mp4parse_new (&io);
47
- assert (parser != nullptr );
48
- mp4parse_free (parser);
49
- assert (dummy_value == 42 );
50
- }
51
-
52
36
void test_arg_validation ()
53
37
{
54
- Mp4parseParser *parser = mp4parse_new (nullptr );
38
+ Mp4parseParser *parser = mp4parse_new (nullptr , nullptr );
55
39
assert (parser == nullptr );
56
40
57
- Mp4parseIo io = { nullptr , nullptr };
58
- parser = mp4parse_new (&io);
41
+ Mp4parseStatus rv = MP4PARSE_STATUS_INVALID;
42
+ parser = mp4parse_new (nullptr , &rv);
43
+ assert (rv == MP4PARSE_STATUS_BAD_ARG);
59
44
assert (parser == nullptr );
60
45
61
- io = { abort_read, nullptr };
62
- parser = mp4parse_new (&io);
46
+ Mp4parseIo io = { nullptr , nullptr };
47
+ rv = MP4PARSE_STATUS_INVALID;
48
+ parser = mp4parse_new (&io, &rv);
49
+ assert (rv == MP4PARSE_STATUS_BAD_ARG);
63
50
assert (parser == nullptr );
64
51
65
52
int dummy_value = 42 ;
66
53
io = { nullptr , &dummy_value };
67
- parser = mp4parse_new (&io);
68
- assert (parser == nullptr );
69
-
70
- int32_t rv = mp4parse_read (nullptr );
54
+ rv = MP4PARSE_STATUS_INVALID;
55
+ parser = mp4parse_new (&io, &rv);
71
56
assert (rv == MP4PARSE_STATUS_BAD_ARG);
57
+ assert (parser == nullptr );
72
58
73
59
Mp4parseTrackInfo info;
74
60
rv = mp4parse_get_track_info (nullptr , 0 , &info);
@@ -89,11 +75,10 @@ void test_arg_validation_with_parser()
89
75
{
90
76
int dummy_value = 42 ;
91
77
Mp4parseIo io = { error_read, &dummy_value };
92
- Mp4parseParser *parser = mp4parse_new (&io);
93
- assert (parser != nullptr );
94
-
95
- int32_t rv = mp4parse_read (parser);
78
+ Mp4parseStatus rv = MP4PARSE_STATUS_INVALID;
79
+ Mp4parseParser *parser = mp4parse_new (&io, &rv);
96
80
assert (rv == MP4PARSE_STATUS_IO);
81
+ assert (parser == nullptr );
97
82
98
83
rv = mp4parse_get_track_info (parser, 0 , nullptr );
99
84
assert (rv == MP4PARSE_STATUS_BAD_ARG);
@@ -104,7 +89,6 @@ void test_arg_validation_with_parser()
104
89
rv = mp4parse_get_track_audio_info (parser, 0 , nullptr );
105
90
assert (rv == MP4PARSE_STATUS_BAD_ARG);
106
91
107
- mp4parse_free (parser);
108
92
assert (dummy_value == 42 );
109
93
}
110
94
@@ -113,11 +97,10 @@ void test_arg_validation_with_data(const std::string& filename)
113
97
FILE* f = fopen (filename.c_str (), " rb" );
114
98
assert (f != nullptr );
115
99
Mp4parseIo io = { io_read, f };
116
- Mp4parseParser *parser = mp4parse_new (&io);
117
- assert (parser != nullptr );
118
-
119
- Mp4parseStatus rv = mp4parse_read (parser);
100
+ Mp4parseStatus rv = MP4PARSE_STATUS_INVALID;
101
+ Mp4parseParser *parser = mp4parse_new (&io, &rv);
120
102
assert (rv == MP4PARSE_STATUS_OK);
103
+ assert (parser != nullptr );
121
104
122
105
uint32_t tracks;
123
106
rv = mp4parse_get_track_count (parser, &tracks);
@@ -198,14 +181,13 @@ int32_t read_file(const char* filename)
198
181
FILE* f = fopen (filename, " rb" );
199
182
assert (f != nullptr );
200
183
184
+ fprintf (stderr, " Parsing file '%s'.\n " , filename);
201
185
Mp4parseIo io = { io_read, f };
202
- Mp4parseParser *parser = mp4parse_new (&io) ;
203
- assert ( parser != nullptr );
186
+ Mp4parseStatus rv = MP4PARSE_STATUS_INVALID ;
187
+ Mp4parseParser * parser = mp4parse_new (&io, &rv );
204
188
205
- fprintf (stderr, " Parsing file '%s'.\n " , filename);
206
- Mp4parseStatus rv = mp4parse_read (parser);
207
189
if (rv != MP4PARSE_STATUS_OK) {
208
- mp4parse_free (parser);
190
+ assert (parser == nullptr );
209
191
fclose (f);
210
192
fprintf (stderr, " Parsing failed: %s\n " , errorstring (rv));
211
193
return rv;
@@ -234,7 +216,6 @@ int main(int argc, char* argv[])
234
216
// Parse command line options.
235
217
std::vector<std::string> args (argv + 1 , argv + argc);
236
218
237
- test_new_parser ();
238
219
test_arg_validation ();
239
220
test_arg_validation_with_parser ();
240
221
0 commit comments