def test_height(self): # 5 lines assert_almost_equal( Staff((Mm(0), Mm(0)), Mm(100), self.flowable, staff_unit=Mm(1.5), line_count=5).height, Mm(6), ) assert_almost_equal( Staff((Mm(0), Mm(0)), Mm(100), self.flowable, staff_unit=Mm(1), line_count=5).height, Mm(4), ) # 4 lines assert_almost_equal( Staff((Mm(0), Mm(0)), Mm(100), self.flowable, staff_unit=Mm(1.5), line_count=4).height, Mm(4.5), ) assert_almost_equal( Staff((Mm(0), Mm(0)), Mm(100), self.flowable, staff_unit=Mm(1), line_count=4).height, Mm(3), )
def test_ledgers_needed_from_position_with_odd_line_count(self): staff = Staff((Mm(0), Mm(0)), Mm(100), self.flowable, line_count=5) # Inside the staff, no ledgers assert staff.ledgers_needed_for_y(staff.unit(0)) == [] assert staff.ledgers_needed_for_y(staff.unit(4)) == [] # Just outside the staff, no ledgers assert staff.ledgers_needed_for_y(staff.unit(-0.5)) == [] assert staff.ledgers_needed_for_y(staff.unit(4.5)) == [] # Right on the first ledger assert staff.ledgers_needed_for_y(staff.unit(-1)) == [staff.unit(-1)] assert staff.ledgers_needed_for_y(staff.unit(5)) == [staff.unit(5)] # Further outside with multiple ledgers, directly on lines assert staff.ledgers_needed_for_y(staff.unit(6)) == [ staff.unit(6), staff.unit(5), ] assert staff.ledgers_needed_for_y(staff.unit(-2)) == [ staff.unit(-2), staff.unit(-1), ] # Further outside with multiple ledgers, between lines assert staff.ledgers_needed_for_y(staff.unit(6.5)) == [ staff.unit(6), staff.unit(5), ] assert staff.ledgers_needed_for_y(staff.unit(-2.5)) == [ staff.unit(-2), staff.unit(-1), ]
def test_middle_c_at_with_explicit_clefs(self): staff = Staff((Mm(0), Mm(0)), Mm(100), self.flowable) Clef(staff, Mm(0), "treble") Clef(staff, Mm(10), "bass") # Test between two clefs should be in treble mode assert staff.middle_c_at(Mm(1)) == staff.unit(5) # Test after bass clef goes into effect assert staff.middle_c_at(Mm(11)) == staff.unit(-1)
def test_position_on_ledger_with_odd_line_count(self): staff = Staff((Mm(0), Mm(0)), Mm(100), self.flowable, line_count=5) assert staff.y_on_ledger(staff.unit(-1)) is True assert staff.y_on_ledger(staff.unit(-0.5)) is False assert staff.y_on_ledger(staff.unit(0)) is False assert staff.y_on_ledger(staff.unit(4)) is False assert staff.y_on_ledger(staff.unit(4.5)) is False assert staff.y_on_ledger(staff.unit(5)) is True
def setUp(self): neoscore.setup() self.staff = Staff((Mm(0), Mm(0)), Mm(100), flowable=None, staff_unit=Mm(1)) self.font = MusicFont(constants.DEFAULT_MUSIC_FONT_NAME, self.staff.unit)
def test_active_clef_at_with_explicit_clefs(self): staff = Staff((Mm(0), Mm(0)), Mm(100), self.flowable) Clef(staff, Mm(0), "treble") Clef(staff, Mm(10), "bass") # Test between two clefs should have treble in effect assert staff.active_clef_at(Mm(1)).clef_type == ClefType.TREBLE # Test after bass clef goes into effect assert staff.active_clef_at(Mm(11)).clef_type == ClefType.BASS
def setUp(self): neoscore.setup() self.flowable = Flowable((Mm(0), Mm(0)), Mm(10000), Mm(30), Mm(5)) self.staff = Staff((Mm(0), Mm(0)), Mm(5000), self.flowable) self.left_parent = MockStaffObject((Mm(0), Mm(0)), self.staff) self.right_parent = MockStaffObject((Mm(10), Mm(2)), self.staff) self.char = "gClef" self.single_repetition_width = MusicText((Mm(0), Mm(0)), self.char, self.staff, scale=2).bounding_rect.width
def test_active_transposition_at_with_octave_line_with_staff_parent(self): staff = Staff((Mm(0), Mm(0)), Mm(100), self.flowable) octave_line = OctaveLine((Mm(20), Mm(0)), staff, Mm(80), indication="8va") assert staff.active_transposition_at(Mm(0)) is None assert staff.active_transposition_at( Mm(20)) == octave_line.transposition assert staff.active_transposition_at( Mm(100)) == octave_line.transposition assert staff.active_transposition_at(Mm(101)) is None
def test_middle_c_at_with_active_octave_line(self): staff = Staff((Mm(0), Mm(0)), Mm(100), self.flowable) Clef(staff, Mm(0), "treble") octave_line = OctaveLine((Mm(20), Mm(0)), staff, Mm(80), indication="8va") # Before octave_line goes into effect assert staff.middle_c_at(Mm(0)) == staff.unit(5) # While octave_line is in effect assert staff.middle_c_at(Mm(20)) == staff.unit(8.5) assert staff.middle_c_at(Mm(100)) == staff.unit(8.5) # After octave_line ends assert staff.middle_c_at(Mm(101)) == staff.unit(5)
def test_elements_when_not_located_at_origin(self): """Regression test Ensure lines are drawn at the correct locations when staff is not positioned at (0, 0) """ staff = Staff((Mm(2), Mm(3)), Mm(10), self.flowable, staff_unit=Mm(1), line_count=5) staff._render() # Top line assert staff.elements[0].pos == Point(Mm(0), Mm(0)) assert staff.elements[0].parent == staff assert staff.elements[1].pos == Point(Mm(10), Mm(0)) assert staff.elements[1].parent == staff # Second line assert staff.elements[2].pos == Point(Mm(0), Mm(1)) assert staff.elements[2].parent == staff assert staff.elements[3].pos == Point(Mm(10), Mm(1)) assert staff.elements[3].parent == staff
def setUp(self): neoscore.setup(Paper(*[Mm(val) for val in [210, 297, 20, 20, 20, 20, 10]])) self.flowable = Flowable((Mm(0), Mm(0)), Mm(10000), Mm(30), Mm(5)) self.staff = Staff((Mm(0), Mm(0)), Mm(5000), self.flowable)
def test_active_clef_at_with_implicit_default_clef(self): staff = Staff((Mm(0), Mm(0)), Mm(100), self.flowable) assert staff.active_clef_at(Mm(5)) is None
def setUp(self): neoscore.setup() self.flowable = Flowable(Point(Mm(0), Mm(0)), Mm(10000), Mm(100)) self.staff = Staff(Point(Mm(0), Mm(0)), Mm(100), self.flowable) Clef(self.staff, Mm(0), "treble")
def setUp(self): neoscore.setup() self.flowable = Flowable((Mm(0), Mm(0)), Mm(10000), Mm(30), Mm(5)) self.staff = Staff((Mm(0), Mm(0)), Mm(5000), self.flowable) self.left_parent = MockStaffObject((Unit(0), Unit(0)), self.staff) self.right_parent = MockStaffObject((Unit(10), Unit(2)), self.staff)
def test_position_inside_staff_with_even_line_count(self): staff = Staff((Mm(0), Mm(0)), Mm(100), self.flowable, line_count=4) assert staff.y_inside_staff(staff.unit(0)) is True assert staff.y_inside_staff(staff.unit(3)) is True assert staff.y_inside_staff(staff.unit(4)) is False assert staff.y_inside_staff(staff.unit(-4)) is False
def test_middle_c_at_with_implicit_default_clef(self): staff = Staff((Mm(0), Mm(0)), Mm(100), self.flowable) with pytest.raises(NoClefError): staff.middle_c_at(Mm(5))
def setUp(self): neoscore.setup() self.staff = Staff((Mm(0), Mm(0)), Mm(100), flowable=None)
def test_distance_to_next_of_type(self): staff = Staff((Mm(10), Mm(0)), Mm(100), self.flowable) treble = Clef(staff, Mm(11), "treble") bass = Clef(staff, Mm(31), "bass") assert_almost_equal(staff.distance_to_next_of_type(treble), Mm(20)) assert_almost_equal(staff.distance_to_next_of_type(bass), Mm(100 - 31))
def setUp(self): neoscore.setup() self.flowable = Flowable((Mm(0), Mm(0)), Mm(10000), Mm(30), Mm(5)) self.staff = Staff((Mm(0), Mm(0)), Mm(10000), flowable=self.flowable) Clef(self.staff, Mm(0), "treble")
def setUp(self): neoscore.setup() self.flowable = Flowable((Mm(0), Mm(0)), Mm(10000), Mm(30), Mm(5)) self.staff_1 = Staff((Mm(0), Mm(0)), Mm(100), self.flowable) self.staff_2 = Staff((Mm(0), Mm(30)), Mm(100), self.flowable) self.staff_3 = Staff((Mm(0), Mm(50)), Mm(100), self.flowable)