libsl 0.0.2
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.
- data/.gitignore +1 -0
- data/README.md +50 -0
- data/Rakefile +54 -0
- data/VERSION +1 -0
- data/lib/_packets.rb +10346 -0
- data/lib/agent.rb +119 -0
- data/lib/client.rb +57 -0
- data/lib/dsl.rb +54 -0
- data/lib/events.rb +59 -0
- data/lib/libsl.rb +14 -0
- data/lib/network.rb +305 -0
- data/lib/packet.rb +279 -0
- data/lib/types.rb +490 -0
- data/libsl.gemspec +30 -0
- data/test/tc_packet.rb +99 -0
- data/test/tc_types.rb +342 -0
- data/test/ts_all.rb +2 -0
- metadata +101 -0
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
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
|
+
|