osc-access 0.0.15
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/LICENSE +13 -0
- data/README.rdoc +85 -0
- data/lib/osc-access.rb +33 -0
- data/lib/osc-access/accessible.rb +144 -0
- data/lib/osc-access/class.rb +34 -0
- data/lib/osc-access/class_scheme.rb +20 -0
- data/lib/osc-access/default.rb +7 -0
- data/lib/osc-access/emittable_property.rb +31 -0
- data/lib/osc-access/emitter.rb +30 -0
- data/lib/osc-access/message.rb +10 -0
- data/lib/osc-access/receiver.rb +75 -0
- data/lib/osc-access/translate.rb +127 -0
- data/lib/osc-access/zeroconf.rb +47 -0
- data/test/helper.rb +25 -0
- data/test/test_accessible.rb +334 -0
- data/test/test_class.rb +43 -0
- data/test/test_class_scheme.rb +32 -0
- data/test/test_emittable_property.rb +18 -0
- data/test/test_emitter.rb +71 -0
- data/test/test_message.rb +15 -0
- data/test/test_receiver.rb +58 -0
- data/test/test_translate.rb +86 -0
- metadata +99 -0
data/test/test_class.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class ClassTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
include OSCAccess
|
8
|
+
include TestHelper
|
9
|
+
|
10
|
+
def test_osc_class_scheme
|
11
|
+
obj = StubObject.new
|
12
|
+
assert_not_nil(obj.class.osc_class_scheme)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_output_default_port
|
16
|
+
obj = StubObject.new
|
17
|
+
ip = "192.143.100.1"
|
18
|
+
obj.class.osc_output(:host => ip)
|
19
|
+
assert_equal(ip, obj.class.osc_class_scheme.outputs.last[:host])
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_osc_input_and_output
|
23
|
+
obj = StubObject.new
|
24
|
+
obj.class.osc_input(8011)
|
25
|
+
obj.class.osc_output(:host => "1.1.1.1", :port => 9012)
|
26
|
+
assert_equal(8011, obj.class.osc_class_scheme.inputs.last)
|
27
|
+
assert_equal(9012, obj.class.osc_class_scheme.outputs.last[:port])
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_osc_input
|
31
|
+
obj = StubObject.new
|
32
|
+
obj.class.osc_input(8013)
|
33
|
+
assert_equal(8013, obj.class.osc_class_scheme.inputs.first)
|
34
|
+
assert_nil(obj.class.osc_class_scheme.outputs.first)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_osc_input_hash
|
38
|
+
obj = StubObject.new
|
39
|
+
obj.class.osc_input(:port => 8014)
|
40
|
+
assert_equal({ :port => 8014 }, obj.class.osc_class_scheme.inputs.last)
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class ClassSchemeTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
include OSCAccess
|
8
|
+
include TestHelper
|
9
|
+
|
10
|
+
def test_ports
|
11
|
+
scheme = ClassScheme.new
|
12
|
+
scheme.outputs << { :host => "1.1.1.1", :port => 8001 }
|
13
|
+
scheme.inputs << 9001
|
14
|
+
assert_equal(8001, scheme.outputs.first[:port])
|
15
|
+
assert_equal(9001, scheme.inputs.first)
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_ports_receive_only
|
19
|
+
scheme = ClassScheme.new
|
20
|
+
scheme.inputs << 8005
|
21
|
+
assert_equal(8005, scheme.inputs.first)
|
22
|
+
assert_nil(scheme.outputs.first)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_send_ip
|
26
|
+
scheme = ClassScheme.new
|
27
|
+
assert_nil(scheme.outputs.first)
|
28
|
+
scheme.outputs << { :host => "192.168.1.8" }
|
29
|
+
assert_equal("192.168.1.8", scheme.outputs.first[:host])
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class EmittablePropertyTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
include OSCAccess
|
8
|
+
include TestHelper
|
9
|
+
|
10
|
+
def test_translate
|
11
|
+
obj = StubObject.new
|
12
|
+
obj.data = 101
|
13
|
+
prop = EmittableProperty.new(:data, "pattern", :translate => { :local => 0..127, :remote => 0..1 })
|
14
|
+
output = prop.translated(obj)
|
15
|
+
assert_equal(0.8, output.first.round(1))
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class EmitterTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
include OSCAccess
|
8
|
+
include TestHelper
|
9
|
+
|
10
|
+
def test_client_initialized
|
11
|
+
port = TestHelper.next_port
|
12
|
+
e = Emitter.new
|
13
|
+
e.add_client("1.1.1.2", port)
|
14
|
+
assert_not_nil(e.clients.last)
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_two_clients
|
18
|
+
port1 = TestHelper.next_port
|
19
|
+
port2 = TestHelper.next_port
|
20
|
+
e1 = Emitter.new
|
21
|
+
e1.add_client("1.1.1.1", port1)
|
22
|
+
client1 = e1.clients.last
|
23
|
+
e2 = Emitter.new
|
24
|
+
e2.add_client("1.1.1.2", port2)
|
25
|
+
client2 = e2.clients.last
|
26
|
+
assert_equal(1, e1.clients.size)
|
27
|
+
assert_equal(1, e2.clients.size)
|
28
|
+
assert_not_equal(client1, client2)
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_two_clients_same_ip
|
32
|
+
port1 = TestHelper.next_port
|
33
|
+
port2 = TestHelper.next_port
|
34
|
+
e1 = Emitter.new
|
35
|
+
e1.add_client("1.1.1.1", port1)
|
36
|
+
client1 = e1.clients.last
|
37
|
+
e2 = Emitter.new
|
38
|
+
e2.add_client("1.1.1.1", port2)
|
39
|
+
client2 = e2.clients.last
|
40
|
+
assert_not_equal(client1, client2)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_share_client
|
44
|
+
port = TestHelper.next_port
|
45
|
+
e1 = Emitter.new
|
46
|
+
e1.add_client("1.1.1.1", port)
|
47
|
+
client1 = e1.clients.last
|
48
|
+
e2 = Emitter.new
|
49
|
+
e2.add_client("1.1.1.1", port)
|
50
|
+
client2 = e2.clients.last
|
51
|
+
assert_equal(client1, client2)
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_transmit
|
55
|
+
received = nil
|
56
|
+
port = TestHelper.next_port
|
57
|
+
|
58
|
+
e = Emitter.new
|
59
|
+
e.add_client("localhost", port)
|
60
|
+
@server = OSC::EMServer.new(port)
|
61
|
+
@server.add_method("/test_transmit") do |message|
|
62
|
+
received = message.args[0]
|
63
|
+
end
|
64
|
+
Thread.new { @server.run }
|
65
|
+
sleep(0.5)
|
66
|
+
e.transmit(OSC::Message.new( "/test_transmit" , "hullo from io test_transmit!" ))
|
67
|
+
sleep(0.5)
|
68
|
+
assert_equal("hullo from io test_transmit!", received)
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class ObjectTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
include OSCAccess
|
8
|
+
include TestHelper
|
9
|
+
|
10
|
+
def test_osc_message
|
11
|
+
m = OSC::Message.new("/blah", "hullo!")
|
12
|
+
assert_equal("hullo!", m.args.first)
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class ReceiverTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
include OSCAccess
|
8
|
+
include TestHelper
|
9
|
+
|
10
|
+
def test_server_initialized
|
11
|
+
io = Receiver.new
|
12
|
+
port = TestHelper.next_port
|
13
|
+
|
14
|
+
io.add_server(port)
|
15
|
+
assert_not_nil(io.servers.values.last)
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_two_servers
|
19
|
+
port1 = TestHelper.next_port
|
20
|
+
port2 = TestHelper.next_port
|
21
|
+
|
22
|
+
io1 = Receiver.new
|
23
|
+
io1.add_server(port1)
|
24
|
+
server1 = io1.servers.values.last
|
25
|
+
io2 = Receiver.new
|
26
|
+
io2.add_server(port2)
|
27
|
+
server2 = io2.servers.values.last
|
28
|
+
assert_equal(1, io1.servers.size)
|
29
|
+
assert_equal(1, io2.servers.size)
|
30
|
+
assert_not_equal(server1, server2)
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_share_server
|
34
|
+
#io1 = Receiver.new(:input_port => 8008)
|
35
|
+
#server1 = io1.servers.last
|
36
|
+
#io2 = Receiver.new(:input_port => 8008)
|
37
|
+
#server2 = io2.servers.last
|
38
|
+
#assert_equal(server1, server2)
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_receive
|
42
|
+
received = nil
|
43
|
+
obj = StubObject.new
|
44
|
+
io = Receiver.new
|
45
|
+
port = TestHelper.next_port
|
46
|
+
|
47
|
+
io.add_server(port)
|
48
|
+
io.add_receiver(obj, "/test_receive") do |obj, val|
|
49
|
+
received = val
|
50
|
+
end
|
51
|
+
sleep(0.5)
|
52
|
+
client = OSC::Client.new( 'localhost', port )
|
53
|
+
client.send( OSC::Message.new( "/test_receive" , "hullo from io test_receive!" ))
|
54
|
+
sleep(0.5)
|
55
|
+
assert_equal("hullo from io test_receive!", received)
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class TranslateTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
include OSCAccess
|
8
|
+
include TestHelper
|
9
|
+
|
10
|
+
def test_range_process_amplify
|
11
|
+
ra = Analog.new(0..1, 0..127)
|
12
|
+
output = ra.process(0.10)
|
13
|
+
assert_equal(12, output)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_range_process_deamplify
|
17
|
+
ra = Analog.new(0..150, 0..15)
|
18
|
+
output = ra.process(22)
|
19
|
+
assert_equal(2, output)
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_neg_posi_to_posi
|
23
|
+
ra = Analog.new(-24..24, 0..3, :type => :float)
|
24
|
+
output = ra.process(10)
|
25
|
+
assert_equal(2.125, output)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_neg_posi_to_neg_posi
|
29
|
+
ra = Analog.new(-24..24, -3..3, :type => :float)
|
30
|
+
output = ra.process(10)
|
31
|
+
assert_equal(1.25, output)
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_neg_to_neg_posi
|
35
|
+
ra = Analog.new(-24..-12, -3..3, :type => :float)
|
36
|
+
output = ra.process(-14)
|
37
|
+
assert_equal(2, output)
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_neg_to_neg
|
41
|
+
ra = Analog.new(-24..-12, -5..-3, :type => :float)
|
42
|
+
output = ra.process(-16)
|
43
|
+
assert_equal(-3.666666666666667, output)
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_neg_to_posi
|
47
|
+
ra = Analog.new(-24..-12, 1..3, :type => :float)
|
48
|
+
output = ra.process(-18)
|
49
|
+
assert_equal(2, output)
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_from_set_to_range
|
53
|
+
ra = Analog.new([0, 2, 4, 8, 16, 64], 0..10)
|
54
|
+
output = ra.process(8)
|
55
|
+
assert_equal(6, output)
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_range_process_float
|
59
|
+
ra = Analog.new(0..120, 0..1, :type => :float)
|
60
|
+
output = ra.process(12)
|
61
|
+
assert_equal(0.10, output)
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_set_ascending
|
65
|
+
sa = Analog.new(0..1, [0, 2, 4, 8, 12, 16, 32, 64, 128, 512])
|
66
|
+
output = sa.process(0.40)
|
67
|
+
assert_equal(8, output)
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_set_descending
|
71
|
+
sa = Analog.new(0..1, [512, 128, 64, 32, 16, 12, 8, 4, 2, 0])
|
72
|
+
output = sa.process(0.40)
|
73
|
+
assert_equal(32, output)
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_range_class
|
77
|
+
a = Analog.new(0..1, 0..100)
|
78
|
+
assert_equal(Analog::Output::Range, a.class)
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_set_class
|
82
|
+
a = Analog.new(0..1, [0, 10, 20, 50])
|
83
|
+
assert_equal(Analog::Output::Set, a.class)
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
metadata
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: osc-access
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.15
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Ari Russo
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-07-18 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: eventmachine
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: osc-ruby
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
description: A simple way to bind OSC directly to Ruby classes and objects
|
47
|
+
email:
|
48
|
+
- ari.russo@gmail.com
|
49
|
+
executables: []
|
50
|
+
extensions: []
|
51
|
+
extra_rdoc_files: []
|
52
|
+
files:
|
53
|
+
- lib/osc-access/accessible.rb
|
54
|
+
- lib/osc-access/class.rb
|
55
|
+
- lib/osc-access/class_scheme.rb
|
56
|
+
- lib/osc-access/default.rb
|
57
|
+
- lib/osc-access/emittable_property.rb
|
58
|
+
- lib/osc-access/emitter.rb
|
59
|
+
- lib/osc-access/message.rb
|
60
|
+
- lib/osc-access/receiver.rb
|
61
|
+
- lib/osc-access/translate.rb
|
62
|
+
- lib/osc-access/zeroconf.rb
|
63
|
+
- lib/osc-access.rb
|
64
|
+
- test/helper.rb
|
65
|
+
- test/test_accessible.rb
|
66
|
+
- test/test_class.rb
|
67
|
+
- test/test_class_scheme.rb
|
68
|
+
- test/test_emittable_property.rb
|
69
|
+
- test/test_emitter.rb
|
70
|
+
- test/test_message.rb
|
71
|
+
- test/test_receiver.rb
|
72
|
+
- test/test_translate.rb
|
73
|
+
- LICENSE
|
74
|
+
- README.rdoc
|
75
|
+
homepage: http://github.com/arirusso/osc-access
|
76
|
+
licenses: []
|
77
|
+
post_install_message:
|
78
|
+
rdoc_options: []
|
79
|
+
require_paths:
|
80
|
+
- lib
|
81
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
|
+
none: false
|
89
|
+
requirements:
|
90
|
+
- - ! '>='
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: 1.3.6
|
93
|
+
requirements: []
|
94
|
+
rubyforge_project: osc-access
|
95
|
+
rubygems_version: 1.8.23
|
96
|
+
signing_key:
|
97
|
+
specification_version: 3
|
98
|
+
summary: Control Ruby objects with OSC
|
99
|
+
test_files: []
|