@@ -7,7 +7,7 @@ from generator.model import rational
|
||||
from generator.musicxml import MusicXMLError, load_musicxml
|
||||
from generator.musicxml_writer import write_musicxml
|
||||
from generator.practice.generate import practice_document
|
||||
from generator.transposition import transpose_document
|
||||
from generator.pitch import concert_document
|
||||
from tests.test_musicxml import parse, xml_note, xml_score
|
||||
|
||||
def chord_xml(text, kind='other', root='C', extra=''):
|
||||
@@ -54,10 +54,11 @@ class HarmonyTests(unittest.TestCase):
|
||||
self.assertEqual(chord['symbol'], label)
|
||||
self.assertTrue(chord['chord_optional'])
|
||||
self.assertTrue(chord['parenthesized'])
|
||||
practice = practice_document(source)['staves'][0]['measures'][0]['harmonies'][0]
|
||||
practice = practice_document(source, 'vocal')['staves'][0]['measures'][0]['harmonies'][0]
|
||||
self.assertNotIn('chord_optional', practice)
|
||||
self.assertEqual(harmony.symbol(practice), label)
|
||||
shifted = transpose_document(source, 'D')
|
||||
source['staves'][0]['measures'][0]['transpose'] = {'diatonic': 1, 'chromatic': 2, 'octave_change': 0}
|
||||
shifted = concert_document(source)
|
||||
result = shifted['staves'][0]['measures'][0]['harmonies'][0]
|
||||
self.assertEqual(result['symbol'], transposed)
|
||||
with tempfile.TemporaryDirectory() as temporary:
|
||||
@@ -87,7 +88,7 @@ class HarmonyTests(unittest.TestCase):
|
||||
source = parse(xml_score(chord_xml('7', 'dominant', extra='<degree><degree-value>9</degree-value><degree-alter>-1</degree-alter><degree-type>add</degree-type></degree>') + xml_note()))
|
||||
self.assertEqual(source['staves'][0]['measures'][0]['harmonies'][0]['symbol'], 'C7b9')
|
||||
def test_current_exercise_and_song_exports_import_without_edits(self):
|
||||
exercise = load_musicxml(Path('data/001.xml'))
|
||||
exercise = load_musicxml(Path('data/practice/001.xml'))
|
||||
measures = exercise['staves'][0]['measures']
|
||||
self.assertEqual(len(measures), 20)
|
||||
self.assertEqual(sum(len(n['pitches']) for m in measures for v in m['voices'] for n in v['notes']), 70)
|
||||
|
||||
Reference in New Issue
Block a user