use Test::More tests => 7; BEGIN { use_ok('Audio::TagLib::ID3v2::RelativeVolumeFrame') }; my @methods = qw(new DESTROY toString channels channelType setChannelType volumeAdjustmentIndex setVolumeAdjustmentIndex volumeAdjustment setVolumeAdjustment peakVolume setPeakVolume); can_ok("Audio::TagLib::ID3v2::RelativeVolumeFrame", @methods) or diag("can_ok failed"); isa_ok(Audio::TagLib::ID3v2::RelativeVolumeFrame->new(), "Audio::TagLib::ID3v2::RelativeVolumeFrame") or diag("method new() failed"); my $i = Audio::TagLib::ID3v2::RelativeVolumeFrame->new( Audio::TagLib::ByteVector->new("XXXX\0\0\0\0\0\0", 10)) or diag("method new(data) failed"); # This is deprecated. Call has no effect $i->setChannelType("BackCentre"); # This proves that setChannelType() is deprecated. type is hard-coded is($i->channelType(), "MasterVolume") or diag("method setChannelType(t) and channelType() failed"); $i->setVolumeAdjustmentIndex(20, "MasterVolume"); cmp_ok($i->volumeAdjustmentIndex("MasterVolume"), "==", 20) or diag("method setVolumeAdjustmentIndex(index) and". " volumeAdjustmentIndex(MasterVolume) failed"); # Set float 20.20 that's a float, not a comma $i->setVolumeAdjustment(20.20, "MasterVolume"); cmp_ok($i->volumeAdjustment("MasterVolume"), "==", 20.19921875) or diag("method setVolumeAdjustment(adj) and". " valumeAdjustment(MasterVolume) failed"); my $peak = Audio::TagLib::ID3v2::RelativeVolumeFrame::PeakVolume->new(); # So, 20 bits represent Peak. This is a local function that sets a PeakVolume structure menber $peak->setBitsRepresentingPeak(20); # setPeakVolume() sets the PeakVolume structure to this ByteVector, which is a series # of 20 bits (see above) that represents the PeakVolume. What we have here is obviously # just an arbitrary piece of data $peak->setPeakVolume(Audio::TagLib::ByteVector->new("blah blah")); $i->setPeakVolume($peak, "MasterVolume"); isa_ok($i->peakVolume("MasterVolume"), "Audio::TagLib::ID3v2::RelativeVolumeFrame::PeakVolume") or diag("method setPeakVolume(peak) and peakVolume() failed");