void VCCueList_Test::functionRemoved() { QWidget w; VCCueList cl(&w, m_doc); Chaser* c = createChaser(m_doc); cl.setChaser(c->id()); // Chaser members are removed from list m_doc->deleteFunction(c->steps().first().fid); QCOMPARE(cl.m_tree->topLevelItemCount(), 4); // deferred changes arrive afetr 100ms QTest::qWait(150); QCOMPARE(cl.m_tree->topLevelItemCount(), 3); QCOMPARE(cl.m_tree->topLevelItem(0)->text(0), QString("1")); QCOMPARE(cl.m_tree->topLevelItem(1)->text(0), QString("2")); QCOMPARE(cl.m_tree->topLevelItem(2)->text(0), QString("3")); QCOMPARE(cl.m_tree->topLevelItem(0)->text(1), QString("Second")); QCOMPARE(cl.m_tree->topLevelItem(1)->text(1), QString("Third")); QCOMPARE(cl.m_tree->topLevelItem(2)->text(1), QString("Fourth")); // Chaser is removed completely m_doc->deleteFunction(c->id()); QCOMPARE(cl.m_tree->topLevelItemCount(), 0); QCOMPARE(cl.chaserID(), Function::invalidId()); }
void VCCueList_Test::keyboardNextPrevious() { QWidget w; VCCueList cl(&w, m_doc); Chaser* c = createChaser(m_doc); c->setDuration(Function::infiniteSpeed()); cl.setChaser(c->id()); cl.setNextKeySequence(QKeySequence(keySequenceB)); cl.setPreviousKeySequence(QKeySequence(keySequenceA)); cl.setPlaybackKeySequence(QKeySequence(keySequenceD)); // Switch mode m_doc->setMode(Doc::Operate); MasterTimer* timer = m_doc->masterTimer(); // Next keyboard key cl.slotKeyPressed(QKeySequence(keySequenceB)); timer->timerTick(); //QCOMPARE(cl.m_runner->currentStepIndex(), 0); QCOMPARE(cl.m_tree->indexOfTopLevelItem(cl.m_tree->currentItem()), 0); // Next keyboard key cl.slotKeyPressed(QKeySequence(keySequenceB)); timer->timerTick(); //QCOMPARE(cl.m_runner->currentStepIndex(), 1); QCOMPARE(cl.m_tree->indexOfTopLevelItem(cl.m_tree->currentItem()), 1); // Unrecognized keyboard key cl.slotKeyPressed(QKeySequence(QKeySequence::SelectAll)); timer->timerTick(); //QCOMPARE(cl.m_runner->currentStepIndex(), 1); QCOMPARE(cl.m_tree->indexOfTopLevelItem(cl.m_tree->currentItem()), 1); // Previous keyboard key cl.slotKeyPressed(QKeySequence(keySequenceA)); timer->timerTick(); //QCOMPARE(cl.m_runner->currentStepIndex(), 0); QCOMPARE(cl.m_tree->indexOfTopLevelItem(cl.m_tree->currentItem()), 0); // Previous keyboard key cl.slotKeyPressed(QKeySequence(keySequenceA)); timer->timerTick(); //QCOMPARE(cl.m_runner->currentStepIndex(), 3); QCOMPARE(cl.m_tree->indexOfTopLevelItem(cl.m_tree->currentItem()), 3); // Next keyboard key cl.slotKeyPressed(QKeySequence(keySequenceB)); timer->timerTick(); //QCOMPARE(cl.m_runner->currentStepIndex(), 0); QCOMPARE(cl.m_tree->indexOfTopLevelItem(cl.m_tree->currentItem()), 0); // Playback cl.slotKeyPressed(QKeySequence(keySequenceD)); timer->timerTick(); //QVERIFY(cl.m_runner == NULL); QCOMPARE(cl.m_tree->indexOfTopLevelItem(cl.m_tree->currentItem()), 0); }
void Doc_Test::addFunction() { Doc doc(this, m_fixtureDefCache); QVERIFY(doc.m_functionAllocation == 0); Scene* s = new Scene(&doc); QVERIFY(s->id() == Function::invalidId()); QVERIFY(doc.addFunction(s) == true); QVERIFY(s->id() == 0); QVERIFY(doc.m_functionAllocation == 1); QVERIFY(doc.isModified() == true); doc.resetModified(); Chaser* c = new Chaser(&doc); QVERIFY(c->id() == Function::invalidId()); QVERIFY(doc.addFunction(c) == true); QVERIFY(c->id() == 1); QVERIFY(doc.m_functionAllocation == 2); QVERIFY(doc.isModified() == true); doc.resetModified(); Collection* o = new Collection(&doc); QVERIFY(o->id() == Function::invalidId()); QVERIFY(doc.addFunction(o, 0) == false); QVERIFY(doc.isModified() == false); QVERIFY(o->id() == Function::invalidId()); QVERIFY(doc.m_functionAllocation == 2); QVERIFY(doc.addFunction(o, 2) == true); QVERIFY(o->id() == 2); QVERIFY(doc.m_functionAllocation == 3); QVERIFY(doc.isModified() == true); doc.resetModified(); EFX* e = new EFX(&doc); QVERIFY(e->id() == Function::invalidId()); QVERIFY(doc.addFunction(e, KFunctionArraySize) == false); QVERIFY(e->id() == Function::invalidId()); QVERIFY(doc.addFunction(e) == true); QVERIFY(e->id() == 3); QVERIFY(doc.m_functionAllocation == 4); QVERIFY(doc.isModified() == true); }
void Doc_Test::addFunction() { QVERIFY(m_doc->functions().size() == 0); Scene* s = new Scene(m_doc); QVERIFY(s->id() == Function::invalidId()); QVERIFY(m_doc->addFunction(s) == true); QVERIFY(s->id() == 0); QVERIFY(m_doc->functions().size() == 1); QVERIFY(m_doc->isModified() == true); m_doc->resetModified(); Chaser* c = new Chaser(m_doc); QVERIFY(c->id() == Function::invalidId()); QVERIFY(m_doc->addFunction(c) == true); QVERIFY(c->id() == 1); QVERIFY(m_doc->functions().size() == 2); QVERIFY(m_doc->isModified() == true); m_doc->resetModified(); Collection* o = new Collection(m_doc); QVERIFY(o->id() == Function::invalidId()); QVERIFY(m_doc->addFunction(o, 0) == false); QVERIFY(m_doc->isModified() == false); QVERIFY(o->id() == Function::invalidId()); QVERIFY(m_doc->functions().size() == 2); QVERIFY(m_doc->addFunction(o, 2) == true); QVERIFY(o->id() == 2); QVERIFY(m_doc->functions().size() == 3); QVERIFY(m_doc->isModified() == true); m_doc->resetModified(); EFX* e = new EFX(m_doc); QVERIFY(e->id() == Function::invalidId()); QVERIFY(m_doc->addFunction(e, 1) == false); QVERIFY(e->id() == Function::invalidId()); QVERIFY(m_doc->addFunction(e) == true); QVERIFY(e->id() == 3); QVERIFY(m_doc->functions().size() == 4); QVERIFY(m_doc->isModified() == true); }
void VCCueList_Test::copy() { // Input sources are tested by VCWidget tests. No point testing here. QWidget w; VCFrame parent(&w, m_doc); VCCueList cl(&parent, m_doc); Chaser* c = createChaser(m_doc); cl.setChaser(c->id()); cl.setCaption("Wheeee"); cl.setNextKeySequence(QKeySequence(keySequenceB)); cl.setPreviousKeySequence(QKeySequence(keySequenceA)); cl.setPlaybackKeySequence(QKeySequence(keySequenceC)); VCCueList* cl2 = qobject_cast<VCCueList*> (cl.createCopy(&parent)); QVERIFY(cl2 != NULL); QCOMPARE(cl2->caption(), QString("Wheeee")); QCOMPARE(cl2->nextKeySequence(), QKeySequence(keySequenceB)); QCOMPARE(cl2->previousKeySequence(), QKeySequence(keySequenceA)); QCOMPARE(cl2->playbackKeySequence(), QKeySequence(keySequenceC)); QCOMPARE(cl2->chaserID(), c->id()); QCOMPARE(cl2->m_tree->topLevelItemCount(), 4); VCCueList cl3(&parent, m_doc); cl3.copyFrom(NULL); QCOMPARE(cl3.m_tree->topLevelItemCount(), 0); QCOMPARE(cl3.caption(), tr("Cue list")); cl.copyFrom(&cl3); QCOMPARE(cl.caption(), cl3.caption()); QCOMPARE(cl.chaserID(), Function::invalidId()); QCOMPARE(cl.m_tree->topLevelItemCount(), 0); QCOMPARE(cl.nextKeySequence(), QKeySequence()); QCOMPARE(cl.previousKeySequence(), QKeySequence()); QCOMPARE(cl.playbackKeySequence(), QKeySequence()); delete cl2; }
void VCCueList_Test::chaser() { QWidget w; VCCueList cl(&w, m_doc); Chaser* c = createChaser(m_doc); // Try to put a non-chaser as the chaser cl.setChaser(c->steps().first().fid); QCOMPARE(cl.chaserID(), Function::invalidId()); QCOMPARE(cl.m_tree->topLevelItemCount(), 0); // Put a real chaser as the chaser cl.setChaser(c->id()); QCOMPARE(cl.chaserID(), c->id()); QCOMPARE(cl.m_tree->topLevelItemCount(), 4); QCOMPARE(cl.m_tree->topLevelItem(0)->text(0), QString("1")); QCOMPARE(cl.m_tree->topLevelItem(1)->text(0), QString("2")); QCOMPARE(cl.m_tree->topLevelItem(2)->text(0), QString("3")); QCOMPARE(cl.m_tree->topLevelItem(3)->text(0), QString("4")); QCOMPARE(cl.m_tree->topLevelItem(0)->text(1), QString("First")); QCOMPARE(cl.m_tree->topLevelItem(1)->text(1), QString("Second")); QCOMPARE(cl.m_tree->topLevelItem(2)->text(1), QString("Third")); QCOMPARE(cl.m_tree->topLevelItem(3)->text(1), QString("Fourth")); }
void VCCueList::addFunctions(QVariantList idsList, int insertIndex) { if (idsList.isEmpty()) return; if (isEditing()) { Chaser *ch = chaser(); if (ch == NULL) return; if (insertIndex == -1) insertIndex = ch->stepsCount(); for (QVariant vID : idsList) // C++11 { quint32 fid = vID.toUInt(); ChaserStep step(fid); if (ch->durationMode() == Chaser::PerStep) { Function *func = m_doc->function(fid); if (func == NULL) continue; step.duration = func->totalDuration(); if (step.duration == 0) step.duration = 1000; step.hold = step.duration; } Tardis::instance()->enqueueAction(Tardis::ChaserAddStep, ch->id(), QVariant(), insertIndex); ch->addStep(step, insertIndex++); } ChaserEditor::updateStepsList(m_doc, chaser(), m_stepsList); emit stepsListChanged(); } else { Function *f = m_doc->function(idsList.first().toUInt()); if (f == NULL || f->type() != Function::ChaserType) return; setChaserID(f->id()); } }
void VCCueList_Test::modeChange() { QWidget w; VCFrame parent(&w, m_doc); VCCueList cl(&parent, m_doc); Chaser* c = createChaser(m_doc); cl.setChaser(c->id()); m_doc->setMode(Doc::Operate); // QCOMPARE(m_doc->masterTimer()->m_dmxSourceList.size(), 1); // QCOMPARE(m_doc->masterTimer()->m_dmxSourceList[0], &cl); // QVERIFY(cl.m_runner == NULL); QVERIFY(cl.m_tree->isEnabled() == true); // cl.createRunner(); m_doc->setMode(Doc::Design); QCOMPARE(m_doc->masterTimer()->m_dmxSourceList.size(), 0); // QVERIFY(cl.m_runner == NULL); QVERIFY(cl.m_tree->isEnabled() == false); }
void VCCueList_Test::input() { QWidget w; VCCueList cl(&w, m_doc); Chaser* c = createChaser(m_doc); c->setDuration(Function::infiniteSpeed()); cl.setChaser(c->id()); cl.setInputSource(QSharedPointer<QLCInputSource>(new QLCInputSource(0, 1)), VCCueList::nextInputSourceId); cl.setInputSource(QSharedPointer<QLCInputSource>(new QLCInputSource(2, 3)), VCCueList::previousInputSourceId); cl.setInputSource(QSharedPointer<QLCInputSource>(new QLCInputSource(4, 5)), VCCueList::playbackInputSourceId); // Switch mode m_doc->setMode(Doc::Operate); MasterTimer* timer = m_doc->masterTimer(); // Runner creation thru "next" input cl.slotInputValueChanged(5, 3, 255); //QVERIFY(cl.m_runner == NULL); cl.slotInputValueChanged(2, 15, 255); //QVERIFY(cl.m_runner == NULL); cl.slotInputValueChanged(0, 1, 255); //QVERIFY(cl.m_runner != NULL); timer->timerTick(); //QCOMPARE(cl.m_runner->currentStepIndex(), 0); cl.slotInputValueChanged(0, 1, 0); //QVERIFY(cl.m_runner != NULL); timer->timerTick(); //QCOMPARE(cl.m_runner->currentStepIndex(), 0); cl.slotInputValueChanged(0, 1, 255); //QVERIFY(cl.m_runner != NULL); timer->timerTick(); //QCOMPARE(cl.m_runner->currentStepIndex(), 1); // Runner creation thru previous input m_doc->setMode(Doc::Design); //QVERIFY(cl.m_runner == NULL); m_doc->setMode(Doc::Operate); cl.slotInputValueChanged(0, 3, 255); //QVERIFY(cl.m_runner == NULL); cl.slotInputValueChanged(2, 1, 255); //QVERIFY(cl.m_runner == NULL); cl.slotInputValueChanged(2, 3, 255); //QVERIFY(cl.m_runner != NULL); timer->timerTick(); //QCOMPARE(cl.m_runner->currentStepIndex(), 3); cl.slotInputValueChanged(2, 3, 0); //QVERIFY(cl.m_runner != NULL); timer->timerTick(); //QCOMPARE(cl.m_runner->currentStepIndex(), 3); cl.slotInputValueChanged(2, 3, 255); //QVERIFY(cl.m_runner != NULL); timer->timerTick(); //QCOMPARE(cl.m_runner->currentStepIndex(), 2); cl.slotInputValueChanged(4, 5, 255); //QVERIFY(cl.m_runner != NULL); timer->timerTick(); //QVERIFY(cl.m_runner == NULL); cl.slotInputValueChanged(4, 5, 0); //QVERIFY(cl.m_runner == NULL); timer->timerTick(); //QVERIFY(cl.m_runner == NULL); }
void VCCueList_Test::manualActivation() { QWidget w; VCCueList cl(&w, m_doc); Chaser* c = createChaser(m_doc); c->setDuration(Function::infiniteSpeed()); cl.setChaser(c->id()); Scene* s1 = qobject_cast<Scene*> (m_doc->function(c->steps()[0].fid)); //Scene* s2 = qobject_cast<Scene*> (m_doc->function(c->steps()[1].fid)); Scene* s3 = qobject_cast<Scene*> (m_doc->function(c->steps()[2].fid)); //Scene* s4 = qobject_cast<Scene*> (m_doc->function(c->steps()[3].fid)); Q_ASSERT(s1 /*&& s2*/ && s3/* && s4*/); // Switch mode m_doc->setMode(Doc::Operate); MasterTimer* timer = m_doc->masterTimer(); // QVERIFY(cl.m_runner == NULL); cl.slotItemActivated(cl.m_tree->topLevelItem(2)); // QVERIFY(cl.m_runner != NULL); timer->timerTick(); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s3); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s3); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s3); // Same item cl.slotItemActivated(cl.m_tree->topLevelItem(2)); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s3); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s3); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s3); // Another item cl.slotItemActivated(cl.m_tree->topLevelItem(0)); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s1); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s1); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s1); // Crash check cl.slotItemActivated(NULL); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s1); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s1); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s1); }
void VCCueList_Test::nextPrevious() { QWidget w; VCCueList cl(&w, m_doc); Chaser* c = createChaser(m_doc); c->setDuration(Function::infiniteSpeed()); cl.setChaser(c->id()); QCOMPARE(c->steps().size(), 4); Scene* s1 = qobject_cast<Scene*> (m_doc->function(c->steps()[0].fid)); Scene* s2 = qobject_cast<Scene*> (m_doc->function(c->steps()[1].fid)); Scene* s3 = qobject_cast<Scene*> (m_doc->function(c->steps()[2].fid)); Scene* s4 = qobject_cast<Scene*> (m_doc->function(c->steps()[3].fid)); Q_ASSERT(s1 && s2 && s3 && s4); // Not in operate mode, check for crashes cl.slotNextCue(); cl.slotPreviousCue(); cl.slotItemActivated(cl.m_tree->topLevelItem(2)); // QVERIFY(cl.m_runner == NULL); // Switch mode m_doc->setMode(Doc::Operate); MasterTimer* timer = m_doc->masterTimer(); // Create runner with a next action -> first item should be activated cl.slotNextCue(); // QVERIFY(cl.m_runner != NULL); timer->timerTick(); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s1); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s1); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s1); cl.slotNextCue(); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s2); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s2); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s2); cl.slotNextCue(); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s3); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s3); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s3); cl.slotPreviousCue(); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s2); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s2); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s2); cl.slotPreviousCue(); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s1); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s1); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s1); // Wrap around to the last cue cl.slotPreviousCue(); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s4); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s4); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s4); // Wrap around to the next cue cl.slotNextCue(); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s1); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s1); timer->timerTick(); QCOMPARE(timer->runningFunctions(), 2); QCOMPARE(timer->m_functionList[1], s1); }
void VCCueList_Test::saveXML() { QWidget w; VCCueList cl(&w, m_doc); Chaser* c = createChaser(m_doc); cl.setChaser(c->id()); cl.setCaption("Testing"); cl.setInputSource(QSharedPointer<QLCInputSource>(new QLCInputSource(0, 1)), VCCueList::nextInputSourceId); cl.setInputSource(QSharedPointer<QLCInputSource>(new QLCInputSource(1, 2)), VCCueList::previousInputSourceId); cl.setInputSource(QSharedPointer<QLCInputSource>(new QLCInputSource(2, 3)), VCCueList::playbackInputSourceId); cl.setInputSource(QSharedPointer<QLCInputSource>(new QLCInputSource(3, 4)), VCCueList::stopInputSourceId); cl.setNextKeySequence(QKeySequence(keySequenceB)); cl.setPreviousKeySequence(QKeySequence(keySequenceA)); cl.setPlaybackKeySequence(QKeySequence(keySequenceC)); cl.setStopKeySequence(QKeySequence(keySequenceD)); QBuffer buffer; buffer.open(QIODevice::WriteOnly | QIODevice::Text); QXmlStreamWriter xmlWriter(&buffer); int chaser = 0, next = 0, nextKey = 0, nextInput = 0, previous = 0, previousKey = 0, previousInput = 0, playback = 0, playbackKey = 0, playbackInput = 0, stop = 0, stopKey = 0, stopInput = 0, wstate = 0, appearance = 0, nextPrevBehavior = 0, slidersMode = 0; QVERIFY(cl.saveXML(&xmlWriter) == true); xmlWriter.setDevice(NULL); buffer.close(); buffer.open(QIODevice::ReadOnly | QIODevice::Text); QXmlStreamReader xmlReader(&buffer); xmlReader.readNextStartElement(); QCOMPARE(xmlReader.name().toString(), QString("CueList")); QCOMPARE(xmlReader.attributes().value("Caption").toString(), QString("Testing")); while (xmlReader.readNextStartElement()) { if (xmlReader.name() == "Chaser") { QCOMPARE(xmlReader.readElementText().toUInt(), c->id()); chaser++; } else if (xmlReader.name() == "Function") { QFAIL("Function node should not be written anymore!"); } else if (xmlReader.name() == "Next") { next++; xmlReader.readNextStartElement(); if (xmlReader.name() == "Key") { nextKey++; QCOMPARE(xmlReader.readElementText(), QKeySequence(keySequenceB).toString()); } else { QFAIL(QString("Unexpected tag: %1").arg(xmlReader.name().toString()).toUtf8().constData()); } xmlReader.readNextStartElement(); if (xmlReader.name() == "Input") { nextInput++; // Handled by VCWidget tests, just check that the node is there xmlReader.skipCurrentElement(); } else { QFAIL(QString("Unexpected tag: %1").arg(xmlReader.name().toString()).toUtf8().constData()); } xmlReader.skipCurrentElement(); } else if (xmlReader.name() == "Previous") { previous++; xmlReader.readNextStartElement(); if (xmlReader.name() == "Key") { previousKey++; QCOMPARE(xmlReader.readElementText(), QKeySequence(keySequenceA).toString()); } else { QFAIL(QString("Unexpected tag: %1").arg(xmlReader.name().toString()).toUtf8().constData()); } xmlReader.readNextStartElement(); if (xmlReader.name() == "Input") { previousInput++; // Handled by VCWidget tests, just check that the node is there xmlReader.skipCurrentElement(); } else { QFAIL(QString("Unexpected tag: %1").arg(xmlReader.name().toString()).toUtf8().constData()); } xmlReader.skipCurrentElement(); } else if (xmlReader.name() == "Playback") { playback++; xmlReader.readNextStartElement(); if (xmlReader.name() == "Key") { playbackKey++; QCOMPARE(xmlReader.readElementText(), QKeySequence(keySequenceC).toString()); } else { QFAIL(QString("Unexpected tag: %1").arg(xmlReader.name().toString()).toUtf8().constData()); } xmlReader.readNextStartElement(); if (xmlReader.name() == "Input") { playbackInput++; // Handled by VCWidget tests, just check that the node is there xmlReader.skipCurrentElement(); } else { QFAIL(QString("Unexpected tag: %1").arg(xmlReader.name().toString()).toUtf8().constData()); } xmlReader.skipCurrentElement(); } else if (xmlReader.name() == "Stop") { stop++; xmlReader.readNextStartElement(); if (xmlReader.name() == "Key") { stopKey++; QCOMPARE(xmlReader.readElementText(), QKeySequence(keySequenceD).toString()); } else { QFAIL(QString("Unexpected tag: %1").arg(xmlReader.name().toString()).toUtf8().constData()); } xmlReader.readNextStartElement(); if (xmlReader.name() == "Input") { stopInput++; // Handled by VCWidget tests, just check that the node is there xmlReader.skipCurrentElement(); } else { QFAIL(QString("Unexpected tag: %1").arg(xmlReader.name().toString()).toUtf8().constData()); } xmlReader.skipCurrentElement(); } else if (xmlReader.name() == "WindowState") { // Handled by VCWidget tests, just check that the node is there wstate++; xmlReader.skipCurrentElement(); } else if (xmlReader.name() == "Appearance") { // Handled by VCWidget tests, just check that the node is there appearance++; xmlReader.skipCurrentElement(); } else if (xmlReader.name() == KXMLQLCVCCueListNextPrevBehavior) { ++nextPrevBehavior; xmlReader.skipCurrentElement(); } else if (xmlReader.name() == KXMLQLCVCCueListSlidersMode) { ++slidersMode; xmlReader.skipCurrentElement(); } else { QFAIL(QString("Unexpected tag: %1").arg(xmlReader.name().toString()).toUtf8().constData()); xmlReader.skipCurrentElement(); } } QCOMPARE(chaser, 1); QCOMPARE(next, 1); QCOMPARE(nextKey, 1); QCOMPARE(nextInput, 1); QCOMPARE(previous, 1); QCOMPARE(previousKey, 1); QCOMPARE(previousInput, 1); QCOMPARE(playback, 1); QCOMPARE(playbackKey, 1); QCOMPARE(playbackInput, 1); QCOMPARE(stop, 1); QCOMPARE(stopKey, 1); QCOMPARE(stopInput, 1); QCOMPARE(wstate, 1); QCOMPARE(appearance, 1); QCOMPARE(nextPrevBehavior, 1); QCOMPARE(slidersMode, 1); }
void VCCueList_Test::saveXML() { QWidget w; VCCueList cl(&w, m_doc); Chaser* c = createChaser(m_doc); cl.setChaser(c->id()); cl.setCaption("Testing"); cl.setInputSource(QLCInputSource(0, 1), VCCueList::nextInputSourceId); cl.setInputSource(QLCInputSource(2, 3), VCCueList::previousInputSourceId); cl.setInputSource(QLCInputSource(4, 5), VCCueList::playbackInputSourceId); cl.setNextKeySequence(QKeySequence(keySequenceB)); cl.setPreviousKeySequence(QKeySequence(keySequenceA)); cl.setPlaybackKeySequence(QKeySequence(keySequenceC)); QDomDocument xmldoc; QDomElement root = xmldoc.createElement("TestRoot"); xmldoc.appendChild(root); int chaser = 0, next = 0, nextKey = 0, nextInput = 0, previous = 0, previousKey = 0, previousInput = 0, playback = 0, playbackKey = 0, playbackInput = 0, wstate = 0, appearance = 0; QVERIFY(cl.saveXML(&xmldoc, &root) == true); QDomElement clroot = root.firstChild().toElement(); QCOMPARE(clroot.tagName(), QString("CueList")); QCOMPARE(clroot.attribute("Caption"), QString("Testing")); QDomNode node = clroot.firstChild(); while (node.isNull() == false) { QDomElement tag = node.toElement(); if (tag.tagName() == "Chaser") { QCOMPARE(tag.text().toUInt(), c->id()); chaser++; } else if (tag.tagName() == "Function") { QFAIL("Function node should not be written anymore!"); } else if (tag.tagName() == "Next") { next++; QDomNode subnode = tag.firstChild(); while (subnode.isNull() == false) { QDomElement subtag = subnode.toElement(); if (subtag.tagName() == "Key") { nextKey++; QCOMPARE(subtag.text(), QKeySequence(keySequenceB).toString()); } else if (subtag.tagName() == "Input") { nextInput++; // Handled by VCWidget tests, just check that the node is there } else { QFAIL(QString("Unexpected tag: %1").arg(subtag.tagName()).toUtf8().constData()); } subnode = subnode.nextSibling(); } } else if (tag.tagName() == "Previous") { previous++; QDomNode subnode = tag.firstChild(); while (subnode.isNull() == false) { QDomElement subtag = subnode.toElement(); if (subtag.tagName() == "Key") { previousKey++; QCOMPARE(subtag.text(), QKeySequence(keySequenceA).toString()); } else if (subtag.tagName() == "Input") { previousInput++; // Handled by VCWidget tests, just check that the node is there } else { QFAIL(QString("Unexpected tag: %1").arg(subtag.tagName()).toUtf8().constData()); } subnode = subnode.nextSibling(); } } else if (tag.tagName() == "Playback") { playback++; QDomNode subnode = tag.firstChild(); while (subnode.isNull() == false) { QDomElement subtag = subnode.toElement(); if (subtag.tagName() == "Key") { playbackKey++; QCOMPARE(subtag.text(), QKeySequence(keySequenceC).toString()); } else if (subtag.tagName() == "Input") { playbackInput++; // Handled by VCWidget tests, just check that the node is there } else { QFAIL(QString("Unexpected tag: %1").arg(subtag.tagName()).toUtf8().constData()); } subnode = subnode.nextSibling(); } } else if (tag.tagName() == "WindowState") { // Handled by VCWidget tests, just check that the node is there wstate++; } else if (tag.tagName() == "Appearance") { // Handled by VCWidget tests, just check that the node is there appearance++; } else { QFAIL(QString("Unexpected tag: %1").arg(tag.tagName()).toUtf8().constData()); } node = node.nextSibling(); } QCOMPARE(chaser, 1); QCOMPARE(next, 1); QCOMPARE(nextKey, 1); QCOMPARE(nextInput, 1); QCOMPARE(previous, 1); QCOMPARE(previousKey, 1); QCOMPARE(previousInput, 1); QCOMPARE(playback, 1); QCOMPARE(playbackKey, 1); QCOMPARE(playbackInput, 1); QCOMPARE(wstate, 1); QCOMPARE(appearance, 1); }