/lib/zip/test/ioextrastest.rb
Ruby | 208 lines | 159 code | 44 blank | 5 comment | 1 complexity | 99d5b348ca83a7d916ee03995c43dd32 MD5 | raw file
Possible License(s): BSD-3-Clause, Apache-2.0, LGPL-2.1, GPL-2.0, MIT
- #!/usr/bin/env ruby
- $VERBOSE = true
- $: << "../lib"
- require 'test/unit'
- require 'zip/ioextras'
- include IOExtras
- class FakeIOTest < Test::Unit::TestCase
- class FakeIOUsingClass
- include FakeIO
- end
- def test_kind_of?
- obj = FakeIOUsingClass.new
-
- assert(obj.kind_of?(Object))
- assert(obj.kind_of?(FakeIOUsingClass))
- assert(obj.kind_of?(IO))
- assert(!obj.kind_of?(Fixnum))
- assert(!obj.kind_of?(String))
- end
- end
- class AbstractInputStreamTest < Test::Unit::TestCase
- # AbstractInputStream subclass that provides a read method
-
- TEST_LINES = [ "Hello world#{$/}",
- "this is the second line#{$/}",
- "this is the last line"]
- TEST_STRING = TEST_LINES.join
- class TestAbstractInputStream
- include AbstractInputStream
- def initialize(aString)
- super()
- @contents = aString
- @readPointer = 0
- end
- def read(charsToRead)
- retVal=@contents[@readPointer, charsToRead]
- @readPointer+=charsToRead
- return retVal
- end
- def produce_input
- read(100)
- end
- def input_finished?
- @contents[@readPointer] == nil
- end
- end
- def setup
- @io = TestAbstractInputStream.new(TEST_STRING)
- end
-
- def test_gets
- assert_equal(TEST_LINES[0], @io.gets)
- assert_equal(1, @io.lineno)
- assert_equal(TEST_LINES[1], @io.gets)
- assert_equal(2, @io.lineno)
- assert_equal(TEST_LINES[2], @io.gets)
- assert_equal(3, @io.lineno)
- assert_equal(nil, @io.gets)
- assert_equal(4, @io.lineno)
- end
- def test_getsMultiCharSeperator
- assert_equal("Hell", @io.gets("ll"))
- assert_equal("o world#{$/}this is the second l", @io.gets("d l"))
- end
- def test_each_line
- lineNumber=0
- @io.each_line {
- |line|
- assert_equal(TEST_LINES[lineNumber], line)
- lineNumber+=1
- }
- end
- def test_readlines
- assert_equal(TEST_LINES, @io.readlines)
- end
- def test_readline
- test_gets
- begin
- @io.readline
- fail "EOFError expected"
- rescue EOFError
- end
- end
- end
- class AbstractOutputStreamTest < Test::Unit::TestCase
- class TestOutputStream
- include AbstractOutputStream
- attr_accessor :buffer
- def initialize
- @buffer = ""
- end
- def << (data)
- @buffer << data
- self
- end
- end
- def setup
- @outputStream = TestOutputStream.new
- @origCommaSep = $,
- @origOutputSep = $\
- end
- def teardown
- $, = @origCommaSep
- $\ = @origOutputSep
- end
- def test_write
- count = @outputStream.write("a little string")
- assert_equal("a little string", @outputStream.buffer)
- assert_equal("a little string".length, count)
- count = @outputStream.write(". a little more")
- assert_equal("a little string. a little more", @outputStream.buffer)
- assert_equal(". a little more".length, count)
- end
-
- def test_print
- $\ = nil # record separator set to nil
- @outputStream.print("hello")
- assert_equal("hello", @outputStream.buffer)
- @outputStream.print(" world.")
- assert_equal("hello world.", @outputStream.buffer)
-
- @outputStream.print(" You ok ", "out ", "there?")
- assert_equal("hello world. You ok out there?", @outputStream.buffer)
- $\ = "\n"
- @outputStream.print
- assert_equal("hello world. You ok out there?\n", @outputStream.buffer)
- @outputStream.print("I sure hope so!")
- assert_equal("hello world. You ok out there?\nI sure hope so!\n", @outputStream.buffer)
- $, = "X"
- @outputStream.buffer = ""
- @outputStream.print("monkey", "duck", "zebra")
- assert_equal("monkeyXduckXzebra\n", @outputStream.buffer)
- $\ = nil
- @outputStream.buffer = ""
- @outputStream.print(20)
- assert_equal("20", @outputStream.buffer)
- end
-
- def test_printf
- @outputStream.printf("%d %04x", 123, 123)
- assert_equal("123 007b", @outputStream.buffer)
- end
-
- def test_putc
- @outputStream.putc("A")
- assert_equal("A", @outputStream.buffer)
- @outputStream.putc(65)
- assert_equal("AA", @outputStream.buffer)
- end
- def test_puts
- @outputStream.puts
- assert_equal("\n", @outputStream.buffer)
- @outputStream.puts("hello", "world")
- assert_equal("\nhello\nworld\n", @outputStream.buffer)
- @outputStream.buffer = ""
- @outputStream.puts("hello\n", "world\n")
- assert_equal("hello\nworld\n", @outputStream.buffer)
-
- @outputStream.buffer = ""
- @outputStream.puts(["hello\n", "world\n"])
- assert_equal("hello\nworld\n", @outputStream.buffer)
- @outputStream.buffer = ""
- @outputStream.puts(["hello\n", "world\n"], "bingo")
- assert_equal("hello\nworld\nbingo\n", @outputStream.buffer)
- @outputStream.buffer = ""
- @outputStream.puts(16, 20, 50, "hello")
- assert_equal("16\n20\n50\nhello\n", @outputStream.buffer)
- end
- end
- # Copyright (C) 2002-2004 Thomas Sondergaard
- # rubyzip is free software; you can redistribute it and/or
- # modify it under the terms of the ruby license.