em_hessian2 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +8 -0
- data/Gemfile +4 -0
- data/README.md +186 -0
- data/Rakefile +1 -0
- data/hessian2.gemspec +28 -0
- data/lib/hessian2.rb +14 -0
- data/lib/hessian2/class_wrapper.rb +8 -0
- data/lib/hessian2/client.rb +73 -0
- data/lib/hessian2/constants.rb +164 -0
- data/lib/hessian2/fault.rb +3 -0
- data/lib/hessian2/handler.rb +11 -0
- data/lib/hessian2/hessian_client.rb +3 -0
- data/lib/hessian2/parser.rb +555 -0
- data/lib/hessian2/struct_wrapper.rb +8 -0
- data/lib/hessian2/type_wrapper.rb +24 -0
- data/lib/hessian2/version.rb +3 -0
- data/lib/hessian2/writer.rb +543 -0
- data/test/Lighthouse.jpg +0 -0
- data/test/another_monkey.rb +7 -0
- data/test/app.rb +23 -0
- data/test/config.ru +2 -0
- data/test/create_monkeys.rb +4 -0
- data/test/defs.pb.rb +25 -0
- data/test/defs.proto +7 -0
- data/test/establish_connection.rb +7 -0
- data/test/get.rb +275 -0
- data/test/monkey.rb +5 -0
- data/test/monkey_service.rb +769 -0
- data/test/seeds.rb +14 -0
- data/test/set.rb +195 -0
- data/test/src/HessianTest.java +20 -0
- data/test/src/example/IMonkeyService.java +283 -0
- data/test/src/example/Monkey.java +31 -0
- data/test/src/example/MonkeyService.java +1125 -0
- data/test/test_class_wrapper.rb +75 -0
- data/test/test_exception.rb +21 -0
- data/test/test_struct_wrapper.rb +93 -0
- data/test/test_type_wrapper.rb +75 -0
- data/test/test_wait_taka.rb +8 -0
- data/test/vs_object_array2struct.rb +50 -0
- data/test/vs_redis_memcached_mysql2.rb +182 -0
- metadata +152 -0
data/test/Lighthouse.jpg
ADDED
Binary file
|
data/test/app.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
lib_path = File.expand_path('../../lib', __FILE__)
|
2
|
+
$:.unshift(lib_path)
|
3
|
+
require 'sinatra'
|
4
|
+
require File.expand_path('../monkey_service', __FILE__)
|
5
|
+
|
6
|
+
set :logging, false
|
7
|
+
|
8
|
+
get '/' do
|
9
|
+
status 405
|
10
|
+
'post me'
|
11
|
+
end
|
12
|
+
|
13
|
+
post '/monkey' do
|
14
|
+
# begin
|
15
|
+
# status 200
|
16
|
+
# MonkeyService.handle(request.body.read)
|
17
|
+
# rescue NoMethodError, ArgumentError, NameError => e
|
18
|
+
# status 500
|
19
|
+
# Hessian2.write_fault(e)
|
20
|
+
# end
|
21
|
+
status 200
|
22
|
+
MonkeyService.handle(request.body.read)
|
23
|
+
end
|
data/test/config.ru
ADDED
@@ -0,0 +1,4 @@
|
|
1
|
+
require File.expand_path('../establish_connection', __FILE__)
|
2
|
+
|
3
|
+
ActiveRecord::Base.connection.execute("drop table if exists monkeys")
|
4
|
+
ActiveRecord::Base.connection.execute("create table monkeys(id integer(11) not null auto_increment, born_at datetime, name varchar(255), price decimal(10, 2), primary key(id)) charset=utf8")
|
data/test/defs.pb.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
##
|
2
|
+
# This file is auto-generated. DO NOT EDIT!
|
3
|
+
#
|
4
|
+
require 'protobuf/message'
|
5
|
+
|
6
|
+
module Proto
|
7
|
+
|
8
|
+
##
|
9
|
+
# Message Classes
|
10
|
+
#
|
11
|
+
class Monkey < ::Protobuf::Message; end
|
12
|
+
|
13
|
+
##
|
14
|
+
# Message Fields
|
15
|
+
#
|
16
|
+
class Monkey
|
17
|
+
required ::Protobuf::Field::Int32Field, :born_at, 1
|
18
|
+
optional ::Protobuf::Field::Int32Field, :id, 2
|
19
|
+
optional ::Protobuf::Field::StringField, :name, 3
|
20
|
+
required ::Protobuf::Field::FloatField, :price, 4
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
end
|
25
|
+
|
data/test/defs.proto
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
require 'active_record'
|
2
|
+
require 'mysql2'
|
3
|
+
|
4
|
+
options = YAML.load_file(File.expand_path('../options.yml', __FILE__))
|
5
|
+
ActiveRecord::Base.establish_connection(options['mysql'])
|
6
|
+
ActiveRecord::Base.default_timezone = :local
|
7
|
+
ActiveRecord::Base.time_zone_aware_attributes = true
|
data/test/get.rb
ADDED
@@ -0,0 +1,275 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib_path = File.expand_path('../../lib', __FILE__)
|
3
|
+
$:.unshift(lib_path)
|
4
|
+
require 'hessian2'
|
5
|
+
require File.expand_path('../monkey', __FILE__)
|
6
|
+
|
7
|
+
c1 = Hessian2::Client.new('http://127.0.0.1:9292/monkey')
|
8
|
+
|
9
|
+
def print_assert(method, t)
|
10
|
+
puts "#{t ? '.' : '*' * 10 << 'fail'} #{method}"
|
11
|
+
end
|
12
|
+
|
13
|
+
# puts c1.get_monkey.inspect
|
14
|
+
# puts c1.get_class_wrapped_monkey.inspect
|
15
|
+
# puts c1.get_map.inspect
|
16
|
+
# puts c1.get_monkey_monkey.inspect
|
17
|
+
# puts c1.get_monkeys.inspect
|
18
|
+
# puts c1.get_class_wrapped_monkeys.inspect
|
19
|
+
# puts c1.get_each_class_wrapped_monkeys.inspect
|
20
|
+
|
21
|
+
# 0x00..0x1f # utf-8 string length 0-31
|
22
|
+
v = c1.get_string_0
|
23
|
+
print_assert 'get_string_0', v == ''
|
24
|
+
v = c1.get_string_x1f
|
25
|
+
print_assert 'get_string_x1f', v[0] == 'j' && v.size == 0x1f
|
26
|
+
v = c1.get_string_x1fu
|
27
|
+
print_assert 'get_string_x1fu', v[0] == '金' && v.size == 0x1f
|
28
|
+
|
29
|
+
# 0x20..0x2f # binary data length 0-15
|
30
|
+
v = c1.get_bin_0
|
31
|
+
print_assert 'get_bin_0', v.size == 0
|
32
|
+
v = c1.get_bin_xf
|
33
|
+
print_assert 'get_bin_xf', v.size == 0xf
|
34
|
+
|
35
|
+
# 0x30..0x33 # utf-8 string length 0-1023
|
36
|
+
v = c1.get_string_x20
|
37
|
+
print_assert 'get_string_x20', v[0] == 'j' && v.size == 0x20
|
38
|
+
v = c1.get_string_x20u
|
39
|
+
print_assert 'get_string_x20u', v[0] == '金' && v.size == 0x20
|
40
|
+
v = c1.get_string_x3ff
|
41
|
+
print_assert 'get_string_x3ff', v[0] == 'j' && v.size == 0x3ff
|
42
|
+
v = c1.get_string_x3ffu
|
43
|
+
print_assert 'get_string_x3ffu', v[0] == '金' && v.size == 0x3ff
|
44
|
+
|
45
|
+
# 0x34..0x37 # binary data length 0-1023
|
46
|
+
v = c1.get_bin_x10
|
47
|
+
print_assert 'get_bin_x10', v.size == 0x10
|
48
|
+
v = c1.get_bin_x3ff
|
49
|
+
print_assert 'get_bin_x3ff', v.size == 0x3ff
|
50
|
+
|
51
|
+
# 0x38..0x3f # three-octet compact long (-x40000 to x3ffff)
|
52
|
+
v = c1.get_long_mx801
|
53
|
+
print_assert 'get_long_mx801', v == -0x801
|
54
|
+
v = c1.get_long_x800
|
55
|
+
print_assert 'get_long_x800', v == 0x800
|
56
|
+
v = c1.get_long_mx40000
|
57
|
+
print_assert 'get_long_mx40000', v == -0x40000
|
58
|
+
v = c1.get_long_x3ffff
|
59
|
+
print_assert 'get_long_x3ffff', v == 0x3ffff
|
60
|
+
|
61
|
+
# 0x41 # 8-bit binary data non-final chunk ('A')
|
62
|
+
v = c1.get_lighthouse
|
63
|
+
print_assert 'get_lighthouse', v.size == 561276
|
64
|
+
|
65
|
+
# 0x42 # 8-bit binary data final chunk ('B')
|
66
|
+
v = c1.get_bin_x400
|
67
|
+
print_assert 'get_bin_x400', v.size == 0x400
|
68
|
+
v = c1.get_bin_x8000
|
69
|
+
print_assert 'get_bin_x8000', v.size == 0x8000
|
70
|
+
|
71
|
+
# 0x43 # object type definition ('C')
|
72
|
+
# 0x60..0x6f # object with direct type
|
73
|
+
v = c1.get_monkey
|
74
|
+
print_assert 'get_monkey', v.name == '阿门' && v.age == 7
|
75
|
+
|
76
|
+
v = c1.get_class_wrapped_monkey
|
77
|
+
print_assert 'get_class_wrapped_monkey', v.name == '阿门' && v.age == 7
|
78
|
+
|
79
|
+
# 0x44 # 64-bit IEEE encoded double ('D')
|
80
|
+
v = c1.get_double_min
|
81
|
+
print_assert 'get_double_min', v == 4.9E-324
|
82
|
+
v = c1.get_double_max
|
83
|
+
print_assert 'get_double_max', v == 1.7976931348623157E308
|
84
|
+
v = c1.get_double_positive_infinity
|
85
|
+
print_assert 'get_double_positive_infinity', v == Float::INFINITY
|
86
|
+
v = c1.get_double_negative_infinity
|
87
|
+
print_assert 'get_double_negative_infinity', v == -Float::INFINITY
|
88
|
+
v = c1.get_double_nan
|
89
|
+
print_assert 'get_double_nan', v.to_s.upcase == 'NAN'
|
90
|
+
v = c1.get_123dot456
|
91
|
+
print_assert 'get_123dot456', v == 123.456
|
92
|
+
|
93
|
+
# 0x46 # boolean false ('F')
|
94
|
+
v = c1.get_false
|
95
|
+
print_assert 'get_false', !v
|
96
|
+
|
97
|
+
# 0x48 # untyped map ('H')
|
98
|
+
v = c1.get_map_h
|
99
|
+
print_assert 'get_map_h', v['name'] == '阿门' && v['age'] == 7
|
100
|
+
|
101
|
+
# 0x49 # 32-bit signed integer ('I')
|
102
|
+
v = c1.get_int_mx40001
|
103
|
+
print_assert 'get_int_mx40001', v == -0x40001
|
104
|
+
v = c1.get_int_x40000
|
105
|
+
print_assert 'get_int_x40000', v == 0x40000
|
106
|
+
v = c1.get_int_mx40_000_000
|
107
|
+
print_assert 'get_int_mx40_000_000', v == -0x40_000_000
|
108
|
+
v = c1.get_int_x3f_fff_fff
|
109
|
+
print_assert 'get_int_x3f_fff_fff', v == 0x3f_fff_fff
|
110
|
+
|
111
|
+
# 0x4a # 64-bit UTC millisecond date
|
112
|
+
v = c1.get_date_20130112145959
|
113
|
+
print_assert 'get_date_20130112145959', v == Time.new(2013, 1, 12, 14, 59, 59)
|
114
|
+
|
115
|
+
# 0x4b # 32-bit UTC minute date
|
116
|
+
v = c1.get_date_201301121459
|
117
|
+
print_assert 'get_date_201301121459', v == Time.new(2013, 1, 12, 14, 59, 0)
|
118
|
+
|
119
|
+
# 0x4c # 64-bit signed long integer ('L')
|
120
|
+
v = c1.get_long_mx8_000_000_000_000_000
|
121
|
+
print_assert 'get_long_mx8_000_000_000_000_000', v == -0x8_000_000_000_000_000
|
122
|
+
v = c1.get_long_x7_fff_fff_fff_fff_fff
|
123
|
+
print_assert 'get_long_x7_fff_fff_fff_fff_fff', v == 0x7_fff_fff_fff_fff_fff
|
124
|
+
|
125
|
+
# 0x4d # map with type ('M')
|
126
|
+
v = c1.get_map
|
127
|
+
print_assert 'get_map', v['name'] == '阿门' && v['age'] == 7
|
128
|
+
|
129
|
+
# 0x4e # null ('N')
|
130
|
+
v = c1.get_null
|
131
|
+
print_assert 'get_null', v.nil?
|
132
|
+
|
133
|
+
# 0x4f # object instance ('O')
|
134
|
+
v = c1.get_monkeys
|
135
|
+
print_assert 'get_monkeys', v[0].name == '阿门' && v[0].age == 7 && v[1].name == '大鸡' && v[1].age == 6
|
136
|
+
|
137
|
+
# 0x51 # reference to map/list/object - integer ('Q')
|
138
|
+
v = c1.get_map_h_map_h
|
139
|
+
print_assert 'get_map_h_map_h', v[0]['name'] == '阿门' && v[0]['age'] == 7 && v[1]['name'] == '阿门' && v[1]['age'] == 7
|
140
|
+
v = c1.get_monkey_monkey
|
141
|
+
print_assert 'get_monkey_monkey', v[0].name == '阿门' && v[0].age == 7 && v[1].name == '阿门' && v[1].age == 7
|
142
|
+
v = c1.get_direct_untyped_list_list
|
143
|
+
print_assert 'get_direct_untyped_list_list', v[0] == (1..7).to_a && v[1] == (1..7).to_a
|
144
|
+
v = c1.get_untyped_list_list
|
145
|
+
print_assert 'get_untyped_list_list', v[0] == (1..7).to_a * 2 && v[1] == (1..7).to_a * 2
|
146
|
+
v = c1.get_direct_list_list
|
147
|
+
print_assert 'get_direct_list_list', v[0] == (1..7).to_a && v[1] == (1..7).to_a
|
148
|
+
v = c1.get_list_list
|
149
|
+
print_assert 'get_list_list', v[0] == (1..7).to_a * 2 && v[1] == (1..7).to_a * 2
|
150
|
+
|
151
|
+
|
152
|
+
# 0x52 # utf-8 string non-final chunk ('R')
|
153
|
+
v = c1.get_string_x8001
|
154
|
+
print_assert 'get_string_x8001', v[0] == 'j' && v.size == 0x8001
|
155
|
+
v = c1.get_string_x8001u
|
156
|
+
print_assert 'get_string_x8001u', v[0] == '金' && v.size == 0x8001
|
157
|
+
|
158
|
+
# 0x53 # utf-8 string final chunk ('S')
|
159
|
+
v = c1.get_string_x400
|
160
|
+
print_assert 'get_string_x400', v[0] == 'j' && v.size == 0x400
|
161
|
+
v = c1.get_string_x400u
|
162
|
+
print_assert 'get_string_x400u', v[0] == '金' && v.size == 0x400
|
163
|
+
v = c1.get_string_x8000
|
164
|
+
print_assert 'get_string_x8000', v[0] == 'j' && v.size == 0x8000
|
165
|
+
v = c1.get_string_x8000u
|
166
|
+
print_assert 'get_string_x8000u', v[0] == '金' && v.size == 0x8000
|
167
|
+
|
168
|
+
# 0x54 # boolean true ('T')
|
169
|
+
v = c1.get_true
|
170
|
+
print_assert 'get_true', v
|
171
|
+
|
172
|
+
# 0x55 # variable-length list/vector ('U')
|
173
|
+
# hessian2 write fixed-length list only
|
174
|
+
|
175
|
+
# 0x56 # fixed-length list/vector ('V')
|
176
|
+
v = c1.get_list
|
177
|
+
print_assert 'get_list', v == (1..7).to_a * 2
|
178
|
+
|
179
|
+
# 0x57 # variable-length untyped list/vector ('W')
|
180
|
+
# hessian2 write fixed-length list only
|
181
|
+
|
182
|
+
# 0x58 # fixed-length untyped list/vector ('X')
|
183
|
+
v = c1.get_untyped_list
|
184
|
+
print_assert 'get_untyped_list', v == (1..7).to_a * 2
|
185
|
+
|
186
|
+
# 0x59 # long encoded as 32-bit int ('Y')
|
187
|
+
v = c1.get_long_mx40001
|
188
|
+
print_assert 'get_long_mx40001', v == -0x40001
|
189
|
+
v = c1.get_long_x40000
|
190
|
+
print_assert 'get_long_x40000', v == 0x40000
|
191
|
+
v = c1.get_long_mx80_000_000
|
192
|
+
print_assert 'get_long_mx80_000_000', v == -0x80_000_000
|
193
|
+
v = c1.get_long_x7f_fff_fff
|
194
|
+
print_assert 'get_long_x7f_fff_fff', v == 0x7f_fff_fff
|
195
|
+
|
196
|
+
# 0x5b # double 0.0
|
197
|
+
v = c1.get_double_0
|
198
|
+
print_assert 'get_double_0', v == 0.0
|
199
|
+
|
200
|
+
# 0x5c # double 1.0
|
201
|
+
v = c1.get_double_1
|
202
|
+
print_assert 'get_double_1', v == 1.0
|
203
|
+
|
204
|
+
# 0x5d # double represented as byte (-128.0 to 127.0)
|
205
|
+
v = c1.get_double_m128
|
206
|
+
print_assert 'get_double_m128', v == -128.0
|
207
|
+
v = c1.get_double_127
|
208
|
+
print_assert 'get_double_127', v == 127.0
|
209
|
+
|
210
|
+
# 0x5e # double represented as short (-32768.0 to 32767.0)
|
211
|
+
v = c1.get_double_m129
|
212
|
+
print_assert 'get_double_m129', v == -129.0
|
213
|
+
v = c1.get_double_128
|
214
|
+
print_assert 'get_double_128', v == 128.0
|
215
|
+
v = c1.get_double_m32768
|
216
|
+
print_assert 'get_double_m32768', v == -32768.0
|
217
|
+
v = c1.get_double_32767
|
218
|
+
print_assert 'get_double_32767', v == 32767.0
|
219
|
+
|
220
|
+
# 0x5f # double represented as float
|
221
|
+
# hessian2 write double-precision only
|
222
|
+
|
223
|
+
# 0x70..0x77 # fixed list with direct length
|
224
|
+
v = c1.get_list_size0
|
225
|
+
print_assert 'get_list_size0', v == []
|
226
|
+
v = c1.get_list_size7
|
227
|
+
print_assert 'get_list_size7', v == (1..7).to_a
|
228
|
+
|
229
|
+
# 0x78..0x7f # fixed untyped list with direct length
|
230
|
+
v = c1.get_untyped_list_size0
|
231
|
+
print_assert 'get_untyped_list_size0', v == []
|
232
|
+
v = c1.get_untyped_list_size7
|
233
|
+
print_assert 'get_untyped_list_size7', v == (1..7).to_a
|
234
|
+
|
235
|
+
# 0x80..0xbf # one-octet compact int (-x10 to x3f, x90 is 0)
|
236
|
+
v = c1.get_int_mx10
|
237
|
+
print_assert 'get_int_mx10', v == -0x10
|
238
|
+
v = c1.get_int_x3f
|
239
|
+
print_assert 'get_int_x3f', v == 0x3f
|
240
|
+
|
241
|
+
# 0xc0..0xcf # two-octet compact int (-x800 to x7ff)
|
242
|
+
v = c1.get_int_mx11
|
243
|
+
print_assert 'get_int_mx11', v == -0x11
|
244
|
+
v = c1.get_int_x40
|
245
|
+
print_assert 'get_int_x40', v == 0x40
|
246
|
+
v = c1.get_int_mx800
|
247
|
+
print_assert 'get_int_mx800', v == -0x800
|
248
|
+
v = c1.get_int_x7ff
|
249
|
+
print_assert 'get_int_x7ff', v == 0x7ff
|
250
|
+
|
251
|
+
# 0xd0..0xd7 # three-octet compact int (-x40000 to x3ffff)
|
252
|
+
v = c1.get_int_mx801
|
253
|
+
print_assert 'get_int_mx801', v == -0x801
|
254
|
+
v = c1.get_int_x800
|
255
|
+
print_assert 'get_int_x800', v == 0x800
|
256
|
+
v = c1.get_int_mx40000
|
257
|
+
print_assert 'get_int_mx40000', v == -0x40000
|
258
|
+
v = c1.get_int_x3ffff
|
259
|
+
print_assert 'get_int_x3ffff', v == 0x3ffff
|
260
|
+
|
261
|
+
# 0xd8..0xef # one-octet compact long (-x8 to xf, xe0 is 0)
|
262
|
+
v = c1.get_long_mx8
|
263
|
+
print_assert 'get_long_mx8', v == -0x8
|
264
|
+
v = c1.get_long_xf
|
265
|
+
print_assert 'get_long_xf', v == 0xf
|
266
|
+
|
267
|
+
# 0xf0..0xff # two-octet compact long (-x800 to x7ff, xf8 is 0)
|
268
|
+
v = c1.get_long_mx9
|
269
|
+
print_assert 'get_long_mx9', v == -0x9
|
270
|
+
v = c1.get_long_x10
|
271
|
+
print_assert 'get_long_x10', v == 0x10
|
272
|
+
v = c1.get_long_mx800
|
273
|
+
print_assert 'get_long_mx800', v == -0x800
|
274
|
+
v = c1.get_long_x7ff
|
275
|
+
print_assert 'get_long_x7ff', v == 0x7ff
|
data/test/monkey.rb
ADDED
@@ -0,0 +1,769 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib_path = File.expand_path('../../lib', __FILE__)
|
3
|
+
$:.unshift(lib_path)
|
4
|
+
require 'hessian2'
|
5
|
+
require File.expand_path('../monkey', __FILE__)
|
6
|
+
|
7
|
+
$i = 0
|
8
|
+
|
9
|
+
class MonkeyService
|
10
|
+
extend Hessian2::Handler
|
11
|
+
|
12
|
+
def self.wait_taka(name)
|
13
|
+
sleep 5 if name == 'taka'
|
14
|
+
name
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.wait1
|
18
|
+
sleep 1
|
19
|
+
$i += 1
|
20
|
+
puts $i
|
21
|
+
$i
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.wait5
|
25
|
+
sleep 5
|
26
|
+
$i += 1
|
27
|
+
puts $i
|
28
|
+
$i
|
29
|
+
end
|
30
|
+
|
31
|
+
# 0x00..0x1f # utf-8 string length 0-31
|
32
|
+
def self.get_string_0
|
33
|
+
''
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.get_string_x1f
|
37
|
+
'j' * 0x1f
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.get_string_x1fu
|
41
|
+
'金' * 0x1f
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.set_string_0(str1)
|
45
|
+
print_assert 'set_string_0', str1 == ''
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.set_string_x1f(str1)
|
49
|
+
print_assert 'set_string_x1f', str1 == 'j' * 0x1f
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.set_string_x1fu(str1)
|
53
|
+
print_assert 'set_string_x1fu', str1 == '金' * 0x1f
|
54
|
+
end
|
55
|
+
|
56
|
+
# 0x20..0x2f # binary data length 0-15
|
57
|
+
def self.get_bin_0
|
58
|
+
Hessian2::TypeWrapper.new('B', '')
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.get_bin_xf
|
62
|
+
Hessian2::TypeWrapper.new('B', ['j' * 0xf].pack('a*'))
|
63
|
+
end
|
64
|
+
|
65
|
+
def self.set_bin_0(bin1)
|
66
|
+
print_assert 'set_bin_0', bin1.size == 0
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.set_bin_xf(bin1)
|
70
|
+
print_assert 'set_bin_xf', bin1.size == 0xf
|
71
|
+
end
|
72
|
+
|
73
|
+
# 0x30..0x33 # utf-8 string length 0-1023
|
74
|
+
def self.get_string_x20
|
75
|
+
'j' * 0x20
|
76
|
+
end
|
77
|
+
|
78
|
+
def self.get_string_x20u
|
79
|
+
'金' * 0x20
|
80
|
+
end
|
81
|
+
|
82
|
+
def self.get_string_x3ff
|
83
|
+
'j' * 0x3ff
|
84
|
+
end
|
85
|
+
|
86
|
+
def self.get_string_x3ffu
|
87
|
+
'金' * 0x3ff
|
88
|
+
end
|
89
|
+
|
90
|
+
def self.set_string_x20(str1)
|
91
|
+
print_assert 'set_string_x20', str1[0] == 'j' && str1.size == 0x20
|
92
|
+
end
|
93
|
+
|
94
|
+
def self.set_string_x20u(str1)
|
95
|
+
print_assert 'set_string_x20u', str1[0] == '金' && str1.size == 0x20
|
96
|
+
end
|
97
|
+
|
98
|
+
def self.set_string_x3ff(str1)
|
99
|
+
print_assert 'set_string_x3ff', str1[0] == 'j' && str1.size == 0x3ff
|
100
|
+
end
|
101
|
+
|
102
|
+
def self.set_string_x3ffu(str1)
|
103
|
+
print_assert 'set_string_x3ffu', str1[0] == '金' && str1.size == 0x3ff
|
104
|
+
end
|
105
|
+
|
106
|
+
# 0x34..0x37 # binary data length 0-1023
|
107
|
+
def self.get_bin_x10
|
108
|
+
Hessian2::TypeWrapper.new('B', ['j' * 0x10].pack('a*'))
|
109
|
+
end
|
110
|
+
|
111
|
+
def self.get_bin_x3ff
|
112
|
+
Hessian2::TypeWrapper.new('B', ['j' * 0x3ff].pack('a*'))
|
113
|
+
end
|
114
|
+
|
115
|
+
def self.set_bin_x10(bin1)
|
116
|
+
print_assert 'set_bin_x10', bin1.size == 0x10
|
117
|
+
end
|
118
|
+
|
119
|
+
def self.set_bin_x3ff(bin1)
|
120
|
+
print_assert 'set_bin_x3ff', bin1.size == 0x3ff
|
121
|
+
end
|
122
|
+
|
123
|
+
# 0x38..0x3f # three-octet compact long (-x40000 to x3ffff)
|
124
|
+
def self.get_long_mx801
|
125
|
+
-0x801
|
126
|
+
end
|
127
|
+
|
128
|
+
def self.get_long_x800
|
129
|
+
0x800
|
130
|
+
end
|
131
|
+
|
132
|
+
def self.get_long_mx40000
|
133
|
+
-0x40000
|
134
|
+
end
|
135
|
+
|
136
|
+
def self.get_long_x3ffff
|
137
|
+
0x3ffff
|
138
|
+
end
|
139
|
+
|
140
|
+
def self.set_long_mx801(long1)
|
141
|
+
print_assert 'set_long_mx801', long1 == -0x801
|
142
|
+
end
|
143
|
+
|
144
|
+
def self.set_long_x800(long1)
|
145
|
+
print_assert 'set_long_x800', long1 == 0x800
|
146
|
+
end
|
147
|
+
|
148
|
+
def self.set_long_mx40000(long1)
|
149
|
+
print_assert 'set_long_mx40000', long1 == -0x40000
|
150
|
+
end
|
151
|
+
|
152
|
+
def self.set_long_x3ffff(long1)
|
153
|
+
print_assert 'set_long_x3ffff', long1 == 0x3ffff
|
154
|
+
end
|
155
|
+
|
156
|
+
# 0x41 # 8-bit binary data non-final chunk ('A')
|
157
|
+
def self.get_lighthouse
|
158
|
+
Hessian2::TypeWrapper.new('B', IO.binread(File.expand_path("../Lighthouse.jpg", __FILE__)))
|
159
|
+
end
|
160
|
+
|
161
|
+
def self.set_lighthouse(bin1) # 561276
|
162
|
+
print_assert 'set_lighthouse', bin1.size == IO.binread(File.expand_path("../Lighthouse.jpg", __FILE__)).size
|
163
|
+
end
|
164
|
+
|
165
|
+
# 0x42 # 8-bit binary data final chunk ('B')
|
166
|
+
def self.get_bin_x400
|
167
|
+
Hessian2::TypeWrapper.new('B', ['j' * 0x400].pack('a*'))
|
168
|
+
end
|
169
|
+
|
170
|
+
def self.get_bin_x8000
|
171
|
+
Hessian2::TypeWrapper.new('B', ['j' * 0x8000].pack('a*'))
|
172
|
+
end
|
173
|
+
|
174
|
+
def self.set_bin_x400(bin1)
|
175
|
+
print_assert 'set_bin_x400', bin1.size == 0x400
|
176
|
+
end
|
177
|
+
|
178
|
+
def self.set_bin_x8000(bin1)
|
179
|
+
print_assert 'set_bin_x8000', bin1.size == 0x8000
|
180
|
+
end
|
181
|
+
|
182
|
+
# 0x43 # object type definition ('C') and 0x60..0x6f # object with direct type
|
183
|
+
# 0x4d # map with type ('M')
|
184
|
+
def self.get_monkey
|
185
|
+
Monkey.new(name: '阿门', age: 7)
|
186
|
+
end
|
187
|
+
|
188
|
+
def self.get_class_wrapped_monkey
|
189
|
+
Hessian2::ClassWrapper.new('Monkey', {name: '阿门', age: 7})
|
190
|
+
end
|
191
|
+
|
192
|
+
def self.set_monkey(monkey1)
|
193
|
+
print_assert 'set_monkey', monkey1.name == '阿门' && monkey1.age == 7
|
194
|
+
end
|
195
|
+
|
196
|
+
# 0x44 # 64-bit IEEE encoded double ('D')
|
197
|
+
def self.get_double_min
|
198
|
+
4.9E-324
|
199
|
+
end
|
200
|
+
|
201
|
+
def self.get_double_max
|
202
|
+
1.7976931348623157E308
|
203
|
+
end
|
204
|
+
|
205
|
+
def self.get_double_positive_infinity
|
206
|
+
Float::INFINITY
|
207
|
+
end
|
208
|
+
|
209
|
+
def self.get_double_negative_infinity
|
210
|
+
-Float::INFINITY
|
211
|
+
end
|
212
|
+
|
213
|
+
def self.get_double_nan
|
214
|
+
Float::NAN
|
215
|
+
end
|
216
|
+
|
217
|
+
def self.get_123dot456
|
218
|
+
123.456
|
219
|
+
end
|
220
|
+
|
221
|
+
def self.set_double_min(double1) # 4.9E-324
|
222
|
+
print_assert 'set_double_min', double1 == 4.9E-324
|
223
|
+
end
|
224
|
+
|
225
|
+
def self.set_double_max(double1) # 1.7976931348623157E308
|
226
|
+
print_assert 'set_double_max', double1 == 1.7976931348623157E308
|
227
|
+
end
|
228
|
+
|
229
|
+
def self.set_double_positive_infinity(double1)
|
230
|
+
print_assert 'set_double_positive_infinity', double1 == Float::INFINITY
|
231
|
+
end
|
232
|
+
|
233
|
+
def self.set_double_negative_infinity(double1)
|
234
|
+
print_assert 'set_double_negative_infinity', double1 == -Float::INFINITY
|
235
|
+
end
|
236
|
+
|
237
|
+
def self.set_double_nan(double1)
|
238
|
+
print_assert 'set_double_nan', double1.to_s.upcase == 'NAN'
|
239
|
+
end
|
240
|
+
|
241
|
+
def self.set_123dot456(double1)
|
242
|
+
print_assert 'set_123dot456', double1 == 123.456
|
243
|
+
end
|
244
|
+
|
245
|
+
|
246
|
+
# 0x46 # boolean false ('F')
|
247
|
+
def self.get_false
|
248
|
+
false
|
249
|
+
end
|
250
|
+
|
251
|
+
def self.set_false(false1)
|
252
|
+
print_assert 'set_false', !false1
|
253
|
+
end
|
254
|
+
|
255
|
+
# 0x48 # untyped map ('H')
|
256
|
+
def self.get_map_h
|
257
|
+
{ name: '阿门', age: 7 }
|
258
|
+
end
|
259
|
+
|
260
|
+
def self.set_map_h(map1)
|
261
|
+
print_assert 'set_map_h', map1['name'] == '阿门' && map1['age'] == 7
|
262
|
+
end
|
263
|
+
|
264
|
+
# 0x49 # 32-bit signed integer ('I')
|
265
|
+
def self.get_int_mx40001
|
266
|
+
-0x40001
|
267
|
+
end
|
268
|
+
|
269
|
+
def self.get_int_x40000
|
270
|
+
0x40000
|
271
|
+
end
|
272
|
+
|
273
|
+
def self.get_int_mx40_000_000
|
274
|
+
-0x40_000_000
|
275
|
+
end
|
276
|
+
|
277
|
+
def self.get_int_x3f_fff_fff
|
278
|
+
0x3f_fff_fff
|
279
|
+
end
|
280
|
+
|
281
|
+
def self.set_int_mx40001(int1)
|
282
|
+
print_assert 'set_int_mx40001', int1 == -0x40001
|
283
|
+
end
|
284
|
+
|
285
|
+
def self.set_int_x40000(int1)
|
286
|
+
print_assert 'set_int_x40000', int1 == 0x40000
|
287
|
+
end
|
288
|
+
|
289
|
+
def self.set_int_mx40_000_000(int1)
|
290
|
+
print_assert 'set_int_mx40_000_000', int1 == -0x40_000_000
|
291
|
+
end
|
292
|
+
|
293
|
+
def self.set_int_x3f_fff_fff(int1)
|
294
|
+
print_assert 'set_int_x3f_fff_fff', int1 == 0x3f_fff_fff
|
295
|
+
end
|
296
|
+
|
297
|
+
# 0x4a # 64-bit UTC millisecond date
|
298
|
+
def self.get_date_20130112145959
|
299
|
+
Time.new(2013, 1, 12, 14, 59, 59)
|
300
|
+
end
|
301
|
+
|
302
|
+
def self.set_date_20130112145959(date1)
|
303
|
+
print_assert 'set_date_20130112145959', date1 == Time.new(2013, 1, 12, 14, 59, 59)
|
304
|
+
end
|
305
|
+
|
306
|
+
# 0x4b # 32-bit UTC minute date
|
307
|
+
def self.get_date_201301121459
|
308
|
+
Time.new(2013, 1, 12, 14, 59, 0)
|
309
|
+
end
|
310
|
+
|
311
|
+
def self.set_date_201301121459(date1)
|
312
|
+
print_assert 'set_date_201301121459', date1 == Time.new(2013, 1, 12, 14, 59, 0)
|
313
|
+
end
|
314
|
+
|
315
|
+
# 0x4c # 64-bit signed long integer ('L')
|
316
|
+
def self.get_long_mx80_000_001
|
317
|
+
-0x80_000_001
|
318
|
+
end
|
319
|
+
|
320
|
+
def self.get_long_x80_000_000
|
321
|
+
0x80_000_000
|
322
|
+
end
|
323
|
+
|
324
|
+
def self.get_long_mx8_000_000_000_000_000
|
325
|
+
-0x8_000_000_000_000_000
|
326
|
+
end
|
327
|
+
|
328
|
+
def self.get_long_x7_fff_fff_fff_fff_fff
|
329
|
+
0x7_fff_fff_fff_fff_fff
|
330
|
+
end
|
331
|
+
|
332
|
+
def self.set_long_mx80_000_001(long1)
|
333
|
+
print_assert 'set_long_mx80_000_001', long1 == -0x80_000_001
|
334
|
+
end
|
335
|
+
|
336
|
+
def self.set_long_x80_000_000(long1)
|
337
|
+
print_assert 'set_long_x80_000_000', long1 == 0x80_000_000
|
338
|
+
end
|
339
|
+
|
340
|
+
def self.set_long_mx8_000_000_000_000_000(long1)
|
341
|
+
print_assert 'set_long_mx8_000_000_000_000_000', long1 == -0x8_000_000_000_000_000
|
342
|
+
end
|
343
|
+
|
344
|
+
def self.set_long_x7_fff_fff_fff_fff_fff(long1)
|
345
|
+
print_assert 'set_long_x7_fff_fff_fff_fff_fff', long1 == 0x7_fff_fff_fff_fff_fff
|
346
|
+
end
|
347
|
+
|
348
|
+
# 0x4d # map with type ('M')
|
349
|
+
def self.get_map
|
350
|
+
Hessian2::TypeWrapper.new('example.Monkey', self.get_map_h)
|
351
|
+
end
|
352
|
+
|
353
|
+
def self.set_map(map1)
|
354
|
+
print_assert 'set_map', map1['name'] == '阿门' && map1['age'] == 7
|
355
|
+
end
|
356
|
+
|
357
|
+
# 0x4e # null ('N')
|
358
|
+
def self.get_null
|
359
|
+
nil
|
360
|
+
end
|
361
|
+
|
362
|
+
def self.set_null(obj)
|
363
|
+
print_assert 'set_null', obj.nil?
|
364
|
+
end
|
365
|
+
|
366
|
+
# 0x4f # object instance ('O')
|
367
|
+
def self.get_monkeys
|
368
|
+
[ Monkey.new(name: '阿门', age: 7), Monkey.new(name: '大鸡', age: 6) ]
|
369
|
+
end
|
370
|
+
|
371
|
+
def self.get_class_wrapped_monkeys
|
372
|
+
Hessian2::ClassWrapper.new('[Monkey', [ {name: '阿门', age: 7}, {name: '大鸡', age: 6} ])
|
373
|
+
end
|
374
|
+
|
375
|
+
def self.get_each_class_wrapped_monkeys
|
376
|
+
[ Hessian2::ClassWrapper.new('Monkey',{name: '阿门', age: 7}),
|
377
|
+
Hessian2::ClassWrapper.new('Monkey',{name: '大鸡', age: 6}) ]
|
378
|
+
end
|
379
|
+
|
380
|
+
def self.set_monkeys(monkeys)
|
381
|
+
print_assert 'set_monkeys', monkeys.size == 0x11
|
382
|
+
end
|
383
|
+
|
384
|
+
# 0x51 # reference to map/list/object - integer ('Q')
|
385
|
+
def self.get_map_h_map_h
|
386
|
+
map1 = self.get_map_h
|
387
|
+
[ map1, map1 ]
|
388
|
+
end
|
389
|
+
|
390
|
+
def self.get_direct_untyped_list_list
|
391
|
+
list1 = self.get_list_size7
|
392
|
+
[ list1, list1 ]
|
393
|
+
end
|
394
|
+
|
395
|
+
def self.get_untyped_list_list
|
396
|
+
self.get_list_list
|
397
|
+
end
|
398
|
+
|
399
|
+
def self.get_direct_list_list
|
400
|
+
list1 = self.get_list_size7
|
401
|
+
[ list1, list1 ]
|
402
|
+
end
|
403
|
+
|
404
|
+
def self.get_list_list
|
405
|
+
list1 = self.get_list
|
406
|
+
[ list1, list1 ]
|
407
|
+
end
|
408
|
+
|
409
|
+
def self.get_monkey_monkey
|
410
|
+
monkey = Monkey.new(name: '阿门', age: 7)
|
411
|
+
[ monkey, monkey ]
|
412
|
+
end
|
413
|
+
|
414
|
+
def self.set_map_list_monkey_map_list_monkey(map1, list1, monkey1, map2, list2, monkey2)
|
415
|
+
print_assert 'set_map_list_monkey_map_list_monkey', map1['name'] == map2['name'] && list1[0] == list2[0] && monkey1.name == monkey2.name
|
416
|
+
end
|
417
|
+
|
418
|
+
# 0x52 # utf-8 string non-final chunk ('R')
|
419
|
+
def self.get_string_x8001
|
420
|
+
'j' * 0x8001
|
421
|
+
end
|
422
|
+
|
423
|
+
def self.get_string_x8001u
|
424
|
+
'金' * 0x8001
|
425
|
+
end
|
426
|
+
|
427
|
+
def self.set_string_x8001(str1)
|
428
|
+
print_assert 'set_string_x8001', str1[0] == 'j' && str1.size == 0x8001
|
429
|
+
end
|
430
|
+
|
431
|
+
def self.set_string_x8001u(str1)
|
432
|
+
print_assert 'set_string_x8001u', str1[0] == '金' && str1.size == 0x8001
|
433
|
+
end
|
434
|
+
|
435
|
+
# 0x53 # utf-8 string final chunk ('S')
|
436
|
+
def self.get_string_x400
|
437
|
+
'j' * 0x400
|
438
|
+
end
|
439
|
+
|
440
|
+
def self.get_string_x400u
|
441
|
+
'金' * 0x400
|
442
|
+
end
|
443
|
+
|
444
|
+
def self.get_string_x8000
|
445
|
+
'j' * 0x8000
|
446
|
+
end
|
447
|
+
|
448
|
+
def self.get_string_x8000u
|
449
|
+
'金' * 0x8000
|
450
|
+
end
|
451
|
+
|
452
|
+
def self.set_string_x400(str1)
|
453
|
+
print_assert 'set_string_x400', str1[0] == 'j' && str1.size == 0x400
|
454
|
+
end
|
455
|
+
|
456
|
+
def self.set_string_x400u(str1)
|
457
|
+
print_assert 'set_string_x400u', str1[0] == '金' && str1.size == 0x400
|
458
|
+
end
|
459
|
+
|
460
|
+
def self.set_string_x8000(str1)
|
461
|
+
print_assert 'set_string_x8000', str1[0] == 'j' && str1.size == 0x8000
|
462
|
+
end
|
463
|
+
|
464
|
+
def self.set_string_x8000u(str1)
|
465
|
+
print_assert 'set_string_x8000u', str1[0] == '金' && str1.size == 0x8000
|
466
|
+
end
|
467
|
+
|
468
|
+
# 0x54 # boolean true ('T')
|
469
|
+
def self.get_true
|
470
|
+
true
|
471
|
+
end
|
472
|
+
|
473
|
+
def self.set_true(true1)
|
474
|
+
print_assert 'set_true', true1
|
475
|
+
end
|
476
|
+
|
477
|
+
# 0x56 # fixed-length list/vector ('V')
|
478
|
+
# 0x58 # fixed-length untyped list/vector ('X')
|
479
|
+
def self.get_list
|
480
|
+
self.get_list_size7 * 2
|
481
|
+
end
|
482
|
+
|
483
|
+
def self.get_untyped_list
|
484
|
+
self.get_list
|
485
|
+
end
|
486
|
+
|
487
|
+
def self.set_list(list1)
|
488
|
+
puts list1.inspect
|
489
|
+
print_assert 'set_list', list1.size == 14 && list1[0] == 1
|
490
|
+
end
|
491
|
+
|
492
|
+
def self.set_list_int(list1)
|
493
|
+
print_assert 'set_list_int', list1.size == 14 && list1[0] == 1
|
494
|
+
end
|
495
|
+
|
496
|
+
def self.set_list_monkey(list1)
|
497
|
+
print_assert 'set_list_monkey', list1.size == 14 && list1.last.name == '阿门' && list1.last.age == 7
|
498
|
+
end
|
499
|
+
|
500
|
+
# 0x59 # long encoded as 32-bit int ('Y')
|
501
|
+
def self.get_long_mx40001
|
502
|
+
-0x40001
|
503
|
+
end
|
504
|
+
|
505
|
+
def self.get_long_x40000
|
506
|
+
0x40000
|
507
|
+
end
|
508
|
+
|
509
|
+
def self.get_long_mx80_000_000
|
510
|
+
-0x80_000_000
|
511
|
+
end
|
512
|
+
|
513
|
+
def self.get_long_x7f_fff_fff
|
514
|
+
0x7f_fff_fff
|
515
|
+
end
|
516
|
+
|
517
|
+
def self.set_long_mx40001(long1)
|
518
|
+
print_assert 'set_long_mx40001', long1 == -0x40001
|
519
|
+
end
|
520
|
+
|
521
|
+
def self.set_long_x40000(long1)
|
522
|
+
print_assert 'set_long_x40000', long1 == 0x40000
|
523
|
+
end
|
524
|
+
|
525
|
+
def self.set_long_mx80_000_000(long1)
|
526
|
+
print_assert 'set_long_mx80_000_000', long1 == -0x80_000_000
|
527
|
+
end
|
528
|
+
|
529
|
+
def self.set_long_x7f_fff_fff(long1)
|
530
|
+
print_assert 'set_long_x7f_fff_fff', long1 == 0x7f_fff_fff
|
531
|
+
end
|
532
|
+
|
533
|
+
# 0x5b # double 0.0
|
534
|
+
def self.get_double_0
|
535
|
+
0.0
|
536
|
+
end
|
537
|
+
|
538
|
+
def self.set_double_0(double1)
|
539
|
+
print_assert 'set_double_0', double1 == 0.0
|
540
|
+
end
|
541
|
+
|
542
|
+
# 0x5c # double 1.0
|
543
|
+
def self.get_double_1
|
544
|
+
1.0
|
545
|
+
end
|
546
|
+
|
547
|
+
def self.set_double_1(double1)
|
548
|
+
print_assert 'set_double_1', double1 == 1.0
|
549
|
+
end
|
550
|
+
|
551
|
+
# 0x5d # double represented as byte (-128.0 to 127.0)
|
552
|
+
def self.get_double_m128
|
553
|
+
-128.0
|
554
|
+
end
|
555
|
+
|
556
|
+
def self.get_double_127
|
557
|
+
127.0
|
558
|
+
end
|
559
|
+
|
560
|
+
def self.set_double_m128(double1)
|
561
|
+
print_assert 'set_double_m128', double1 == -128.0
|
562
|
+
end
|
563
|
+
|
564
|
+
def self.set_double_127(double1)
|
565
|
+
print_assert 'set_double_127', double1 == 127.0
|
566
|
+
end
|
567
|
+
|
568
|
+
# 0x5e # double represented as short (-32768.0 to 32767.0)
|
569
|
+
def self.get_double_m129
|
570
|
+
-129.0
|
571
|
+
end
|
572
|
+
|
573
|
+
def self.get_double_128
|
574
|
+
128.0
|
575
|
+
end
|
576
|
+
|
577
|
+
def self.get_double_m32768
|
578
|
+
-32768.0
|
579
|
+
end
|
580
|
+
|
581
|
+
def self.get_double_32767
|
582
|
+
32767.0
|
583
|
+
end
|
584
|
+
|
585
|
+
def self.set_double_m129(double1)
|
586
|
+
print_assert 'set_double_m129', double1 == -129.0
|
587
|
+
end
|
588
|
+
|
589
|
+
def self.set_double_128(double1)
|
590
|
+
print_assert 'set_double_128', double1 == 128.0
|
591
|
+
end
|
592
|
+
|
593
|
+
def self.set_double_m32768(double1)
|
594
|
+
print_assert 'set_double_m32768', double1 == -32768.0
|
595
|
+
end
|
596
|
+
|
597
|
+
def self.set_double_32767(double1)
|
598
|
+
print_assert 'set_double_32767', double1 == 32767.0
|
599
|
+
end
|
600
|
+
|
601
|
+
# 0x70..0x77 # fixed list with direct length
|
602
|
+
# 0x78..0x7f # fixed untyped list with direct length
|
603
|
+
def self.get_list_size0
|
604
|
+
[]
|
605
|
+
end
|
606
|
+
|
607
|
+
def self.get_list_size7
|
608
|
+
(1..7).to_a
|
609
|
+
end
|
610
|
+
|
611
|
+
def self.get_untyped_list_size0
|
612
|
+
self.get_list_size0
|
613
|
+
end
|
614
|
+
|
615
|
+
def self.get_untyped_list_size7
|
616
|
+
self.get_list_size7
|
617
|
+
end
|
618
|
+
|
619
|
+
def self.set_list_size0(list1)
|
620
|
+
print_assert 'set_list_size0', list1.size == 0
|
621
|
+
end
|
622
|
+
|
623
|
+
def self.set_list_size7(list1)
|
624
|
+
print_assert 'set_list_size7', list1.size == 7 && list1[0] == 1
|
625
|
+
end
|
626
|
+
|
627
|
+
def self.set_list_monkey_size7(list1)
|
628
|
+
print_assert 'set_list_monkey_size7', list1.size == 7 && list1.last.name == '阿门' && list1.last.age == 7
|
629
|
+
end
|
630
|
+
|
631
|
+
# 0x80..0xbf # one-octet compact int (-x10 to x2f, x90 is 0)
|
632
|
+
def self.get_int_mx10
|
633
|
+
-0x10
|
634
|
+
end
|
635
|
+
|
636
|
+
def self.get_int_x3f
|
637
|
+
0x3f
|
638
|
+
end
|
639
|
+
|
640
|
+
def self.set_int_mx10(int1)
|
641
|
+
print_assert 'set_int_mx10', int1 == -0x10
|
642
|
+
end
|
643
|
+
|
644
|
+
def self.set_int_x3f(int1)
|
645
|
+
print_assert 'set_int_x3f', int1 == 0x3f
|
646
|
+
end
|
647
|
+
|
648
|
+
# 0xc0..0xcf # two-octet compact int (-x800 to x7ff)
|
649
|
+
def self.get_int_mx11
|
650
|
+
-0x11
|
651
|
+
end
|
652
|
+
|
653
|
+
def self.get_int_x40
|
654
|
+
0x40
|
655
|
+
end
|
656
|
+
|
657
|
+
def self.get_int_mx800
|
658
|
+
-0x800
|
659
|
+
end
|
660
|
+
|
661
|
+
def self.get_int_x7ff
|
662
|
+
0x7ff
|
663
|
+
end
|
664
|
+
|
665
|
+
def self.set_int_mx11(int1)
|
666
|
+
print_assert 'set_int_mx11', int1 == -0x11
|
667
|
+
end
|
668
|
+
|
669
|
+
def self.set_int_x40(int1)
|
670
|
+
print_assert 'set_int_x40', int1 == 0x40
|
671
|
+
end
|
672
|
+
|
673
|
+
def self.set_int_mx800(int1)
|
674
|
+
print_assert 'set_int_mx800', int1 == -0x800
|
675
|
+
end
|
676
|
+
|
677
|
+
def self.set_int_x7ff(int1)
|
678
|
+
print_assert 'set_int_x7ff', int1 == 0x7ff
|
679
|
+
end
|
680
|
+
|
681
|
+
# 0xd0..0xd7 # three-octet compact int (-x40000 to x3ffff)
|
682
|
+
def self.get_int_mx801
|
683
|
+
-0x801
|
684
|
+
end
|
685
|
+
|
686
|
+
def self.get_int_x800
|
687
|
+
0x800
|
688
|
+
end
|
689
|
+
|
690
|
+
def self.get_int_mx40000
|
691
|
+
-0x40000
|
692
|
+
end
|
693
|
+
|
694
|
+
def self.get_int_x3ffff
|
695
|
+
0x3ffff
|
696
|
+
end
|
697
|
+
|
698
|
+
def self.set_int_mx801(int1)
|
699
|
+
print_assert 'set_int_mx801', int1 == -0x801
|
700
|
+
end
|
701
|
+
|
702
|
+
def self.set_int_x800(int1)
|
703
|
+
print_assert 'set_int_x800', int1 == 0x800
|
704
|
+
end
|
705
|
+
|
706
|
+
def self.set_int_mx40000(int1)
|
707
|
+
print_assert 'set_int_mx40000', int1 == -0x40000
|
708
|
+
end
|
709
|
+
|
710
|
+
def self.set_int_x3ffff(int1)
|
711
|
+
print_assert 'set_int_x3ffff', int1 == 0x3ffff
|
712
|
+
end
|
713
|
+
|
714
|
+
# 0xd8..0xef # one-octet compact long (-x8 to xf, xe0 is 0)
|
715
|
+
def self.get_long_mx8
|
716
|
+
-0x8
|
717
|
+
end
|
718
|
+
|
719
|
+
def self.get_long_xf
|
720
|
+
0xf
|
721
|
+
end
|
722
|
+
|
723
|
+
def self.set_long_mx8(long1)
|
724
|
+
print_assert 'set_long_mx8', long1 == -0x8
|
725
|
+
end
|
726
|
+
|
727
|
+
def self.set_long_xf(long1)
|
728
|
+
print_assert 'set_long_xf', long1 == 0xf
|
729
|
+
end
|
730
|
+
|
731
|
+
# 0xf0..0xff # two-octet compact long (-x800 to x7ff, xf8 is 0)
|
732
|
+
def self.get_long_mx9
|
733
|
+
-0x9
|
734
|
+
end
|
735
|
+
|
736
|
+
def self.get_long_x10
|
737
|
+
0x10
|
738
|
+
end
|
739
|
+
|
740
|
+
def self.get_long_mx800
|
741
|
+
-0x800
|
742
|
+
end
|
743
|
+
|
744
|
+
def self.get_long_x7ff
|
745
|
+
0x7ff
|
746
|
+
end
|
747
|
+
|
748
|
+
def self.set_long_mx9(long1)
|
749
|
+
print_assert 'set_long_mx9', long1 == -0x9
|
750
|
+
end
|
751
|
+
|
752
|
+
def self.set_long_x10(long1)
|
753
|
+
print_assert 'set_long_x10', long1 == 0x10
|
754
|
+
end
|
755
|
+
|
756
|
+
def self.set_long_mx800(long1)
|
757
|
+
print_assert 'set_long_mx800', long1 == -0x800
|
758
|
+
end
|
759
|
+
|
760
|
+
def self.set_long_x7ff(long1)
|
761
|
+
print_assert 'set_long_x7ff', long1 == 0x7ff
|
762
|
+
end
|
763
|
+
|
764
|
+
private
|
765
|
+
def self.print_assert(method, t)
|
766
|
+
puts "#{t ? '.' : '*' * 10 << 'fail'} #{method}"
|
767
|
+
end
|
768
|
+
|
769
|
+
end
|