libsl 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/test/tc_types.rb ADDED
@@ -0,0 +1,342 @@
1
+ require 'test/unit'
2
+ require File.join File.dirname(__FILE__), '..', 'lib', 'types.rb'
3
+
4
+ module LibSL
5
+ class TestTypesBase < Test::Unit::TestCase
6
+ def decode(klass, data)
7
+ klass.decode(data)
8
+ end
9
+
10
+ def encode(obj)
11
+ obj.encode
12
+ end
13
+
14
+ def default_test()
15
+ super.default_test unless self.class.name == "LibSL::TestTypesBase"
16
+ end
17
+ end
18
+
19
+ class TestLLFixed < TestTypesBase
20
+ def test_decode()
21
+ obj, data = LLFixed.decode("abcdefgh", 4)
22
+ assert_equal(LLFixed, obj.class)
23
+ assert_equal("abcd", obj.data)
24
+ assert_equal("efgh", data)
25
+ end
26
+
27
+ def test_encode()
28
+ obj = LLFixed.new("abcd")
29
+ assert_equal("abcd", obj.encode)
30
+ end
31
+ end
32
+
33
+ class TestLLVariable1 < TestTypesBase
34
+ def test_decode()
35
+ obj, data = LLVariable1.decode("\x04abcdefgh")
36
+ assert_equal(LLVariable1, obj.class)
37
+ assert_equal("abcd", obj.data)
38
+ assert_equal("efgh", data)
39
+ end
40
+
41
+ def test_encode()
42
+ obj = LLVariable1.new("abcd")
43
+ assert_equal("\x04abcd", obj.encode)
44
+ end
45
+ end
46
+
47
+ class TestLLVariable2 < TestTypesBase
48
+ def test_decode()
49
+ obj, data = LLVariable2.decode("\x00\x04abcdefgh")
50
+ assert_equal(LLVariable2, obj.class)
51
+ assert_equal("abcd", obj.data)
52
+ assert_equal("efgh", data)
53
+ end
54
+
55
+ def test_encode()
56
+ obj = LLVariable2.new("abcd")
57
+ assert_equal("\x00\x04abcd", obj.encode)
58
+ end
59
+ end
60
+
61
+ class TestLLU8 < TestTypesBase
62
+ def test_decode()
63
+ obj, data = LLU8.decode("\xffabcd")
64
+ assert_equal(LLU8, obj.class)
65
+ assert_equal(0xff, obj.value)
66
+ assert_equal("abcd", data)
67
+ end
68
+
69
+ def test_encode()
70
+ obj = LLU8.new(0xff)
71
+ assert_equal("\xff", obj.encode)
72
+ end
73
+ end
74
+
75
+ class TestLLU16 < TestTypesBase
76
+ def test_decode()
77
+ obj, data = LLU16.decode("\x34\x12abcd")
78
+ assert_equal(LLU16, obj.class)
79
+ assert_equal(0x1234, obj.value)
80
+ assert_equal("abcd", data)
81
+ end
82
+
83
+ def test_encode()
84
+ obj = LLU16.new(0x1234)
85
+ assert_equal("\x34\x12", obj.encode)
86
+ end
87
+ end
88
+
89
+ class TestLLU32 < TestTypesBase
90
+ def test_decode()
91
+ obj, data = LLU32.decode("\x78\x56\x34\x12abcd")
92
+ assert_equal(LLU32, obj.class)
93
+ assert_equal(0x12345678, obj.value)
94
+ assert_equal("abcd", data)
95
+ end
96
+
97
+ def test_encode()
98
+ obj = LLU32.new(0x12345678)
99
+ assert_equal("\x78\x56\x34\x12", obj.encode)
100
+ end
101
+ end
102
+
103
+ class TestLLU64 < TestTypesBase
104
+ def test_decode()
105
+ obj, data = LLU64.decode("\xef\xcd\xab\x90\x78\x56\x34\x12abcd")
106
+ assert_equal(LLU64, obj.class)
107
+ assert_equal(0x1234567890abcdef, obj.value)
108
+ assert_equal("abcd", data)
109
+ end
110
+
111
+ def test_encode()
112
+ obj = LLU64.new(0x1234567890abcdef)
113
+ assert_equal("\xef\xcd\xab\x90\x78\x56\x34\x12", obj.encode)
114
+ end
115
+ end
116
+
117
+ class TestLLS8 < TestTypesBase
118
+ def test_decode()
119
+ obj, data = LLS8.decode("\x80abcd")
120
+ assert_equal(LLS8, obj.class)
121
+ assert_equal(-128, obj.value)
122
+ assert_equal("abcd", data)
123
+ end
124
+
125
+ def test_encode()
126
+ obj = LLS8.new(-128)
127
+ assert_equal("\x80", obj.encode)
128
+ end
129
+ end
130
+
131
+ class TestLLS16 < TestTypesBase
132
+ def test_decode()
133
+ obj, data = LLS16.decode("\x00\x80abcd")
134
+ assert_equal(LLS16, obj.class)
135
+ assert_equal(-0x8000, obj.value)
136
+ assert_equal("abcd", data)
137
+ end
138
+
139
+ def test_encode()
140
+ obj = LLS16.new(-0x8000)
141
+ assert_equal("\x00\x80", obj.encode)
142
+ end
143
+ end
144
+
145
+ class TestLLS32 < TestTypesBase
146
+ def test_decode()
147
+ obj, data = LLS32.decode("\x00\x00\x00\x80abcd")
148
+ assert_equal(LLS32, obj.class)
149
+ assert_equal(-0x80000000, obj.value)
150
+ assert_equal("abcd", data)
151
+ end
152
+
153
+ def test_encode()
154
+ obj = LLS32.new(-0x80000000)
155
+ assert_equal("\x00\x00\x00\x80", obj.encode)
156
+ end
157
+ end
158
+
159
+ class TestLLS64 < TestTypesBase
160
+ def test_decode()
161
+ obj, data = LLS64.decode("\x00\x00\x00\x00\x00\x00\x00\x80abcd")
162
+ assert_equal(LLS64, obj.class)
163
+ assert_equal(-0x8000000000000000, obj.value)
164
+ assert_equal("abcd", data)
165
+ end
166
+
167
+ def test_encode()
168
+ obj = LLS64.new(-0x8000000000000000)
169
+ assert_equal("\x00\x00\x00\x00\x00\x00\x00\x80", obj.encode)
170
+ end
171
+ end
172
+
173
+ class TestLLVector3 < TestTypesBase
174
+ def test_decode()
175
+ obj, data = LLVector3.decode("\x00\x00\x80\x3F\x00\x00\x00\x40\x00\x00\x40\x40abcd")
176
+ assert_equal(LLVector3, obj.class)
177
+ assert_equal(1.0, obj.x)
178
+ assert_equal(2.0, obj.y)
179
+ assert_equal(3.0, obj.z)
180
+ assert_equal("abcd", data)
181
+ end
182
+
183
+ def test_encode()
184
+ obj = LLVector3.new(1, 2, 3)
185
+ assert_equal("\x00\x00\x80\x3F\x00\x00\x00\x40\x00\x00\x40\x40", obj.encode)
186
+ end
187
+ end
188
+
189
+ class TestLLVector3d < TestTypesBase
190
+ def test_decode()
191
+ obj, data = LLVector3d.decode(
192
+ "\x00\x00\x00\x00\x00\x00\xf0\x3f" +
193
+ "\x00\x00\x00\x00\x00\x00\x00\x40" +
194
+ "\x00\x00\x00\x00\x00\x00\x08\x40abcd")
195
+ assert_equal(LLVector3d, obj.class)
196
+ assert_equal(1.0, obj.x)
197
+ assert_equal(2.0, obj.y)
198
+ assert_equal(3.0, obj.z)
199
+ assert_equal("abcd", data)
200
+ end
201
+
202
+ def test_encode()
203
+ obj = LLVector3d.new(1, 2, 3)
204
+ assert_equal(
205
+ "\x00\x00\x00\x00\x00\x00\xf0\x3f" +
206
+ "\x00\x00\x00\x00\x00\x00\x00\x40" +
207
+ "\x00\x00\x00\x00\x00\x00\x08\x40", obj.encode)
208
+ end
209
+ end
210
+
211
+ class TestLLVector4 < TestTypesBase
212
+ def test_decode()
213
+ obj, data = LLVector4.decode("\x00\x00\x80\x3F\x00\x00\x00\x40\x00\x00\x40\x40\x00\x00\x80\x40abcd")
214
+ assert_equal(LLVector4, obj.class)
215
+ assert_equal(1.0, obj.a)
216
+ assert_equal(2.0, obj.b)
217
+ assert_equal(3.0, obj.c)
218
+ assert_equal(4.0, obj.d)
219
+ assert_equal("abcd", data)
220
+ end
221
+
222
+ def test_encode()
223
+ obj = LLVector4.new(1, 2, 3, 4)
224
+ assert_equal("\x00\x00\x80\x3F\x00\x00\x00\x40\x00\x00\x40\x40\x00\x00\x80\x40", obj.encode)
225
+ end
226
+ end
227
+
228
+ class TestLLQuaternion < TestTypesBase
229
+ def test_decode()
230
+ obj, data = LLQuaternion.decode("\x00\x00\x80\x3F\x00\x00\x00\x40\x00\x00\x40\x40abcd")
231
+ assert_equal(LLQuaternion, obj.class)
232
+ assert_equal(1, obj.x)
233
+ assert_equal(2, obj.y)
234
+ assert_equal(3, obj.z)
235
+ assert_equal(0, obj.w)
236
+ assert_equal("abcd", data)
237
+ end
238
+
239
+ def test_encode()
240
+ obj = LLQuaternion.new(1, 2, 3)
241
+ assert_equal("\x00\x00\x80\x3F\x00\x00\x00\x40\x00\x00\x40\x40", obj.encode)
242
+ end
243
+ end
244
+
245
+ class TestLLUUID < TestTypesBase
246
+ def test_decode()
247
+ obj, data = LLUUID.decode(
248
+ "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xffabcd")
249
+ assert_equal(LLUUID, obj.class)
250
+ assert_equal("00112233-4455-6677-8899-AABBCCDDEEFF", obj.to_s)
251
+ assert_equal("abcd", data)
252
+ end
253
+
254
+ def test_encode()
255
+ obj = LLUUID.new("00112233-4455-6677-8899-AABBCCDDEEFF")
256
+ assert_equal("\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xff", obj.encode)
257
+ end
258
+
259
+ def test_random()
260
+ uuid = LLUUID.new
261
+ assert_equal(36, uuid.to_s.length)
262
+ end
263
+ end
264
+
265
+ class TestLLBool < TestTypesBase
266
+ def test_decode()
267
+ obj, data = LLBool.decode(
268
+ "\x00abcd")
269
+ assert_equal(LLBool, obj.class)
270
+ assert_equal(false, obj.value)
271
+ assert_equal("abcd", data)
272
+ end
273
+
274
+ def test_encode()
275
+ obj = LLBool.new(true)
276
+ assert_equal("\x01", obj.encode)
277
+ end
278
+ end
279
+
280
+ class TestLLIPAddress < TestTypesBase
281
+ def test_decode()
282
+ obj, data = LLIPAddress.decode(
283
+ "\x01\x02\x03\x04abcd")
284
+ assert_equal(LLIPAddress, obj.class)
285
+ assert_equal("1.2.3.4", obj.ip)
286
+ assert_equal("abcd", data)
287
+ end
288
+
289
+ def test_encode()
290
+ obj = LLIPAddress.new("1.2.3.4")
291
+ assert_equal("\x01\x02\x03\x04", obj.encode)
292
+ end
293
+ end
294
+
295
+ class TestLLIPPort < TestTypesBase
296
+ def test_decode()
297
+ obj, data = LLIPPort.decode(
298
+ "\x04\xd2abcd")
299
+ assert_equal(LLIPPort, obj.class)
300
+ assert_equal(1234, obj.port)
301
+ assert_equal("abcd", data)
302
+ end
303
+
304
+ def test_encode()
305
+ obj = LLIPPort.new(1234)
306
+ assert_equal("\x04\xd2", obj.encode)
307
+ end
308
+ end
309
+
310
+ class TestLLPacketNumber < TestTypesBase
311
+ def test_decode()
312
+ obj, data = LLPacketNumber.decode(
313
+ "\xff\xff\x11\x11abcd")
314
+ assert_equal(LLPacketNumber, obj.class)
315
+ assert_equal(0xffff1111, obj.number)
316
+ assert_equal(:low, obj.frequency)
317
+ assert_equal("abcd", data)
318
+ end
319
+
320
+ def test_encode()
321
+ obj = LLPacketNumber.new(0x01)
322
+ assert_equal(:high, obj.frequency)
323
+ assert_equal("\x01", obj.encode)
324
+ end
325
+ end
326
+
327
+ class TestLLSequenceNumber < TestTypesBase
328
+ def test_decode()
329
+ obj, data = LLSequenceNumber.decode(
330
+ "\x11\x22\x33\x44abcd")
331
+ assert_equal(LLSequenceNumber, obj.class)
332
+ assert_equal(0x11223344, obj.number)
333
+ assert_equal(0x11223345, obj.inc)
334
+ assert_equal("abcd", data)
335
+ end
336
+
337
+ def test_encode()
338
+ obj = LLSequenceNumber.new(0x01)
339
+ assert_equal("\x00\x00\x00\x01", obj.encode)
340
+ end
341
+ end
342
+ end
data/test/ts_all.rb ADDED
@@ -0,0 +1,2 @@
1
+ require 'test/unit'
2
+ Dir[File.join File.dirname(__FILE__), "**", "*.rb"].each{ |f| require f }
metadata ADDED
@@ -0,0 +1,101 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: libsl
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 2
10
+ version: 0.0.2
11
+ platform: ruby
12
+ authors:
13
+ - Lukas Botsch
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-04-08 00:00:00 +02:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: eventmachine
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 59
30
+ segments:
31
+ - 0
32
+ - 12
33
+ - 10
34
+ version: 0.12.10
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ description: Build SecondLife clients using a simple DSL
38
+ email:
39
+ - lukas.botsch@gmail.com
40
+ executables: []
41
+
42
+ extensions: []
43
+
44
+ extra_rdoc_files: []
45
+
46
+ files:
47
+ - .gitignore
48
+ - README.md
49
+ - Rakefile
50
+ - VERSION
51
+ - lib/_packets.rb
52
+ - lib/agent.rb
53
+ - lib/client.rb
54
+ - lib/dsl.rb
55
+ - lib/events.rb
56
+ - lib/libsl.rb
57
+ - lib/network.rb
58
+ - lib/packet.rb
59
+ - lib/types.rb
60
+ - libsl.gemspec
61
+ - test/tc_packet.rb
62
+ - test/tc_types.rb
63
+ - test/ts_all.rb
64
+ has_rdoc: true
65
+ homepage: http://github.com/lbotsch/libsl-ruby
66
+ licenses: []
67
+
68
+ post_install_message:
69
+ rdoc_options: []
70
+
71
+ require_paths:
72
+ - lib
73
+ required_ruby_version: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ hash: 3
79
+ segments:
80
+ - 0
81
+ version: "0"
82
+ required_rubygems_version: !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ hash: 23
88
+ segments:
89
+ - 1
90
+ - 3
91
+ - 6
92
+ version: 1.3.6
93
+ requirements: []
94
+
95
+ rubyforge_project: libsl
96
+ rubygems_version: 1.3.7
97
+ signing_key:
98
+ specification_version: 3
99
+ summary: Library for building SecondLife client applications
100
+ test_files: []
101
+