void TestMeasure::gap() { MasterScore* score = readScore(DIR + "gaps.mscx"); Element* tst = 0; //Select and delete third quarter rest in first Measure (voice 2) score->startCmd(); Measure* m = score->firstMeasure(); Segment* s = m->undoGetSegment(SegmentType::ChordRest, Fraction::fromTicks(960)); Element* el = s->element(1); score->select(el); score->cmdDeleteSelection(); score->endCmd(); tst = s->element(1); Q_ASSERT(tst); QVERIFY(tst->isRest() && toRest(tst)->isGap() /*&& toRest(tst)->durationType() == TDuration::DurationType::V_QUARTER*/); //Select and delete second quarter rest in third Measure (voice 4) score->startCmd(); m = m->nextMeasure()->nextMeasure(); s = m->undoGetSegment(SegmentType::ChordRest, Fraction::fromTicks(4320)); el = s->element(3); score->select(el); score->cmdDeleteSelection(); score->endCmd(); tst = s->element(3); Q_ASSERT(tst); QVERIFY(tst->isRest() && toRest(tst)->isGap() /*&& toRest(tst)->durationType() == TDuration::DurationType::V_QUARTER*/); //Select and delete first quarter rest in third Measure (voice 4) score->startCmd(); s = m->undoGetSegment(SegmentType::ChordRest, Fraction::fromTicks(3840)); el = s->element(3); score->select(el); score->cmdDeleteSelection(); score->endCmd(); tst = s->element(3); Q_ASSERT(tst); QVERIFY(tst->isRest() && toRest(tst)->isGap() && toRest(tst)->actualTicks() == Fraction::fromTicks(960) /*&& toRest(tst)->durationType() == TDuration::DurationType::V_HALF*/ ); delete score; }
void TestMeasure::undoDelInitialVBox_269919() { MasterScore* score = readScore(DIR + "undoDelInitialVBox_269919.mscx"); // 1. delete initial VBox score->startCmd(); MeasureBase* initialVBox = score->measure(0); score->select(initialVBox); score->cmdDeleteSelection(); score->endCmd(); // 2. change duration of first chordrest score->startCmd(); Measure* m = score->firstMeasure(); ChordRest* cr = m->findChordRest(Fraction(0,1), 0); Fraction quarter(4, 1); score->changeCRlen(cr, quarter); score->endCmd(); // 3. Undo to restore first chordrest score->undoRedo(true, 0); // 4. Undo to restore initial VBox resulted in assert failure crash score->undoRedo(true, 0); QVERIFY(saveCompareScore(score, "undoDelInitialVBox_269919.mscx", DIR + "undoDelInitialVBox_269919-ref.mscx")); delete score; }
void TestChordSymbol::testClear() { MasterScore* score = test_pre("clear"); Measure* m = score->firstMeasure(); score->select(m, SelectType::SINGLE, 0); score->cmdDeleteSelection(); score->doLayout(); test_post(score, "clear"); }
void TestMeasure::spanner_A() { MasterScore* score = readScore(DIR + "measure-6.mscx"); score->select(score->firstMeasure()); score->startCmd(); score->localTimeDelete(); score->endCmd(); score->doLayout(); QVERIFY(saveCompareScore(score, "measure-6.mscx", DIR + "measure-6-ref.mscx")); delete score; }
void TestMeasure::spanner_C() { MasterScore* score = readScore(DIR + "measure-8.mscx"); Measure* m = score->firstMeasure()->nextMeasure(); score->select(m); score->startCmd(); score->localTimeDelete(); score->endCmd(); QVERIFY(saveCompareScore(score, "measure-8.mscx", DIR + "measure-8-ref.mscx")); delete score; }
void TestMeasure::deleteLast() { MasterScore* score = readScore(DIR + "measure-10.mscx"); score->startCmd(); Measure* m = score->lastMeasure(); score->select(m); score->cmdTimeDelete(); score->endCmd(); QVERIFY(saveCompareScore(score, "measure-10.mscx", DIR + "measure-10-ref.mscx")); delete score; }
void TestNote::tpcTranspose() { MasterScore* score = readScore(DIR + "tpc-transpose.mscx"); score->startCmd(); Measure* m = score->firstMeasure(); score->select(m, SelectType::SINGLE, 0); score->changeAccidental(AccidentalType::FLAT); score->endCmd(); score->startCmd(); m = m->nextMeasure(); score->select(m, SelectType::SINGLE, 0); score->upDown(false, UpDownMode::CHROMATIC); score->endCmd(); score->startCmd(); score->cmdConcertPitchChanged(true, true); score->endCmd(); QVERIFY(saveCompareScore(score, "tpc-transpose-test.mscx", DIR + "tpc-transpose-ref.mscx")); }
void TestNote::grace() { MasterScore* score = readScore(DIR + "grace.mscx"); score->doLayout(); Ms::Chord* chord = score->firstMeasure()->findChord(0, 0); Note* note = chord->upNote(); // create score->setGraceNote(chord, note->pitch(), NoteType::APPOGGIATURA, MScore::division/2); Ms::Chord* gc = chord->graceNotes().first(); Note* gn = gc->notes().front(); // Note* n = static_cast<Note*>(writeReadElement(gn)); // QCOMPARE(n->noteType(), NoteType::APPOGGIATURA); // delete n; // tie score->select(gn); score->cmdAddTie(); // n = static_cast<Note*>(writeReadElement(gn)); // QVERIFY(n->tieFor() != 0); // delete n; // tremolo score->startCmd(); Tremolo* tr = new Tremolo(score); tr->setTremoloType(TremoloType::R16); tr->setParent(gc); tr->setTrack(gc->track()); score->undoAddElement(tr); score->endCmd(); // Ms::Chord* c = static_cast<Ms::Chord*>(writeReadElement(gc)); // QVERIFY(c->tremolo() != 0); // delete c; // articulation score->startCmd(); Articulation* ar = new Articulation(SymId::articAccentAbove, score); ar->setParent(gc); ar->setTrack(gc->track()); score->undoAddElement(ar); score->endCmd(); // c = static_cast<Ms::Chord*>(writeReadElement(gc)); // QVERIFY(c->articulations().size() == 1); // delete c; QVERIFY(saveCompareScore(score, "grace-test.mscx", DIR + "grace-ref.mscx")); }
void TestSpanners::spanners12() { MasterScore* score = readScore(DIR + "lyricsline05.mscx"); QVERIFY(score); score->doLayout(); // DELETE SECOND MEASURE AND VERIFY Measure* msr = score->firstMeasure(); QVERIFY(msr); msr = msr->nextMeasure(); QVERIFY(msr); score->startCmd(); score->select(msr); score->cmdTimeDelete(); score->endCmd(); QVERIFY(saveCompareScore(score, "lyricsline05.mscx", DIR + "lyricsline05-ref.mscx")); // UNDO AND VERIFY score->undoStack()->undo(); QVERIFY(saveCompareScore(score, "lyricsline05.mscx", DIR + "lyricsline05.mscx")); delete score; }
void TestLinks::test5LinkedParts_94911() { MCursor c; c.setTimeSig(Fraction(4,4)); c.createScore("test"); c.addPart("electric-guitar"); c.move(0, 0); // move to track 0 tick 0 c.addKeySig(Key(1)); c.addTimeSig(Fraction(4,4)); c.addChord(60, TDuration(TDuration::DurationType::V_WHOLE)); MasterScore* score = c.score(); score->addText("title", "Title"); score->doLayout(); // delete chord Measure* m = score->firstMeasure(); Segment* s = m->first(Segment::Type::ChordRest); Element* e = s->element(0); QVERIFY(e->type() == ElementType::CHORD); score->select(e); score->cmdDeleteSelection(); e = s->element(0); QVERIFY(e->type() == ElementType::REST); QVERIFY(e->links() == nullptr); // create parts// score->startCmd(); QList<Part*> parts; parts.append(score->parts().at(0)); Score* nscore = new Score(score); Excerpt ex(score); ex.setPartScore(nscore); ex.setTitle("Guitar"); ex.setParts(parts); Excerpt::createExcerpt(&ex); QVERIFY(nscore); score->undo(new AddExcerpt(&ex)); score->endCmd(); // we should have now 1 staff and 2 linked rests QVERIFY(score->staves().size() == 1); e = s->element(0); QVERIFY(e->type() == ElementType::REST); QVERIFY(e->links()->size() == 2); // add a linked staff score->startCmd(); Staff* oStaff = score->staff(0); Staff* staff = new Staff(score); staff->setPart(oStaff->part()); score->undoInsertStaff(staff, 1); Excerpt::cloneStaff(oStaff, staff); score->endCmd(); // we should have now 2 staves and 3 linked rests QCOMPARE(score->staves().size(), 2); QCOMPARE(nscore->staves().size(), 1); QVERIFY(score->staves()[0]->linkedStaves()->staves().size() == 3); e = s->element(0); QVERIFY(e->type() == ElementType::REST); QVERIFY(e->links()->size() == 3); e = s->element(4); QVERIFY(e->type() == ElementType::REST); QVERIFY(e->links()->size() == 3); QVERIFY(score->excerpts().size() == 1); // undo score->undoStack()->undo(); // we should have now 1 staves and 2 linked rests QVERIFY(score->staves().size() == 1); QVERIFY(score->staves()[0]->linkedStaves()->staves().size() == 2); e = s->element(0); QVERIFY(e->type() == ElementType::REST); QVERIFY(e->links()->size() == 2); QVERIFY(score->excerpts().size() == 1); // redo score->undoStack()->redo(); // we should have now 2 staves and 3 linked rests QVERIFY(score->staves().size() == 2); QVERIFY(score->staves()[0]->linkedStaves()->staves().size() == 3); e = s->element(0); QVERIFY(e->type() == ElementType::REST); QVERIFY(e->links()->size() == 3); e = s->element(4); QVERIFY(e->type() == ElementType::REST); QVERIFY(e->links()->size() == 3); QVERIFY(score->excerpts().size() == 1); }