mirror of
https://github.com/claunia/flac.git
synced 2025-12-16 18:54:26 +00:00
augment unit tests to test for correctness with unknown metadata blocks
This commit is contained in:
@@ -30,8 +30,8 @@ extern "C" {
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
static ::FLAC__StreamMetadata streaminfo_, padding_, seektable_, application1_, application2_, vorbiscomment_, cuesheet_;
|
||||
static ::FLAC__StreamMetadata *expected_metadata_sequence_[7];
|
||||
static ::FLAC__StreamMetadata streaminfo_, padding_, seektable_, application1_, application2_, vorbiscomment_, cuesheet_, unknown_;
|
||||
static ::FLAC__StreamMetadata *expected_metadata_sequence_[8];
|
||||
static unsigned num_expected_;
|
||||
static const char *oggflacfilename_ = "metadata.ogg";
|
||||
static unsigned oggflacfilesize_;
|
||||
@@ -44,12 +44,12 @@ static bool die_(const char *msg)
|
||||
|
||||
static void init_metadata_blocks_()
|
||||
{
|
||||
mutils__init_metadata_blocks(&streaminfo_, &padding_, &seektable_, &application1_, &application2_, &vorbiscomment_, &cuesheet_);
|
||||
mutils__init_metadata_blocks(&streaminfo_, &padding_, &seektable_, &application1_, &application2_, &vorbiscomment_, &cuesheet_, &unknown_);
|
||||
}
|
||||
|
||||
static void free_metadata_blocks_()
|
||||
{
|
||||
mutils__free_metadata_blocks(&streaminfo_, &padding_, &seektable_, &application1_, &application2_, &vorbiscomment_, &cuesheet_);
|
||||
mutils__free_metadata_blocks(&streaminfo_, &padding_, &seektable_, &application1_, &application2_, &vorbiscomment_, &cuesheet_, &unknown_);
|
||||
}
|
||||
|
||||
static bool generate_file_()
|
||||
@@ -63,6 +63,7 @@ static bool generate_file_()
|
||||
expected_metadata_sequence_[num_expected_++] = &application2_;
|
||||
expected_metadata_sequence_[num_expected_++] = &vorbiscomment_;
|
||||
expected_metadata_sequence_[num_expected_++] = &cuesheet_;
|
||||
expected_metadata_sequence_[num_expected_++] = &unknown_;
|
||||
|
||||
if(!file_utils__generate_oggflacfile(oggflacfilename_, &oggflacfilesize_, 512 * 1024, &streaminfo_, expected_metadata_sequence_, num_expected_))
|
||||
return die_("creating the encoded file");
|
||||
@@ -453,6 +454,7 @@ static bool test_stream_decoder()
|
||||
expected_metadata_sequence_[num_expected_++] = &application2_;
|
||||
expected_metadata_sequence_[num_expected_++] = &vorbiscomment_;
|
||||
expected_metadata_sequence_[num_expected_++] = &cuesheet_;
|
||||
expected_metadata_sequence_[num_expected_++] = &unknown_;
|
||||
|
||||
if(!decoder->test_respond())
|
||||
return false;
|
||||
@@ -498,6 +500,7 @@ static bool test_stream_decoder()
|
||||
expected_metadata_sequence_[num_expected_++] = &application1_;
|
||||
expected_metadata_sequence_[num_expected_++] = &application2_;
|
||||
expected_metadata_sequence_[num_expected_++] = &cuesheet_;
|
||||
expected_metadata_sequence_[num_expected_++] = &unknown_;
|
||||
|
||||
if(!decoder->test_respond())
|
||||
return false;
|
||||
@@ -526,6 +529,7 @@ static bool test_stream_decoder()
|
||||
expected_metadata_sequence_[num_expected_++] = &seektable_;
|
||||
expected_metadata_sequence_[num_expected_++] = &vorbiscomment_;
|
||||
expected_metadata_sequence_[num_expected_++] = &cuesheet_;
|
||||
expected_metadata_sequence_[num_expected_++] = &unknown_;
|
||||
|
||||
if(!decoder->test_respond())
|
||||
return false;
|
||||
@@ -555,6 +559,7 @@ static bool test_stream_decoder()
|
||||
expected_metadata_sequence_[num_expected_++] = &application2_;
|
||||
expected_metadata_sequence_[num_expected_++] = &vorbiscomment_;
|
||||
expected_metadata_sequence_[num_expected_++] = &cuesheet_;
|
||||
expected_metadata_sequence_[num_expected_++] = &unknown_;
|
||||
|
||||
if(!decoder->test_respond())
|
||||
return false;
|
||||
@@ -590,6 +595,7 @@ static bool test_stream_decoder()
|
||||
expected_metadata_sequence_[num_expected_++] = &seektable_;
|
||||
expected_metadata_sequence_[num_expected_++] = &vorbiscomment_;
|
||||
expected_metadata_sequence_[num_expected_++] = &cuesheet_;
|
||||
expected_metadata_sequence_[num_expected_++] = &unknown_;
|
||||
|
||||
if(!decoder->test_respond())
|
||||
return false;
|
||||
@@ -731,6 +737,7 @@ static bool test_stream_decoder()
|
||||
expected_metadata_sequence_[num_expected_++] = &application1_;
|
||||
expected_metadata_sequence_[num_expected_++] = &vorbiscomment_;
|
||||
expected_metadata_sequence_[num_expected_++] = &cuesheet_;
|
||||
expected_metadata_sequence_[num_expected_++] = &unknown_;
|
||||
|
||||
if(!decoder->test_respond())
|
||||
return false;
|
||||
@@ -775,6 +782,7 @@ static bool test_stream_decoder()
|
||||
expected_metadata_sequence_[num_expected_++] = &application2_;
|
||||
expected_metadata_sequence_[num_expected_++] = &vorbiscomment_;
|
||||
expected_metadata_sequence_[num_expected_++] = &cuesheet_;
|
||||
expected_metadata_sequence_[num_expected_++] = &unknown_;
|
||||
|
||||
::fclose(decoder->file_);
|
||||
|
||||
|
||||
@@ -27,18 +27,18 @@ extern "C" {
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
static ::FLAC__StreamMetadata streaminfo_, padding_, seektable_, application1_, application2_, vorbiscomment_, cuesheet_;
|
||||
static ::FLAC__StreamMetadata *metadata_sequence_[] = { &padding_, &seektable_, &application1_, &application2_, &vorbiscomment_, &cuesheet_ };
|
||||
static ::FLAC__StreamMetadata streaminfo_, padding_, seektable_, application1_, application2_, vorbiscomment_, cuesheet_, unknown_;
|
||||
static ::FLAC__StreamMetadata *metadata_sequence_[] = { &padding_, &seektable_, &application1_, &application2_, &vorbiscomment_, &cuesheet_, &unknown_ };
|
||||
static const unsigned num_metadata_ = sizeof(metadata_sequence_) / sizeof(metadata_sequence_[0]);
|
||||
|
||||
static void init_metadata_blocks_()
|
||||
{
|
||||
mutils__init_metadata_blocks(&streaminfo_, &padding_, &seektable_, &application1_, &application2_, &vorbiscomment_, &cuesheet_);
|
||||
mutils__init_metadata_blocks(&streaminfo_, &padding_, &seektable_, &application1_, &application2_, &vorbiscomment_, &cuesheet_, &unknown_);
|
||||
}
|
||||
|
||||
static void free_metadata_blocks_()
|
||||
{
|
||||
mutils__free_metadata_blocks(&streaminfo_, &padding_, &seektable_, &application1_, &application2_, &vorbiscomment_, &cuesheet_);
|
||||
mutils__free_metadata_blocks(&streaminfo_, &padding_, &seektable_, &application1_, &application2_, &vorbiscomment_, &cuesheet_, &unknown_);
|
||||
}
|
||||
|
||||
class StreamEncoder : public OggFLAC::Encoder::Stream {
|
||||
|
||||
@@ -368,7 +368,8 @@ void mutils__init_metadata_blocks(
|
||||
FLAC__StreamMetadata *application1,
|
||||
FLAC__StreamMetadata *application2,
|
||||
FLAC__StreamMetadata *vorbiscomment,
|
||||
FLAC__StreamMetadata *cuesheet
|
||||
FLAC__StreamMetadata *cuesheet,
|
||||
FLAC__StreamMetadata *unknown
|
||||
)
|
||||
{
|
||||
/*
|
||||
@@ -439,7 +440,7 @@ void mutils__init_metadata_blocks(
|
||||
vorbiscomment->data.vorbis_comment.comments[1].entry = 0;
|
||||
}
|
||||
|
||||
cuesheet->is_last = true;
|
||||
cuesheet->is_last = false;
|
||||
cuesheet->type = FLAC__METADATA_TYPE_CUESHEET;
|
||||
cuesheet->length =
|
||||
/* cuesheet guts */
|
||||
@@ -497,6 +498,12 @@ void mutils__init_metadata_blocks(
|
||||
cuesheet->data.cue_sheet.tracks[2].offset = 12345 * 588;
|
||||
cuesheet->data.cue_sheet.tracks[2].number = 170;
|
||||
cuesheet->data.cue_sheet.tracks[2].num_indices = 0;
|
||||
|
||||
unknown->is_last = true;
|
||||
unknown->type = 127;
|
||||
unknown->length = 8;
|
||||
unknown->data.unknown.data = (FLAC__byte*)malloc_or_die_(8);
|
||||
memcpy(unknown->data.unknown.data, "\xfe\xdc\xba\x98\xf0\xe1\xd2\xc3", 8);
|
||||
}
|
||||
|
||||
void mutils__free_metadata_blocks(
|
||||
@@ -506,7 +513,8 @@ void mutils__free_metadata_blocks(
|
||||
FLAC__StreamMetadata *application1,
|
||||
FLAC__StreamMetadata *application2,
|
||||
FLAC__StreamMetadata *vorbiscomment,
|
||||
FLAC__StreamMetadata *cuesheet
|
||||
FLAC__StreamMetadata *cuesheet,
|
||||
FLAC__StreamMetadata *unknown
|
||||
)
|
||||
{
|
||||
(void)streaminfo, (void)padding, (void)application2;
|
||||
@@ -518,4 +526,5 @@ void mutils__free_metadata_blocks(
|
||||
free(cuesheet->data.cue_sheet.tracks[0].indices);
|
||||
free(cuesheet->data.cue_sheet.tracks[1].indices);
|
||||
free(cuesheet->data.cue_sheet.tracks);
|
||||
free(unknown->data.unknown.data);
|
||||
}
|
||||
|
||||
@@ -51,7 +51,8 @@ void mutils__init_metadata_blocks(
|
||||
FLAC__StreamMetadata *application1,
|
||||
FLAC__StreamMetadata *application2,
|
||||
FLAC__StreamMetadata *vorbiscomment,
|
||||
FLAC__StreamMetadata *cuesheet
|
||||
FLAC__StreamMetadata *cuesheet,
|
||||
FLAC__StreamMetadata *unknown
|
||||
);
|
||||
|
||||
void mutils__free_metadata_blocks(
|
||||
@@ -61,7 +62,8 @@ void mutils__free_metadata_blocks(
|
||||
FLAC__StreamMetadata *application1,
|
||||
FLAC__StreamMetadata *application2,
|
||||
FLAC__StreamMetadata *vorbiscomment,
|
||||
FLAC__StreamMetadata *cuesheet
|
||||
FLAC__StreamMetadata *cuesheet,
|
||||
FLAC__StreamMetadata *unknown
|
||||
);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user