📄 metadata_object.cpp
字号:
printf("OK\n");
}
printf("testing Application::operator=(const ::FLAC__StreamMetadata &)... +\n");
printf(" Application::operator==(const ::FLAC__StreamMetadata &)... ");
{
FLAC::Metadata::Application blockcopy = application_;
if(!blockcopy.is_valid())
return die_("!block.is_valid()");
if(!(blockcopy == application_))
return die_("copy is not identical to original");
printf("OK\n");
}
printf("testing Application::operator=(const ::FLAC__StreamMetadata *)... +\n");
printf(" Application::operator==(const ::FLAC__StreamMetadata *)... ");
{
FLAC::Metadata::Application blockcopy = &application_;
if(!blockcopy.is_valid())
return die_("!block.is_valid()");
if(!(blockcopy == application_))
return die_("copy is not identical to original");
printf("OK\n");
}
printf("testing Application::set_id()... ");
block.set_id(application_.data.application.id);
printf("OK\n");
printf("testing Application::set_data()... ");
block.set_data(application_.data.application.data, application_.length - sizeof(application_.data.application.id), /*copy=*/true);
printf("OK\n");
printf("testing Application::get_id()... ");
if(0 != memcmp(block.get_id(), application_.data.application.id, sizeof(application_.data.application.id)))
return die_("value mismatch, doesn't match previously set value");
printf("OK\n");
printf("testing Application::get_data()... ");
if(0 != memcmp(block.get_data(), application_.data.application.data, application_.length - sizeof(application_.data.application.id)))
return die_("value mismatch, doesn't match previously set value");
printf("OK\n");
printf("testing FLAC::Metadata::clone(const FLAC::Metadata::Prototype *)... ");
FLAC::Metadata::Prototype *clone_ = FLAC::Metadata::clone(&block);
if(0 == clone_)
return die_("returned NULL");
if(0 == dynamic_cast<FLAC::Metadata::Application *>(clone_))
return die_("downcast is NULL");
if(*dynamic_cast<FLAC::Metadata::Application *>(clone_) != block)
return die_("clone is not identical");
printf("OK\n");
printf("testing Application::~Application()... ");
delete clone_;
printf("OK\n");
printf("PASSED\n\n");
return true;
}
bool test_metadata_object_seektable()
{
unsigned expected_length;
printf("testing class FLAC::Metadata::SeekTable\n");
printf("testing SeekTable::SeekTable()... ");
FLAC::Metadata::SeekTable block;
if(!block.is_valid())
return die_("!block.is_valid()");
expected_length = 0;
if(block.get_length() != expected_length) {
printf("FAILED, bad length, expected %u, got %u\n", expected_length, block.get_length());
return false;
}
printf("OK\n");
printf("testing SeekTable::SeekTable(const SeekTable &)... +\n");
printf(" SeekTable::operator!=(const SeekTable &)... ");
{
FLAC::Metadata::SeekTable blockcopy(block);
if(!blockcopy.is_valid())
return die_("!block.is_valid()");
if(blockcopy != block)
return die_("copy is not identical to original");
printf("OK\n");
printf("testing SeekTable::~SeekTable()... ");
}
printf("OK\n");
printf("testing SeekTable::SeekTable(const ::FLAC__StreamMetadata &)... +\n");
printf(" SeekTable::operator!=(const ::FLAC__StreamMetadata &)... ");
{
FLAC::Metadata::SeekTable blockcopy(seektable_);
if(!blockcopy.is_valid())
return die_("!block.is_valid()");
if(blockcopy != seektable_)
return die_("copy is not identical to original");
printf("OK\n");
}
printf("testing SeekTable::SeekTable(const ::FLAC__StreamMetadata *)... +\n");
printf(" SeekTable::operator!=(const ::FLAC__StreamMetadata *)... ");
{
FLAC::Metadata::SeekTable blockcopy(&seektable_);
if(!blockcopy.is_valid())
return die_("!block.is_valid()");
if(blockcopy != seektable_)
return die_("copy is not identical to original");
printf("OK\n");
}
printf("testing SeekTable::SeekTable(const ::FLAC__StreamMetadata *, copy=true)... +\n");
printf(" SeekTable::operator!=(const ::FLAC__StreamMetadata *)... ");
{
FLAC::Metadata::SeekTable blockcopy(&seektable_, /*copy=*/true);
if(!blockcopy.is_valid())
return die_("!block.is_valid()");
if(blockcopy != seektable_)
return die_("copy is not identical to original");
printf("OK\n");
}
printf("testing SeekTable::SeekTable(const ::FLAC__StreamMetadata *, copy=false)... +\n");
printf(" SeekTable::operator!=(const ::FLAC__StreamMetadata *)... ");
{
::FLAC__StreamMetadata *copy = ::FLAC__metadata_object_clone(&seektable_);
FLAC::Metadata::SeekTable blockcopy(copy, /*copy=*/false);
if(!blockcopy.is_valid())
return die_("!block.is_valid()");
if(blockcopy != seektable_)
return die_("copy is not identical to original");
printf("OK\n");
}
printf("testing SeekTable::assign(const ::FLAC__StreamMetadata *, copy=true)... +\n");
printf(" SeekTable::operator!=(const ::FLAC__StreamMetadata *)... ");
{
FLAC::Metadata::SeekTable blockcopy;
blockcopy.assign(&seektable_, /*copy=*/true);
if(!blockcopy.is_valid())
return die_("!block.is_valid()");
if(blockcopy != seektable_)
return die_("copy is not identical to original");
printf("OK\n");
}
printf("testing SeekTable::assign(const ::FLAC__StreamMetadata *, copy=false)... +\n");
printf(" SeekTable::operator!=(const ::FLAC__StreamMetadata *)... ");
{
::FLAC__StreamMetadata *copy = ::FLAC__metadata_object_clone(&seektable_);
FLAC::Metadata::SeekTable blockcopy;
blockcopy.assign(copy, /*copy=*/false);
if(!blockcopy.is_valid())
return die_("!block.is_valid()");
if(blockcopy != seektable_)
return die_("copy is not identical to original");
printf("OK\n");
}
printf("testing SeekTable::operator=(const SeekTable &)... +\n");
printf(" SeekTable::operator==(const SeekTable &)... ");
{
FLAC::Metadata::SeekTable blockcopy = block;
if(!blockcopy.is_valid())
return die_("!block.is_valid()");
if(!(blockcopy == block))
return die_("copy is not identical to original");
printf("OK\n");
}
printf("testing SeekTable::operator=(const ::FLAC__StreamMetadata &)... +\n");
printf(" SeekTable::operator==(const ::FLAC__StreamMetadata &)... ");
{
FLAC::Metadata::SeekTable blockcopy = seektable_;
if(!blockcopy.is_valid())
return die_("!block.is_valid()");
if(!(blockcopy == seektable_))
return die_("copy is not identical to original");
printf("OK\n");
}
printf("testing SeekTable::operator=(const ::FLAC__StreamMetadata *)... +\n");
printf(" SeekTable::operator==(const ::FLAC__StreamMetadata *)... ");
{
FLAC::Metadata::SeekTable blockcopy = &seektable_;
if(!blockcopy.is_valid())
return die_("!block.is_valid()");
if(!(blockcopy == seektable_))
return die_("copy is not identical to original");
printf("OK\n");
}
printf("testing SeekTable::insert_point() x 3... ");
if(!block.insert_point(0, seektable_.data.seek_table.points[1]))
return die_("returned false");
if(!block.insert_point(0, seektable_.data.seek_table.points[1]))
return die_("returned false");
if(!block.insert_point(1, seektable_.data.seek_table.points[0]))
return die_("returned false");
printf("OK\n");
printf("testing SeekTable::is_legal()... ");
if(block.is_legal())
return die_("returned true");
printf("OK\n");
printf("testing SeekTable::set_point()... ");
block.set_point(0, seektable_.data.seek_table.points[0]);
printf("OK\n");
printf("testing SeekTable::delete_point()... ");
if(!block.delete_point(0))
return die_("returned false");
printf("OK\n");
printf("testing SeekTable::is_legal()... ");
if(!block.is_legal())
return die_("returned false");
printf("OK\n");
printf("testing SeekTable::get_num_points()... ");
if(block.get_num_points() != seektable_.data.seek_table.num_points)
return die_("number mismatch");
printf("OK\n");
printf("testing SeekTable::operator!=(const ::FLAC__StreamMetadata &)... ");
if(block != seektable_)
return die_("data mismatch");
printf("OK\n");
printf("testing SeekTable::get_point()... ");
if(
block.get_point(1).sample_number != seektable_.data.seek_table.points[1].sample_number ||
block.get_point(1).stream_offset != seektable_.data.seek_table.points[1].stream_offset ||
block.get_point(1).frame_samples != seektable_.data.seek_table.points[1].frame_samples
)
return die_("point mismatch");
printf("OK\n");
printf("testing FLAC::Metadata::clone(const FLAC::Metadata::Prototype *)... ");
FLAC::Metadata::Prototype *clone_ = FLAC::Metadata::clone(&block);
if(0 == clone_)
return die_("returned NULL");
if(0 == dynamic_cast<FLAC::Metadata::SeekTable *>(clone_))
return die_("downcast is NULL");
if(*dynamic_cast<FLAC::Metadata::SeekTable *>(clone_) != block)
return die_("clone is not identical");
printf("OK\n");
printf("testing SeekTable::~SeekTable()... ");
delete clone_;
printf("OK\n");
printf("PASSED\n\n");
return true;
}
bool test_metadata_object_vorbiscomment()
{
unsigned expected_length;
printf("testing class FLAC::Metadata::VorbisComment::Entry\n");
printf("testing Entry::Entry()... ");
{
FLAC::Metadata::VorbisComment::Entry entry1;
if(!entry1.is_valid())
return die_("!is_valid()");
printf("OK\n");
printf("testing Entry::~Entry()... ");
}
printf("OK\n");
printf("testing Entry::Entry(const char *field, unsigned field_length)... ");
FLAC::Metadata::VorbisComment::Entry entry2("name2=value2", strlen("name2=value2"));
if(!entry2.is_valid())
return die_("!is_valid()");
printf("OK\n");
{
printf("testing Entry::Entry(const char *field)... ");
FLAC::Metadata::VorbisComment::Entry entry2z("name2=value2");
if(!entry2z.is_valid())
return die_("!is_valid()");
if(strcmp(entry2.get_field(), entry2z.get_field()))
return die_("bad value");
printf("OK\n");
}
printf("testing Entry::Entry(const char *field_name, const char *field_value, unsigned field_value_length)... ");
FLAC::Metadata::VorbisComment::Entry entry3("name3", "value3", strlen("value3"));
if(!entry3.is_valid())
return die_("!is_valid()");
printf("OK\n");
{
printf("testing Entry::Entry(const char *field_name, const char *field_value)... ");
FLAC::Metadata::VorbisComment::Entry entry3z("name3", "value3");
if(!entry3z.is_valid())
return die_("!is_valid()");
if(strcmp(entry3.get_field(), entry3z.get_field()))
return die_("bad value");
printf("OK\n");
}
printf("testing Entry::Entry(const Entry &entry)... ");
{
FLAC::Metadata::VorbisComment::Entry entry2copy(entry2);
if(!entry2copy.is_valid())
return die_("!is_valid()");
printf("OK\n");
printf("testing Entry::~Entry()... ");
}
printf("OK\n");
printf("testing Entry::operator=(const Entry &entry)... ");
FLAC::Metadata::VorbisComment::Entry entry1 = entry2;
if(!entry2.is_valid())
return die_("!is_valid()");
printf("OK\n");
printf("testing Entry::get_field_length()... ");
if(entry1.get_field_length() != strlen("name2=value2"))
return die_("value mismatch");
printf("OK\n");
printf("testing Entry::get_field_name_length()... ");
if(entry1.get_field_name_length() != strlen("name2"))
return die_("value mismatch");
printf("OK\n");
printf("testing Entry::get_field_value_length()... ");
if(entry1.get_field_value_length() != strlen("value2"))
return die_("value mismatch");
printf("OK\n");
printf("testing Entry::get_entry()... ");
{
::FLAC__StreamMetadata_VorbisComment_Entry entry = entry1.get_entry();
if(entry.length != strlen("name2=value2"))
return die_("entry length mismatch");
if(0 != memcmp(entry.entry, "name2=value2", entry.length))
return die_("entry value mismatch");
}
printf("OK\n");
printf("testing Entry::get_field()... ");
if(0 != memcmp(entry1.get_field(), "name2=value2", strlen("name2=value2")))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -