aboutsummaryrefslogtreecommitdiffstats
path: root/actionwebservice/test/ws/abstract_encoding.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionwebservice/test/ws/abstract_encoding.rb')
-rw-r--r--actionwebservice/test/ws/abstract_encoding.rb68
1 files changed, 68 insertions, 0 deletions
diff --git a/actionwebservice/test/ws/abstract_encoding.rb b/actionwebservice/test/ws/abstract_encoding.rb
new file mode 100644
index 0000000000..9a6aec44e0
--- /dev/null
+++ b/actionwebservice/test/ws/abstract_encoding.rb
@@ -0,0 +1,68 @@
+require File.dirname(__FILE__) + '/abstract_unit'
+
+module Nested
+ class StructClass
+ attr_accessor :name
+ attr_accessor :version
+
+ def initialize
+ @name = 5
+ @version = "1.0"
+ end
+
+ def ==(other)
+ @name == other.name && @version == other.version
+ end
+ end
+end
+
+module EncodingTest
+ def setup
+ @call_signature = [:int, :bool, :string, :float, [:time], Nested::StructClass]
+ @call_params = [1, true, "string", 5.0, [Time.now], Nested::StructClass.new]
+ @response_signature = [:string]
+ @response_param = "hello world"
+ test_setup
+ end
+
+ def test_abstract
+ obj = WS::Encoding::AbstractEncoding.new
+ assert_raises(NotImplementedError) do
+ obj.encode_rpc_call(nil, nil)
+ end
+ assert_raises(NotImplementedError) do
+ obj.decode_rpc_call(nil)
+ end
+ assert_raises(NotImplementedError) do
+ obj.encode_rpc_response(nil, nil)
+ end
+ assert_raises(NotImplementedError) do
+ obj.decode_rpc_response(nil)
+ end
+ end
+
+ def encode_rpc_call(method_name, signature, params)
+ params = params.dup
+ (0..(signature.length-1)).each do |i|
+ type_binding = @marshaler.register_type(signature[i])
+ info = WS::ParamInfo.create(signature[i], i, type_binding)
+ params[i] = @marshaler.marshal(WS::Param.new(params[i], info))
+ end
+ @encoder.encode_rpc_call(method_name, params)
+ end
+
+ def decode_rpc_call(obj)
+ @encoder.decode_rpc_call(obj)
+ end
+
+ def encode_rpc_response(method_name, signature, param)
+ type_binding = @marshaler.register_type(signature[0])
+ info = WS::ParamInfo.create(signature[0], 0, type_binding)
+ param = @marshaler.marshal(WS::Param.new(param, info))
+ @encoder.encode_rpc_response(method_name, param)
+ end
+
+ def decode_rpc_response(obj)
+ @encoder.decode_rpc_response(obj)
+ end
+end