+12
-14
@@ -117,20 +117,18 @@ class AuthoredKeyMetadataTests(unittest.TestCase):
|
||||
with tempfile.TemporaryDirectory() as temp:
|
||||
source, output = Path(temp) / 'source', Path(temp) / 'output'
|
||||
text = xml_score(xml_note('E', alter=-1), '<key><fifths>-3</fifths></key>')
|
||||
for practice_type in ('chord', 'melody'):
|
||||
path = source / practice_type / 'lesson' / 'exercise.xml'
|
||||
path.parent.mkdir(parents=True)
|
||||
path.write_text(text, encoding='utf-8')
|
||||
self.assertEqual(generate_practice_scores(source, output), 24)
|
||||
for practice_type in ('chord', 'melody'):
|
||||
for key in TARGET_KEYS:
|
||||
with self.subTest(practice_type=practice_type, key=key):
|
||||
result = load_json(output / practice_type / 'lesson' / 'exercise' / key_file_name(key))
|
||||
self.assertEqual(result['schema_version'], 3)
|
||||
self.assertEqual(result['metadata']['authored_key_signature'], 'Eb')
|
||||
self.assertEqual(result['metadata']['key_signature'], key)
|
||||
self.assertEqual(result['metadata']['variant_tonic'], key)
|
||||
self.assertEqual((source / practice_type / 'lesson' / 'exercise.xml').read_text(encoding='utf-8'), text)
|
||||
source.mkdir()
|
||||
path = source / '001.xml'
|
||||
path.write_text(text, encoding='utf-8')
|
||||
self.assertEqual(generate_practice_scores(source, output), 12)
|
||||
for key in TARGET_KEYS:
|
||||
with self.subTest(key=key):
|
||||
result = load_json(output / '001' / key_file_name(key))
|
||||
self.assertEqual(result['schema_version'], 3)
|
||||
self.assertEqual(result['metadata']['authored_key_signature'], 'Eb')
|
||||
self.assertEqual(result['metadata']['key_signature'], key)
|
||||
self.assertEqual(result['metadata']['variant_tonic'], key)
|
||||
self.assertEqual(path.read_text(encoding='utf-8'), text)
|
||||
def test_modes_and_keyless_authored_labels_survive_variants(self):
|
||||
for mode, fifths, label in [('minor', -3, 'C minor'), ('dorian', -2, 'C dorian'), ('mixolydian', -1, 'C mixolydian'), ('none', 0, 'No key')]:
|
||||
source = parse(xml_score(xml_note(), f'<key><fifths>{fifths}</fifths><mode>{mode}</mode></key>'))
|
||||
|
||||
Reference in New Issue
Block a user