rosc 0.1.3
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/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
|