midi-nibbler 0.2.3 → 0.2.4
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 +4 -4
- data/LICENSE +1 -1
- data/README.md +29 -29
- data/lib/nibbler.rb +6 -3
- data/lib/nibbler/{hex_processor.rb → data_processor.rb} +20 -14
- data/lib/nibbler/message_builder.rb +84 -0
- data/lib/nibbler/message_library.rb +21 -0
- data/lib/nibbler/parser.rb +113 -91
- data/lib/nibbler/session.rb +27 -25
- data/lib/nibbler/type_conversion.rb +47 -11
- data/test/data_processor_test.rb +146 -0
- data/test/functional_buffer_test.rb +64 -0
- data/test/functional_rejected_test.rb +154 -0
- data/test/helper.rb +2 -0
- data/test/message_library_test.rb +37 -0
- data/test/midi_message_test.rb +201 -105
- data/test/parser_test.rb +221 -149
- data/test/type_conversion_test.rb +116 -17
- metadata +11 -8
- data/test/hex_processor_test.rb +0 -56
- data/test/parser_buffer_test.rb +0 -66
- data/test/parser_rejected_test.rb +0 -60
@@ -2,28 +2,127 @@ require "helper"
|
|
2
2
|
|
3
3
|
class Nibbler::TypeConversionTest < Minitest::Test
|
4
4
|
|
5
|
-
|
6
|
-
nibbles = ["4", "5", "9", "3"]
|
7
|
-
bytes = Nibbler::TypeConversion.hex_chars_to_numeric_bytes(nibbles)
|
5
|
+
context "TypeConversion" do
|
8
6
|
|
9
|
-
|
10
|
-
assert_equal([0x45, 0x93], bytes)
|
11
|
-
end
|
7
|
+
context ".hex_chars_to_numeric_bytes" do
|
12
8
|
|
13
|
-
|
14
|
-
|
15
|
-
|
9
|
+
setup do
|
10
|
+
@nibbles = ["4", "5", "9", "3"]
|
11
|
+
@bytes = Nibbler::TypeConversion.hex_chars_to_numeric_bytes(@nibbles)
|
12
|
+
end
|
16
13
|
|
17
|
-
|
18
|
-
|
19
|
-
|
14
|
+
should "not have side effects" do
|
15
|
+
assert_equal(["4", "5", "9", "3"], @nibbles)
|
16
|
+
end
|
17
|
+
|
18
|
+
should "return correct bytes" do
|
19
|
+
assert_equal([0x45, 0x93], @bytes)
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
context ".hex_str_to_hex_chars" do
|
25
|
+
|
26
|
+
setup do
|
27
|
+
@str = "904050"
|
28
|
+
@nibbles = Nibbler::TypeConversion.send(:hex_str_to_hex_chars, @str)
|
29
|
+
end
|
30
|
+
|
31
|
+
should "not have side effects" do
|
32
|
+
assert_equal("904050", @str)
|
33
|
+
end
|
34
|
+
|
35
|
+
should "return correct chars" do
|
36
|
+
assert_equal(["9", "0", "4", "0", "5", "0"], @nibbles)
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
context ".hex_str_to_numeric_bytes" do
|
42
|
+
|
43
|
+
setup do
|
44
|
+
@str = "904050"
|
45
|
+
@bytes = Nibbler::TypeConversion.send(:hex_str_to_numeric_bytes, @str)
|
46
|
+
end
|
47
|
+
|
48
|
+
should "not have side effects" do
|
49
|
+
assert_equal("904050", @str)
|
50
|
+
end
|
51
|
+
|
52
|
+
should "return correct bytes" do
|
53
|
+
assert_equal([0x90, 0x40, 0x50], @bytes)
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
context ".numeric_bytes_to_numeric_nibbles" do
|
59
|
+
|
60
|
+
setup do
|
61
|
+
@bytes = [0x90, 0x40, 0x50]
|
62
|
+
@nibbles = Nibbler::TypeConversion.send(:numeric_bytes_to_numeric_nibbles, @bytes)
|
63
|
+
end
|
64
|
+
|
65
|
+
should "not have side effects" do
|
66
|
+
assert_equal([0x90, 0x40, 0x50], @bytes)
|
67
|
+
end
|
68
|
+
|
69
|
+
should "return correct nibbles" do
|
70
|
+
assert_equal([0x9, 0x0, 0x4, 0x0, 0x5, 0x0], @nibbles)
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
|
75
|
+
context ".hex_str_to_numeric_nibbles" do
|
76
|
+
|
77
|
+
setup do
|
78
|
+
@str = "904050"
|
79
|
+
@nibbles = Nibbler::TypeConversion.send(:hex_str_to_numeric_nibbles, @str)
|
80
|
+
end
|
81
|
+
|
82
|
+
should "not have side effects" do
|
83
|
+
assert_equal("904050", @str)
|
84
|
+
end
|
85
|
+
|
86
|
+
should "return correct nibbles" do
|
87
|
+
assert_equal([0x9, 0x0, 0x4, 0x0, 0x5, 0x0], @nibbles)
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
|
92
|
+
context ".numeric_byte_to_numeric_nibbles" do
|
93
|
+
|
94
|
+
setup do
|
95
|
+
@num = 0x90
|
96
|
+
@nibbles = Nibbler::TypeConversion.send(:numeric_byte_to_numeric_nibbles, @num)
|
97
|
+
end
|
98
|
+
|
99
|
+
should "not have side effects" do
|
100
|
+
assert_equal(0x90, @num)
|
101
|
+
end
|
102
|
+
|
103
|
+
should "return correct nibbles" do
|
104
|
+
assert_equal([0x9, 0x0], @nibbles)
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|
108
|
+
|
109
|
+
context ".numeric_byte_to_hex_chars" do
|
110
|
+
|
111
|
+
setup do
|
112
|
+
@num = 0x90
|
113
|
+
@nibbles = Nibbler::TypeConversion.send(:numeric_byte_to_hex_chars, @num)
|
114
|
+
end
|
115
|
+
|
116
|
+
should "not have side effects" do
|
117
|
+
assert_equal(0x90, @num)
|
118
|
+
end
|
119
|
+
|
120
|
+
should "return correct chars" do
|
121
|
+
assert_equal(["9", "0"], @nibbles)
|
122
|
+
end
|
20
123
|
|
21
|
-
|
22
|
-
num = 0x90
|
23
|
-
nibbles = Nibbler::TypeConversion.send(:numeric_byte_to_hex_chars, num)
|
124
|
+
end
|
24
125
|
|
25
|
-
assert_equal(0x90, num)
|
26
|
-
assert_equal(["9", "0"], nibbles)
|
27
126
|
end
|
28
127
|
|
29
128
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: midi-nibbler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
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: 2017-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: midilib
|
@@ -140,24 +140,27 @@ files:
|
|
140
140
|
- LICENSE
|
141
141
|
- README.md
|
142
142
|
- lib/nibbler.rb
|
143
|
-
- lib/nibbler/
|
143
|
+
- lib/nibbler/data_processor.rb
|
144
|
+
- lib/nibbler/message_builder.rb
|
145
|
+
- lib/nibbler/message_library.rb
|
144
146
|
- lib/nibbler/midi-message.rb
|
145
147
|
- lib/nibbler/midilib.rb
|
146
148
|
- lib/nibbler/parser.rb
|
147
149
|
- lib/nibbler/session.rb
|
148
150
|
- lib/nibbler/type_conversion.rb
|
151
|
+
- test/data_processor_test.rb
|
152
|
+
- test/functional_buffer_test.rb
|
153
|
+
- test/functional_rejected_test.rb
|
149
154
|
- test/helper.rb
|
150
|
-
- test/
|
155
|
+
- test/message_library_test.rb
|
151
156
|
- test/midi_message_test.rb
|
152
157
|
- test/midilib_test.rb
|
153
|
-
- test/parser_buffer_test.rb
|
154
|
-
- test/parser_rejected_test.rb
|
155
158
|
- test/parser_test.rb
|
156
159
|
- test/session_test.rb
|
157
160
|
- test/type_conversion_test.rb
|
158
161
|
homepage: http://github.com/arirusso/nibbler
|
159
162
|
licenses:
|
160
|
-
- Apache
|
163
|
+
- Apache-2.0
|
161
164
|
metadata: {}
|
162
165
|
post_install_message:
|
163
166
|
rdoc_options: []
|
@@ -175,7 +178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
175
178
|
version: 1.3.6
|
176
179
|
requirements: []
|
177
180
|
rubyforge_project: nibbler
|
178
|
-
rubygems_version: 2.
|
181
|
+
rubygems_version: 2.6.8
|
179
182
|
signing_key:
|
180
183
|
specification_version: 4
|
181
184
|
summary: Parse MIDI Messages
|
data/test/hex_processor_test.rb
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
require "helper"
|
2
|
-
|
3
|
-
class Nibbler::HexProcessorTest < Minitest::Test
|
4
|
-
|
5
|
-
def test_to_nibbles_array_mixed
|
6
|
-
processor = Nibbler::HexProcessor
|
7
|
-
array = [0x90, "90", "9"]
|
8
|
-
nibbles = processor.send(:process, array)
|
9
|
-
assert_equal([0x90, "90", "9"], array)
|
10
|
-
assert_equal(["9", "0", "9", "0", "9"], nibbles)
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_to_nibbles_mixed
|
14
|
-
processor = Nibbler::HexProcessor
|
15
|
-
array = [0x90, "90", "9"]
|
16
|
-
nibbles = processor.send(:process, *array)
|
17
|
-
assert_equal([0x90, "90", "9"], array)
|
18
|
-
assert_equal(["9", "0", "9", "0", "9"], nibbles)
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_to_nibbles_numeric
|
22
|
-
processor = Nibbler::HexProcessor
|
23
|
-
num = 0x90
|
24
|
-
nibbles = processor.send(:process, num)
|
25
|
-
assert_equal(0x90, num)
|
26
|
-
assert_equal(["9", "0"], nibbles)
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_to_nibbles_string
|
30
|
-
processor = Nibbler::HexProcessor
|
31
|
-
str = "904050"
|
32
|
-
nibbles = processor.send(:process, str)
|
33
|
-
assert_equal("904050", str)
|
34
|
-
assert_equal(["9", "0", "4", "0", "5", "0"], nibbles)
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_processor_numeric
|
38
|
-
processor = Nibbler::HexProcessor
|
39
|
-
badnum = 560
|
40
|
-
output = processor.send(:filter_numeric, badnum)
|
41
|
-
assert_equal(560, badnum)
|
42
|
-
assert_equal(nil, output)
|
43
|
-
goodnum = 50
|
44
|
-
output = processor.send(:filter_numeric, goodnum)
|
45
|
-
assert_equal(50, goodnum)
|
46
|
-
assert_equal(50, output)
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_processor_string
|
50
|
-
processor = Nibbler::HexProcessor
|
51
|
-
str = "(0xAdjskla#(#"
|
52
|
-
outp = processor.send(:filter_string, str)
|
53
|
-
assert_equal("0ADA", outp)
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
data/test/parser_buffer_test.rb
DELETED
@@ -1,66 +0,0 @@
|
|
1
|
-
require "helper"
|
2
|
-
|
3
|
-
class Nibbler::BufferTest < Minitest::Test
|
4
|
-
|
5
|
-
def test_buffer_nibble_str
|
6
|
-
nibbler = Nibbler.new
|
7
|
-
nibbler.parse("9")
|
8
|
-
assert_equal(["9"], nibbler.buffer)
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_buffer_single_byte
|
12
|
-
nibbler = Nibbler.new
|
13
|
-
nibbler.parse(0x90)
|
14
|
-
assert_equal(["9", "0"], nibbler.buffer)
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_buffer_single_byte_str
|
18
|
-
nibbler = Nibbler.new
|
19
|
-
nibbler.parse("90")
|
20
|
-
assert_equal(["9", "0"], nibbler.buffer)
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_buffer_single_byte_in_array
|
24
|
-
nibbler = Nibbler.new
|
25
|
-
nibbler.parse([0x90])
|
26
|
-
assert_equal(["9", "0"], nibbler.buffer)
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_buffer_two_bytes
|
30
|
-
nibbler = Nibbler.new
|
31
|
-
nibbler.parse(0x90, 0x40)
|
32
|
-
assert_equal(["9", "0", "4", "0"], nibbler.buffer)
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_buffer_two_bytes_str
|
36
|
-
nibbler = Nibbler.new
|
37
|
-
nibbler.parse("90", "40")
|
38
|
-
assert_equal(["9", "0", "4", "0"], nibbler.buffer)
|
39
|
-
end
|
40
|
-
|
41
|
-
def test_buffer_two_bytes_single_str
|
42
|
-
nibbler = Nibbler.new
|
43
|
-
nibbler.parse("9040")
|
44
|
-
assert_equal(["9", "0", "4", "0"], nibbler.buffer)
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_buffer_two_bytes_mixed
|
48
|
-
nibbler = Nibbler.new
|
49
|
-
nibbler.parse("90", 0x40)
|
50
|
-
assert_equal(["9", "0", "4", "0"], nibbler.buffer)
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_buffer_nibble_and_byte_mixed
|
54
|
-
nibbler = Nibbler.new
|
55
|
-
nibbler.parse("9", 0x40)
|
56
|
-
assert_equal(["9", "4", "0"], nibbler.buffer)
|
57
|
-
end
|
58
|
-
|
59
|
-
def test_buffer_stepped
|
60
|
-
nibbler = Nibbler.new
|
61
|
-
nibbler.parse("9")
|
62
|
-
nibbler.parse(0x40)
|
63
|
-
assert_equal(["9", "4", "0"], nibbler.buffer)
|
64
|
-
end
|
65
|
-
|
66
|
-
end
|
@@ -1,60 +0,0 @@
|
|
1
|
-
require "helper"
|
2
|
-
|
3
|
-
class Nibbler::ParserRejectedTest < Minitest::Test
|
4
|
-
|
5
|
-
def test_leading_chars
|
6
|
-
nibbler = Nibbler.new
|
7
|
-
msg = nibbler.parse("0", "9", "04", "040")
|
8
|
-
assert_equal(::MIDIMessage::NoteOn, msg.class)
|
9
|
-
assert_equal(["0"], nibbler.rejected)
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_2_leading_chars
|
13
|
-
nibbler = Nibbler.new
|
14
|
-
msg = nibbler.parse("1", "0", "9", "04", "040")
|
15
|
-
assert_equal(["1", "0"], nibbler.rejected)
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_leading_string
|
19
|
-
nibbler = Nibbler.new
|
20
|
-
msg = nibbler.parse("10", "9", "04", "040")
|
21
|
-
assert_equal(::MIDIMessage::NoteOn, msg.class)
|
22
|
-
assert_equal(["1", "0"], nibbler.rejected)
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_long_leading_string
|
26
|
-
nibbler = Nibbler.new
|
27
|
-
msg = nibbler.parse("000001000010", "9", "04", "040")
|
28
|
-
assert_equal(::MIDIMessage::NoteOn, msg.class)
|
29
|
-
assert_equal("000001000010".split(//), nibbler.rejected)
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_long_leading_string_overlap
|
33
|
-
nibbler = Nibbler.new
|
34
|
-
msg = nibbler.parse("000001000010090", "4", "040")
|
35
|
-
assert_equal(::MIDIMessage::NoteOn, msg.class)
|
36
|
-
assert_equal("0000010000100".split(//), nibbler.rejected)
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_leading_number
|
40
|
-
nibbler = Nibbler.new
|
41
|
-
msg = nibbler.parse(0x30, "9", "04", "040")
|
42
|
-
assert_equal(::MIDIMessage::NoteOn, msg.class)
|
43
|
-
assert_equal(["3", "0"], nibbler.rejected)
|
44
|
-
end
|
45
|
-
|
46
|
-
def test_2_leading_numbers
|
47
|
-
nibbler = Nibbler.new
|
48
|
-
msg = nibbler.parse(0x60, 0x30, "9", "04", "040")
|
49
|
-
assert_equal(::MIDIMessage::NoteOn, msg.class)
|
50
|
-
assert_equal(["6", "0", "3", "0"], nibbler.rejected)
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_3_leading_numbers
|
54
|
-
nibbler = Nibbler.new
|
55
|
-
msg = nibbler.parse(0x00, 0x30, "9", "04", "040")
|
56
|
-
assert_equal(::MIDIMessage::NoteOn, msg.class)
|
57
|
-
assert_equal(["0", "0", "3", "0"], nibbler.rejected)
|
58
|
-
end
|
59
|
-
|
60
|
-
end
|