unimidi 0.4.5 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/LICENSE +1 -1
- data/README.md +7 -7
- data/lib/unimidi/adapter/alsa-rawmidi.rb +4 -10
- data/lib/unimidi/adapter/ffi-coremidi.rb +4 -10
- data/lib/unimidi/adapter/midi-jruby.rb +4 -10
- data/lib/unimidi/adapter/midi-winmm.rb +4 -10
- data/lib/unimidi/command.rb +9 -11
- data/lib/unimidi/device.rb +47 -32
- data/lib/unimidi/input/buffer_access.rb +46 -0
- data/lib/unimidi/input/stream_reader.rb +81 -0
- data/lib/unimidi/input.rb +8 -101
- data/lib/unimidi/loader.rb +23 -23
- data/lib/unimidi/output.rb +12 -14
- data/lib/unimidi/platform.rb +23 -17
- data/lib/unimidi/type_conversion.rb +5 -7
- data/lib/unimidi.rb +13 -11
- metadata +124 -46
- data/test/adapter_test.rb +0 -66
- data/test/class_methods_test.rb +0 -95
- data/test/functional_test.rb +0 -113
- data/test/helper.rb +0 -74
- data/test/input_test.rb +0 -44
- data/test/platform_test.rb +0 -47
- data/test/type_conversion_test.rb +0 -18
data/lib/unimidi/loader.rb
CHANGED
@@ -1,30 +1,30 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
+
module UniMIDI
|
3
4
|
# Populate UniMIDI devices using the underlying device objects from the platform-specific gems
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
@loader = loader
|
12
|
-
end
|
5
|
+
class Loader
|
6
|
+
class << self
|
7
|
+
# Use the given platform-specific adapter to load devices
|
8
|
+
# @param [UniMIDI::Adapter::Loader] loader
|
9
|
+
def use(loader)
|
10
|
+
@loader = loader
|
11
|
+
end
|
13
12
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
13
|
+
# Get all MIDI devices
|
14
|
+
# @param [Hash] options
|
15
|
+
# @option options [Symbol] :direction Return only a particular direction of device eg :input, :output
|
16
|
+
# @return [Array<Input>, Array<Output>]
|
17
|
+
def devices(options = {})
|
18
|
+
if @devices.nil?
|
19
|
+
inputs = @loader.inputs.map { |device| ::UniMIDI::Input.new(device) }
|
20
|
+
outputs = @loader.outputs.map { |device| ::UniMIDI::Output.new(device) }
|
21
|
+
@devices = {
|
22
|
+
input: inputs,
|
23
|
+
output: outputs
|
24
|
+
}
|
25
|
+
end
|
26
|
+
options[:direction].nil? ? @devices.values.flatten : @devices[options[:direction]]
|
25
27
|
end
|
26
|
-
options[:direction].nil? ? @devices.values.flatten : @devices[options[:direction]]
|
27
28
|
end
|
28
|
-
|
29
29
|
end
|
30
30
|
end
|
data/lib/unimidi/output.rb
CHANGED
@@ -1,18 +1,18 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
+
module UniMIDI
|
3
4
|
# A MIDI output device
|
4
5
|
class Output
|
5
|
-
|
6
6
|
extend Device::ClassMethods
|
7
7
|
include Device::InstanceMethods
|
8
8
|
|
9
9
|
# All MIDI output devices -- used to populate the class
|
10
10
|
# @return [Array<Output>]
|
11
11
|
def self.all
|
12
|
-
Loader.devices(:
|
12
|
+
Loader.devices(direction: :output)
|
13
13
|
end
|
14
14
|
|
15
|
-
# Sends a message to the output.
|
15
|
+
# Sends a message to the output.
|
16
16
|
#
|
17
17
|
# The message format can be:
|
18
18
|
#
|
@@ -21,18 +21,18 @@ module UniMIDI
|
|
21
21
|
# 3. A string of bytes eg "904040"
|
22
22
|
# 4. An array of strings ["904040", "804040"]
|
23
23
|
#
|
24
|
-
# @param [*Array<
|
25
|
-
# @return [Array<
|
24
|
+
# @param [*Array<Integer>, *Array<String>, *Integer, *String] messages
|
25
|
+
# @return [Array<Integer>, Array<String>]
|
26
26
|
def puts(*messages)
|
27
27
|
message = messages.first
|
28
28
|
case message
|
29
29
|
when Array then messages.each { |array| puts(*array.flatten) }
|
30
|
-
when
|
30
|
+
when Integer then puts_bytes(*messages)
|
31
31
|
when String then puts_s(*messages)
|
32
32
|
else
|
33
33
|
if message.respond_to?(:to_bytes)
|
34
34
|
puts_bytes(*message.to_bytes.flatten)
|
35
|
-
elsif message.respond_to?(:to_a)
|
35
|
+
elsif message.respond_to?(:to_a)
|
36
36
|
puts_bytes(*message.to_a.flatten)
|
37
37
|
end
|
38
38
|
end
|
@@ -46,18 +46,16 @@ module UniMIDI
|
|
46
46
|
@device.puts_s(*messages)
|
47
47
|
messages.count < 2 ? messages[0] : messages
|
48
48
|
end
|
49
|
-
|
50
|
-
|
49
|
+
alias puts_bytestr puts_s
|
50
|
+
alias puts_hex puts_s
|
51
51
|
|
52
52
|
# Sends a message to the output in a form of bytes eg output.puts_bytes(0x90, 0x40, 0x40).
|
53
53
|
# This method does not do type checking.
|
54
|
-
# @param [*Array<
|
55
|
-
# @return [Array<
|
54
|
+
# @param [*Array<Integer>] messages
|
55
|
+
# @return [Array<Integer>, Array<Array<Integer>>]
|
56
56
|
def puts_bytes(*messages)
|
57
57
|
@device.puts_bytes(*messages)
|
58
58
|
messages.count < 2 ? messages[0] : messages
|
59
59
|
end
|
60
|
-
|
61
60
|
end
|
62
|
-
|
63
61
|
end
|
data/lib/unimidi/platform.rb
CHANGED
@@ -1,28 +1,34 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
+
module UniMIDI
|
3
4
|
# Deal with different dependencies between different user environments
|
4
5
|
module Platform
|
5
|
-
|
6
6
|
extend self
|
7
|
-
|
7
|
+
|
8
8
|
# Loads the proper MIDI library and adapter for the user's environment
|
9
9
|
def bootstrap
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
10
|
+
require("unimidi/adapter/#{platform_lib}")
|
11
|
+
Loader.use(platform_module::Loader)
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def platform_lib
|
17
|
+
case RUBY_PLATFORM
|
18
|
+
when /darwin/ then 'ffi-coremidi'
|
19
|
+
when /java/ then 'midi-jruby'
|
20
|
+
when /linux/ then 'alsa-rawmidi'
|
21
|
+
when /mingw/ then 'midi-winmm'
|
22
22
|
end
|
23
|
-
Loader.use(interface::Loader)
|
24
23
|
end
|
25
24
|
|
25
|
+
def platform_module
|
26
|
+
case RUBY_PLATFORM
|
27
|
+
when /darwin/ then Adapter::CoreMIDI
|
28
|
+
when /java/ then Adapter::MIDIJRuby
|
29
|
+
when /linux/ then Adapter::AlsaRawMIDI
|
30
|
+
when /mingw/ then Adapter::MIDIWinMM
|
31
|
+
end
|
32
|
+
end
|
26
33
|
end
|
27
|
-
|
28
34
|
end
|
@@ -1,17 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module UniMIDI
|
2
|
-
|
3
4
|
# Utility for converting between different data formats
|
4
5
|
module TypeConversion
|
6
|
+
module_function
|
5
7
|
|
6
|
-
|
7
|
-
|
8
|
-
# Convert an array of numeric bytes to string of hex bytes
|
9
|
-
# @param [Array<Fixnum>] byte An array of numeric bytes eg [0x90, 0x40, 0x40]
|
8
|
+
# Convert an array of numeric bytes to string of hex bytes
|
9
|
+
# @param [Array<Integer>] byte An array of numeric bytes eg [0x90, 0x40, 0x40]
|
10
10
|
# @return [String] A string of hex bytes eg "904040"
|
11
11
|
def numeric_byte_array_to_hex_string(bytes)
|
12
12
|
bytes.map { |b| b.to_s(16) }.join
|
13
13
|
end
|
14
|
-
|
15
14
|
end
|
16
|
-
|
17
15
|
end
|
data/lib/unimidi.rb
CHANGED
@@ -1,24 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
#
|
4
|
+
# UniMIDI
|
2
5
|
# Realtime MIDI IO for Ruby
|
3
6
|
#
|
4
|
-
# (c)2010-
|
7
|
+
# (c)2010-2022 Ari Russo
|
8
|
+
# Licensed under the Apache 2.0 License
|
5
9
|
#
|
6
10
|
|
7
11
|
# modules
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require
|
12
|
-
require "unimidi/type_conversion"
|
12
|
+
require 'unimidi/command'
|
13
|
+
require 'unimidi/device'
|
14
|
+
require 'unimidi/platform'
|
15
|
+
require 'unimidi/type_conversion'
|
13
16
|
|
14
17
|
# classes
|
15
|
-
require
|
16
|
-
require
|
18
|
+
require 'unimidi/input'
|
19
|
+
require 'unimidi/loader'
|
20
|
+
require 'unimidi/output'
|
17
21
|
|
18
22
|
module UniMIDI
|
19
|
-
|
20
|
-
VERSION = "0.4.5"
|
23
|
+
VERSION = '0.5.0'
|
21
24
|
|
22
25
|
Platform.bootstrap
|
23
|
-
|
24
26
|
end
|
metadata
CHANGED
@@ -1,71 +1,155 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unimidi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ari Russo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-02-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '13.0'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 13.0.6
|
23
|
+
type: :development
|
24
|
+
prerelease: false
|
15
25
|
version_requirements: !ruby/object:Gem::Requirement
|
16
26
|
requirements:
|
17
|
-
- - ~>
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '13.0'
|
30
|
+
- - ">="
|
18
31
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
32
|
+
version: 13.0.6
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: rspec
|
20
35
|
requirement: !ruby/object:Gem::Requirement
|
21
36
|
requirements:
|
22
|
-
- - ~>
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '3.11'
|
40
|
+
- - ">="
|
23
41
|
- !ruby/object:Gem::Version
|
24
|
-
version:
|
42
|
+
version: 3.11.0
|
43
|
+
type: :development
|
25
44
|
prerelease: false
|
26
|
-
type: :runtime
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: ffi-coremidi
|
29
45
|
version_requirements: !ruby/object:Gem::Requirement
|
30
46
|
requirements:
|
31
|
-
- - ~>
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '3.11'
|
50
|
+
- - ">="
|
32
51
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
52
|
+
version: 3.11.0
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: rubocop
|
34
55
|
requirement: !ruby/object:Gem::Requirement
|
35
56
|
requirements:
|
36
|
-
- - ~>
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '1.25'
|
60
|
+
- - ">="
|
37
61
|
- !ruby/object:Gem::Version
|
38
|
-
version:
|
62
|
+
version: 1.25.1
|
63
|
+
type: :development
|
39
64
|
prerelease: false
|
40
|
-
type: :runtime
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: midi-jruby
|
43
65
|
version_requirements: !ruby/object:Gem::Requirement
|
44
66
|
requirements:
|
45
|
-
- - ~>
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '1.25'
|
70
|
+
- - ">="
|
46
71
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
72
|
+
version: 1.25.1
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: alsa-rawmidi
|
48
75
|
requirement: !ruby/object:Gem::Requirement
|
49
76
|
requirements:
|
50
|
-
- - ~>
|
77
|
+
- - "~>"
|
51
78
|
- !ruby/object:Gem::Version
|
52
|
-
version: '0'
|
53
|
-
|
79
|
+
version: '0.3'
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.3.1
|
54
83
|
type: :runtime
|
84
|
+
prerelease: false
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.3'
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: 0.3.1
|
55
93
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
94
|
+
name: ffi-coremidi
|
95
|
+
requirement: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - "~>"
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0.3'
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 0.3.5
|
103
|
+
type: :runtime
|
104
|
+
prerelease: false
|
57
105
|
version_requirements: !ruby/object:Gem::Requirement
|
58
106
|
requirements:
|
59
|
-
- - ~>
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0.3'
|
110
|
+
- - ">="
|
60
111
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
112
|
+
version: 0.3.5
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: midi-jruby
|
62
115
|
requirement: !ruby/object:Gem::Requirement
|
63
116
|
requirements:
|
64
|
-
- - ~>
|
117
|
+
- - "~>"
|
65
118
|
- !ruby/object:Gem::Version
|
66
|
-
version: '0'
|
119
|
+
version: '0.1'
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: 0.1.4
|
123
|
+
type: :runtime
|
67
124
|
prerelease: false
|
125
|
+
version_requirements: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - "~>"
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0.1'
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: 0.1.4
|
133
|
+
- !ruby/object:Gem::Dependency
|
134
|
+
name: midi-winmm
|
135
|
+
requirement: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - "~>"
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0.1'
|
140
|
+
- - ">="
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: 0.1.10
|
68
143
|
type: :runtime
|
144
|
+
prerelease: false
|
145
|
+
version_requirements: !ruby/object:Gem::Requirement
|
146
|
+
requirements:
|
147
|
+
- - "~>"
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '0.1'
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: 0.1.10
|
69
153
|
description: Platform independent realtime MIDI input and output for Ruby
|
70
154
|
email:
|
71
155
|
- ari.russo@gmail.com
|
@@ -73,30 +157,25 @@ executables: []
|
|
73
157
|
extensions: []
|
74
158
|
extra_rdoc_files: []
|
75
159
|
files:
|
160
|
+
- LICENSE
|
161
|
+
- README.md
|
76
162
|
- lib/unimidi.rb
|
163
|
+
- lib/unimidi/adapter/alsa-rawmidi.rb
|
164
|
+
- lib/unimidi/adapter/ffi-coremidi.rb
|
165
|
+
- lib/unimidi/adapter/midi-jruby.rb
|
166
|
+
- lib/unimidi/adapter/midi-winmm.rb
|
77
167
|
- lib/unimidi/command.rb
|
78
168
|
- lib/unimidi/device.rb
|
79
169
|
- lib/unimidi/input.rb
|
170
|
+
- lib/unimidi/input/buffer_access.rb
|
171
|
+
- lib/unimidi/input/stream_reader.rb
|
80
172
|
- lib/unimidi/loader.rb
|
81
173
|
- lib/unimidi/output.rb
|
82
174
|
- lib/unimidi/platform.rb
|
83
175
|
- lib/unimidi/type_conversion.rb
|
84
|
-
- lib/unimidi/adapter/alsa-rawmidi.rb
|
85
|
-
- lib/unimidi/adapter/ffi-coremidi.rb
|
86
|
-
- lib/unimidi/adapter/midi-jruby.rb
|
87
|
-
- lib/unimidi/adapter/midi-winmm.rb
|
88
|
-
- test/adapter_test.rb
|
89
|
-
- test/class_methods_test.rb
|
90
|
-
- test/functional_test.rb
|
91
|
-
- test/helper.rb
|
92
|
-
- test/input_test.rb
|
93
|
-
- test/platform_test.rb
|
94
|
-
- test/type_conversion_test.rb
|
95
|
-
- LICENSE
|
96
|
-
- README.md
|
97
176
|
homepage: http://github.com/arirusso/unimidi
|
98
177
|
licenses:
|
99
|
-
- Apache
|
178
|
+
- Apache-2.0
|
100
179
|
metadata: {}
|
101
180
|
post_install_message:
|
102
181
|
rdoc_options: []
|
@@ -104,17 +183,16 @@ require_paths:
|
|
104
183
|
- lib
|
105
184
|
required_ruby_version: !ruby/object:Gem::Requirement
|
106
185
|
requirements:
|
107
|
-
- -
|
186
|
+
- - ">="
|
108
187
|
- !ruby/object:Gem::Version
|
109
|
-
version:
|
188
|
+
version: 1.8.6
|
110
189
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
111
190
|
requirements:
|
112
|
-
- -
|
191
|
+
- - ">="
|
113
192
|
- !ruby/object:Gem::Version
|
114
193
|
version: 1.3.6
|
115
194
|
requirements: []
|
116
|
-
|
117
|
-
rubygems_version: 2.1.9
|
195
|
+
rubygems_version: 3.3.3
|
118
196
|
signing_key:
|
119
197
|
specification_version: 4
|
120
198
|
summary: Realtime MIDI IO for Ruby
|
data/test/adapter_test.rb
DELETED
@@ -1,66 +0,0 @@
|
|
1
|
-
require "helper"
|
2
|
-
|
3
|
-
class UniMIDI::AdapterTest < Test::Unit::TestCase
|
4
|
-
|
5
|
-
context "Adapter" do
|
6
|
-
|
7
|
-
context "Device#type" do
|
8
|
-
|
9
|
-
should "be an input" do
|
10
|
-
input = TestHelper.devices[:input]
|
11
|
-
assert_equal(:input, input.type)
|
12
|
-
end
|
13
|
-
|
14
|
-
should "be an output" do
|
15
|
-
output = TestHelper.devices[:output]
|
16
|
-
assert_equal(:output, output.type)
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
|
21
|
-
context "Device.count" do
|
22
|
-
|
23
|
-
setup do
|
24
|
-
@inputs = UniMIDI::Input.all
|
25
|
-
end
|
26
|
-
|
27
|
-
should "count all of the inputs" do
|
28
|
-
assert_equal @inputs.count, UniMIDI::Input.count
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
32
|
-
|
33
|
-
context "Device.find_by_name" do
|
34
|
-
|
35
|
-
setup do
|
36
|
-
index = rand(0..(UniMIDI::Output.count-1))
|
37
|
-
@output = UniMIDI::Output.all[index]
|
38
|
-
end
|
39
|
-
|
40
|
-
should "select the correct input" do
|
41
|
-
result = UniMIDI::Output.find_by_name(@output.name)
|
42
|
-
assert_equal @output, result
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|
46
|
-
|
47
|
-
context "Device.first" do
|
48
|
-
|
49
|
-
setup do
|
50
|
-
@output = UniMIDI::Output.all.first
|
51
|
-
end
|
52
|
-
|
53
|
-
should "open the output" do
|
54
|
-
@output.expects(:open)
|
55
|
-
output = UniMIDI::Output.first
|
56
|
-
@output.unstub(:open)
|
57
|
-
end
|
58
|
-
|
59
|
-
should "return the correct output" do
|
60
|
-
output = UniMIDI::Output.first
|
61
|
-
assert_equal @output, output
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
end
|
66
|
-
end
|
data/test/class_methods_test.rb
DELETED
@@ -1,95 +0,0 @@
|
|
1
|
-
require "helper"
|
2
|
-
|
3
|
-
class UniMIDI::ClassMethodsTest < Test::Unit::TestCase
|
4
|
-
|
5
|
-
context "ClassMethods" do
|
6
|
-
|
7
|
-
context "#first" do
|
8
|
-
|
9
|
-
context "no block given" do
|
10
|
-
should "return first input" do
|
11
|
-
i = UniMIDI::Input.first
|
12
|
-
assert_equal(UniMIDI::Input.all.first, i)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
context "block given" do
|
17
|
-
should "pass and return first input" do
|
18
|
-
sleep(1)
|
19
|
-
i = UniMIDI::Input.first do |i|
|
20
|
-
assert_equal(true, i.enabled?)
|
21
|
-
end
|
22
|
-
assert_equal(UniMIDI::Input.all.first, i)
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
context "#last" do
|
29
|
-
|
30
|
-
context "no block given" do
|
31
|
-
should "return last input" do
|
32
|
-
i = UniMIDI::Input.last
|
33
|
-
assert_equal(UniMIDI::Input.all.last, i)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
context "block given" do
|
38
|
-
should "pass and return last input" do
|
39
|
-
sleep(1)
|
40
|
-
i = UniMIDI::Input.last do |i|
|
41
|
-
assert_equal(true, i.enabled?)
|
42
|
-
end
|
43
|
-
assert_equal(UniMIDI::Input.all.last, i)
|
44
|
-
end
|
45
|
-
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
context "#[]" do
|
50
|
-
|
51
|
-
should "return correct input" do
|
52
|
-
i = UniMIDI::Input[0]
|
53
|
-
assert_equal(UniMIDI::Input.first, i)
|
54
|
-
assert_equal(UniMIDI::Input.all.first, i)
|
55
|
-
end
|
56
|
-
|
57
|
-
end
|
58
|
-
|
59
|
-
context "#use" do
|
60
|
-
|
61
|
-
context "block given" do
|
62
|
-
should "return and enable an input" do
|
63
|
-
sleep(1)
|
64
|
-
i = UniMIDI::Input.use(0) do |i|
|
65
|
-
assert_equal(true, i.enabled?)
|
66
|
-
end
|
67
|
-
assert_equal(UniMIDI::Input.first, i)
|
68
|
-
assert_equal(UniMIDI::Input.all.first, i)
|
69
|
-
end
|
70
|
-
|
71
|
-
end
|
72
|
-
|
73
|
-
context "with symbol" do
|
74
|
-
|
75
|
-
should "return an enabled input" do
|
76
|
-
sleep(1)
|
77
|
-
input = UniMIDI::Input.use(:first)
|
78
|
-
assert_equal(true, input.enabled?)
|
79
|
-
assert_equal(UniMIDI::Input.first, input)
|
80
|
-
assert_equal(UniMIDI::Input.all.first, input)
|
81
|
-
end
|
82
|
-
|
83
|
-
end
|
84
|
-
|
85
|
-
end
|
86
|
-
|
87
|
-
context "#all" do
|
88
|
-
should "return all devices" do
|
89
|
-
assert_equal(UniMIDI::Loader.devices(:direction => :input), UniMIDI::Input.all)
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
end
|
94
|
-
|
95
|
-
end
|