Solo
This commit is contained in:
@@ -115,24 +115,15 @@ class HarmonicPassageTests(unittest.TestCase):
|
||||
self.assertEqual(generator.solo.types.scale_index(scale, 65) - generator.solo.types.scale_index(scale, 64), 1)
|
||||
|
||||
class PassageStateTests(unittest.TestCase):
|
||||
def test_eight_bar_cadence_carries_realized_identity_and_anchor_line(self):
|
||||
def test_source_phrases_carry_identity_and_completed_anchors(self):
|
||||
import tests.test_solo
|
||||
solo = tests.test_solo.compose(tests.test_solo.song(count=8, chords=('Gm7', 'C7', 'FM7', 'BbM7', 'Em7b5', 'A7', 'Dm7', 'Dm7')))
|
||||
self.assertEqual(len(solo.passages), 1)
|
||||
self.assertEqual((solo.passages[0].start, solo.passages[0].end), (0, 32))
|
||||
self.assertEqual([(p.plan.start, p.plan.end) for p in solo.phrases], [(0, 16), (16, 32)])
|
||||
first, second = solo.phrases
|
||||
self.assertEqual(first.plan.ending, 'connected')
|
||||
self.assertEqual(first.state.motifs, second.state.motifs[:len(first.state.motifs)])
|
||||
self.assertEqual(first.anchors, second.anchors)
|
||||
self.assertTrue(any(a.role == 'intermediate' for a in second.anchors))
|
||||
self.assertTrue(all(generator.solo.harmonic.anchor_note(a, second.state.notes) for a in second.anchors))
|
||||
heard = {m.id: m for m in second.state.motifs}
|
||||
self.assertGreaterEqual(len(heard), 5)
|
||||
for motif in list(heard.values())[1:]:
|
||||
self.assertIn(motif.parent, heard)
|
||||
self.assertTrue(motif.chord_degrees)
|
||||
self.assertTrue(generator.solo.harmonic.anchors_valid(second.anchors, solo.notes(), solo.end, complete=True, closure='closed')[0])
|
||||
self.assertEqual((solo.passages[0].start, solo.passages[-1].end), (0, 32))
|
||||
for phrase in solo.phrases:
|
||||
self.assertTrue(phrase.draft.source_phrase)
|
||||
self.assertTrue(phrase.state.home.chord_degrees)
|
||||
self.assertTrue(all(generator.solo.harmonic.anchor_note(a, phrase.state.notes) for a in phrase.anchors))
|
||||
self.assertTrue(generator.solo.harmonic.anchors_valid(phrase.anchors, phrase.state.notes, phrase.plan.end, complete=True, closure='closed')[0])
|
||||
def test_development_references_realization_instead_of_source_template(self):
|
||||
plan = tests.test_solo_development.plan()
|
||||
harmony = generator.solo.harmonic.Harmony(choices(('C7',)))
|
||||
|
||||
Reference in New Issue
Block a user