diff options
Diffstat (limited to 'jni/ruby/test/openssl/test_buffering.rb')
-rw-r--r-- | jni/ruby/test/openssl/test_buffering.rb | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/jni/ruby/test/openssl/test_buffering.rb b/jni/ruby/test/openssl/test_buffering.rb new file mode 100644 index 0000000..c62dd4d --- /dev/null +++ b/jni/ruby/test/openssl/test_buffering.rb @@ -0,0 +1,87 @@ +require_relative 'utils' +require 'stringio' + +class OpenSSL::TestBuffering < Test::Unit::TestCase + + class IO + include OpenSSL::Buffering + + attr_accessor :sync + + def initialize + @io = "" + def @io.sync + true + end + + super + + @sync = false + end + + def string + @io + end + + def sysread(size) + str = @io.slice!(0, size) + raise EOFError if str.empty? + str + end + + def syswrite(str) + @io << str + str.size + end + end + + def setup + @io = IO.new + end + + def test_flush + @io.write 'a' + + refute @io.sync + assert_empty @io.string + + assert_equal @io, @io.flush + + refute @io.sync + assert_equal 'a', @io.string + end + + def test_flush_error + @io.write 'a' + + refute @io.sync + assert_empty @io.string + + def @io.syswrite *a + raise SystemCallError, 'fail' + end + + assert_raises SystemCallError do + @io.flush + end + + refute @io.sync, 'sync must not change' + end + + def test_getc + @io.syswrite('abc') + assert_equal(?a, @io.getc) + assert_equal(?b, @io.getc) + assert_equal(?c, @io.getc) + end + + def test_each_byte + @io.syswrite('abc') + res = [] + @io.each_byte do |c| + res << c + end + assert_equal([97, 98, 99], res) + end + +end if defined?(OpenSSL::TestUtils) |