The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::More tests => 12;
BEGIN { use_ok('Audio::TagLib::ID3v1::Tag') };

my @methods = qw(new DESTROY render title artist album comment genre
                 year track setTitle setArtist setAlbum setComment setGenre setYear
                 setTrack fileIdentifier setStringHandler);
can_ok("Audio::TagLib::ID3v1::Tag", @methods) 			        or 
	diag("can_ok failed");

my $i = Audio::TagLib::ID3v1::Tag->new();
isa_ok($i, "Audio::TagLib::ID3v1::Tag") 				        or 
	diag("method new() failed");
# This interface assumes that $file has id3v1 tags.
# Regretably, that format is obsolete, and no such files are available
#my $j = Audio::TagLib::ID3v1::Tag->new($file, $offset);
#isa_ok($j, "Audio::TagLib::ID3v1::Tag") 				        or 
#	diag("method new(file, tagOffset) failed");

# This function is virtual. No implementations are available
# Audio::TagLib::ID3v1::Tag->setStringHandler()

$i->setTitle(Audio::TagLib::String->new("Title"));
is($i->title()->toCString(), "Title") 			                or 
	diag("method setTitle(string) and title() failed");
$i->setArtist(Audio::TagLib::String->new("Artist"));
is($i->artist()->toCString(), "Artist") 		                or 
	diag("method setArtist(string) and artist() failed");
$i->setAlbum(Audio::TagLib::String->new("Album"));
is($i->album()->toCString(), "Album") 			                or 
	diag("method setAlbum(string) and album() failed");
$i->setComment(Audio::TagLib::String->new("Comment"));
is($i->comment()->toCString(), "Comment") 		                or 
	diag("method setComment(string) and comment() failed");
$i->setGenre(Audio::TagLib::String->new("Classic Rock"));
is($i->genre()->toCString(), "Classic Rock") 	                or 
	diag("method setGenre(string) and genre() failed");
$i->setYear(1981);
cmp_ok($i->year(), "==", 1981) 					                or 
	diag("method setYear(uint) and year() failed");
$i->setTrack(3);
cmp_ok($i->track(), "==", 3) 					                or 
	diag("method setTrack(uint) and track() failed");

isa_ok($i->render(), "Audio::TagLib::ByteVector") 		        or 
	diag("method render() failed");
is(Audio::TagLib::ID3v1::Tag->fileIdentifier()->data(), "TAG")  or 
	diag("method fileIdentifier() failed");