@@ -0,0 +1,20 @@
|
||||
"""Exact role scores protect musical choices, notation, IDs and tablature."""
|
||||
import generator.composition_types
|
||||
import generator.composition
|
||||
import generator.source
|
||||
import json
|
||||
import pathlib
|
||||
import unittest
|
||||
|
||||
import tests.solo_fixtures
|
||||
|
||||
class OutputContract(unittest.TestCase):
|
||||
def test_complete_roles_including_learned_fallback_match_reviewed_output(self):
|
||||
root = pathlib.Path(__file__).resolve().parents[1]
|
||||
expected = json.loads((root / 'tests/fixtures/role_outputs.json').read_text())
|
||||
source = generator.source.SourceAnalysis.read(tests.solo_fixtures.song(count=2, chords=('Dm7', 'G7')))
|
||||
for role in generator.composition_types.ROLES:
|
||||
with self.subTest(role=role):
|
||||
settings = {'predict': True} if role.endswith('_solo') else {}
|
||||
actual = generator.composition.generate_role(source, role, root / 'data', settings)['document']
|
||||
self.assertEqual(actual, expected[role])
|
||||
Reference in New Issue
Block a user