@@ -93,10 +93,10 @@ class ThemeProduction(unittest.TestCase):
|
||||
for phrase in self.solo.phrases:
|
||||
self.assertTrue(drafts.contract_valid(phrase.draft,composer.phrase_notes(phrase))[0])
|
||||
self.assertFalse(similarity.near_copy(phrase.refined.notes,themes.source_notes(self.analysis),phrase.plan.start,phrase.plan.end)['near_copy'])
|
||||
self.assertEqual(self.solo.phrases[0].plan.closure,'open')
|
||||
self.assertTrue(all(a.role=='intermediate' for a in self.solo.phrases[0].anchors))
|
||||
self.assertEqual(self.solo.phrases[0].plan.closure,'closed')
|
||||
self.assertTrue(all(a.duration>=2 for a in self.solo.phrases[0].anchors))
|
||||
self.assertEqual(self.solo.phrases[-1].anchors[-1].role,'terminal')
|
||||
self.assertTrue(any(t.operation=='repeat_with_harmonic_adaptation' for p in self.solo.phrases for t in p.draft.transformations))
|
||||
self.assertTrue(any(t.operation in ('develop_contour','develop_rhythm','continue','return') for p in self.solo.phrases for t in p.draft.transformations))
|
||||
|
||||
def test_library_routes_match_the_actual_complete_theme(self):
|
||||
self.assertTrue(any(p.routes for p in self.solo.phrases))
|
||||
@@ -108,6 +108,17 @@ class ThemeProduction(unittest.TestCase):
|
||||
self.assertEqual((note.start,note.end,note.pitch),(actual.start,actual.end,actual.pitch))
|
||||
self.assertEqual(route.notes[-1].pitch,route.destination.pitch)
|
||||
|
||||
def test_report_can_compare_a_source_hold_cut_by_new_phrase_boundaries(self):
|
||||
from generator.solo import report
|
||||
phrases=[]
|
||||
for i,p in enumerate(self.solo.phrases):
|
||||
held=notes_fixture.note(p.plan.start,p.plan.end,'c',event_id='source_hold',continuation=i>0)
|
||||
phrases.append(dataclasses.replace(p,initial=dataclasses.replace(p.initial,notes=(held,))))
|
||||
solo=dataclasses.replace(self.solo,phrases=tuple(phrases))
|
||||
detail=report.structure(solo)
|
||||
self.assertEqual(len(detail['phrases']),len(phrases))
|
||||
self.assertTrue(phrases[-1].initial.notes[0].continuation)
|
||||
|
||||
def test_incoming_pitch_changes_concrete_continuation_pool(self):
|
||||
harmony=harmonic.Harmony(self.solo.choices)
|
||||
home=self.solo.phrases[0].state.home
|
||||
|
||||
Reference in New Issue
Block a user