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