Permalink
Browse files

Make NullIO#read mimic IO#read

  • Loading branch information...
1 parent f6b4363 commit 5fbd942f84886d81c712677ee4538b0f7ad529e2 Dean Strelau committed Apr 30, 2012
Showing with 35 additions and 4 deletions.
  1. +4 −4 lib/puma/null_io.rb
  2. +31 −0 test/test_null_io.rb
View
@@ -1,10 +1,10 @@
+require 'stringio'
module Puma
# Provides an IO-like object that always appears to contain no data.
# Used as the value for rack.input when the request has no body.
#
class NullIO
-
# Always returns nil
#
def gets
@@ -16,10 +16,10 @@ def gets
def each
end
- # Always returns nil
+ # Mimics IO#read with no data
#
- def read(count)
- nil
+ def read(*args)
+ StringIO.new('').read(*args)
end
# Does nothing
View
@@ -0,0 +1,31 @@
+require 'puma/null_io'
+require 'test/unit'
+
+class TestNullIO < Test::Unit::TestCase
+ attr_accessor :nio
+ def setup
+ self.nio = Puma::NullIO.new
+ end
+
+ def test_read_with_no_arguments
+ assert_equal "", nio.read
+ end
+
+ def test_read_with_nil_length
+ assert_equal "", nio.read(nil)
+ end
+
+ def test_read_with_zero_length
+ assert_equal "", nio.read(0)
+ end
+
+ def test_read_with_positive_integer_length
+ assert_nil nio.read(1)
+ end
+
+ def test_read_with_length_and_buffer
+ buf = ""
+ assert_nil nio.read(1,buf)
+ assert_equal "", buf
+ end
+end

0 comments on commit 5fbd942

Please sign in to comment.