mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	add test.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6757 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									8f8de7782e
								
							
						
					
					
						commit
						0e104131b8
					
				
					 1 changed files with 69 additions and 0 deletions
				
			
		
							
								
								
									
										69
									
								
								test/ruby/test_readpartial.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								test/ruby/test_readpartial.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,69 @@
 | 
			
		|||
require 'test/unit'
 | 
			
		||||
require 'timeout'
 | 
			
		||||
require 'fcntl'
 | 
			
		||||
 | 
			
		||||
class TestReadPartial < Test::Unit::TestCase
 | 
			
		||||
  def make_pipe
 | 
			
		||||
    r, w = IO.pipe
 | 
			
		||||
    begin
 | 
			
		||||
      yield r, w
 | 
			
		||||
    ensure
 | 
			
		||||
      r.close unless r.closed?
 | 
			
		||||
      w.close unless w.closed?
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def pipe
 | 
			
		||||
    make_pipe {|r, w|
 | 
			
		||||
      yield r, w
 | 
			
		||||
    }
 | 
			
		||||
    make_pipe {|r, w|
 | 
			
		||||
      r.fcntl(Fcntl::F_SETFL, r.fcntl(Fcntl::F_GETFL) | Fcntl::O_NONBLOCK)
 | 
			
		||||
      yield r, w
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_length_zero
 | 
			
		||||
    pipe {|r, w|
 | 
			
		||||
      assert_equal('', r.readpartial(0))
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_closed_pipe
 | 
			
		||||
    pipe {|r, w|
 | 
			
		||||
      w << 'abc'
 | 
			
		||||
      w.close
 | 
			
		||||
      assert_equal('ab', r.readpartial(2))
 | 
			
		||||
      assert_equal('c', r.readpartial(2))
 | 
			
		||||
      assert_raises(EOFError) { r.readpartial(2) }
 | 
			
		||||
      assert_raises(EOFError) { r.readpartial(2) }
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_open_pipe
 | 
			
		||||
    pipe {|r, w|
 | 
			
		||||
      w << 'abc'
 | 
			
		||||
      assert_equal('ab', r.readpartial(2))
 | 
			
		||||
      assert_equal('c', r.readpartial(2))
 | 
			
		||||
      assert_raises(TimeoutError) {
 | 
			
		||||
        timeout(0.1) { r.readpartial(2) }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_with_stdio
 | 
			
		||||
    pipe {|r, w|
 | 
			
		||||
      w << "abc\ndef\n"
 | 
			
		||||
      assert_equal("abc\n", r.gets)
 | 
			
		||||
      w << "ghi\n"
 | 
			
		||||
      assert_equal("de", r.readpartial(2))
 | 
			
		||||
      assert_equal("f\n", r.readpartial(4096))
 | 
			
		||||
      assert_equal("ghi\n", r.readpartial(4096))
 | 
			
		||||
      assert_raises(TimeoutError) {
 | 
			
		||||
        timeout(0.1) { r.readpartial(2) }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue