History

python/lib/aubio/midiconv.py: improve unicode handling, skip UnicodeEncodeError on python 2.x

Paul Brossier committed 9 years ago

Commit 3aad0b11 parent d5543212 files · +50 −10Browse files

Showing the changes to python/tests (1 of 2 files). Show all

Unified · Split

python/tests/test_note2midi.py+43−5
@@ -14,21 +14,36 @@ list_of_known_notes = ( · 13 unmodified lines
14 ( 'C3', 48 ),14 ( 'C3', 48 ),
15 ( 'B3', 59 ),15 ( 'B3', 59 ),
16 ( 'B#3', 60 ),16 ( 'B#3', 60 ),
17 ( 'C\u266f4', 61 ),17 ( 'C♯4', 61 ),
18 ( 'C\U0001D12A4', 62 ),
19 ( 'E\U0001D12B4', 62 ),
20 ( 'A4', 69 ),18 ( 'A4', 69 ),
21 ( 'A#4', 70 ),19 ( 'A#4', 70 ),
20 ( 'A♯4', 70 ),
21 ( 'A\u266f4', 70 ),
22 ( 'Bb4', 70 ),22 ( 'Bb4', 70 ),
23 ( 'B♭4', 70 ),23 ( 'B♭4', 70 ),
24 ( 'B\u266d4', 70 ),
24 ( 'G8', 115 ),25 ( 'G8', 115 ),
25 ( 'G♯8', 116 ),26 ( 'G♯8', 116 ),
26 ( 'G9', 127 ),27 ( 'G9', 127 ),
27 ( 'G\udd2a2', 45 ),
28 ( 'B\ufffd2', 45 ),
29 ( 'A♮2', 45 ),28 ( 'A♮2', 45 ),
30 )29 )
31 30
31list_of_known_notes_with_unicode_issues = (
32 ('C𝄪4', 62 ),
33 ('E𝄫4', 62 ),
34 )
35
36list_of_unknown_notes = (
37 ( 'G\udd2a2' ),
38 ( 'B\ufffd2' ),
39 ( 'B\u266e\u266e2' ),
40 ( 'B\u266f\u266d3' ),
41 ( 'B33' ),
42 ( 'C.3' ),
43 ( 'A' ),
44 ( '2' ),
45 )
46
32class note2midi_good_values(unittest.TestCase):47class note2midi_good_values(unittest.TestCase):
33 48
34 @params(*list_of_known_notes)49 @params(*list_of_known_notes)
@@ -36,6 +51,21 @@ class note2midi_good_values(unittest.TestCase): · 1 unmodified line
36 " known values are correctly converted "51 " known values are correctly converted "
37 self.assertEqual ( note2midi(note), midi )52 self.assertEqual ( note2midi(note), midi )
38 53
54 @params(*list_of_known_notes_with_unicode_issues)
55 def test_note2midi_known_values_with_unicode_issues(self, note, midi):
56 " known values are correctly converted, unless decoding is expected to fail"
57 try:
58 self.assertEqual ( note2midi(note), midi )
59 except UnicodeEncodeError as e:
60 import sys
61 strfmt = "len(u'\\U0001D12A') != 1, excpected decoding failure | {:s} | {:s} {:s}"
62 strres = strfmt.format(e, sys.platform, sys.version)
63 # happens with: darwin 2.7.10, windows 2.7.12
64 if len('\U0001D12A') != 1 and sys.version[0] == '2':
65 self.skipTest(strres + " | upgrade to Python 3 to fix")
66 else:
67 raise
68
39class note2midi_wrong_values(unittest.TestCase):69class note2midi_wrong_values(unittest.TestCase):
40 70
41 def test_note2midi_missing_octave(self):71 def test_note2midi_missing_octave(self):
@@ -70,6 +100,14 @@ class note2midi_wrong_values(unittest.TestCase): · 28 unmodified lines
70 " fails when passed a non-string value "100 " fails when passed a non-string value "
71 self.assertRaises(TypeError, note2midi, 123)101 self.assertRaises(TypeError, note2midi, 123)
72 102
103 def test_note2midi_wrong_data_too_long(self):
104 " fails when passed a note with a note name longer than expected"
105 self.assertRaises(ValueError, note2midi, 'CB+-3')
106
107 @params(*list_of_unknown_notes)
108 def test_note2midi_unknown_values(self, note):
109 " unknown values throw out an error "
110 self.assertRaises(ValueError, note2midi, note)
73 111
74class freq2note_simple_test(unittest.TestCase):112class freq2note_simple_test(unittest.TestCase):
75 113

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t