⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 metadata_object.cpp

📁 这是著名的TCPMP播放器在WINDWOWS,和WINCE下编译通过的源程序.笔者对其中的LIBMAD库做了针对ARM MPU的优化. 并增加了词幕功能.
💻 CPP
📖 第 1 页 / 共 5 页
字号:

	printf("testing Track::Track(const Track &track)... ");
	{
		FLAC::Metadata::CueSheet::Track track0copy(track0);
		if(!track0copy.is_valid())
			return die_("!is_valid()");
		if(!track_is_equal_(track0copy.get_track(), track0.get_track()))
			return die_("copy is not equal");
		printf("OK\n");

		printf("testing Track::~Track()... ");
	}
	printf("OK\n");

	printf("testing Track::operator=(const Track &track)... ");
	FLAC::Metadata::CueSheet::Track track1 = track0;
	if(!track0.is_valid())
		return die_("!is_valid()");
	if(!track_is_equal_(track1.get_track(), track0.get_track()))
		return die_("copy is not equal");
	printf("OK\n");

	printf("testing Track::get_offset()... ");
	if(track1.get_offset() != 0)
		return die_("value mismatch");
	printf("OK\n");

	printf("testing Track::get_number()... ");
	if(track1.get_number() != 0)
		return die_("value mismatch");
	printf("OK\n");

	printf("testing Track::get_isrc()... ");
	if(0 != memcmp(track1.get_isrc(), "\0\0\0\0\0\0\0\0\0\0\0\0\0", 13))
		return die_("value mismatch");
	printf("OK\n");

	printf("testing Track::get_type()... ");
	if(track1.get_type() != 0)
		return die_("value mismatch");
	printf("OK\n");

	printf("testing Track::get_pre_emphasis()... ");
	if(track1.get_pre_emphasis() != 0)
		return die_("value mismatch");
	printf("OK\n");

	printf("testing Track::get_num_indices()... ");
	if(track1.get_num_indices() != 0)
		return die_("value mismatch");
	printf("OK\n");

	printf("testing Track::set_offset()... ");
	track1.set_offset(588);
	if(track1.get_offset() != 588)
		return die_("value mismatch");
	printf("OK\n");

	printf("testing Track::set_number()... ");
	track1.set_number(1);
	if(track1.get_number() != 1)
		return die_("value mismatch");
	printf("OK\n");

	printf("testing Track::set_isrc()... ");
	track1.set_isrc("ABCDE1234567");
	if(0 != memcmp(track1.get_isrc(), "ABCDE1234567", 13))
		return die_("value mismatch");
	printf("OK\n");

	printf("testing Track::set_type()... ");
	track1.set_type(1);
	if(track1.get_type() != 1)
		return die_("value mismatch");
	printf("OK\n");

	printf("testing Track::set_pre_emphasis()... ");
	track1.set_pre_emphasis(1);
	if(track1.get_pre_emphasis() != 1)
		return die_("value mismatch");
	printf("OK\n");

	printf("PASSED\n\n");

	printf("testing class FLAC::Metadata::CueSheet\n");

	printf("testing CueSheet::CueSheet()... ");
	FLAC::Metadata::CueSheet block;
	if(!block.is_valid())
		return die_("!block.is_valid()");
	expected_length = (
		FLAC__STREAM_METADATA_CUESHEET_MEDIA_CATALOG_NUMBER_LEN +
		FLAC__STREAM_METADATA_CUESHEET_LEAD_IN_LEN +
		FLAC__STREAM_METADATA_CUESHEET_IS_CD_LEN +
		FLAC__STREAM_METADATA_CUESHEET_RESERVED_LEN +
		FLAC__STREAM_METADATA_CUESHEET_NUM_TRACKS_LEN
	) / 8;
	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 CueSheet::CueSheet(const CueSheet &)... +\n");
	printf("        CueSheet::operator!=(const CueSheet &)... ");
	{
		FLAC::Metadata::CueSheet 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 CueSheet::~CueSheet()... ");
	}
	printf("OK\n");

	printf("testing CueSheet::CueSheet(const ::FLAC__StreamMetadata &)... +\n");
	printf("        CueSheet::operator!=(const ::FLAC__StreamMetadata &)... ");
	{
		FLAC::Metadata::CueSheet blockcopy(cuesheet_);
		if(!blockcopy.is_valid())
			return die_("!block.is_valid()");
		if(blockcopy != cuesheet_)
			return die_("copy is not identical to original");
		printf("OK\n");
	}

	printf("testing CueSheet::CueSheet(const ::FLAC__StreamMetadata *)... +\n");
	printf("        CueSheet::operator!=(const ::FLAC__StreamMetadata *)... ");
	{
		FLAC::Metadata::CueSheet blockcopy(&cuesheet_);
		if(!blockcopy.is_valid())
			return die_("!block.is_valid()");
		if(blockcopy != cuesheet_)
			return die_("copy is not identical to original");
		printf("OK\n");
	}

	printf("testing CueSheet::CueSheet(const ::FLAC__StreamMetadata *, copy=true)... +\n");
	printf("        CueSheet::operator!=(const ::FLAC__StreamMetadata *)... ");
	{
		FLAC::Metadata::CueSheet blockcopy(&cuesheet_, /*copy=*/true);
		if(!blockcopy.is_valid())
			return die_("!block.is_valid()");
		if(blockcopy != cuesheet_)
			return die_("copy is not identical to original");
		printf("OK\n");
	}

	printf("testing CueSheet::CueSheet(const ::FLAC__StreamMetadata *, copy=false)... +\n");
	printf("        CueSheet::operator!=(const ::FLAC__StreamMetadata *)... ");
	{
		::FLAC__StreamMetadata *copy = ::FLAC__metadata_object_clone(&cuesheet_);
		FLAC::Metadata::CueSheet blockcopy(copy, /*copy=*/false);
		if(!blockcopy.is_valid())
			return die_("!block.is_valid()");
		if(blockcopy != cuesheet_)
			return die_("copy is not identical to original");
		printf("OK\n");
	}

	printf("testing CueSheet::assign(const ::FLAC__StreamMetadata *, copy=true)... +\n");
	printf("        CueSheet::operator!=(const ::FLAC__StreamMetadata *)... ");
	{
		FLAC::Metadata::CueSheet blockcopy;
		blockcopy.assign(&cuesheet_, /*copy=*/true);
		if(!blockcopy.is_valid())
			return die_("!block.is_valid()");
		if(blockcopy != cuesheet_)
			return die_("copy is not identical to original");
		printf("OK\n");
	}

	printf("testing CueSheet::assign(const ::FLAC__StreamMetadata *, copy=false)... +\n");
	printf("        CueSheet::operator!=(const ::FLAC__StreamMetadata *)... ");
	{
		::FLAC__StreamMetadata *copy = ::FLAC__metadata_object_clone(&cuesheet_);
		FLAC::Metadata::CueSheet blockcopy;
		blockcopy.assign(copy, /*copy=*/false);
		if(!blockcopy.is_valid())
			return die_("!block.is_valid()");
		if(blockcopy != cuesheet_)
			return die_("copy is not identical to original");
		printf("OK\n");
	}

	printf("testing CueSheet::operator=(const CueSheet &)... +\n");
	printf("        CueSheet::operator==(const CueSheet &)... ");
	{
		FLAC::Metadata::CueSheet 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 CueSheet::operator=(const ::FLAC__StreamMetadata &)... +\n");
	printf("        CueSheet::operator==(const ::FLAC__StreamMetadata &)... ");
	{
		FLAC::Metadata::CueSheet blockcopy = cuesheet_;
		if(!blockcopy.is_valid())
			return die_("!block.is_valid()");
		if(!(blockcopy == cuesheet_))
			return die_("copy is not identical to original");
		printf("OK\n");
	}

	printf("testing CueSheet::operator=(const ::FLAC__StreamMetadata *)... +\n");
	printf("        CueSheet::operator==(const ::FLAC__StreamMetadata *)... ");
	{
		FLAC::Metadata::CueSheet blockcopy = &cuesheet_;
		if(!blockcopy.is_valid())
			return die_("!block.is_valid()");
		if(!(blockcopy == cuesheet_))
			return die_("copy is not identical to original");
		printf("OK\n");
	}

	printf("testing CueSheet::get_media_catalog_number()... ");
	if(0 != strcmp(block.get_media_catalog_number(), ""))
		return die_("value mismatch");
	printf("OK\n");

	printf("testing CueSheet::get_lead_in()... ");
	if(block.get_lead_in() != 0)
		return die_("value mismatch, expected 0");
	printf("OK\n");

	printf("testing CueSheet::get_is_cd()... ");
	if(block.get_is_cd())
		return die_("value mismatch, expected false");
	printf("OK\n");

	printf("testing CueSheet::get_num_tracks()... ");
	if(block.get_num_tracks() != 0)
		return die_("value mismatch, expected 0");
	printf("OK\n");

	printf("testing CueSheet::set_media_catalog_number()... ");
	{
		char mcn[129];
		memset(mcn, 0, sizeof(mcn));
		strcpy(mcn, "1234567890123");
		block.set_media_catalog_number(mcn);
		if(0 != memcmp(block.get_media_catalog_number(), mcn, sizeof(mcn)))
			return die_("value mismatch");
	}
	printf("OK\n");

	printf("testing CueSheet::set_lead_in()... ");
	block.set_lead_in(588);
	if(block.get_lead_in() != 588)
		return die_("value mismatch");
	printf("OK\n");

	printf("testing CueSheet::set_is_cd()... ");
	block.set_is_cd(true);
	if(!block.get_is_cd())
		return die_("value mismatch");
	printf("OK\n");

	printf("testing CueSheet::insert_track()... +\n");
	printf("        CueSheet::get_track()... ");
	if(!block.insert_track(0, track0))
		return die_("returned false");
	if(!track_is_equal_(block.get_track(0).get_track(), track0.get_track()))
		return die_("value mismatch");
	printf("OK\n");

	printf("testing CueSheet::insert_track()... +\n");
	printf("        CueSheet::get_track()... ");
	if(!block.insert_track(1, track1))
		return die_("returned false");
	if(!track_is_equal_(block.get_track(1).get_track(), track1.get_track()))
		return die_("value mismatch");
	printf("OK\n");

	::FLAC__StreamMetadata_CueSheet_Index index0;
	index0.offset = 588*4;
	index0.number = 1;

	printf("testing CueSheet::insert_index(0)... +\n");
	printf("        CueSheet::get_track()... +\n");
	printf("        CueSheet::Track::get_index()... ");
	if(!block.insert_index(0, 0, index0))
		return die_("returned false");
	if(!index_is_equal_(block.get_track(0).get_index(0), index0))
		return die_("value mismatch");
	printf("OK\n");

	index0.offset = 588*5;
	printf("testing CueSheet::Track::set_index()... ");
	{
		FLAC::Metadata::CueSheet::Track track_ = block.get_track(0);
		track_.set_index(0, index0);
		if(!index_is_equal_(track_.get_index(0), index0))
			return die_("value mismatch");
	}
	printf("OK\n");

	index0.offset = 588*6;
	printf("testing CueSheet::set_index()... ");
	block.set_index(0, 0, index0);
	if(!index_is_equal_(block.get_track(0).get_index(0), index0))
		return die_("value mismatch");
	printf("OK\n");

	printf("testing CueSheet::delete_index()... ");
	if(!block.delete_index(0, 0))
		return die_("returned false");
	if(block.get_track(0).get_num_indices() != 0)
		return die_("num_indices mismatch");
	printf("OK\n");


	printf("testing CueSheet::set_track()... +\n");
	printf("        CueSheet::get_track()... ");
	if(!block.set_track(0, track1))
		return die_("returned false");
	if(!track_is_equal_(block.get_track(0).get_track(), track1.get_track()))
		return die_("value mismatch");
	printf("OK\n");

	printf("testing CueSheet::delete_track()... ");
	if(!block.delete_track(0))
		return die_("returned false");
	if(block.get_num_tracks() != 1)
		return die_("num_tracks 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::CueSheet *>(clone_))
		return die_("downcast is NULL");
	if(*dynamic_cast<FLAC::Metadata::CueSheet *>(clone_) != block)
		return die_("clone is not identical");
	printf("OK\n");
	printf("testing CueSheet::~CueSheet()... ");
	delete clone_;
	printf("OK\n");

	printf("PASSED\n\n");
	return true;
}

bool test_metadata_object()
{
	printf("\n+++ libFLAC++ unit test: 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -