require "test/unit"
require "ogg/vorbis/tagger"
require "fileutils"
-require "open3"
+require "digest/md5"
class MainTest < Test::Unit::TestCase
OGG_FILE = "test/test.ogg"
def setup
- tmp =<<EOF
--c "artist=Bolt Thrower" -c "album=...For Victory" -c "date=1994"
-EOF
-
- f = File.open(OGG_FILE, "w")
- cmd = "oggenc -q 0 #{tmp.strip} -r -"
-
- Open3.popen3(cmd) do |sin, sout, _|
- sin.write("\0\0\0\0")
- sin.close
-
- begin
- tmp = sout.read
- f << tmp
- end while !tmp.length.zero?
- end
-
- f.close
+ FileUtils.cp("test/sample.ogg", OGG_FILE)
end
def teardown
end
end
+ def test_write_is_non_destructive
+ a = Digest::MD5.hexdigest(File.read(OGG_FILE))
+
+ Ogg::Vorbis::Tagger.open(OGG_FILE) do |t|
+ t.write
+ end
+
+ b = Digest::MD5.hexdigest(File.read(OGG_FILE))
+
+ assert_equal(a, b)
+ end
+
+ def test_multiple_writes
+ a = Digest::MD5.hexdigest(File.read(OGG_FILE))
+
+ Ogg::Vorbis::Tagger.open(OGG_FILE) do |t|
+ 1.upto(10) do
+ t.write
+ end
+ end
+
+ b = Digest::MD5.hexdigest(File.read(OGG_FILE))
+
+ assert_equal(a, b)
+ end
+
def test_write_stable_order
Ogg::Vorbis::Tagger.open(OGG_FILE) do |t|
assert_equal(3, t.write)
assert_equal(nil, t.comments.shift)
end
end
+
+ def test_close
+ Ogg::Vorbis::Tagger.new(OGG_FILE).close
+ end
+
+ def test_open_non_existing_file
+ assert_raises(Ogg::Vorbis::Tagger::OpenError) do
+ Ogg::Vorbis::Tagger.new("foo.bar")
+ end
+ end
+
+ def test_open_non_ogg_file
+ File.open("test/foo.bar", "w") do |f|
+ f << "foobarbazxyzzy"
+ end
+
+ assert_raises(Ogg::Vorbis::Tagger::InvalidDataError) do
+ Ogg::Vorbis::Tagger.new("test/foo.bar")
+ end
+ ensure
+ FileUtils.rm_f("test/foo.bar")
+ end
end