rosc 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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