test/cdiotest.rb in rbcdio-0.03 vs test/cdiotest.rb in rbcdio-0.04
- old
+ new
@@ -1,233 +1,231 @@
#!/usr/bin/env ruby
# $Id: cdiotest.rb,v 1.14 2007/10/13 09:23:17 rocky Exp $
# Unit test for cdio
#
-require "test/unit"
-
-unless defined?(Mypath)
- Mypath = File.expand_path(File.dirname(__FILE__))
+require 'test/unit'
+mypath = File.expand_path(File.dirname(__FILE__))
+%w(ext/cdio lib).each do |src_dir|
+ $: << File.join(mypath, '..', src_dir)
end
-old_dir = File.expand_path(Dir.pwd)
-if old_dir != Mypath
- Dir.chdir(Mypath)
-end
-%w(/../ext/cdio /../lib).each do |src_dir|
- $: << Mypath + src_dir unless $:.member?(src_dir)
-end
+require 'cdio'
-require "cdio"
-
class CdioTests < Test::Unit::TestCase
+
+ def setup
+ @mypath = File.expand_path(File.dirname(__FILE__))
+ end
- # Test running miscellaneous operations
- # No assumption about the CD-ROM drives is made, so
- # we're just going to run operations and see that they
- # don't crash.
- def test_ops()
- device = Cdio::Device.new()
- if Rubycdio::VERSION_NUM >= 76
- # FIXME: Broken on Darwin?
- # device.open()
- device.ATAPI?()
- # FIXME: Broken on Darwin?
- # device.media_changed?
- end
- assert_equal(true, true, "Test misc operations")
+ # Test running miscellaneous operations
+ # No assumption about the CD-ROM drives is made, so
+ # we're just going to run operations and see that they
+ # don't crash.
+ def test_ops()
+ device = Cdio::Device.new()
+ if Rubycdio::VERSION_NUM >= 76
+ # FIXME: Broken on Darwin?
+ # device.open()
+ device.ATAPI?()
+ # FIXME: Broken on Darwin?
+ # device.media_changed?
end
-
- # Test getting default device
- def test_device_default()
- result1=Cdio::default_device_driver(Rubycdio::DRIVER_DEVICE)
- result2=Cdio::default_device_driver()
+ assert_equal(true, true, "Test misc operations")
+ end
+
+ # Test getting default device
+ def test_device_default()
+ result1=Cdio::default_device_driver(Rubycdio::DRIVER_DEVICE)
+ result2=Cdio::default_device_driver()
+ assert_equal(result1, result2,
+ "default_device with/out parameters")
+ device = Cdio::Device.new()
+ result2=device.device()
+ if result1
+ assert_equal(result1[0], result2)
+ # Now try getting device using driver that we got back
+ begin
+ device=Cdio::Device.new(driver_id=result1[1])
+ result1 = device.device()
assert_equal(result1, result2,
- "default_device with/out parameters")
- device = Cdio::Device.new()
- result2=device.device()
- if result1:
- assert_equal(result1[0], result2)
- # Now try getting device using driver that we got back
- begin
- device=Cdio::Device.new(driver_id=result1[1])
- result1 = device.device()
- assert_equal(result1, result2,
- "default_device using driver name")
- rescue
- end
- end
+ "default_device using driver name")
+ rescue
+ end
end
-
- # Test that various routines raise proper exceptions
- def test_exceptions()
- device = Cdio::Device.new()
- # No CD or or CD image has been set yet. So these fail
- begin
- lsn = device.disc_last_lsn()
- rescue IOError
- assert_equal(true, true, "last_lsn() IO Error")
- rescue Cdio::DriverError
- assert_equal(true, true, "last_lsn() DriverError")
- else
- assert(false, "last_lsn() should raise error")
- end
- assert_equal("Uninitialized Device", device.disc_mode)
- begin
- track = device.num_tracks()
- rescue IOError
- assert_equal(true, true, "get_num_tracks() IO Error")
- rescue Cdio::DriverError
- assert_equal(true, true, "get_num_tracks() DriverError")
- rescue Cdio::TrackError
- assert_equal(true, true, "get_num_tracks() TrackError")
- else
- assert(false, "last_lsn() should raise error")
- end
-## assert_raise(DriverUninitError, device.driver_name)
-## assert_raise(DriverUninitError,
-## device.media_changed)
-## assert_raise(IOError, device.open, "***Invalid device***")
+ end
+
+ # Test that various routines raise proper exceptions
+ def test_exceptions()
+ device = Cdio::Device.new()
+ # No CD or or CD image has been set yet. So these fail
+ begin
+ lsn = device.disc_last_lsn()
+ rescue IOError
+ assert_equal(true, true, "last_lsn() IO Error")
+ rescue Cdio::DriverError
+ assert_equal(true, true, "last_lsn() DriverError")
+ else
+ assert(false, "last_lsn() should raise error")
end
-
- # Test that we have image drivers
- def test_have_image_drivers()
- result = Cdio::driver? :"CDRDAO"
- assert_equal(true, result, "Have cdrdrao driver via string")
- result = Cdio::driver? Rubycdio::DRIVER_CDRDAO
- assert_equal(true, result, "Have cdrdrao driver via driver_id")
- result = Cdio::driver? :"NRG"
- assert_equal(true, result, "Have NRG driver via string")
- result = Cdio::driver? Rubycdio::DRIVER_NRG
- assert_equal(true, result, "Have NRG driver via driver_id")
- result = Cdio::driver? :'BIN/CUE'
- assert_equal(true, result, "Have BIN/CUE driver via string")
- result = Cdio::driver? Rubycdio::DRIVER_BINCUE
- assert_equal(true, result, "Have BIN/CUE driver via driver_id")
+ assert_equal("Uninitialized Device", device.disc_mode)
+ begin
+ track = device.num_tracks()
+ rescue IOError
+ assert_equal(true, true, "get_num_tracks() IO Error")
+ rescue Cdio::DriverError
+ assert_equal(true, true, "get_num_tracks() DriverError")
+ rescue Cdio::TrackError
+ assert_equal(true, true, "get_num_tracks() TrackError")
+ else
+ assert(false, "last_lsn() should raise error")
end
+ ## assert_raise(DriverUninitError, device.driver_name)
+ ## assert_raise(DriverUninitError,
+ ## device.media_changed)
+ ## assert_raise(IOError, device.open, "***Invalid device***")
+ end
- # Test functioning of cdrdao image routines
- def test_tocfile()
- ## TOC reading needs to be done in the directory where the
- ## TOC/BIN files reside.
- olddir=Dir.pwd()
- Dir.chdir(Mypath)
- tocfile="cdda.toc"
- device = Cdio::Device.new(tocfile, Rubycdio::DRIVER_CDRDAO)
- hw = device.hwinfo()
- assert_equal(true, hw != nil, "get_hwinfo ok")
- assert_equal('libcdio', hw["vendor"], "get_hwinfo vendor")
- assert_equal('cdrdao', hw["model"], "get_hwinfo cdrdao")
- # Test known values of various access parameters:
- # access mode, driver name via string and via driver_id
- # and cue name
- result = device.arg("access-mode")
- assert_equal(result, 'image', 'get_arg("access_mode")')
- result = device.driver_name()
- assert_equal(result, 'CDRDAO', 'get_driver_name')
- result = device.driver_id()
- assert_equal(result, Rubycdio::DRIVER_CDRDAO, 'get_driver_id')
- result = device.arg("source")
- assert_equal(result, tocfile, 'get_arg("source")')
- result = device.media_changed?
- assert_equal(false, result, "tocfile: media_changed?")
- # Test getting is_tocfile
- result = tocfile?(tocfile)
- assert_equal(true, result, "is_tocfile(tocfile)")
- result = nrg? tocfile
- assert_equal(false, result, "is_nrgfile(tocfile)")
- result = device? tocfile
- assert_equal(false, result, "is_device(tocfile)")
- ## FIXME
- ## assert_raise(DriverUnsupportedError,
- ## (deviceblocksize= 2048))
- ##assert_raise(DriverUnsupportedError,
- ## (device.speed = 5))
- device.close()
- Dir.chdir(olddir)
- end
-
- # Test functioning of read routines
- def test_read()
- cuefile=Mypath + "/../data/isofs-m1.cue"
- device = Cdio::Device.new(cuefile)
- # Read the ISO Primary Volume descriptor
- blocks, data=device.read_sectors(16, Rubycdio::READ_MODE_M1F1)
- assert_equal(data[1..5], 'CD001')
- assert_equal(blocks, 1)
- blocks, data=device.read_data_blocks(26)
- assert_equal(data[6..31], 'GNU GENERAL PUBLIC LICENSE')
- end
-
- # Test functioning of BIN/CUE image routines
- def test_bincue()
- cuefile= Mypath + "/cdda.cue"
- device = Cdio::Device.new(source=cuefile)
- # Test known values of various access parameters:
- # access mode, driver name via string and via driver_id
- # and cue name
- result = device.arg("access-mode")
- assert_equal(result, 'image', 'get_arg("access_mode")')
- result = device.driver_name()
- assert_equal(result, 'BIN/CUE', 'get_driver_name')
- result = device.driver_id()
- assert_equal(result, Rubycdio::DRIVER_BINCUE, 'get_driver_id')
- result = device.arg("cue")
- assert_equal(result, cuefile, 'get_arg("cue")')
- # Test getting binfile? and cuefile?
- binfile = cuefile? cuefile
- assert_equal(true, binfile != nil, "cuefile? cuefile")
- # require "debug"
- cuefile2 = binfile? binfile
- # Could check that cuefile2 == cuefile, but some OS's may
- # change the case of files
- assert_equal(true, cuefile2 != nil, "cuefile? binfile")
- result = tocfile? cuefile
- assert_equal(false, result, "tocfile? tocfile")
- hw = device.hwinfo()
- assert_equal(true, hw != nil, "get_hwinfo ok")
- assert_equal('libcdio', hw["vendor"], "get_hwinfo vendor")
- assert_equal('CDRWIN', hw["model"], "get_hwinfo model")
- result = device? cuefile
- assert_equal(false, result, "device? tocfile")
- result = device.media_changed?
- assert_equal(false, result, "binfile: media_changed?")
- if Rubycdio::VERSION_NUM >= 77:
- # There's a bug in libcdio 0.76 that causes these to crash
- ### FIXME
- ## assert_raise(DriverUnsupportedError,
- ## device.blocksize= 2048)
- ## assert_raise(DriverUnsupportedError,
- ## device.speed = 5)
- end
- device.close()
- end
-
- # Test functioning CD-DA
- def test_cdda()
- device = Cdio::Device.new()
- cuefile=Mypath + "/cdda.cue"
- device.open(cuefile)
- result = device.disc_mode()
- assert_equal(result, 'CD-DA', 'get_disc_mode')
- assert_equal(device.mcn(), '0000010271955', 'get_mcn')
- ## FIXME
- ## assert_raise(DriverUnsupportedError,
- ## device.last_session)
- # assert_raise(IOError, device.joliet_level)
- result = device.num_tracks()
- assert_equal(result, 1, 'get_num_tracks')
- disc_last_lsn = device.disc_last_lsn()
- assert_equal(disc_last_lsn, 302, 'get_disc_last_lsn')
- t=device.last_track()
- assert_equal(t.track, 1, 'last_track')
- assert_equal(t.last_lsn(), 301, '(track) last_lsn')
- assert_equal(device.track_for_lsn(t.last_lsn()).track,
- t.track)
- t=device.first_track()
- assert_equal(t.track, 1, 'get_first_track')
- assert_equal(t.format(), 'audio', 'get_track_format')
- assert_equal(t.msf(), "00:02:00", "get_msf")
- device.close()
- end
+ # Test that we have image drivers
+ def test_have_image_drivers()
+ result = Cdio::driver? :"CDRDAO"
+ assert_equal(true, result, "Have cdrdrao driver via string")
+ result = Cdio::driver? Rubycdio::DRIVER_CDRDAO
+ assert_equal(true, result, "Have cdrdrao driver via driver_id")
+ result = Cdio::driver? :"NRG"
+ assert_equal(true, result, "Have NRG driver via string")
+ result = Cdio::driver? Rubycdio::DRIVER_NRG
+ assert_equal(true, result, "Have NRG driver via driver_id")
+ result = Cdio::driver? :'BIN/CUE'
+ assert_equal(true, result, "Have BIN/CUE driver via string")
+ result = Cdio::driver? Rubycdio::DRIVER_BINCUE
+ assert_equal(true, result, "Have BIN/CUE driver via driver_id")
+ end
+
+ # Test functioning of cdrdao image routines
+ def test_tocfile()
+ ## TOC reading needs to be done in the directory where the
+ ## TOC/BIN files reside.
+ Dir.chdir(File.expand_path(File.dirname(__FILE__))) {
+ tocfile="cdda.toc"
+ device = Cdio::Device.new(tocfile, Rubycdio::DRIVER_CDRDAO)
+ hw = device.hwinfo()
+ assert_equal(true, hw != nil, "get_hwinfo ok")
+ assert_equal('libcdio', hw["vendor"], "get_hwinfo vendor")
+ assert_equal('cdrdao', hw["model"], "get_hwinfo cdrdao")
+ # Test known values of various access parameters:
+ # access mode, driver name via string and via driver_id
+ # and cue name
+ result = device.arg("access-mode")
+ assert_equal(result, 'image', 'get_arg("access_mode")')
+ result = device.driver_name()
+ assert_equal(result, 'CDRDAO', 'get_driver_name')
+ result = device.driver_id()
+ assert_equal(result, Rubycdio::DRIVER_CDRDAO, 'get_driver_id')
+ result = device.arg("source")
+ assert_equal(result, tocfile, 'get_arg("source")')
+ result = device.media_changed?
+ assert_equal(false, result, "tocfile: media_changed?")
+ # Test getting is_tocfile
+ result = tocfile?(tocfile)
+ assert_equal(true, result, "is_tocfile(tocfile)")
+ result = nrg? tocfile
+ assert_equal(false, result, "is_nrgfile(tocfile)")
+ result = device? tocfile
+ assert_equal(false, result, "is_device(tocfile)")
+ ## FIXME
+ ## assert_raise(DriverUnsupportedError,
+ ## (deviceblocksize= 2048))
+ ##assert_raise(DriverUnsupportedError,
+ ## (device.speed = 5))
+ device.close()
+ }
+ end
+
+ # Test functioning of read routines
+ def test_read()
+ cuefile = File.join(@mypath, '..', 'data', 'isofs-m1.cue')
+ Dir.chdir(@mypath) {
+ device = Cdio::Device.new(cuefile)
+ # Read the ISO Primary Volume descriptor
+ blocks, data=device.read_sectors(16, Rubycdio::READ_MODE_M1F1)
+ assert_equal(data[1..5], 'CD001')
+ assert_equal(blocks, 1)
+ blocks, data=device.read_data_blocks(26)
+ assert_equal(data[6..31], 'GNU GENERAL PUBLIC LICENSE')
+ }
+ end
+
+ # Test functioning of BIN/CUE image routines
+ def test_bincue()
+ cuefile = File.join(@mypath, 'cdda.cue')
+ Dir.chdir(@mypath) {
+ device = Cdio::Device.new(source=cuefile)
+ # Test known values of various access parameters:
+ # access mode, driver name via string and via driver_id
+ # and cue name
+ result = device.arg("access-mode")
+ assert_equal(result, 'image', 'get_arg("access_mode")')
+ result = device.driver_name()
+ assert_equal(result, 'BIN/CUE', 'get_driver_name')
+ result = device.driver_id()
+ assert_equal(result, Rubycdio::DRIVER_BINCUE, 'get_driver_id')
+ result = device.arg("cue")
+ assert_equal(result, cuefile, 'get_arg("cue")')
+ # Test getting binfile? and cuefile?
+ binfile = cuefile? cuefile
+ assert_equal(true, binfile != nil, "cuefile? cuefile")
+ # require "debug"
+ cuefile2 = binfile? binfile
+ # Could check that cuefile2 == cuefile, but some OS's may
+ # change the case of files
+ assert_equal(true, cuefile2 != nil, "cuefile? binfile")
+ result = tocfile? cuefile
+ assert_equal(false, result, "tocfile? tocfile")
+ hw = device.hwinfo()
+ assert_equal(true, hw != nil, "get_hwinfo ok")
+ assert_equal('libcdio', hw["vendor"], "get_hwinfo vendor")
+ assert_equal('CDRWIN', hw["model"], "get_hwinfo model")
+ result = device? cuefile
+ assert_equal(false, result, "device? tocfile")
+ result = device.media_changed?
+ assert_equal(false, result, "binfile: media_changed?")
+ if Rubycdio::VERSION_NUM >= 77
+ # There's a bug in libcdio 0.76 that causes these to crash
+ ### FIXME
+ # assert_raise(DriverUnsupportedError,
+ # device.blocksize= 2048)
+ # assert_raise(DriverUnsupportedError,
+ # device.speed = 5)
+ end
+ device.close()
+ }
+ end
+
+ # Test functioning CD-DA
+ def test_cdda()
+ device = Cdio::Device.new()
+ cuefile = File.join(@mypath, 'cdda.cue')
+ device.open(cuefile)
+ result = device.disc_mode()
+ assert_equal(result, 'CD-DA', 'get_disc_mode')
+ assert_equal(device.mcn(), '0000010271955', 'get_mcn')
+ ## FIXME
+ ## assert_raise(DriverUnsupportedError,
+ ## device.last_session)
+ # assert_raise(IOError, device.joliet_level)
+ result = device.num_tracks()
+ assert_equal(result, 1, 'get_num_tracks')
+ disc_last_lsn = device.disc_last_lsn()
+ assert_equal(disc_last_lsn, 302, 'get_disc_last_lsn')
+ t=device.last_track()
+ assert_equal(t.track, 1, 'last_track')
+ assert_equal(t.last_lsn(), 301, '(track) last_lsn')
+ assert_equal(device.track_for_lsn(t.last_lsn()).track,
+ t.track)
+ t=device.first_track()
+ assert_equal(t.track, 1, 'get_first_track')
+ assert_equal(t.format(), 'audio', 'get_track_format')
+ assert_equal(t.msf(), "00:02:00", "get_msf")
+ device.close()
+ end
end
-Dir.chdir(old_dir)