Skip to content

Commit

Permalink
Add tests for the most common use cases
Browse files Browse the repository at this point in the history
  • Loading branch information
pietern committed Oct 7, 2010
1 parent ff607e9 commit a25554c
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 0 deletions.
7 changes: 7 additions & 0 deletions Rakefile
@@ -1,5 +1,6 @@
require 'rake/gempackagetask'
require 'rake/extensiontask'
require 'rake/testtask'

$:.unshift File.join(File.dirname(__FILE__), 'lib')
require 'redis_ext/version'
Expand Down Expand Up @@ -59,3 +60,9 @@ Rake::Task[:clean].enhance(['hiredis:clean'])

# Build from scratch
task :build => [:clean, :compile]

desc "Run tests"
Rake::TestTask.new(:test) do |t|
t.libs << "test"
t.pattern = 'test/**/*_test.rb'
end
59 changes: 59 additions & 0 deletions test/reader_test.rb
@@ -0,0 +1,59 @@
require 'test/unit'
require 'redis_ext'

class ReaderTest < Test::Unit::TestCase
def setup
@reader = RedisExt::Reader.new
end

def test_nil
@reader.feed("$-1\r\n")
assert_equal nil, @reader.gets
end

def test_integer
value = 2**63-1 # largest 64-bit signed integer
@reader.feed(":#{value.to_s}\r\n")
assert_equal value, @reader.gets
end

def test_status_string
@reader.feed("+status\r\n")
assert_equal "status", @reader.gets
end

def test_error_string
@reader.feed("-error\r\n")
assert_equal "error", @reader.gets
end

def test_empty_bulk_string
@reader.feed("$0\r\n\r\n")
assert_equal "", @reader.gets
end

def test_bulk_string
@reader.feed("$5\r\nhello\r\n")
assert_equal "hello", @reader.gets
end

def test_null_multi_bulk
@reader.feed("*-1\r\n")
assert_equal nil, @reader.gets
end

def test_empty_multi_bulk
@reader.feed("*0\r\n")
assert_equal [], @reader.gets
end

def test_multi_bulk
@reader.feed("*2\r\n$5\r\nhello\r\n$5\r\nworld\r\n")
assert_equal ["hello", "world"], @reader.gets
end

def test_nested_multi_bulk
@reader.feed("*2\r\n*2\r\n$5\r\nhello\r\n$5\r\nworld\r\n$1\r\n!\r\n")
assert_equal [["hello", "world"], "!"], @reader.gets
end
end

0 comments on commit a25554c

Please sign in to comment.