760
998
num_expected_ = 0;
761
999
expected_metadata_sequence_[num_expected_++] = &application2_;
763
if(!stream_decoder_test_respond_(decoder, &decoder_client_data))
1001
if(!stream_decoder_test_respond_(decoder, &decoder_client_data, is_ogg))
766
/* done, now leave the sequence the way we found it... */
768
expected_metadata_sequence_[num_expected_++] = &streaminfo_;
769
expected_metadata_sequence_[num_expected_++] = &padding_;
770
expected_metadata_sequence_[num_expected_++] = &seektable_;
771
expected_metadata_sequence_[num_expected_++] = &application1_;
772
expected_metadata_sequence_[num_expected_++] = &application2_;
773
expected_metadata_sequence_[num_expected_++] = &vorbiscomment_;
774
expected_metadata_sequence_[num_expected_++] = &cuesheet_;
775
expected_metadata_sequence_[num_expected_++] = &unknown_;
1004
if(layer < LAYER_FILE) /* for LAYER_FILE, FLAC__stream_decoder_finish() closes the file */
1005
fclose(decoder_client_data.file);
777
1007
printf("testing FLAC__stream_decoder_delete()... ");
778
1008
FLAC__stream_decoder_delete(decoder);
781
fclose(decoder_client_data.file);
783
printf("\nPASSED!\n");
788
static FLAC__SeekableStreamDecoderReadStatus seekable_stream_decoder_read_callback_(const FLAC__SeekableStreamDecoder *decoder, FLAC__byte buffer[], unsigned *bytes, void *client_data)
791
switch(stream_decoder_read_callback_(0, buffer, bytes, client_data)) {
792
case FLAC__STREAM_DECODER_READ_STATUS_CONTINUE:
793
return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_OK;
794
case FLAC__STREAM_DECODER_READ_STATUS_ABORT:
795
case FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM:
796
return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_ERROR;
799
return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_ERROR;
803
static FLAC__SeekableStreamDecoderSeekStatus seekable_stream_decoder_seek_callback_(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data)
805
seekable_stream_decoder_client_data_struct *dcd = (seekable_stream_decoder_client_data_struct*)client_data;
810
printf("ERROR: client_data in seek callback is NULL\n");
811
return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR;
814
if(dcd->error_occurred)
815
return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR;
817
if(fseek(dcd->file, (long)absolute_byte_offset, SEEK_SET) < 0) {
818
dcd->error_occurred = true;
819
return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR;
822
return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_OK;
825
static FLAC__SeekableStreamDecoderTellStatus seekable_stream_decoder_tell_callback_(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data)
827
seekable_stream_decoder_client_data_struct *dcd = (seekable_stream_decoder_client_data_struct*)client_data;
833
printf("ERROR: client_data in tell callback is NULL\n");
834
return FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_ERROR;
837
if(dcd->error_occurred)
838
return FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_ERROR;
840
offset = ftell(dcd->file);
841
*absolute_byte_offset = (FLAC__uint64)offset;
844
dcd->error_occurred = true;
845
return FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_ERROR;
848
return FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_OK;
851
static FLAC__SeekableStreamDecoderLengthStatus seekable_stream_decoder_length_callback_(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data)
853
seekable_stream_decoder_client_data_struct *dcd = (seekable_stream_decoder_client_data_struct*)client_data;
858
printf("ERROR: client_data in length callback is NULL\n");
859
return FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_ERROR;
862
if(dcd->error_occurred)
863
return FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_ERROR;
865
*stream_length = (FLAC__uint64)flacfilesize_;
866
return FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_OK;
869
static FLAC__bool seekable_stream_decoder_eof_callback_(const FLAC__SeekableStreamDecoder *decoder, void *client_data)
871
seekable_stream_decoder_client_data_struct *dcd = (seekable_stream_decoder_client_data_struct*)client_data;
876
printf("ERROR: client_data in eof callback is NULL\n");
880
if(dcd->error_occurred)
883
return feof(dcd->file);
886
static FLAC__StreamDecoderWriteStatus seekable_stream_decoder_write_callback_(const FLAC__SeekableStreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data)
889
return stream_decoder_write_callback_(0, frame, buffer, client_data);
892
static void seekable_stream_decoder_metadata_callback_(const FLAC__SeekableStreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data)
895
stream_decoder_metadata_callback_(0, metadata, client_data);
898
static void seekable_stream_decoder_error_callback_(const FLAC__SeekableStreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data)
901
stream_decoder_error_callback_(0, status, client_data);
904
static FLAC__bool seekable_stream_decoder_test_respond_(FLAC__SeekableStreamDecoder *decoder, seekable_stream_decoder_client_data_struct *dcd)
906
if(!FLAC__seekable_stream_decoder_set_read_callback(decoder, seekable_stream_decoder_read_callback_))
907
return die_ss_("at FLAC__seekable_stream_decoder_set_read_callback(), returned false", decoder);
909
if(!FLAC__seekable_stream_decoder_set_seek_callback(decoder, seekable_stream_decoder_seek_callback_))
910
return die_ss_("at FLAC__seekable_stream_decoder_set_seek_callback(), returned false", decoder);
912
if(!FLAC__seekable_stream_decoder_set_tell_callback(decoder, seekable_stream_decoder_tell_callback_))
913
return die_ss_("at FLAC__seekable_stream_decoder_set_tell_callback(), returned false", decoder);
915
if(!FLAC__seekable_stream_decoder_set_length_callback(decoder, seekable_stream_decoder_length_callback_))
916
return die_ss_("at FLAC__seekable_stream_decoder_set_length_callback(), returned false", decoder);
918
if(!FLAC__seekable_stream_decoder_set_eof_callback(decoder, seekable_stream_decoder_eof_callback_))
919
return die_ss_("at FLAC__seekable_stream_decoder_set_eof_callback(), returned false", decoder);
921
if(!FLAC__seekable_stream_decoder_set_write_callback(decoder, seekable_stream_decoder_write_callback_))
922
return die_ss_("at FLAC__seekable_stream_decoder_set_write_callback(), returned false", decoder);
924
if(!FLAC__seekable_stream_decoder_set_metadata_callback(decoder, seekable_stream_decoder_metadata_callback_))
925
return die_ss_("at FLAC__seekable_stream_decoder_set_metadata_callback(), returned false", decoder);
927
if(!FLAC__seekable_stream_decoder_set_error_callback(decoder, seekable_stream_decoder_error_callback_))
928
return die_ss_("at FLAC__seekable_stream_decoder_set_error_callback(), returned false", decoder);
930
if(!FLAC__seekable_stream_decoder_set_client_data(decoder, dcd))
931
return die_ss_("at FLAC__seekable_stream_decoder_set_client_data(), returned false", decoder);
933
if(!FLAC__seekable_stream_decoder_set_md5_checking(decoder, true))
934
return die_ss_("at FLAC__seekable_stream_decoder_set_md5_checking(), returned false", decoder);
936
printf("testing FLAC__seekable_stream_decoder_init()... ");
937
if(FLAC__seekable_stream_decoder_init(decoder) != FLAC__SEEKABLE_STREAM_DECODER_OK)
938
return die_ss_(0, decoder);
941
dcd->current_metadata_number = 0;
943
if(fseek(dcd->file, 0, SEEK_SET) < 0) {
944
printf("FAILED rewinding input, errno = %d\n", errno);
948
printf("testing FLAC__seekable_stream_decoder_process_until_end_of_stream()... ");
949
if(!FLAC__seekable_stream_decoder_process_until_end_of_stream(decoder))
950
return die_ss_("returned false", decoder);
953
printf("testing FLAC__seekable_stream_decoder_finish()... ");
954
(void) FLAC__seekable_stream_decoder_finish(decoder);
960
static FLAC__bool test_seekable_stream_decoder()
962
FLAC__SeekableStreamDecoder *decoder;
963
FLAC__SeekableStreamDecoderState state;
964
FLAC__StreamDecoderState sstate;
965
seekable_stream_decoder_client_data_struct decoder_client_data;
967
printf("\n+++ libFLAC unit test: FLAC__SeekableStreamDecoder\n\n");
969
printf("testing FLAC__seekable_stream_decoder_new()... ");
970
decoder = FLAC__seekable_stream_decoder_new();
972
printf("FAILED, returned NULL\n");
977
printf("testing FLAC__seekable_stream_decoder_delete()... ");
978
FLAC__seekable_stream_decoder_delete(decoder);
981
printf("testing FLAC__seekable_stream_decoder_new()... ");
982
decoder = FLAC__seekable_stream_decoder_new();
984
printf("FAILED, returned NULL\n");
989
printf("testing FLAC__seekable_stream_decoder_init()... ");
990
if(FLAC__seekable_stream_decoder_init(decoder) == FLAC__SEEKABLE_STREAM_DECODER_OK)
991
return die_ss_(0, decoder);
994
printf("testing FLAC__seekable_stream_decoder_delete()... ");
995
FLAC__seekable_stream_decoder_delete(decoder);
999
expected_metadata_sequence_[num_expected_++] = &streaminfo_;
1001
printf("testing FLAC__seekable_stream_decoder_new()... ");
1002
decoder = FLAC__seekable_stream_decoder_new();
1004
printf("FAILED, returned NULL\n");
1009
printf("testing FLAC__seekable_stream_decoder_set_read_callback()... ");
1010
if(!FLAC__seekable_stream_decoder_set_read_callback(decoder, seekable_stream_decoder_read_callback_))
1011
return die_ss_("returned false", decoder);
1014
printf("testing FLAC__seekable_stream_decoder_set_seek_callback()... ");
1015
if(!FLAC__seekable_stream_decoder_set_seek_callback(decoder, seekable_stream_decoder_seek_callback_))
1016
return die_ss_("returned false", decoder);
1019
printf("testing FLAC__seekable_stream_decoder_set_tell_callback()... ");
1020
if(!FLAC__seekable_stream_decoder_set_tell_callback(decoder, seekable_stream_decoder_tell_callback_))
1021
return die_ss_("returned false", decoder);
1024
printf("testing FLAC__seekable_stream_decoder_set_length_callback()... ");
1025
if(!FLAC__seekable_stream_decoder_set_length_callback(decoder, seekable_stream_decoder_length_callback_))
1026
return die_ss_("returned false", decoder);
1029
printf("testing FLAC__seekable_stream_decoder_set_eof_callback()... ");
1030
if(!FLAC__seekable_stream_decoder_set_eof_callback(decoder, seekable_stream_decoder_eof_callback_))
1031
return die_ss_("returned false", decoder);
1034
printf("testing FLAC__seekable_stream_decoder_set_write_callback()... ");
1035
if(!FLAC__seekable_stream_decoder_set_write_callback(decoder, seekable_stream_decoder_write_callback_))
1036
return die_ss_("returned false", decoder);
1039
printf("testing FLAC__seekable_stream_decoder_set_metadata_callback()... ");
1040
if(!FLAC__seekable_stream_decoder_set_metadata_callback(decoder, seekable_stream_decoder_metadata_callback_))
1041
return die_ss_("returned false", decoder);
1044
printf("testing FLAC__seekable_stream_decoder_set_error_callback()... ");
1045
if(!FLAC__seekable_stream_decoder_set_error_callback(decoder, seekable_stream_decoder_error_callback_))
1046
return die_ss_("returned false", decoder);
1049
printf("testing FLAC__seekable_stream_decoder_set_client_data()... ");
1050
if(!FLAC__seekable_stream_decoder_set_client_data(decoder, &decoder_client_data))
1051
return die_ss_("returned false", decoder);
1054
printf("testing FLAC__seekable_stream_decoder_set_md5_checking()... ");
1055
if(!FLAC__seekable_stream_decoder_set_md5_checking(decoder, true))
1056
return die_ss_("returned false", decoder);
1059
printf("testing FLAC__seekable_stream_decoder_init()... ");
1060
if(FLAC__seekable_stream_decoder_init(decoder) != FLAC__SEEKABLE_STREAM_DECODER_OK)
1061
return die_ss_(0, decoder);
1064
printf("testing FLAC__seekable_stream_decoder_get_state()... ");
1065
state = FLAC__seekable_stream_decoder_get_state(decoder);
1066
printf("returned state = %u (%s)... OK\n", state, FLAC__SeekableStreamDecoderStateString[state]);
1068
printf("testing FLAC__seekable_stream_decoder_get_stream_decoder_state()... ");
1069
sstate = FLAC__seekable_stream_decoder_get_stream_decoder_state(decoder);
1070
printf("returned state = %u (%s)... OK\n", sstate, FLAC__StreamDecoderStateString[sstate]);
1072
decoder_client_data.current_metadata_number = 0;
1073
decoder_client_data.ignore_errors = false;
1074
decoder_client_data.error_occurred = false;
1076
printf("opening FLAC file... ");
1077
decoder_client_data.file = fopen(flacfilename_, "rb");
1078
if(0 == decoder_client_data.file) {
1084
printf("testing FLAC__seekable_stream_decoder_get_md5_checking()... ");
1085
if(!FLAC__seekable_stream_decoder_get_md5_checking(decoder)) {
1086
printf("FAILED, returned false, expected true\n");
1091
printf("testing FLAC__seekable_stream_decoder_process_until_end_of_metadata()... ");
1092
if(!FLAC__seekable_stream_decoder_process_until_end_of_metadata(decoder))
1093
return die_ss_("returned false", decoder);
1096
printf("testing FLAC__seekable_stream_decoder_process_single()... ");
1097
if(!FLAC__seekable_stream_decoder_process_single(decoder))
1098
return die_ss_("returned false", decoder);
1101
printf("testing FLAC__seekable_stream_decoder_skip_single_frame()... ");
1102
if(!FLAC__seekable_stream_decoder_skip_single_frame(decoder))
1103
return die_ss_("returned false", decoder);
1106
printf("testing FLAC__seekable_stream_decoder_flush()... ");
1107
if(!FLAC__seekable_stream_decoder_flush(decoder))
1108
return die_ss_("returned false", decoder);
1111
decoder_client_data.ignore_errors = true;
1112
printf("testing FLAC__seekable_stream_decoder_process_single()... ");
1113
if(!FLAC__seekable_stream_decoder_process_single(decoder))
1114
return die_ss_("returned false", decoder);
1116
decoder_client_data.ignore_errors = false;
1118
printf("testing FLAC__seekable_stream_decoder_seek_absolute()... ");
1119
if(!FLAC__seekable_stream_decoder_seek_absolute(decoder, 0))
1120
return die_ss_("returned false", decoder);
1123
printf("testing FLAC__seekable_stream_decoder_process_until_end_of_stream()... ");
1124
if(!FLAC__seekable_stream_decoder_process_until_end_of_stream(decoder))
1125
return die_ss_("returned false", decoder);
1128
printf("testing FLAC__seekable_stream_decoder_get_channels()... ");
1130
unsigned channels = FLAC__seekable_stream_decoder_get_channels(decoder);
1131
if(channels != streaminfo_.data.stream_info.channels) {
1132
printf("FAILED, returned %u, expected %u\n", channels, streaminfo_.data.stream_info.channels);
1138
printf("testing FLAC__seekable_stream_decoder_get_bits_per_sample()... ");
1140
unsigned bits_per_sample = FLAC__seekable_stream_decoder_get_bits_per_sample(decoder);
1141
if(bits_per_sample != streaminfo_.data.stream_info.bits_per_sample) {
1142
printf("FAILED, returned %u, expected %u\n", bits_per_sample, streaminfo_.data.stream_info.bits_per_sample);
1148
printf("testing FLAC__seekable_stream_decoder_get_sample_rate()... ");
1150
unsigned sample_rate = FLAC__seekable_stream_decoder_get_sample_rate(decoder);
1151
if(sample_rate != streaminfo_.data.stream_info.sample_rate) {
1152
printf("FAILED, returned %u, expected %u\n", sample_rate, streaminfo_.data.stream_info.sample_rate);
1158
printf("testing FLAC__seekable_stream_decoder_get_blocksize()... ");
1160
unsigned blocksize = FLAC__seekable_stream_decoder_get_blocksize(decoder);
1161
/* value could be anything since we're at the last block, so accept any answer */
1162
printf("returned %u... OK\n", blocksize);
1165
printf("testing FLAC__seekable_stream_decoder_get_channel_assignment()... ");
1167
FLAC__ChannelAssignment ca = FLAC__seekable_stream_decoder_get_channel_assignment(decoder);
1168
printf("returned %u (%s)... OK\n", (unsigned)ca, FLAC__ChannelAssignmentString[ca]);
1171
printf("testing FLAC__seekable_stream_decoder_reset()... ");
1172
if(!FLAC__seekable_stream_decoder_reset(decoder))
1173
return die_ss_("returned false", decoder);
1176
decoder_client_data.current_metadata_number = 0;
1178
printf("rewinding input... ");
1179
if(fseek(decoder_client_data.file, 0, SEEK_SET) < 0) {
1180
printf("FAILED, errno = %d\n", errno);
1185
printf("testing FLAC__seekable_stream_decoder_process_until_end_of_stream()... ");
1186
if(!FLAC__seekable_stream_decoder_process_until_end_of_stream(decoder))
1187
return die_ss_("returned false", decoder);
1190
printf("testing FLAC__seekable_stream_decoder_finish()... ");
1191
(void) FLAC__seekable_stream_decoder_finish(decoder);
1198
printf("testing FLAC__seekable_stream_decoder_set_metadata_respond_all()... ");
1199
if(!FLAC__seekable_stream_decoder_set_metadata_respond_all(decoder))
1200
return die_ss_("returned false", decoder);
1204
expected_metadata_sequence_[num_expected_++] = &streaminfo_;
1205
expected_metadata_sequence_[num_expected_++] = &padding_;
1206
expected_metadata_sequence_[num_expected_++] = &seektable_;
1207
expected_metadata_sequence_[num_expected_++] = &application1_;
1208
expected_metadata_sequence_[num_expected_++] = &application2_;
1209
expected_metadata_sequence_[num_expected_++] = &vorbiscomment_;
1210
expected_metadata_sequence_[num_expected_++] = &cuesheet_;
1211
expected_metadata_sequence_[num_expected_++] = &unknown_;
1213
if(!seekable_stream_decoder_test_respond_(decoder, &decoder_client_data))
1220
printf("testing FLAC__seekable_stream_decoder_set_metadata_ignore_all()... ");
1221
if(!FLAC__seekable_stream_decoder_set_metadata_ignore_all(decoder))
1222
return die_ss_("returned false", decoder);
1227
if(!seekable_stream_decoder_test_respond_(decoder, &decoder_client_data))
1231
* respond all, ignore VORBIS_COMMENT
1234
printf("testing FLAC__seekable_stream_decoder_set_metadata_respond_all()... ");
1235
if(!FLAC__seekable_stream_decoder_set_metadata_respond_all(decoder))
1236
return die_ss_("returned false", decoder);
1239
printf("testing FLAC__seekable_stream_decoder_set_metadata_ignore(VORBIS_COMMENT)... ");
1240
if(!FLAC__seekable_stream_decoder_set_metadata_ignore(decoder, FLAC__METADATA_TYPE_VORBIS_COMMENT))
1241
return die_ss_("returned false", decoder);
1245
expected_metadata_sequence_[num_expected_++] = &streaminfo_;
1246
expected_metadata_sequence_[num_expected_++] = &padding_;
1247
expected_metadata_sequence_[num_expected_++] = &seektable_;
1248
expected_metadata_sequence_[num_expected_++] = &application1_;
1249
expected_metadata_sequence_[num_expected_++] = &application2_;
1250
expected_metadata_sequence_[num_expected_++] = &cuesheet_;
1251
expected_metadata_sequence_[num_expected_++] = &unknown_;
1253
if(!seekable_stream_decoder_test_respond_(decoder, &decoder_client_data))
1257
* respond all, ignore APPLICATION
1260
printf("testing FLAC__seekable_stream_decoder_set_metadata_respond_all()... ");
1261
if(!FLAC__seekable_stream_decoder_set_metadata_respond_all(decoder))
1262
return die_ss_("returned false", decoder);
1265
printf("testing FLAC__seekable_stream_decoder_set_metadata_ignore(APPLICATION)... ");
1266
if(!FLAC__seekable_stream_decoder_set_metadata_ignore(decoder, FLAC__METADATA_TYPE_APPLICATION))
1267
return die_ss_("returned false", decoder);
1271
expected_metadata_sequence_[num_expected_++] = &streaminfo_;
1272
expected_metadata_sequence_[num_expected_++] = &padding_;
1273
expected_metadata_sequence_[num_expected_++] = &seektable_;
1274
expected_metadata_sequence_[num_expected_++] = &vorbiscomment_;
1275
expected_metadata_sequence_[num_expected_++] = &cuesheet_;
1276
expected_metadata_sequence_[num_expected_++] = &unknown_;
1278
if(!seekable_stream_decoder_test_respond_(decoder, &decoder_client_data))
1282
* respond all, ignore APPLICATION id of app#1
1285
printf("testing FLAC__seekable_stream_decoder_set_metadata_respond_all()... ");
1286
if(!FLAC__seekable_stream_decoder_set_metadata_respond_all(decoder))
1287
return die_ss_("returned false", decoder);
1290
printf("testing FLAC__seekable_stream_decoder_set_metadata_ignore_application(of app block #1)... ");
1291
if(!FLAC__seekable_stream_decoder_set_metadata_ignore_application(decoder, application1_.data.application.id))
1292
return die_ss_("returned false", decoder);
1296
expected_metadata_sequence_[num_expected_++] = &streaminfo_;
1297
expected_metadata_sequence_[num_expected_++] = &padding_;
1298
expected_metadata_sequence_[num_expected_++] = &seektable_;
1299
expected_metadata_sequence_[num_expected_++] = &application2_;
1300
expected_metadata_sequence_[num_expected_++] = &vorbiscomment_;
1301
expected_metadata_sequence_[num_expected_++] = &cuesheet_;
1302
expected_metadata_sequence_[num_expected_++] = &unknown_;
1304
if(!seekable_stream_decoder_test_respond_(decoder, &decoder_client_data))
1308
* respond all, ignore APPLICATION id of app#1 & app#2
1311
printf("testing FLAC__seekable_stream_decoder_set_metadata_respond_all()... ");
1312
if(!FLAC__seekable_stream_decoder_set_metadata_respond_all(decoder))
1313
return die_ss_("returned false", decoder);
1316
printf("testing FLAC__seekable_stream_decoder_set_metadata_ignore_application(of app block #1)... ");
1317
if(!FLAC__seekable_stream_decoder_set_metadata_ignore_application(decoder, application1_.data.application.id))
1318
return die_ss_("returned false", decoder);
1321
printf("testing FLAC__seekable_stream_decoder_set_metadata_ignore_application(of app block #2)... ");
1322
if(!FLAC__seekable_stream_decoder_set_metadata_ignore_application(decoder, application2_.data.application.id))
1323
return die_ss_("returned false", decoder);
1327
expected_metadata_sequence_[num_expected_++] = &streaminfo_;
1328
expected_metadata_sequence_[num_expected_++] = &padding_;
1329
expected_metadata_sequence_[num_expected_++] = &seektable_;
1330
expected_metadata_sequence_[num_expected_++] = &vorbiscomment_;
1331
expected_metadata_sequence_[num_expected_++] = &cuesheet_;
1332
expected_metadata_sequence_[num_expected_++] = &unknown_;
1334
if(!seekable_stream_decoder_test_respond_(decoder, &decoder_client_data))
1338
* ignore all, respond VORBIS_COMMENT
1341
printf("testing FLAC__seekable_stream_decoder_set_metadata_ignore_all()... ");
1342
if(!FLAC__seekable_stream_decoder_set_metadata_ignore_all(decoder))
1343
return die_ss_("returned false", decoder);
1346
printf("testing FLAC__seekable_stream_decoder_set_metadata_respond(VORBIS_COMMENT)... ");
1347
if(!FLAC__seekable_stream_decoder_set_metadata_respond(decoder, FLAC__METADATA_TYPE_VORBIS_COMMENT))
1348
return die_ss_("returned false", decoder);
1352
expected_metadata_sequence_[num_expected_++] = &vorbiscomment_;
1354
if(!seekable_stream_decoder_test_respond_(decoder, &decoder_client_data))
1358
* ignore all, respond APPLICATION
1361
printf("testing FLAC__seekable_stream_decoder_set_metadata_ignore_all()... ");
1362
if(!FLAC__seekable_stream_decoder_set_metadata_ignore_all(decoder))
1363
return die_ss_("returned false", decoder);
1366
printf("testing FLAC__seekable_stream_decoder_set_metadata_respond(APPLICATION)... ");
1367
if(!FLAC__seekable_stream_decoder_set_metadata_respond(decoder, FLAC__METADATA_TYPE_APPLICATION))
1368
return die_ss_("returned false", decoder);
1372
expected_metadata_sequence_[num_expected_++] = &application1_;
1373
expected_metadata_sequence_[num_expected_++] = &application2_;
1375
if(!seekable_stream_decoder_test_respond_(decoder, &decoder_client_data))
1379
* ignore all, respond APPLICATION id of app#1
1382
printf("testing FLAC__seekable_stream_decoder_set_metadata_ignore_all()... ");
1383
if(!FLAC__seekable_stream_decoder_set_metadata_ignore_all(decoder))
1384
return die_ss_("returned false", decoder);
1387
printf("testing FLAC__seekable_stream_decoder_set_metadata_respond_application(of app block #1)... ");
1388
if(!FLAC__seekable_stream_decoder_set_metadata_respond_application(decoder, application1_.data.application.id))
1389
return die_ss_("returned false", decoder);
1393
expected_metadata_sequence_[num_expected_++] = &application1_;
1395
if(!seekable_stream_decoder_test_respond_(decoder, &decoder_client_data))
1399
* ignore all, respond APPLICATION id of app#1 & app#2
1402
printf("testing FLAC__seekable_stream_decoder_set_metadata_ignore_all()... ");
1403
if(!FLAC__seekable_stream_decoder_set_metadata_ignore_all(decoder))
1404
return die_ss_("returned false", decoder);
1407
printf("testing FLAC__seekable_stream_decoder_set_metadata_respond_application(of app block #1)... ");
1408
if(!FLAC__seekable_stream_decoder_set_metadata_respond_application(decoder, application1_.data.application.id))
1409
return die_ss_("returned false", decoder);
1412
printf("testing FLAC__seekable_stream_decoder_set_metadata_respond_application(of app block #2)... ");
1413
if(!FLAC__seekable_stream_decoder_set_metadata_respond_application(decoder, application2_.data.application.id))
1414
return die_ss_("returned false", decoder);
1418
expected_metadata_sequence_[num_expected_++] = &application1_;
1419
expected_metadata_sequence_[num_expected_++] = &application2_;
1421
if(!seekable_stream_decoder_test_respond_(decoder, &decoder_client_data))
1425
* respond all, ignore APPLICATION, respond APPLICATION id of app#1
1428
printf("testing FLAC__seekable_stream_decoder_set_metadata_respond_all()... ");
1429
if(!FLAC__seekable_stream_decoder_set_metadata_respond_all(decoder))
1430
return die_ss_("returned false", decoder);
1433
printf("testing FLAC__seekable_stream_decoder_set_metadata_ignore(APPLICATION)... ");
1434
if(!FLAC__seekable_stream_decoder_set_metadata_ignore(decoder, FLAC__METADATA_TYPE_APPLICATION))
1435
return die_ss_("returned false", decoder);
1438
printf("testing FLAC__seekable_stream_decoder_set_metadata_respond_application(of app block #1)... ");
1439
if(!FLAC__seekable_stream_decoder_set_metadata_respond_application(decoder, application1_.data.application.id))
1440
return die_ss_("returned false", decoder);
1444
expected_metadata_sequence_[num_expected_++] = &streaminfo_;
1445
expected_metadata_sequence_[num_expected_++] = &padding_;
1446
expected_metadata_sequence_[num_expected_++] = &seektable_;
1447
expected_metadata_sequence_[num_expected_++] = &application1_;
1448
expected_metadata_sequence_[num_expected_++] = &vorbiscomment_;
1449
expected_metadata_sequence_[num_expected_++] = &cuesheet_;
1450
expected_metadata_sequence_[num_expected_++] = &unknown_;
1452
if(!seekable_stream_decoder_test_respond_(decoder, &decoder_client_data))
1456
* ignore all, respond APPLICATION, ignore APPLICATION id of app#1
1459
printf("testing FLAC__seekable_stream_decoder_set_metadata_ignore_all()... ");
1460
if(!FLAC__seekable_stream_decoder_set_metadata_ignore_all(decoder))
1461
return die_ss_("returned false", decoder);
1464
printf("testing FLAC__seekable_stream_decoder_set_metadata_respond(APPLICATION)... ");
1465
if(!FLAC__seekable_stream_decoder_set_metadata_respond(decoder, FLAC__METADATA_TYPE_APPLICATION))
1466
return die_ss_("returned false", decoder);
1469
printf("testing FLAC__seekable_stream_decoder_set_metadata_ignore_application(of app block #1)... ");
1470
if(!FLAC__seekable_stream_decoder_set_metadata_ignore_application(decoder, application1_.data.application.id))
1471
return die_ss_("returned false", decoder);
1475
expected_metadata_sequence_[num_expected_++] = &application2_;
1477
if(!seekable_stream_decoder_test_respond_(decoder, &decoder_client_data))
1480
/* done, now leave the sequence the way we found it... */
1482
expected_metadata_sequence_[num_expected_++] = &streaminfo_;
1483
expected_metadata_sequence_[num_expected_++] = &padding_;
1484
expected_metadata_sequence_[num_expected_++] = &seektable_;
1485
expected_metadata_sequence_[num_expected_++] = &application1_;
1486
expected_metadata_sequence_[num_expected_++] = &application2_;
1487
expected_metadata_sequence_[num_expected_++] = &vorbiscomment_;
1488
expected_metadata_sequence_[num_expected_++] = &cuesheet_;
1489
expected_metadata_sequence_[num_expected_++] = &unknown_;
1491
printf("testing FLAC__seekable_stream_decoder_delete()... ");
1492
FLAC__seekable_stream_decoder_delete(decoder);
1495
fclose(decoder_client_data.file);
1497
printf("\nPASSED!\n");
1502
static FLAC__StreamDecoderWriteStatus file_decoder_write_callback_(const FLAC__FileDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data)
1505
return stream_decoder_write_callback_(0, frame, buffer, client_data);
1508
static void file_decoder_metadata_callback_(const FLAC__FileDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data)
1511
stream_decoder_metadata_callback_(0, metadata, client_data);
1514
static void file_decoder_error_callback_(const FLAC__FileDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data)
1517
stream_decoder_error_callback_(0, status, client_data);
1520
static FLAC__bool file_decoder_test_respond_(FLAC__FileDecoder *decoder, file_decoder_client_data_struct *dcd)
1522
if(!FLAC__file_decoder_set_write_callback(decoder, file_decoder_write_callback_))
1523
return die_f_("at FLAC__file_decoder_set_write_callback(), returned false", decoder);
1525
if(!FLAC__file_decoder_set_metadata_callback(decoder, file_decoder_metadata_callback_))
1526
return die_f_("at FLAC__file_decoder_set_metadata_callback(), returned false", decoder);
1528
if(!FLAC__file_decoder_set_error_callback(decoder, file_decoder_error_callback_))
1529
return die_f_("at FLAC__file_decoder_set_error_callback(), returned false", decoder);
1531
if(!FLAC__file_decoder_set_client_data(decoder, dcd))
1532
return die_f_("at FLAC__file_decoder_set_client_data(), returned false", decoder);
1534
if(!FLAC__file_decoder_set_filename(decoder, flacfilename_))
1535
return die_f_("at FLAC__file_decoder_set_filename(), returned false", decoder);
1537
if(!FLAC__file_decoder_set_md5_checking(decoder, true))
1538
return die_f_("at FLAC__file_decoder_set_md5_checking(), returned false", decoder);
1540
printf("testing FLAC__file_decoder_init()... ");
1541
if(FLAC__file_decoder_init(decoder) != FLAC__FILE_DECODER_OK)
1542
return die_f_(0, decoder);
1545
dcd->current_metadata_number = 0;
1547
printf("testing FLAC__file_decoder_process_until_end_of_file()... ");
1548
if(!FLAC__file_decoder_process_until_end_of_file(decoder))
1549
return die_f_("returned false", decoder);
1552
printf("testing FLAC__file_decoder_finish()... ");
1553
(void) FLAC__file_decoder_finish(decoder);
1559
static FLAC__bool test_file_decoder()
1561
FLAC__FileDecoder *decoder;
1562
FLAC__FileDecoderState state;
1563
FLAC__SeekableStreamDecoderState ssstate;
1564
FLAC__StreamDecoderState sstate;
1565
seekable_stream_decoder_client_data_struct decoder_client_data;
1567
printf("\n+++ libFLAC unit test: FLAC__FileDecoder\n\n");
1569
printf("testing FLAC__file_decoder_new()... ");
1570
decoder = FLAC__file_decoder_new();
1572
printf("FAILED, returned NULL\n");
1577
printf("testing FLAC__file_decoder_delete()... ");
1578
FLAC__file_decoder_delete(decoder);
1581
printf("testing FLAC__file_decoder_new()... ");
1582
decoder = FLAC__file_decoder_new();
1584
printf("FAILED, returned NULL\n");
1589
printf("testing FLAC__file_decoder_init()... ");
1590
if(FLAC__file_decoder_init(decoder) == FLAC__FILE_DECODER_OK)
1591
return die_f_(0, decoder);
1594
printf("testing FLAC__file_decoder_delete()... ");
1595
FLAC__file_decoder_delete(decoder);
1599
expected_metadata_sequence_[num_expected_++] = &streaminfo_;
1601
printf("testing FLAC__file_decoder_new()... ");
1602
decoder = FLAC__file_decoder_new();
1604
printf("FAILED, returned NULL\n");
1609
printf("testing FLAC__file_decoder_set_write_callback()... ");
1610
if(!FLAC__file_decoder_set_write_callback(decoder, file_decoder_write_callback_))
1611
return die_f_("returned false", decoder);
1614
printf("testing FLAC__file_decoder_set_metadata_callback()... ");
1615
if(!FLAC__file_decoder_set_metadata_callback(decoder, file_decoder_metadata_callback_))
1616
return die_f_("returned false", decoder);
1619
printf("testing FLAC__file_decoder_set_error_callback()... ");
1620
if(!FLAC__file_decoder_set_error_callback(decoder, file_decoder_error_callback_))
1621
return die_f_("returned false", decoder);
1624
printf("testing FLAC__file_decoder_set_client_data()... ");
1625
if(!FLAC__file_decoder_set_client_data(decoder, &decoder_client_data))
1626
return die_f_("returned false", decoder);
1629
printf("testing FLAC__file_decoder_set_filename()... ");
1630
if(!FLAC__file_decoder_set_filename(decoder, flacfilename_))
1631
return die_f_("returned false", decoder);
1634
printf("testing FLAC__file_decoder_set_md5_checking()... ");
1635
if(!FLAC__file_decoder_set_md5_checking(decoder, true))
1636
return die_f_("returned false", decoder);
1639
printf("testing FLAC__file_decoder_init()... ");
1640
if(FLAC__file_decoder_init(decoder) != FLAC__FILE_DECODER_OK)
1641
return die_f_(0, decoder);
1644
printf("testing FLAC__file_decoder_get_state()... ");
1645
state = FLAC__file_decoder_get_state(decoder);
1646
printf("returned state = %u (%s)... OK\n", state, FLAC__FileDecoderStateString[state]);
1648
printf("testing FLAC__file_decoder_get_seekable_stream_decoder_state()... ");
1649
ssstate = FLAC__file_decoder_get_seekable_stream_decoder_state(decoder);
1650
printf("returned state = %u (%s)... OK\n", ssstate, FLAC__SeekableStreamDecoderStateString[ssstate]);
1652
printf("testing FLAC__file_decoder_get_stream_decoder_state()... ");
1653
sstate = FLAC__file_decoder_get_stream_decoder_state(decoder);
1654
printf("returned state = %u (%s)... OK\n", sstate, FLAC__StreamDecoderStateString[sstate]);
1656
decoder_client_data.current_metadata_number = 0;
1657
decoder_client_data.ignore_errors = false;
1658
decoder_client_data.error_occurred = false;
1660
printf("testing FLAC__file_decoder_get_md5_checking()... ");
1661
if(!FLAC__file_decoder_get_md5_checking(decoder)) {
1662
printf("FAILED, returned false, expected true\n");
1667
printf("testing FLAC__file_decoder_process_until_end_of_metadata()... ");
1668
if(!FLAC__file_decoder_process_until_end_of_metadata(decoder))
1669
return die_f_("returned false", decoder);
1672
printf("testing FLAC__file_decoder_process_single()... ");
1673
if(!FLAC__file_decoder_process_single(decoder))
1674
return die_f_("returned false", decoder);
1677
printf("testing FLAC__file_decoder_skip_single_frame()... ");
1678
if(!FLAC__file_decoder_skip_single_frame(decoder))
1679
return die_f_("returned false", decoder);
1682
printf("testing FLAC__file_decoder_seek_absolute()... ");
1683
if(!FLAC__file_decoder_seek_absolute(decoder, 0))
1684
return die_f_("returned false", decoder);
1687
printf("testing FLAC__file_decoder_process_until_end_of_file()... ");
1688
if(!FLAC__file_decoder_process_until_end_of_file(decoder))
1689
return die_f_("returned false", decoder);
1692
printf("testing FLAC__file_decoder_get_channels()... ");
1694
unsigned channels = FLAC__file_decoder_get_channels(decoder);
1695
if(channels != streaminfo_.data.stream_info.channels) {
1696
printf("FAILED, returned %u, expected %u\n", channels, streaminfo_.data.stream_info.channels);
1702
printf("testing FLAC__file_decoder_get_bits_per_sample()... ");
1704
unsigned bits_per_sample = FLAC__file_decoder_get_bits_per_sample(decoder);
1705
if(bits_per_sample != streaminfo_.data.stream_info.bits_per_sample) {
1706
printf("FAILED, returned %u, expected %u\n", bits_per_sample, streaminfo_.data.stream_info.bits_per_sample);
1712
printf("testing FLAC__file_decoder_get_sample_rate()... ");
1714
unsigned sample_rate = FLAC__file_decoder_get_sample_rate(decoder);
1715
if(sample_rate != streaminfo_.data.stream_info.sample_rate) {
1716
printf("FAILED, returned %u, expected %u\n", sample_rate, streaminfo_.data.stream_info.sample_rate);
1722
printf("testing FLAC__file_decoder_get_blocksize()... ");
1724
unsigned blocksize = FLAC__file_decoder_get_blocksize(decoder);
1725
/* value could be anything since we're at the last block, so accept any answer */
1726
printf("returned %u... OK\n", blocksize);
1729
printf("testing FLAC__file_decoder_get_channel_assignment()... ");
1731
FLAC__ChannelAssignment ca = FLAC__file_decoder_get_channel_assignment(decoder);
1732
printf("returned %u (%s)... OK\n", (unsigned)ca, FLAC__ChannelAssignmentString[ca]);
1735
printf("testing FLAC__file_decoder_finish()... ");
1736
(void) FLAC__file_decoder_finish(decoder);
1743
printf("testing FLAC__file_decoder_set_metadata_respond_all()... ");
1744
if(!FLAC__file_decoder_set_metadata_respond_all(decoder))
1745
return die_f_("returned false", decoder);
1749
expected_metadata_sequence_[num_expected_++] = &streaminfo_;
1750
expected_metadata_sequence_[num_expected_++] = &padding_;
1751
expected_metadata_sequence_[num_expected_++] = &seektable_;
1752
expected_metadata_sequence_[num_expected_++] = &application1_;
1753
expected_metadata_sequence_[num_expected_++] = &application2_;
1754
expected_metadata_sequence_[num_expected_++] = &vorbiscomment_;
1755
expected_metadata_sequence_[num_expected_++] = &cuesheet_;
1756
expected_metadata_sequence_[num_expected_++] = &unknown_;
1758
if(!file_decoder_test_respond_(decoder, &decoder_client_data))
1765
printf("testing FLAC__file_decoder_set_metadata_ignore_all()... ");
1766
if(!FLAC__file_decoder_set_metadata_ignore_all(decoder))
1767
return die_f_("returned false", decoder);
1772
if(!file_decoder_test_respond_(decoder, &decoder_client_data))
1776
* respond all, ignore VORBIS_COMMENT
1779
printf("testing FLAC__file_decoder_set_metadata_respond_all()... ");
1780
if(!FLAC__file_decoder_set_metadata_respond_all(decoder))
1781
return die_f_("returned false", decoder);
1784
printf("testing FLAC__file_decoder_set_metadata_ignore(VORBIS_COMMENT)... ");
1785
if(!FLAC__file_decoder_set_metadata_ignore(decoder, FLAC__METADATA_TYPE_VORBIS_COMMENT))
1786
return die_f_("returned false", decoder);
1790
expected_metadata_sequence_[num_expected_++] = &streaminfo_;
1791
expected_metadata_sequence_[num_expected_++] = &padding_;
1792
expected_metadata_sequence_[num_expected_++] = &seektable_;
1793
expected_metadata_sequence_[num_expected_++] = &application1_;
1794
expected_metadata_sequence_[num_expected_++] = &application2_;
1795
expected_metadata_sequence_[num_expected_++] = &cuesheet_;
1796
expected_metadata_sequence_[num_expected_++] = &unknown_;
1798
if(!file_decoder_test_respond_(decoder, &decoder_client_data))
1802
* respond all, ignore APPLICATION
1805
printf("testing FLAC__file_decoder_set_metadata_respond_all()... ");
1806
if(!FLAC__file_decoder_set_metadata_respond_all(decoder))
1807
return die_f_("returned false", decoder);
1810
printf("testing FLAC__file_decoder_set_metadata_ignore(APPLICATION)... ");
1811
if(!FLAC__file_decoder_set_metadata_ignore(decoder, FLAC__METADATA_TYPE_APPLICATION))
1812
return die_f_("returned false", decoder);
1816
expected_metadata_sequence_[num_expected_++] = &streaminfo_;
1817
expected_metadata_sequence_[num_expected_++] = &padding_;
1818
expected_metadata_sequence_[num_expected_++] = &seektable_;
1819
expected_metadata_sequence_[num_expected_++] = &vorbiscomment_;
1820
expected_metadata_sequence_[num_expected_++] = &cuesheet_;
1821
expected_metadata_sequence_[num_expected_++] = &unknown_;
1823
if(!file_decoder_test_respond_(decoder, &decoder_client_data))
1827
* respond all, ignore APPLICATION id of app#1
1830
printf("testing FLAC__file_decoder_set_metadata_respond_all()... ");
1831
if(!FLAC__file_decoder_set_metadata_respond_all(decoder))
1832
return die_f_("returned false", decoder);
1835
printf("testing FLAC__file_decoder_set_metadata_ignore_application(of app block #1)... ");
1836
if(!FLAC__file_decoder_set_metadata_ignore_application(decoder, application1_.data.application.id))
1837
return die_f_("returned false", decoder);
1841
expected_metadata_sequence_[num_expected_++] = &streaminfo_;
1842
expected_metadata_sequence_[num_expected_++] = &padding_;
1843
expected_metadata_sequence_[num_expected_++] = &seektable_;
1844
expected_metadata_sequence_[num_expected_++] = &application2_;
1845
expected_metadata_sequence_[num_expected_++] = &vorbiscomment_;
1846
expected_metadata_sequence_[num_expected_++] = &cuesheet_;
1847
expected_metadata_sequence_[num_expected_++] = &unknown_;
1849
if(!file_decoder_test_respond_(decoder, &decoder_client_data))
1853
* respond all, ignore APPLICATION id of app#1 & app#2
1856
printf("testing FLAC__file_decoder_set_metadata_respond_all()... ");
1857
if(!FLAC__file_decoder_set_metadata_respond_all(decoder))
1858
return die_f_("returned false", decoder);
1861
printf("testing FLAC__file_decoder_set_metadata_ignore_application(of app block #1)... ");
1862
if(!FLAC__file_decoder_set_metadata_ignore_application(decoder, application1_.data.application.id))
1863
return die_f_("returned false", decoder);
1866
printf("testing FLAC__file_decoder_set_metadata_ignore_application(of app block #2)... ");
1867
if(!FLAC__file_decoder_set_metadata_ignore_application(decoder, application2_.data.application.id))
1868
return die_f_("returned false", decoder);
1872
expected_metadata_sequence_[num_expected_++] = &streaminfo_;
1873
expected_metadata_sequence_[num_expected_++] = &padding_;
1874
expected_metadata_sequence_[num_expected_++] = &seektable_;
1875
expected_metadata_sequence_[num_expected_++] = &vorbiscomment_;
1876
expected_metadata_sequence_[num_expected_++] = &cuesheet_;
1877
expected_metadata_sequence_[num_expected_++] = &unknown_;
1879
if(!file_decoder_test_respond_(decoder, &decoder_client_data))
1883
* ignore all, respond VORBIS_COMMENT
1886
printf("testing FLAC__file_decoder_set_metadata_ignore_all()... ");
1887
if(!FLAC__file_decoder_set_metadata_ignore_all(decoder))
1888
return die_f_("returned false", decoder);
1891
printf("testing FLAC__file_decoder_set_metadata_respond(VORBIS_COMMENT)... ");
1892
if(!FLAC__file_decoder_set_metadata_respond(decoder, FLAC__METADATA_TYPE_VORBIS_COMMENT))
1893
return die_f_("returned false", decoder);
1897
expected_metadata_sequence_[num_expected_++] = &vorbiscomment_;
1899
if(!file_decoder_test_respond_(decoder, &decoder_client_data))
1903
* ignore all, respond APPLICATION
1906
printf("testing FLAC__file_decoder_set_metadata_ignore_all()... ");
1907
if(!FLAC__file_decoder_set_metadata_ignore_all(decoder))
1908
return die_f_("returned false", decoder);
1911
printf("testing FLAC__file_decoder_set_metadata_respond(APPLICATION)... ");
1912
if(!FLAC__file_decoder_set_metadata_respond(decoder, FLAC__METADATA_TYPE_APPLICATION))
1913
return die_f_("returned false", decoder);
1917
expected_metadata_sequence_[num_expected_++] = &application1_;
1918
expected_metadata_sequence_[num_expected_++] = &application2_;
1920
if(!file_decoder_test_respond_(decoder, &decoder_client_data))
1924
* ignore all, respond APPLICATION id of app#1
1927
printf("testing FLAC__file_decoder_set_metadata_ignore_all()... ");
1928
if(!FLAC__file_decoder_set_metadata_ignore_all(decoder))
1929
return die_f_("returned false", decoder);
1932
printf("testing FLAC__file_decoder_set_metadata_respond_application(of app block #1)... ");
1933
if(!FLAC__file_decoder_set_metadata_respond_application(decoder, application1_.data.application.id))
1934
return die_f_("returned false", decoder);
1938
expected_metadata_sequence_[num_expected_++] = &application1_;
1940
if(!file_decoder_test_respond_(decoder, &decoder_client_data))
1944
* ignore all, respond APPLICATION id of app#1 & app#2
1947
printf("testing FLAC__file_decoder_set_metadata_ignore_all()... ");
1948
if(!FLAC__file_decoder_set_metadata_ignore_all(decoder))
1949
return die_f_("returned false", decoder);
1952
printf("testing FLAC__file_decoder_set_metadata_respond_application(of app block #1)... ");
1953
if(!FLAC__file_decoder_set_metadata_respond_application(decoder, application1_.data.application.id))
1954
return die_f_("returned false", decoder);
1957
printf("testing FLAC__file_decoder_set_metadata_respond_application(of app block #2)... ");
1958
if(!FLAC__file_decoder_set_metadata_respond_application(decoder, application2_.data.application.id))
1959
return die_f_("returned false", decoder);
1963
expected_metadata_sequence_[num_expected_++] = &application1_;
1964
expected_metadata_sequence_[num_expected_++] = &application2_;
1966
if(!file_decoder_test_respond_(decoder, &decoder_client_data))
1970
* respond all, ignore APPLICATION, respond APPLICATION id of app#1
1973
printf("testing FLAC__file_decoder_set_metadata_respond_all()... ");
1974
if(!FLAC__file_decoder_set_metadata_respond_all(decoder))
1975
return die_f_("returned false", decoder);
1978
printf("testing FLAC__file_decoder_set_metadata_ignore(APPLICATION)... ");
1979
if(!FLAC__file_decoder_set_metadata_ignore(decoder, FLAC__METADATA_TYPE_APPLICATION))
1980
return die_f_("returned false", decoder);
1983
printf("testing FLAC__file_decoder_set_metadata_respond_application(of app block #1)... ");
1984
if(!FLAC__file_decoder_set_metadata_respond_application(decoder, application1_.data.application.id))
1985
return die_f_("returned false", decoder);
1989
expected_metadata_sequence_[num_expected_++] = &streaminfo_;
1990
expected_metadata_sequence_[num_expected_++] = &padding_;
1991
expected_metadata_sequence_[num_expected_++] = &seektable_;
1992
expected_metadata_sequence_[num_expected_++] = &application1_;
1993
expected_metadata_sequence_[num_expected_++] = &vorbiscomment_;
1994
expected_metadata_sequence_[num_expected_++] = &cuesheet_;
1995
expected_metadata_sequence_[num_expected_++] = &unknown_;
1997
if(!file_decoder_test_respond_(decoder, &decoder_client_data))
2001
* ignore all, respond APPLICATION, ignore APPLICATION id of app#1
2004
printf("testing FLAC__file_decoder_set_metadata_ignore_all()... ");
2005
if(!FLAC__file_decoder_set_metadata_ignore_all(decoder))
2006
return die_f_("returned false", decoder);
2009
printf("testing FLAC__file_decoder_set_metadata_respond(APPLICATION)... ");
2010
if(!FLAC__file_decoder_set_metadata_respond(decoder, FLAC__METADATA_TYPE_APPLICATION))
2011
return die_f_("returned false", decoder);
2014
printf("testing FLAC__file_decoder_set_metadata_ignore_application(of app block #1)... ");
2015
if(!FLAC__file_decoder_set_metadata_ignore_application(decoder, application1_.data.application.id))
2016
return die_f_("returned false", decoder);
2020
expected_metadata_sequence_[num_expected_++] = &application2_;
2022
if(!file_decoder_test_respond_(decoder, &decoder_client_data))
2025
/* done, now leave the sequence the way we found it... */
2027
expected_metadata_sequence_[num_expected_++] = &streaminfo_;
2028
expected_metadata_sequence_[num_expected_++] = &padding_;
2029
expected_metadata_sequence_[num_expected_++] = &seektable_;
2030
expected_metadata_sequence_[num_expected_++] = &application1_;
2031
expected_metadata_sequence_[num_expected_++] = &application2_;
2032
expected_metadata_sequence_[num_expected_++] = &vorbiscomment_;
2033
expected_metadata_sequence_[num_expected_++] = &cuesheet_;
2034
expected_metadata_sequence_[num_expected_++] = &unknown_;
2036
printf("testing FLAC__file_decoder_delete()... ");
2037
FLAC__file_decoder_delete(decoder);
2040
printf("\nPASSED!\n");
2045
FLAC__bool test_decoders()
2047
init_metadata_blocks_();
2048
if(!generate_file_())
2051
if(!test_stream_decoder())
2054
if(!test_seekable_stream_decoder())
2057
if(!test_file_decoder())
2060
(void) grabbag__file_remove_file(flacfilename_);
2061
free_metadata_blocks_();
1011
printf("\nPASSED!\n");
1016
FLAC__bool test_decoders(void)
1018
FLAC__bool is_ogg = false;
1021
init_metadata_blocks_();
1023
if(!generate_file_(is_ogg))
1026
if(!test_stream_decoder(LAYER_STREAM, is_ogg))
1029
if(!test_stream_decoder(LAYER_SEEKABLE_STREAM, is_ogg))
1032
if(!test_stream_decoder(LAYER_FILE, is_ogg))
1035
if(!test_stream_decoder(LAYER_FILENAME, is_ogg))
1038
(void) grabbag__file_remove_file(flacfilename(is_ogg));
1040
free_metadata_blocks_();
1042
if(!FLAC_API_SUPPORTS_OGG_FLAC || is_ogg)