@@ -49,6 +49,7 @@ class EngravingTests(unittest.TestCase):
|
||||
def assert_paired_pages(self, layout):
|
||||
self.assertTrue(all(len(page.systems) == 2 for page in layout.pages[:-1]))
|
||||
self.assertIn(len(layout.pages[-1].systems), (1, 2))
|
||||
self.assertEqual(len({system.scale for page in layout.pages for system in page.systems}), 1)
|
||||
for page in layout.pages:
|
||||
self.assertEqual(len({system.scale for system in page.systems}), 1)
|
||||
for system in page.systems:
|
||||
@@ -59,6 +60,34 @@ class EngravingTests(unittest.TestCase):
|
||||
self.assertAlmostEqual(max(x for p in lines for x, _ in p.points), page.width - layout.style.margin_x - 1)
|
||||
for first, second in zip(page.systems, page.systems[1:]):
|
||||
self.assertGreaterEqual(second.box.top - first.box.bottom, layout.style.system_gap - 0.001)
|
||||
def test_titles_sections_and_tempos_do_not_change_size_between_pages(self):
|
||||
source = tests.test_musicxml.parse(tests.test_accompaniment.xml_bars([tests.test_musicxml.xml_note()] * 40))
|
||||
source['metadata']['composer'] = 'Composer'
|
||||
for index in (0, 9, 18, 27):
|
||||
measure = source['staves'][0]['measures'][index]
|
||||
measure['section_label'] = f'Section {index}'
|
||||
measure['tempos'] = [{'onset': generator.model.rational(fractions.Fraction(1, 2)), 'written': {'type': 'quarter', 'dots': 0}, 'bpm': generator.model.rational(124)}]
|
||||
layout = self.layout(source)
|
||||
self.assertGreater(len(layout.pages), 2)
|
||||
self.assert_paired_pages(layout)
|
||||
self.assertEqual(layout.pages[0].systems[0].scale, 1)
|
||||
self.assertEqual(self.primitives(layout, 'tempo'), [])
|
||||
self.assertEqual(len(self.primitives(layout, 'section')), 4)
|
||||
self.assertEqual(len(self.primitives(layout, 'subtitle')), len(layout.pages))
|
||||
without_tempos = copy.deepcopy(source)
|
||||
for measure in without_tempos['staves'][0]['measures']:
|
||||
measure.pop('tempos', None)
|
||||
self.assertEqual(layout, self.layout(without_tempos))
|
||||
self.assertEqual(generator.playback.compile_timeline(source), generator.playback.compile_timeline(without_tempos))
|
||||
def test_long_credits_wrap_without_overflow_or_page_specific_sizing(self):
|
||||
source = tests.test_musicxml.parse(tests.test_accompaniment.xml_bars([tests.test_musicxml.xml_note()] * 32))
|
||||
source['metadata']['composer'] = 'A moderately long composer credit ' * 6
|
||||
layout = self.layout(source)
|
||||
self.assert_paired_pages(layout)
|
||||
header = [p for p in layout.pages[0].primitives if p.role in ('title', 'subtitle')]
|
||||
self.assertGreater(len(header), 2)
|
||||
for page in layout.pages:
|
||||
self.assertEqual(header, [p for p in page.primitives if p.role in ('title', 'subtitle')])
|
||||
def test_guitar_pages_always_pair_systems_including_tall_passages(self):
|
||||
content = tests.test_musicxml.xml_note('E', octave=5)
|
||||
source = tests.test_musicxml.parse(tests.test_accompaniment.xml_bars([content] * 32))
|
||||
|
||||
Reference in New Issue
Block a user