midi-eye 0.3.7 → 0.3.8

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7e90eda3aee9f3edfbeb121e91a8de5332499ae1
4
- data.tar.gz: 50cc2dc4499ca9f22c61183c0583ba4b98b9694d
3
+ metadata.gz: e2b3e0af881e2a337de19d43af2ba0e0119e99c3
4
+ data.tar.gz: 60027129b318dbb0056535890bb43baa383d0080
5
5
  SHA512:
6
- metadata.gz: 91a4e30f101d2762dabb0d220fd4ca9d12591fbd7821ffe023c86e3aedba9810e2729625b8979aa129fa54943a374485d5e48ca3cfdd8b1f6e0a1581ddaa9dd1
7
- data.tar.gz: b08bb9377641d90d296334000a76dfda3a5f70b2c45c33dec5c263a769ce332c2c251cac5fe26b02f7e6016205cb0053dc4cfbf687c2061e64c520d96fd88d99
6
+ metadata.gz: c532eb1705410cfe8250f09730765d9e0fce8dd52548cdc3c233554b7fdb7a6435b17655b9230629050e322c7526311c84ac8cd15a7dc37429fcb0364396ce70
7
+ data.tar.gz: 84d9b10631497e3f14b176197b5b9008ee5a1778ec2bcc3a43904a13b4aec3c2dd9b69bb05976cf051c8443b09f9d299b7c08694c2e33cb8a54888c5718190bd
@@ -18,6 +18,6 @@ require "midi-eye/source"
18
18
 
19
19
  module MIDIEye
20
20
 
21
- VERSION = "0.3.7"
21
+ VERSION = "0.3.8"
22
22
 
23
23
  end
@@ -79,7 +79,7 @@ module MIDIEye
79
79
  @listener.join
80
80
  rescue Exception => exception
81
81
  @listener.kill
82
- raise exception
82
+ Thread.main.raise(exception)
83
83
  end
84
84
  self
85
85
  end
@@ -1,7 +1,7 @@
1
1
  dir = File.dirname(File.expand_path(__FILE__))
2
2
  $LOAD_PATH.unshift(dir + "/../lib")
3
3
 
4
- require "test/unit"
4
+ require "minitest/autorun"
5
5
  require "mocha/test_unit"
6
6
  require "shoulda-context"
7
7
 
@@ -11,21 +11,15 @@ module TestHelper
11
11
 
12
12
  extend self
13
13
 
14
+ attr_reader :device
15
+
14
16
  def select_devices
15
- $test_device ||= {}
17
+ @device ||= {}
16
18
  { :input => UniMIDI::Input, :output => UniMIDI::Output }.each do |type, klass|
17
- $test_device[type] = klass.gets
19
+ @device[type] = klass.gets
18
20
  end
19
21
  end
20
22
 
21
- def close_all(input, output, listener)
22
- listener.close
23
- input.clear_buffer
24
- input.close
25
- output.close
26
- sleep(0.1)
27
- end
28
-
29
23
  end
30
24
 
31
25
  TestHelper.select_devices
@@ -1,118 +1,138 @@
1
1
  require "helper"
2
2
 
3
- class ListenerTest < Test::Unit::TestCase
3
+ class ListenerTest < Minitest::Test
4
4
 
5
5
  context "Listener" do
6
6
 
7
7
  setup do
8
8
  sleep(0.2)
9
- @output = $test_device[:output]
10
- @input = $test_device[:input]
9
+ @output = TestHelper.device[:output]
10
+ @input = TestHelper.device[:input]
11
11
  @listener = MIDIEye::Listener.new(@input)
12
12
  end
13
13
 
14
- context "basic" do
14
+ teardown do
15
+ @listener.close
16
+ @input.clear_buffer
17
+ @input.close
18
+ @output.close
19
+ sleep(0.5)
20
+ end
15
21
 
16
- setup do
17
- @i = 0
18
- @listener.listen_for do |event|
19
- @i += 1
20
- assert_equal(1, @i)
21
- TestHelper.close_all(@input, @output, @listener)
22
+ context "#listen_for" do
23
+
24
+ context "no filter" do
25
+
26
+ setup do
27
+ @i = 0
28
+ @listener.listen_for do |event|
29
+ @i += 1
30
+ end
31
+ @listener.start(:background => true)
32
+ sleep(0.5)
33
+ end
34
+
35
+ should "receive messages" do
36
+ @output.puts(0x90, 0x40, 0x10)
37
+ sleep(0.2)
38
+ assert_equal 1, @i
22
39
  end
23
- @listener.start(:background => true)
24
- sleep(0.5)
25
- end
26
40
 
27
- should "receive messages" do
28
- @output.puts(0x90, 0x40, 0x10)
29
- @listener.join
30
41
  end
31
42
 
32
- end
43
+ context "filter on control change" do
33
44
 
34
- context "rapid control change" do
45
+ context "rapid messages" do
35
46
 
36
- setup do
37
- @i = 0
38
- @listener.listen_for(:class => MIDIMessage::ControlChange) do |event|
39
- @i += 1
40
- if @i == 5 * 126
41
- TestHelper.close_all(@input, @output, @listener)
42
- assert_equal(5 * 126, @i)
47
+ setup do
48
+ @i = 0
49
+ @listener.listen_for(:class => MIDIMessage::ControlChange) do |event|
50
+ @i += 1
51
+ end
52
+ @listener.start(:background => true)
53
+ sleep(0.5)
43
54
  end
44
- end
45
- @listener.start(:background => true)
46
- sleep(0.5)
47
- end
48
55
 
49
- should "receive messages" do
50
- 5.times do
51
- 126.times do |i|
52
- @output.puts(176, 1, i+1)
56
+ should "receive messages" do
57
+ 5.times do
58
+ 126.times do |i|
59
+ @output.puts(176, 1, i+1)
60
+ end
61
+ end
62
+ sleep(1)
63
+ assert_equal(5 * 126, @i)
53
64
  end
65
+
54
66
  end
55
- @listener.join
56
- end
57
67
 
58
- end
68
+ context "normal messages" do
69
+
70
+ setup do
71
+ @event = nil
72
+ @listener.listen_for(:class => MIDIMessage::ControlChange) do |event|
73
+ @event = event
74
+ end
75
+ @listener.start(:background => true)
76
+ sleep(0.5)
77
+ @input.clear_buffer
78
+ end
59
79
 
60
- context "control change" do
80
+ should "receive messages" do
81
+ @output.puts(176, 1, 35)
82
+ sleep(0.2)
83
+ refute_nil @event
84
+ assert_equal(MIDIMessage::ControlChange, @event[:message].class)
85
+ assert_equal(1, @event[:message].index)
86
+ assert_equal(35, @event[:message].value)
87
+ assert_equal([176, 1, 35], @event[:message].to_bytes)
88
+ end
61
89
 
62
- setup do
63
- @listener.listen_for(:class => MIDIMessage::ControlChange) do |event|
64
- assert_equal(MIDIMessage::ControlChange, event[:message].class)
65
- assert_equal(1, event[:message].index)
66
- assert_equal(35, event[:message].value)
67
- assert_equal([176, 1, 35], event[:message].to_bytes)
68
- TestHelper.close_all(@input, @output, @listener)
69
90
  end
70
- @listener.start(:background => true)
71
- sleep(0.5)
72
- end
73
91
 
74
- should "receive messages" do
75
- @output.puts(176, 1, 35)
76
- @listener.join
77
92
  end
78
- end
79
93
 
80
- context "sysex" do
94
+ context "filter on sysex" do
81
95
 
82
- setup do
83
- @listener.listen_for(:class => MIDIMessage::SystemExclusive::Command) do |event|
84
- assert_equal(MIDIMessage::SystemExclusive::Command, event[:message].class)
85
- assert_equal([0xF0, 0x41, 0x10, 0x42, 0x12, 0x40, 0x00, 0x7F, 0x00, 0x41, 0xF7], event[:message].to_byte_array)
86
- TestHelper.close_all(@input, @output, @listener)
96
+ setup do
97
+ @event = nil
98
+ @listener.listen_for(:class => MIDIMessage::SystemExclusive::Command) do |event|
99
+ @event = event
100
+ end
101
+ @listener.start(:background => true)
102
+ sleep(0.5)
103
+ end
104
+
105
+ should "receive messages" do
106
+ @output.puts(0xF0, 0x41, 0x10, 0x42, 0x12, 0x40, 0x00, 0x7F, 0x00, 0x41, 0xF7)
107
+ sleep(0.2)
108
+ refute_nil @event
109
+ assert_equal(MIDIMessage::SystemExclusive::Command, @event[:message].class)
110
+ assert_equal([0xF0, 0x41, 0x10, 0x42, 0x12, 0x40, 0x00, 0x7F, 0x00, 0x41, 0xF7], @event[:message].to_byte_array)
87
111
  end
88
- @listener.start(:background => true)
89
- sleep(0.5)
90
- end
91
112
 
92
- should "receive messages" do
93
- @output.puts(0xF0, 0x41, 0x10, 0x42, 0x12, 0x40, 0x00, 0x7F, 0x00, 0x41, 0xF7)
94
- @listener.join
95
113
  end
96
114
 
97
- end
115
+ context "filter on note on" do
98
116
 
99
- context "note on" do
117
+ setup do
118
+ @event = nil
119
+ @listener.listen_for(:class => MIDIMessage::NoteOff) do |event|
120
+ @event = event
121
+ end
122
+ @listener.start(:background => true)
123
+ sleep(0.5)
124
+ end
100
125
 
101
- setup do
102
- @listener.listen_for(:class => MIDIMessage::NoteOff) do |event|
103
- assert_equal(MIDIMessage::NoteOff, event[:message].class)
104
- assert_equal(0x50, event[:message].note)
105
- assert_equal(0x40, event[:message].velocity)
106
- assert_equal([0x80, 0x50, 0x40], event[:message].to_bytes)
107
- TestHelper.close_all(@input, @output, @listener)
126
+ should "receive messages" do
127
+ @output.puts(0x80, 0x50, 0x40)
128
+ sleep(0.2)
129
+ refute_nil @event
130
+ assert_equal(MIDIMessage::NoteOff, @event[:message].class)
131
+ assert_equal(0x50, @event[:message].note)
132
+ assert_equal(0x40, @event[:message].velocity)
133
+ assert_equal([0x80, 0x50, 0x40], @event[:message].to_bytes)
108
134
  end
109
- @listener.start(:background => true)
110
- sleep(0.5)
111
- end
112
135
 
113
- should "receive messages" do
114
- @output.puts(0x80, 0x50, 0x40)
115
- @listener.join
116
136
  end
117
137
 
118
138
  end
@@ -120,19 +140,19 @@ class ListenerTest < Test::Unit::TestCase
120
140
  context "#delete_event" do
121
141
 
122
142
  setup do
143
+ @event = nil
123
144
  @listener.listen_for(:listener_name => :test) do |event|
124
- assert_equal(1, @listener.event.count)
125
- @listener.delete_event(:test)
126
- assert_equal(0, @listener.event.count)
127
- TestHelper.close_all(@input, @output, @listener)
145
+ @event = event
128
146
  end
147
+ @output.puts(0x90, 0x70, 0x20)
129
148
  @listener.start(:background => true)
130
149
  sleep(0.5)
131
150
  end
132
151
 
133
- should "receive messages" do
134
- @output.puts(0x90, 0x70, 0x20)
135
- @listener.join
152
+ should "delete event" do
153
+ assert_equal(1, @listener.event.count)
154
+ @listener.delete_event(:test)
155
+ assert_equal(0, @listener.event.count)
136
156
  end
137
157
 
138
158
  end
@@ -170,17 +190,13 @@ class ListenerTest < Test::Unit::TestCase
170
190
  context "#close" do
171
191
 
172
192
  setup do
173
- @listener.listen_for(:class => MIDIMessage::NoteOff) do |event|
174
- TestHelper.close_all(@input, @output, @listener)
175
- end
176
193
  @listener.start(:background => true)
177
- sleep(0.5)
178
194
  @output.puts(0x80, 0x50, 0x40)
179
- @listener.join
180
195
  end
181
196
 
182
197
  should "close" do
183
198
  assert @listener.close
199
+ sleep(0.5)
184
200
  refute @listener.running?
185
201
  end
186
202
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: midi-eye
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.7
4
+ version: 0.3.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ari Russo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-27 00:00:00.000000000 Z
11
+ date: 2015-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: midi-message