22 lines
1.0 KiB
Python
22 lines
1.0 KiB
Python
import json
|
|
import pathlib
|
|
import tempfile
|
|
import unittest
|
|
|
|
import generator.arrange.generate
|
|
import tests.rhythm_fixtures
|
|
import tests.test_musicxml
|
|
|
|
class CatalogTests(unittest.TestCase):
|
|
def test_songs_generate_only_authored_key_parts(self):
|
|
with tempfile.TemporaryDirectory() as temporary:
|
|
source, output = pathlib.Path(temporary) / 'songs', pathlib.Path(temporary) / 'output'
|
|
source.mkdir()
|
|
(source / 'song.xml').write_text(tests.test_musicxml.xml_score(tests.test_musicxml.xml_note('E', alter=-1), '<key><fifths>-3</fifths></key>'))
|
|
self.assertEqual(generator.arrange.generate.generate_performance_scores(source, output, rhythms=tests.rhythm_fixtures.library()), 3)
|
|
self.assertEqual({p.name for p in output.iterdir()}, {'song-acoustic.json', 'song-electric.json', 'song-vocal.json'})
|
|
for path in output.iterdir():
|
|
metadata = json.loads(path.read_text())['metadata']
|
|
self.assertEqual(metadata['key_signature'], 'Eb')
|
|
self.assertNotIn('variant_tonic', metadata)
|