test/tc/truncate.rb in rio-0.4.2 vs test/tc/truncate.rb in rio-0.5.1
- old
+ new
@@ -18,22 +18,120 @@
super
self.class.once unless @@once
end
- def test_basic
+ def setup_files(tag)
str = "1234567890"
- f = rio("out")
- f.print!(str)
- assert_equal(str,f.contents)
- assert_equal(str.size,f.size)
- n = 5
- f.truncate(n)
- assert_equal(str[0,n],f.contents)
- assert_equal(n,f.size)
- n = 2
- assert_equal(str[0,n],f.read(n))
- assert_equal(n,f.truncate.size)
- assert_equal(str[0,n],f.contents)
+ fnbase = "out." + tag
+ fnruby = fnbase + '.ruby'
+ rio(fnruby).print!(str)
+ fnrio = fnbase + '.rio'
+ rio(fnrio).print!(str)
+ [str,fnruby,fnrio]
end
+
+ def do_changesize(str,fnruby,fnrio,inc)
+ n = str.size + inc
+ File.truncate(fnruby,n)
+ rio(fnrio).truncate(n)
+ assert_equal(File.size(fnruby),rio(fnrio).size)
+ assert_equal(n,rio(fnrio).size)
+
+ fruby_contents = nil
+ f = File.open(fnruby,'r') do |io|
+ fruby_contents = io.read
+ end
+ assert_equal(fruby_contents, rio(fnrio).contents)
+ end
+
+ def test_setup
+ str,fnruby,fnrio = setup_files('setup')
+
+ assert_equal(File.size(fnruby),rio(fnrio).size)
+
+ fruby_contents = nil
+ f = File.open(fnruby,'r') do |io|
+ fruby_contents = io.read
+ end
+ assert_equal(fruby_contents, rio(fnrio).contents)
+ end
+
+ def test_nochange
+ str,fnruby,fnrio = setup_files('nochange')
+
+ File.truncate(fnruby,str.size)
+ rio(fnrio).truncate(str.size)
+ assert_equal(File.size(fnruby),rio(fnrio).size)
+ end
+
+ def test_clear1
+ str,fnrio1,fnrio2 = setup_files('clear1a')
+
+ assert_equal(rio(fnrio1).truncate(0).size,rio(fnrio2).clear.size)
+ str,fnrio1,fnrio2 = setup_files('clear1b')
+ assert_equal(rio(fnrio1).truncate(0).contents,rio(fnrio2).clear.contents)
+ end
+
+ def test_clear2
+ str,fnrio1,fnrio2 = setup_files('clear2a')
+
+ assert_equal(rio(fnrio1).truncate.size,rio(fnrio2).clear.size)
+ str,fnrio1,fnrio2 = setup_files('cleara')
+ assert_equal(rio(fnrio1).truncate.contents,rio(fnrio2).clear.contents)
+ end
+
+ def test_clear3
+ str,fnrio1,fnrio2 = setup_files('clear3a')
+
+ assert_equal(0,rio(fnrio2).clear.size)
+
+ str,fnrio1,fnrio2 = setup_files('clear3b')
+ assert_equal("",rio(fnrio2).clear.contents)
+ end
+
+ def test_shorten
+ str,fnruby,fnrio = setup_files('shorten')
+ do_changesize(str,fnruby,fnrio,-1)
+ end
+
+ def test_lengthen
+ str,fnruby,fnrio = setup_files('lengthen')
+ do_changesize(str,fnruby,fnrio,1)
+ end
+
+ def test_shorten_to_zero
+ str,fnruby,fnrio = setup_files('shorten_to_zero')
+ do_changesize(str,fnruby,fnrio,-str.size)
+ end
+
+ def test_shorten_to_less_than_zero
+ str,fnruby,fnrio = setup_files('shorten_to_less_than_zero')
+ n = -1
+ assert_raise Errno::EINVAL do
+ File.truncate(fnruby,n)
+ end
+ assert_equal(str.size,File.size(fnruby))
+
+ rio(fnrio).truncate(n)
+ assert_equal(0,rio(fnrio).size)
+ assert_equal("",rio(fnrio).contents)
+ #do_changesize(str,fnruby,fnrio,-(str.size+1))
+ end
+
+ def test_nonexistent
+ str,fnruby,fnrio = setup_files('nonexistent')
+ ::File.unlink(fnruby)
+ assert!(rio(fnruby).exist?)
+ assert_raise Errno::ENOENT do
+ File.truncate(fnruby,0)
+ end
+ ::File.unlink(fnrio)
+ assert!(rio(fnrio).exist?)
+ rio(fnrio).truncate(0)
+ assert_equal(0,rio(fnrio).size)
+ assert_equal("",rio(fnrio).contents)
+ end
+
+
end