+10
-11
@@ -1,3 +1,5 @@
|
||||
import generator.score_io
|
||||
import generator.validation
|
||||
import copy
|
||||
import fractions
|
||||
import pathlib
|
||||
@@ -14,9 +16,6 @@ import generator.fretboard
|
||||
import generator.guitar
|
||||
import generator.harmony
|
||||
import generator.model
|
||||
import generator.score
|
||||
import generator.solo.analysis
|
||||
import generator.solo.placement
|
||||
import tests.solo_fixtures
|
||||
import tests.test_acoustic_voicing
|
||||
import tests.test_musicxml
|
||||
@@ -97,7 +96,7 @@ class FretPolicyTests(unittest.TestCase):
|
||||
self.assertFalse(generator.fretboard.span_penalty((position(4, 5), position(3, 6))))
|
||||
before = tests.score_events.timeline(source)
|
||||
generator.guitar.place_guitar(source)
|
||||
generator.model.validate_document(source)
|
||||
generator.validation.validate_document(source)
|
||||
generator.fretboard.validate_document(source)
|
||||
self.assertEqual(tests.score_events.timeline(source), before)
|
||||
self.assertEqual([p['tablature'] for p in measure['voices'][0]['notes'][0]['pitches']], [{'string': 4, 'fret': 5}, {'string': 2, 'fret': 2}])
|
||||
@@ -114,7 +113,7 @@ class FretPolicyTests(unittest.TestCase):
|
||||
states = generator.guitar.advance_positions([n], fractions.Fraction(2 * i), tones, states, True)
|
||||
self.assertEqual(min(s.cost for s in states.values()).extended_grips, 1)
|
||||
generator.guitar.place_guitar(source)
|
||||
generator.model.validate_document(source)
|
||||
generator.validation.validate_document(source)
|
||||
generator.fretboard.validate_document(source)
|
||||
self.assertEqual([p['tablature'] for p in pieces[0]['pitches']], [p['tablature'] for p in pieces[1]['pitches']])
|
||||
# Removing the low anchor early still leaves an illegal high single tail.
|
||||
@@ -151,7 +150,7 @@ class FretPolicyTests(unittest.TestCase):
|
||||
source = document(tuple(position(s, f) for s, f in zip((2, 1), frets)))
|
||||
if valid:
|
||||
generator.guitar.place_guitar(source)
|
||||
generator.model.validate_document(source)
|
||||
generator.validation.validate_document(source)
|
||||
generator.fretboard.validate_document(source)
|
||||
else:
|
||||
with self.assertRaises(ValueError):
|
||||
@@ -162,7 +161,7 @@ class FretPolicyTests(unittest.TestCase):
|
||||
source = document((position(2, 12), position(1, 14)))
|
||||
anchor = tests.test_musicxml.notes(source)[0]['pitches'][0]
|
||||
anchor.update(duration=generator.model.rational(2), written=generator.model.written_for(fractions.Fraction(2)))
|
||||
generator.model.validate_document(source)
|
||||
generator.validation.validate_document(source)
|
||||
with self.assertRaisesRegex(ValueError, 'held/tied tails'):
|
||||
generator.fretboard.validate_document(source)
|
||||
with self.assertRaisesRegex(ValueError, 'no guitar placement'):
|
||||
@@ -175,12 +174,12 @@ class FretPolicyTests(unittest.TestCase):
|
||||
a['tie_to'], b['tie_from'] = b['id'], a['id']
|
||||
source['staves'][0]['measures'][0]['voices'][0]['notes'] = split
|
||||
generator.guitar.place_guitar(source)
|
||||
generator.model.validate_document(source)
|
||||
generator.validation.validate_document(source)
|
||||
generator.fretboard.validate_document(source)
|
||||
self.assertEqual([p['tablature'] for p in split[0]['pitches']], [p['tablature'] for p in split[1]['pitches']])
|
||||
split[0]['pitches'][0].pop('tie_to')
|
||||
split[1]['pitches'].pop(0)
|
||||
generator.model.validate_document(source)
|
||||
generator.validation.validate_document(source)
|
||||
with self.assertRaisesRegex(ValueError, 'held/tied tails'):
|
||||
generator.fretboard.validate_document(source)
|
||||
def test_another_voice_cannot_supply_a_single_notes_anchor(self):
|
||||
@@ -221,9 +220,9 @@ class FretPolicyTests(unittest.TestCase):
|
||||
target = document(tuple(position(s, 12) for s in (3, 2, 1)))
|
||||
reference, note = tests.test_musicxml.notes(source)[0], tests.test_musicxml.notes(target)[0]
|
||||
generator.electric.reuse_voicings([generator.electric.VoicingLink(note, (reference,))])
|
||||
generator.model.validate_document(target)
|
||||
generator.validation.validate_document(target)
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
output = pathlib.Path(directory) / 'score.json'
|
||||
with self.assertRaisesRegex(ValueError, 'each sounding chord requires an anchor'):
|
||||
generator.score.write_json(output, target)
|
||||
generator.score_io.write_json(output, target)
|
||||
self.assertFalse(output.exists())
|
||||
|
||||
Reference in New Issue
Block a user