diff --git a/.gitignore b/.gitignore
index 6a0495b..b264b4b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -261,7 +261,7 @@
 /lib/rb/ext/mkmf.log
 /lib/rb/ext/thrift_native.bundle
 /lib/rb/ext/thrift_native.so
-/lib/rb/test/
+#/lib/rb/test/
 /lib/rb/thrift-*.gem
 /lib/php/src/ext/thrift_protocol/Makefile.*
 /lib/php/src/ext/thrift_protocol/build/
diff --git a/lib/rb/Makefile.am b/lib/rb/Makefile.am
index ab5d903..1088bcb 100644
--- a/lib/rb/Makefile.am
+++ b/lib/rb/Makefile.am
@@ -36,6 +36,9 @@
 check-local: all
 	$(BUNDLER) install
 	$(BUNDLER) exec rake
+	$(RUBY) test/TestBinaryProtocol.rb
+	$(RUBY) test/TestCompactProtocol.rb
+	$(RUBY) test/TestJsonProtocol.rb
 
 endif
 
@@ -55,4 +58,5 @@
 	benchmark \
 	script \
 	spec \
+	test \
 	README.md
diff --git a/lib/rb/test/TestBinaryProtocol.rb b/lib/rb/test/TestBinaryProtocol.rb
new file mode 100644
index 0000000..39f5073
--- /dev/null
+++ b/lib/rb/test/TestBinaryProtocol.rb
@@ -0,0 +1,145 @@
+#!/usr/bin/env ruby
+# 
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# 
+
+require 'thrift'
+require 'test/unit'
+
+class TestBinaryProtocol < Test::Unit::TestCase
+  def test_defferent_data_types
+    begin
+      port = ARGV[0] || 9090
+      pid = Process.fork
+      if pid.nil?then
+        buf = String.new('1234567')
+        socket = Thrift::ServerSocket.new(port)
+        socket.listen()
+        client = socket.accept()
+        transport = Thrift::BufferedTransport.new(client)
+        protocol = Thrift::BinaryProtocol.new(transport)
+        
+        acc_bool = protocol.read_bool()     
+        assert_equal(true,acc_bool)
+       
+        acc_boolf = protocol.read_bool()
+        assert_equal(false,acc_boolf)
+      
+        acc_byte = protocol.read_byte()
+        assert_equal(123,acc_byte)
+        
+        acc_i16 = protocol.read_i16()
+        assert_equal(4203,acc_i16)
+       
+        acc_i32 = protocol.read_i32()
+        assert_equal(2000000032,acc_i32)
+       
+        acc_i64 = protocol.read_i64()
+        assert_equal(1844674407370955161,acc_i64)
+       
+        acc_double = protocol.read_double()
+        assert_equal(3.1415926,acc_double)
+        assert_kind_of(Float,acc_double)
+       
+        acc_string = protocol.read_string()
+        assert_equal("hello_world123456789!@#$%&",acc_string)
+       
+        acc_binary = protocol.read_binary()
+        ret = acc_binary.bytes.to_a
+        assert_equal((0...256).reverse_each.to_a,ret)
+       
+        acc_message = protocol.read_message_begin()
+        protocol.read_message_end()
+        assert_equal(["hello_world",123,455536],acc_message)
+       
+        acc_field = protocol.read_field_begin()
+        protocol.read_field_end()
+        assert_equal([nil,123,25536],acc_field)
+       
+        acc_map = protocol.read_map_begin()
+        protocol.read_map_end()
+        assert_equal([56,123,2000000032],acc_map)
+       
+        acc_list = protocol.read_list_begin()
+        protocol.read_list_end()
+        assert_equal([125,2000000032],acc_list)
+       
+        acc_set = protocol.read_set_begin()
+        protocol.read_set_end()
+        assert_equal([-124,2000000022],acc_set)
+       
+        exit(0) 
+      else  
+        sleep(2)
+        socket = Thrift::Socket.new('localhost',port)
+        transport = Thrift::BufferedTransport.new(socket)
+        transport.open()
+        protocol = Thrift::BinaryProtocol.new(transport)
+       
+        protocol.write_bool(true)
+        transport.flush()
+
+        protocol.write_bool(false)
+        transport.flush()
+
+        protocol.write_byte(123)
+        transport.flush()
+
+        protocol.write_i16(4203)
+        transport.flush()
+
+        protocol.write_i32(2000000032)	
+        transport.flush()
+
+        protocol.write_i64(1844674407370955161)
+        transport.flush()
+
+        protocol.write_double(3.1415926)
+        transport.flush()	
+
+        protocol.write_string("hello_world123456789!@#$%&")
+        transport.flush()
+
+        val = (0...256).reverse_each.to_a
+        protocol.write_binary(val.pack('C*'))
+        transport.flush()
+
+        protocol.write_message_begin("hello_world",123,455536)
+        protocol.write_message_end()
+        transport.flush()
+
+        protocol.write_field_begin("hello_world",123,25536)
+        protocol.write_field_end()
+        transport.flush()
+
+        protocol.write_map_begin(56,123,2000000032)
+        protocol.write_map_end()
+        transport.flush()
+
+        protocol.write_list_begin(125,2000000032)
+        protocol.write_list_end()
+        transport.flush()
+
+        protocol.write_set_begin(-124,2000000022)
+        protocol.write_set_end()
+        transport.flush()
+        Process.wait(pid)
+      end
+    end
+  end
+end 
diff --git a/lib/rb/test/TestCompactProtocol.rb b/lib/rb/test/TestCompactProtocol.rb
new file mode 100644
index 0000000..02711ba
--- /dev/null
+++ b/lib/rb/test/TestCompactProtocol.rb
@@ -0,0 +1,164 @@
+#!/usr/bin/env ruby
+# 
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# 
+
+require 'thrift'
+require 'test/unit'
+
+include Thrift
+
+class TestCompactProtocol < Test::Unit::TestCase
+  def test_defferent_data_types
+    begin
+      port = ARGV[0] || 9090
+      pid = Process.fork
+      if pid.nil?then
+        buf = String.new('1234567')
+        socket = Thrift::ServerSocket.new(port)
+        socket.listen()
+        client = socket.accept()
+        transport = Thrift::BufferedTransport.new(client)
+        protocol = Thrift::CompactProtocol.new(transport)
+        acc_bool = protocol.read_bool()     
+        assert_equal(true,acc_bool)
+     
+        acc_boolf = protocol.read_bool()
+        assert_equal(false,acc_boolf)
+     
+        acc_byte = protocol.read_byte()
+        assert_equal(123,acc_byte)
+     
+        acc_i16 = protocol.read_i16()
+        assert_equal(4203,acc_i16)
+     
+        acc_i32 = protocol.read_i32()
+        assert_equal(2000000032,acc_i32)
+     
+        acc_i64 = protocol.read_i64()
+        assert_equal(1844674407370955161,acc_i64)
+     
+        acc_double = protocol.read_double()
+        assert_equal(3.1415926,acc_double)
+     
+        assert_kind_of(Float,acc_double)
+        acc_string = protocol.read_string()
+        assert_equal("hello_world123456789!@#$%&",acc_string)
+     
+        acc_binary = protocol.read_binary()
+        ret = acc_binary.bytes.to_a
+        assert_equal((0...256).reverse_each.to_a,ret)
+     
+        acc_message = protocol.read_message_begin()
+        protocol.read_message_end()
+        assert_equal(["hello_world",4,455536],acc_message)
+     
+        acc_list = protocol.read_list_begin()
+        protocol.read_list_end()
+        assert_equal("[8, 12]", "#{acc_list}")
+     	
+        acc_map1 = protocol.read_map_begin()
+        protocol.read_map_end() 
+        assert_equal("[6, 8, 12]", "#{acc_map1}")
+
+        acc_map2 = protocol.read_map_begin()
+        protocol.read_map_end() 
+        assert_equal("[0, 0, 0]", "#{acc_map2}")
+	
+        acc_set = protocol.read_set_begin()
+        protocol.read_set_end()
+        assert_equal("[8, 5]", "#{acc_set}")
+	
+        acc_field1 = protocol.read_field_begin()
+        protocol.read_field_end()
+        assert_equal("[nil, 6, 5]","#{acc_field1}") 
+
+        acc_field2 = protocol.read_field_begin()
+        protocol.read_field_end()
+        assert_equal("[nil, 0, 0]","#{acc_field2}")
+        
+
+        exit(0) 
+      else  
+        sleep(2)
+        socket = Thrift::Socket.new('localhost',port)
+        transport = Thrift::BufferedTransport.new(socket)
+        transport.open()
+        protocol = Thrift::CompactProtocol.new(transport)
+     
+        protocol.write_bool(true)
+        transport.flush()
+
+        protocol.write_bool(false)
+        transport.flush()
+
+        protocol.write_byte(123)
+        transport.flush()
+
+        protocol.write_i16(4203)
+        transport.flush()
+
+        protocol.write_i32(2000000032)	
+        transport.flush()
+        
+	protocol.write_i64(1844674407370955161)
+        transport.flush()
+
+        protocol.write_double(3.1415926)
+        transport.flush()	
+
+        protocol.write_string("hello_world123456789!@#$%&")
+        transport.flush()
+
+        val = (0...256).reverse_each.to_a
+        protocol.write_binary(val.pack('C*'))
+        transport.flush()
+
+        protocol.write_message_begin("hello_world",140,455536)
+        protocol.write_message_end()       
+        transport.flush()
+       
+        protocol.write_list_begin(Thrift::Types::I32,12)
+        protocol.write_list_end()
+        transport.flush()
+     
+        protocol.write_map_begin(Thrift::Types::I16,Thrift::Types::I32,12)
+        protocol.write_map_end() 
+        transport.flush()
+
+        protocol.write_map_begin(Thrift::Types::I16,Thrift::Types::I32,0)
+        protocol.write_map_end()
+        transport.flush()
+
+        protocol.write_set_begin(Thrift::Types::I32,5)
+        protocol.write_set_end()
+        transport.flush()
+
+        protocol.write_field_begin("hello_world",Thrift::Types::I16,5)
+        protocol.write_field_stop()
+        transport.flush()
+
+        protocol.write_field_begin("hello_world",Thrift::Types::BOOL,5)
+        protocol.write_field_stop()
+        transport.flush()
+
+        Process.wait(pid)
+      end
+    end
+  end
+end 
diff --git a/lib/rb/test/TestJsonProtocol.rb b/lib/rb/test/TestJsonProtocol.rb
new file mode 100644
index 0000000..562aad5
--- /dev/null
+++ b/lib/rb/test/TestJsonProtocol.rb
@@ -0,0 +1,208 @@
+#!/usr/bin/env ruby
+# 
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# 
+
+require 'thrift'
+require 'test/unit'
+
+class TestJsonProtocol < Test::Unit::TestCase
+  def test_defferent_data_types
+    begin
+      port = ARGV[0] || 7070
+      pid = Process.fork
+      if pid.nil?then
+        buf = String.new('1234567')
+        socket = Thrift::ServerSocket.new(port)
+        socket.listen()
+        client = socket.accept()
+        transport = Thrift::BufferedTransport.new(client)
+        protocol = Thrift::JsonProtocol.new(transport)
+
+        acc_json_string = protocol.read_json_string()
+        assert_equal('hello_world123!@#$%',acc_json_string)
+     
+        acc_json_base64 = protocol.read_json_base64()
+        assert_equal('hello_world12233!@#$%',acc_json_base64)
+
+        protocol.read_json_array_start()
+        acc_json_integer = protocol.read_json_integer()
+        protocol.read_json_array_end()
+        assert_equal(2553369689,acc_json_integer)
+	
+	
+        protocol.read_json_array_start()
+        acc_json_double = protocol.read_json_double()
+        protocol.read_json_array_end()	
+        assert_equal(3.1415926,acc_json_double)
+
+        acc_message = protocol.read_message_begin()
+        protocol.read_message_end()
+        assert_equal("[\"hello_world\", 155510, 102020]","#{acc_message}")
+
+        acc_field = protocol.read_field_begin()
+        protocol.read_field_end()
+        assert_equal([nil ,6 ,12],acc_field)
+        
+        acc_map = protocol.read_map_begin()
+        protocol.read_map_end()
+        assert_equal([10, 8, 20],acc_map)
+	
+        acc_list = protocol.read_list_begin()
+        protocol.read_list_end()
+        assert_equal([6, 10],acc_list)	
+ 
+        acc_set = protocol.read_set_begin()
+        protocol.read_set_end()
+        assert_equal([8, 20],acc_set)	
+	
+        protocol.read_json_object_start()
+        acc_bool = protocol.read_bool()
+        protocol.read_json_object_end()
+        assert_equal(true,acc_bool)
+	
+        protocol.read_json_object_start()
+        acc_byte = protocol.read_byte()
+        protocol.read_json_object_end()
+        assert_equal(123,acc_byte)
+ 
+        protocol.read_json_object_start()
+        acc_i16 = protocol.read_i16()
+        protocol.read_json_object_end()
+        assert_equal(4203,acc_i16)
+
+
+        protocol.read_json_object_start()
+        acc_i32 = protocol.read_i32()
+        protocol.read_json_object_end()
+        assert_equal(2000000032,acc_i32)
+
+        protocol.read_json_object_start()
+        acc_i64 = protocol.read_i64()
+        protocol.read_json_object_end()
+        assert_equal(1844674407370955161,acc_i64)
+
+        protocol.read_json_object_start()
+        acc_double = protocol.read_double()
+        protocol.read_json_object_end()
+        assert_equal(3.1415926,acc_double)
+	 
+        protocol.read_json_object_start()
+        acc_string = protocol.read_string()
+        protocol.read_json_object_end()
+        assert_equal("sello_world123456789!@#$%",acc_string)
+	
+        protocol.read_json_object_start()
+        acc_binary = protocol.read_binary()
+        ret =acc_binary.bytes.to_a
+        protocol.read_json_object_end()
+        assert_equal((0...256).reverse_each.to_a,ret)
+
+	exit(0) 
+      else  
+        sleep(2)
+        socket = Thrift::Socket.new('localhost',port)
+        transport = Thrift::BufferedTransport.new(socket)
+        transport.open()
+        protocol = Thrift::JsonProtocol.new(transport)
+       
+        protocol.write_json_string('hello_world123!@#$%')
+        transport.flush()
+       
+        protocol.write_json_base64('hello_world12233!@#$%')	
+        transport.flush()
+        
+        protocol.write_json_array_start()
+        protocol.write_json_integer(2553369689)
+        protocol.write_json_array_end()
+        transport.flush()
+
+        protocol.write_json_array_start()
+        protocol.write_json_double(3.1415926)
+        protocol.write_json_array_end()
+        transport.flush()
+
+        protocol.write_message_begin('hello_world',155510,102020)
+        protocol.write_message_end()
+        transport.flush()
+
+        protocol.write_field_begin("hello_world",Thrift::Types::I16,12)
+        protocol.write_field_end()
+        transport.flush()
+
+        protocol.write_map_begin(Thrift::Types::I64,Thrift::Types::I32,20)
+        protocol.write_map_end()
+        transport.flush()
+
+        protocol.write_list_begin(Thrift::Types::I16,10)
+        protocol.write_list_end()
+        transport.flush()
+
+        protocol.write_set_begin(Thrift::Types::I32,20)
+        protocol.write_set_end()
+        transport.flush()
+
+        protocol.write_json_object_start()
+        protocol.write_bool(true)
+        protocol.write_json_object_end()
+        transport.flush()
+
+        protocol.write_json_object_start()
+        protocol.write_byte(123)
+        protocol.write_json_object_end()
+        transport.flush()
+
+
+        protocol.write_json_object_start()
+        protocol.write_i16(4203)
+        protocol.write_json_object_end()
+        transport.flush()
+
+        protocol.write_json_object_start()
+        protocol.write_i32(2000000032)
+        protocol.write_json_object_end()
+        transport.flush()
+
+        protocol.write_json_object_start()
+        protocol.write_i64(1844674407370955161)
+        protocol.write_json_object_end()
+        transport.flush()
+	
+        protocol.write_json_object_start()
+        protocol.write_double(3.1415926)
+        protocol.write_json_object_end()
+        transport.flush()
+
+        protocol.write_json_object_start()
+        protocol.write_string("sello_world123456789!@#$%")
+        protocol.write_json_object_end()
+        transport.flush()
+
+        protocol.write_json_object_start()
+        val = (0...256).reverse_each.to_a
+        protocol.write_binary(val.pack('C*'))
+        protocol.write_json_object_end()
+        transport.flush()
+
+
+        transport.close()
+        Process.wait(pid)
+      end
+    end
+  end
+end
diff --git a/lib/rb/thrift.gemspec b/lib/rb/thrift.gemspec
index 68bb4e1..17e1da2 100644
--- a/lib/rb/thrift.gemspec
+++ b/lib/rb/thrift.gemspec
@@ -26,7 +26,7 @@
 
   s.require_paths = %w[lib ext]
 
-  s.add_development_dependency 'bundler',            '>= 1.11'
+  s.add_development_dependency 'bundler',            '~> 2.1.4'
   s.add_development_dependency 'pry',                '~> 0.11.3'
   s.add_development_dependency 'pry-byebug',         '~> 3.6'
   s.add_development_dependency 'pry-stack_explorer', '~> 0.4.9.2'
