void TestClefCourtesy::clef_courtesy02() { Score* score = readScore(DIR + "clef_courtesy02.mscx"); score->doLayout(); // 'go' to 4th measure Measure* m1 = score->firstMeasure(); for (int i=0; i < 3; i++) m1 = m1->nextMeasure(); // make a clef-drop object and drop it to the measure Clef* clef = new Clef(score); // create a new element, as Measure::drop() will eventually delete it clef->setClefType(ClefType::G1); DropData dropData; dropData.pos = m1->pagePos(); dropData.element = clef; m1->drop(dropData); // 'go' to 7th measure Measure* m2 = m1; for (int i=0; i < 3; i++) m2 = m2->nextMeasure(); // make a clef-drop object and drop it to the measure clef = new Clef(score); // create a new element, as Measure::drop() will eventually delete it clef->setClefType(ClefType::G); dropData.pos = m2->pagePos(); dropData.element = clef; m2->drop(dropData); score->doLayout(); // check both clef elements are there, but none is shown Clef* clefCourt = nullptr; Measure* m = m1->prevMeasure(); Segment* seg = m->findSegment(SegmentType::Clef, m1->tick()); QVERIFY2(seg != nullptr, "No SegClef in measure 3."); clefCourt = static_cast<Clef*>(seg->element(0)); QVERIFY2(clefCourt != nullptr, "No courtesy clef element in measure 3."); QVERIFY2(clefCourt->bbox().width() == 0, "Courtesy clef in measure 3 is NOT hidden."); clefCourt = nullptr; m = m2->prevMeasure(); seg = m->findSegment(SegmentType::Clef, m2->tick()); QVERIFY2(seg != nullptr, "No SegClef in measure 6."); clefCourt = static_cast<Clef*>(seg->element(0)); QVERIFY2(clefCourt != nullptr, "No courtesy clef element in measure 6."); QVERIFY2(clefCourt->bbox().width() == 0, "Courtesy clef in measure 3 is NOT hidden."); QVERIFY(saveCompareScore(score, "clef_courtesy02.mscx", DIR + "clef_courtesy02-ref.mscx")); delete score; }