rosc 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/AUTHORS +13 -0
- data/CHANGELOG +4 -0
- data/GPL.txt +340 -0
- data/LICENSE +57 -0
- data/Manifest +16 -0
- data/README +58 -0
- data/Rakefile +21 -0
- data/TODO +3 -0
- data/examples/readme.rb +19 -0
- data/lib/osc.rb +324 -0
- data/lib/osc/pattern.rb +131 -0
- data/lib/osc/server.rb +94 -0
- data/lib/osc/transport.rb +42 -0
- data/lib/osc/udp.rb +30 -0
- data/rosc.gemspec +31 -0
- data/setup.rb +1551 -0
- data/test/test_osc.rb +160 -0
- metadata +84 -0
data/test/test_osc.rb
ADDED
@@ -0,0 +1,160 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__) + "/../lib/")
|
2
|
+
require 'osc'
|
3
|
+
require 'time'
|
4
|
+
require 'test/unit'
|
5
|
+
|
6
|
+
class TC_OSC < Test::Unit::TestCase
|
7
|
+
include OSC
|
8
|
+
# def setup
|
9
|
+
# end
|
10
|
+
|
11
|
+
# def teardown
|
12
|
+
# end
|
13
|
+
|
14
|
+
def test_datatype
|
15
|
+
s = 'foo'
|
16
|
+
i = 42
|
17
|
+
f = 3.14
|
18
|
+
|
19
|
+
assert_equal 'i', Packet.tag(i)
|
20
|
+
assert_equal 'f', Packet.tag(f)
|
21
|
+
assert_equal 's', Packet.tag(s)
|
22
|
+
assert_equal s+"\000", Packet.encode(s)
|
23
|
+
b = Blob.new("foobardoobar\0\0x200")
|
24
|
+
assert_equal 'b', Packet.tag(b)
|
25
|
+
assert_equal b.size+4 + (b.size+4)%4, Packet.encode(b).size
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_timetag
|
29
|
+
t1 = TimeTag::JAN_1970
|
30
|
+
t2 = Time.now
|
31
|
+
t3 = t2.to_f+t1
|
32
|
+
|
33
|
+
tt = TimeTag.new t2
|
34
|
+
assert_equal t3, tt.to_f
|
35
|
+
assert_equal t3.floor, tt.to_i
|
36
|
+
assert_equal t3.floor - t3, tt.to_i - tt.to_f
|
37
|
+
assert_equal [0,1].pack('NN'), Packet.encode(TimeTag.new(nil))
|
38
|
+
assert_equal t2.to_i,tt.to_time.to_i # to_f has roundoff error at the lsb
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_message
|
42
|
+
a = 'foo'
|
43
|
+
b = 'quux'
|
44
|
+
m = Message.new '/foobar', 'ssi', a, b, 1
|
45
|
+
assert_equal "/foobar\000"+",ssi\000\000\000\000"+
|
46
|
+
"foo\000"+"quux\000\000\000\000"+"\000\000\000\001", Packet.encode(m)
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_bundle
|
50
|
+
m1 = Message.new '/foo','s','foo'
|
51
|
+
m2 = Message.new '/bar','s','bar'
|
52
|
+
t = Time.now
|
53
|
+
b = Bundle.new(TimeTag.new(Time.at(t + 10)), m1, m2)
|
54
|
+
b2 = Bundle.new(nil, b, m1)
|
55
|
+
|
56
|
+
assert_equal 10, b.timetag.to_time.to_i - t.to_i
|
57
|
+
e = Packet.encode(b2)
|
58
|
+
assert_equal '#bundle', e[0,7]
|
59
|
+
assert_equal "\000\000\000\000\000\000\000\001", e[8,8]
|
60
|
+
assert_equal '#bundle', e[16+4,7]
|
61
|
+
assert_equal '/foo', e[16+4+Packet.encode(b).size+4,4]
|
62
|
+
assert_equal 0, e.size % 4
|
63
|
+
|
64
|
+
assert_instance_of Array, b2.to_a
|
65
|
+
assert_instance_of Bundle, b2.to_a[0]
|
66
|
+
assert_instance_of Message, b2.to_a[1]
|
67
|
+
|
68
|
+
bundle = Packet.decode(e)
|
69
|
+
assert_instance_of Bundle, bundle
|
70
|
+
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
def test_packet
|
77
|
+
m = Message.new '/foo','s','foo'
|
78
|
+
b = Bundle.new nil,m
|
79
|
+
|
80
|
+
m2 = Packet.decode("/foo\000\000\000\000,s\000\000foo\000")
|
81
|
+
assert_equal m.address,m2.address
|
82
|
+
m2 = Packet.decode(Packet.encode(m))
|
83
|
+
assert_equal m.address,m2.address
|
84
|
+
assert_equal m.typetag,m2.typetag
|
85
|
+
assert_equal m.args.size,m2.args.size
|
86
|
+
b2 = Packet.decode(Packet.encode(b))
|
87
|
+
assert_equal b.args.size,b2.args.size
|
88
|
+
end
|
89
|
+
|
90
|
+
class TestServer
|
91
|
+
include OSC::Transport
|
92
|
+
include OSC::Server
|
93
|
+
def test_request(p)
|
94
|
+
send p
|
95
|
+
end
|
96
|
+
|
97
|
+
def send_raw(msg, *args)
|
98
|
+
dispatch msg
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_server
|
104
|
+
s = TestServer.new
|
105
|
+
s.add_method('/foo/bar',nil) { |msg|
|
106
|
+
assert_equal 'si',msg.typetag
|
107
|
+
assert_equal 'Hello, World!',msg[0]
|
108
|
+
assert_equal 42,msg[1]
|
109
|
+
}
|
110
|
+
s.test_request Message.new("/foo/bar",'si','Hello, World!',42)
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_server_with_bundle
|
114
|
+
s = TestServer.new
|
115
|
+
s.add_method('/foo/bar',nil) { |msg|
|
116
|
+
assert_equal 'si',msg.typetag
|
117
|
+
assert_equal 'Hello, World!',msg[0]
|
118
|
+
assert_equal 42,msg[1]
|
119
|
+
}
|
120
|
+
s.test_request Bundle.new(nil, Message.new("/foo/bar",'si','Hello, World!',42), Message.new("/foo/bar",'si','Hello, World!',42), Message.new("/foo/bar",'si','Hello, World!',42))
|
121
|
+
end
|
122
|
+
|
123
|
+
def test_pattern
|
124
|
+
# test *
|
125
|
+
assert Pattern.intersect?('/*/bar/baz','/foo/*/baz')
|
126
|
+
assert Pattern.intersect?('/f*','/*o')
|
127
|
+
assert ! Pattern.intersect?('/f*','/foo/bar')
|
128
|
+
assert ! Pattern.intersect?('/f*','/bar')
|
129
|
+
# test ?
|
130
|
+
assert Pattern.intersect?('/fo?/bar','/foo/?ar')
|
131
|
+
assert ! Pattern.intersect?('/foo?','/foo')
|
132
|
+
# test []
|
133
|
+
assert Pattern.intersect?('/foo/ba[rz]','/foo/bar')
|
134
|
+
assert Pattern.intersect?('/[!abcde]/a','/[!abcde]/a')
|
135
|
+
assert Pattern.intersect?('/[!abcde]/a','/f/a')
|
136
|
+
assert Pattern.intersect?('/[!abcde]/a','/[abf]/a')
|
137
|
+
assert ! Pattern.intersect?('/[ab]/a','/[!abc]/a')
|
138
|
+
assert ! Pattern.intersect?('/[abcde]','/[!abcde]')
|
139
|
+
assert ! Pattern.intersect?('/[abcde]','/f')
|
140
|
+
assert ! Pattern.intersect?('/[!abcde]','/a')
|
141
|
+
# test {}
|
142
|
+
assert Pattern.intersect?('/{foo,bar,baz}','/foo')
|
143
|
+
assert Pattern.intersect?('/{foo,bar,baz}','/bar')
|
144
|
+
assert Pattern.intersect?('/{foo,bar,baz}','/baz')
|
145
|
+
assert ! Pattern.intersect?('/{foo,bar,baz}','/quux')
|
146
|
+
assert ! Pattern.intersect?('/{foo,bar,baz}','/fo')
|
147
|
+
# * with *,?,[]
|
148
|
+
assert Pattern.intersect?('/*/bar','/*/ba?')
|
149
|
+
assert Pattern.intersect?('/*/bar','/*x/ba?')
|
150
|
+
assert Pattern.intersect?('/*/bar','/?/ba?')
|
151
|
+
assert Pattern.intersect?('/*/bar','/?x/ba?')
|
152
|
+
assert Pattern.intersect?('/*/bar','/[abcde]/ba?')
|
153
|
+
assert Pattern.intersect?('/*/bar','/[abcde]x/ba?')
|
154
|
+
assert Pattern.intersect?('/*/bar','/[!abcde]/ba?')
|
155
|
+
assert Pattern.intersect?('/*/bar','/[!abcde]x/ba?')
|
156
|
+
# ? with []
|
157
|
+
assert Pattern.intersect?('/?','/[abcde]')
|
158
|
+
assert Pattern.intersect?('/?','/[!abcde]')
|
159
|
+
end
|
160
|
+
end
|
metadata
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rosc
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- ""
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-12-13 00:00:00 +01:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: ""
|
17
|
+
email: ""
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- CHANGELOG
|
24
|
+
- LICENSE
|
25
|
+
- README
|
26
|
+
- TODO
|
27
|
+
- lib/osc.rb
|
28
|
+
- lib/osc/pattern.rb
|
29
|
+
- lib/osc/server.rb
|
30
|
+
- lib/osc/transport.rb
|
31
|
+
- lib/osc/udp.rb
|
32
|
+
files:
|
33
|
+
- AUTHORS
|
34
|
+
- CHANGELOG
|
35
|
+
- GPL.txt
|
36
|
+
- LICENSE
|
37
|
+
- README
|
38
|
+
- Rakefile
|
39
|
+
- TODO
|
40
|
+
- examples/readme.rb
|
41
|
+
- lib/osc.rb
|
42
|
+
- lib/osc/pattern.rb
|
43
|
+
- lib/osc/server.rb
|
44
|
+
- lib/osc/transport.rb
|
45
|
+
- lib/osc/udp.rb
|
46
|
+
- setup.rb
|
47
|
+
- test/test_osc.rb
|
48
|
+
- Manifest
|
49
|
+
- rosc.gemspec
|
50
|
+
has_rdoc: true
|
51
|
+
homepage: ""
|
52
|
+
licenses: []
|
53
|
+
|
54
|
+
post_install_message:
|
55
|
+
rdoc_options:
|
56
|
+
- --line-numbers
|
57
|
+
- --inline-source
|
58
|
+
- --title
|
59
|
+
- Rosc
|
60
|
+
- --main
|
61
|
+
- README
|
62
|
+
require_paths:
|
63
|
+
- lib
|
64
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: "0"
|
69
|
+
version:
|
70
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: "1.2"
|
75
|
+
version:
|
76
|
+
requirements: []
|
77
|
+
|
78
|
+
rubyforge_project: rosc
|
79
|
+
rubygems_version: 1.3.5
|
80
|
+
signing_key:
|
81
|
+
specification_version: 3
|
82
|
+
summary: ""
|
83
|
+
test_files:
|
84
|
+
- test/test_osc.rb
|