void QLCFixtureDef_Test::removeMode() { QLCFixtureDef* fd = new QLCFixtureDef(); QLCFixtureMode* mode1 = new QLCFixtureMode(fd); QLCFixtureMode* mode2 = new QLCFixtureMode(fd); QVERIFY(fd->modes().size() == 0); QVERIFY(fd->removeMode(NULL) == false); QVERIFY(fd->removeMode(mode1) == false); QVERIFY(fd->removeMode(mode2) == false); QVERIFY(fd->modes().size() == 0); fd->addMode(mode1); fd->addMode(mode2); QVERIFY(fd->modes().size() == 2); QVERIFY(fd->removeMode(mode1) == true); QVERIFY(fd->modes().size() == 1); QVERIFY(fd->modes().at(0) == mode2); QVERIFY(fd->removeMode(mode1) == false); QVERIFY(fd->modes().size() == 1); QVERIFY(fd->modes().at(0) == mode2); QVERIFY(fd->removeMode(NULL) == false); QVERIFY(fd->modes().size() == 1); QVERIFY(fd->modes().at(0) == mode2); QVERIFY(fd->removeMode(mode2) == true); QVERIFY(fd->modes().size() == 0); delete fd; }
void EFXFixture_Test::init() { { QLCFixtureDef* def = m_doc->fixtureDefCache()->fixtureDef("Futurelight", "DJScan250"); QVERIFY(def != NULL); QLCFixtureMode* mode = def->modes().first(); QVERIFY(mode != NULL); Fixture* fxi = new Fixture(m_doc); fxi->setFixtureDefinition(def, mode); m_doc->addFixture(fxi); m_fixture8bit = fxi->id(); } { QLCFixtureDef* def = m_doc->fixtureDefCache()->fixtureDef("Futurelight", "MH-440"); QVERIFY(def != NULL); QLCFixtureMode* mode = def->modes().first(); QVERIFY(mode != NULL); Fixture* fxi = new Fixture(m_doc); fxi->setFixtureDefinition(def, mode); m_doc->addFixture(fxi); m_fixture16bit = fxi->id(); } { QLCFixtureDef* def = m_doc->fixtureDefCache()->fixtureDef("Futurelight", "CY-200"); QVERIFY(def != NULL); QLCFixtureMode* mode = def->modes().first(); QVERIFY(mode != NULL); Fixture* fxi = new Fixture(m_doc); fxi->setFixtureDefinition(def, mode); m_doc->addFixture(fxi); m_fixturePanOnly = fxi->id(); } { QLCFixtureDef* def = m_doc->fixtureDefCache()->fixtureDef("American DJ", "Sweeper Beam Quad LED"); QVERIFY(def != NULL); QLCFixtureMode* mode = def->modes().last(); // 39 Channel mode QVERIFY(mode != NULL); Fixture* fxi = new Fixture(m_doc); fxi->setFixtureDefinition(def, mode); m_doc->addFixture(fxi); m_fixtureLedBar = fxi->id(); } }
void VCXYPadFixtureEditor_Test::initTestCase() { m_doc = new Doc(this); QDir dir(INTERNAL_FIXTUREDIR); dir.setFilter(QDir::Files); dir.setNameFilters(QStringList() << QString("*%1").arg(KExtFixture)); QVERIFY(m_doc->fixtureDefCache()->loadMap(dir) == true); QLCFixtureDef* def = m_doc->fixtureDefCache()->fixtureDef("Futurelight", "DJScan250"); QVERIFY(def != NULL); QLCFixtureMode* mode = def->modes()[0]; QVERIFY(mode != NULL); Fixture* fxi = new Fixture(m_doc); fxi->setName("Fixture 1"); fxi->setFixtureDefinition(def, mode); fxi->setAddress(0); fxi = new Fixture(m_doc); fxi->setName("Fixture 2"); fxi->setFixtureDefinition(def, mode); fxi->setAddress(10); fxi = new Fixture(m_doc); fxi->setName("Fixture 3"); fxi->setFixtureDefinition(def, mode); fxi->setAddress(20); }
void Fixture_Test::status() { // This test is mostly just a stability check since checking lots of // detailed HTML formatting is not that useful. QString info; Fixture fxi(this); info = fxi.status(); fxi.setID(1337); info = fxi.status(); fxi.setName("Test Fixture"); info = fxi.status(); fxi.setUniverse(2); info = fxi.status(); fxi.setAddress(438); info = fxi.status(); fxi.setChannels(12); info = fxi.status(); QLCFixtureDef* fixtureDef; fixtureDef = m_doc->fixtureDefCache()->fixtureDef("Martin", "MAC250+"); Q_ASSERT(fixtureDef != NULL); QLCFixtureMode* fixtureMode; fixtureMode = fixtureDef->modes().at(0); Q_ASSERT(fixtureMode != NULL); fxi.setFixtureDefinition(fixtureDef, fixtureMode); info = fxi.status(); }
void Fixture_Test::channels() { Fixture fxi(this); QLCFixtureDef* fixtureDef = m_doc->fixtureDefCache()->fixtureDef("i-Pix", "BB4"); QVERIFY(fixtureDef != NULL); QLCFixtureMode* fixtureMode = fixtureDef->modes().last(); QVERIFY(fixtureMode != NULL); fxi.setFixtureDefinition(fixtureDef, fixtureMode); QCOMPARE(fxi.channel("red", Qt::CaseInsensitive), quint32(3)); QCOMPARE(fxi.channel("red", Qt::CaseInsensitive, QLCChannel::Intensity), quint32(3)); QCOMPARE(fxi.channel("brown", Qt::CaseInsensitive), QLCChannel::invalid()); QSet <quint32> chs; chs << 3 << 4 << 21 << 22 << 12 << 13 << 30 << 31; QCOMPARE(chs, fxi.channels("red", Qt::CaseInsensitive)); QCOMPARE(chs, fxi.channels("red", Qt::CaseInsensitive, QLCChannel::Intensity)); chs.clear(); chs << 5 << 6 << 23 << 24 << 14 << 15 << 32 << 33; QCOMPARE(chs, fxi.channels("green", Qt::CaseInsensitive)); chs.clear(); QCOMPARE(chs, fxi.channels("green")); chs.clear(); chs << 7 << 8 << 16 << 17 << 25 << 26 << 34 << 35; QCOMPARE(chs, fxi.channels("blue", Qt::CaseInsensitive)); chs.clear(); QCOMPARE(chs, fxi.channels("green", Qt::CaseInsensitive, QLCChannel::Colour)); chs.clear(); QCOMPARE(fxi.channels("brown", Qt::CaseInsensitive, QLCChannel::Intensity), chs); }
void RGBMatrix_Test::initTestCase() { m_doc = new Doc(this); QDir fxiDir(INTERNAL_FIXTUREDIR); fxiDir.setFilter(QDir::Files); fxiDir.setNameFilters(QStringList() << QString("*%1").arg(KExtFixture)); QVERIFY(m_doc->fixtureDefCache()->loadMap(fxiDir) == true); QLCFixtureDef* def = m_doc->fixtureDefCache()->fixtureDef("Stairville", "LED PAR56"); QVERIFY(def != NULL); QLCFixtureMode* mode = def->modes().first(); QVERIFY(mode != NULL); FixtureGroup* grp = new FixtureGroup(m_doc); grp->setName("Test Group"); grp->setSize(QSize(5, 5)); m_doc->addFixtureGroup(grp); for (int i = 0; i < 25; i++) { Fixture* fxi = new Fixture(m_doc); fxi->setFixtureDefinition(def, mode); fxi->setAddress(i * fxi->channels()); m_doc->addFixture(fxi); grp->assignFixture(fxi->id()); } QVERIFY(m_doc->rgbScriptsCache()->load(QDir(INTERNAL_SCRIPTDIR))); QVERIFY(m_doc->rgbScriptsCache()->names().size() != 0); }
void Fixture_Test::fixtureDef() { Fixture fxi(this); QVERIFY(fxi.fixtureDef() == NULL); QVERIFY(fxi.fixtureMode() == NULL); QVERIFY(fxi.channels() == 0); QVERIFY(fxi.channel(0) == NULL); QCOMPARE(fxi.panMsbChannel(), QLCChannel::invalid()); QCOMPARE(fxi.tiltMsbChannel(), QLCChannel::invalid()); QCOMPARE(fxi.panLsbChannel(), QLCChannel::invalid()); QCOMPARE(fxi.tiltLsbChannel(), QLCChannel::invalid()); QCOMPARE(fxi.masterIntensityChannel(), QLCChannel::invalid()); QLCFixtureDef* fixtureDef; fixtureDef = m_doc->fixtureDefCache()->fixtureDef("Martin", "MAC300"); Q_ASSERT(fixtureDef != NULL); fxi.setFixtureDefinition(fixtureDef, NULL); QVERIFY(fxi.fixtureDef() == NULL); QVERIFY(fxi.fixtureMode() == NULL); QLCFixtureMode* fixtureMode; fixtureMode = fixtureDef->modes().last(); Q_ASSERT(fixtureMode != NULL); fxi.setFixtureDefinition(NULL, fixtureMode); QVERIFY(fxi.fixtureDef() == NULL); QVERIFY(fxi.fixtureMode() == NULL); fxi.setFixtureDefinition(fixtureDef, fixtureMode); QVERIFY(fxi.fixtureDef() != NULL); QVERIFY(fxi.fixtureMode() != NULL); QVERIFY(fxi.fixtureDef() == fixtureDef); QVERIFY(fxi.fixtureMode() == fixtureMode); QVERIFY(fxi.channels() == quint32(fixtureMode->channels().count())); QVERIFY(fxi.channel(fxi.channels() - 1) != NULL); QVERIFY(fxi.channel(fxi.channels()) == NULL); QVERIFY(fxi.channel(QLCChannel::Pan) != QLCChannel::invalid()); const QLCChannel* ch = fxi.channel(fxi.channel(QLCChannel::Pan)); QVERIFY(ch != NULL); QCOMPARE(fxi.panMsbChannel(), quint32(7)); QCOMPARE(fxi.tiltMsbChannel(), quint32(9)); QCOMPARE(fxi.panLsbChannel(), quint32(8)); QCOMPARE(fxi.tiltLsbChannel(), quint32(10)); QCOMPARE(fxi.masterIntensityChannel(), quint32(1)); QCOMPARE(fxi.rgbChannels(), QVector <quint32> ()); QCOMPARE(fxi.cmyChannels(), QVector <quint32> () << 2 << 3 << 4); }
void CueStack_Test::insertStartValue() { QList<Universe*> ua; ua.append(new Universe(0, new GrandMaster())); ua.at(0)->setChannelCapability(0, QLCChannel::Pan); CueStack cs(m_doc); cs.preRun(); FadeChannel fc; fc.setChannel(0); fc.setStart(0); fc.setTarget(255); fc.setCurrent(127); cs.m_fader->add(fc); fc.setTarget(64); cs.insertStartValue(fc, ua); QCOMPARE(fc.start(), uchar(127)); QCOMPARE(fc.current(), uchar(127)); cs.m_fader->remove(fc); // HTP channel in universes ua[0]->write(0, 192); cs.insertStartValue(fc, ua); QCOMPARE(fc.start(), uchar(0)); QCOMPARE(fc.current(), uchar(0)); QLCFixtureDef* def = m_doc->fixtureDefCache()->fixtureDef("Futurelight", "DJScan250"); QVERIFY(def != NULL); QLCFixtureMode* mode = def->modes().first(); QVERIFY(mode != NULL); Fixture* fxi = new Fixture(m_doc); fxi->setFixtureDefinition(def, mode); fxi->setName("Test Scanner"); fxi->setAddress(0); fxi->setUniverse(0); m_doc->addFixture(fxi); // LTP channel (Pan) in universes ua[0]->write(0, 192); cs.insertStartValue(fc, ua); QCOMPARE(fc.start(), uchar(192)); QCOMPARE(fc.current(), uchar(192)); MasterTimer mt(m_doc); cs.postRun(&mt); }
void FadeChannel_Test::group() { Doc doc(this); FadeChannel fc; // Only a channel given, no fixture at the address -> intensity fc.setChannel(2); QCOMPARE(fc.group(&doc), QLCChannel::Intensity); Fixture* fxi = new Fixture(&doc); fxi->setAddress(10); fxi->setChannels(5); doc.addFixture(fxi); // Fixture and channel given, fixture is a dimmer -> intensity fc.setFixture(&doc, fxi->id()); QCOMPARE(fc.group(&doc), QLCChannel::Intensity); QDir dir(INTERNAL_FIXTUREDIR); dir.setFilter(QDir::Files); dir.setNameFilters(QStringList() << QString("*%1").arg(KExtFixture)); QVERIFY(doc.fixtureDefCache()->load(dir) == true); QLCFixtureDef* def = doc.fixtureDefCache()->fixtureDef("Futurelight", "DJScan250"); QVERIFY(def != NULL); QLCFixtureMode* mode = def->modes().first(); QVERIFY(mode != NULL); fxi = new Fixture(&doc); fxi->setAddress(0); fxi->setFixtureDefinition(def, mode); doc.addFixture(fxi); // Fixture and channel given, but channel is beyond fixture's channels -> intensity fc.setFixture(&doc, fxi->id()); fc.setChannel(50); QCOMPARE(fc.group(&doc), QLCChannel::Intensity); // Only a channel given, no fixture given but a fixture occupies the address. // Check that reverse address -> fixture lookup works. fc.setFixture(&doc, Fixture::invalidId()); fc.setChannel(2); QCOMPARE(fc.group(&doc), QLCChannel::Colour); // Fixture and channel given, but fixture doesn't exist -> intensity fc.setFixture(&doc, 12345); fc.setChannel(2); QCOMPARE(fc.group(&doc), QLCChannel::Intensity); }
void QLCFixtureDef_Test::copy() { QLCFixtureDef* fd = new QLCFixtureDef(); fd->setManufacturer("Martin"); fd->setModel("MAC600"); fd->setType("Moving Head"); QLCChannel* ch = new QLCChannel(); ch->setName("TestChannel"); fd->addChannel(ch); QLCFixtureMode* mode = new QLCFixtureMode(fd); mode->setName("TestMode"); fd->addMode(mode); mode->insertChannel(ch, 0); QLCFixtureDef* copy = new QLCFixtureDef(fd); QVERIFY(copy->manufacturer() == "Martin"); QVERIFY(copy->model() == "MAC600"); QVERIFY(copy->type() == "Moving Head"); /* Verify that modes and channels get copied and that the channels in the copied mode are from the copied fixtureDef and not the one that the copy is taken FROM. */ QVERIFY(copy->channels().at(0)->name() == "TestChannel"); QVERIFY(copy->modes().at(0)->name() == "TestMode"); QVERIFY(copy->modes().at(0)->channels().size() == 1); QVERIFY(copy->modes().size() == 1); QVERIFY(copy->modes().at(0)->channel(0) != ch); QVERIFY(copy->modes().at(0)->channel(0) == copy->channels().at(0)); QVERIFY(copy->channels().at(0)->name() == "TestChannel"); QVERIFY(copy->modes().at(0)->channel(0)->name() == "TestChannel"); delete fd; delete copy; }
void Fixture_Test::type() { Fixture fxi(this); QCOMPARE(fxi.type(), QString(KXMLFixtureDimmer)); QLCFixtureDef* fixtureDef; fixtureDef = m_doc->fixtureDefCache()->fixtureDef("Martin", "MAC250+"); QVERIFY(fixtureDef != NULL); QLCFixtureMode* fixtureMode; fixtureMode = fixtureDef->modes().at(0); QVERIFY(fixtureMode != NULL); fxi.setFixtureDefinition(fixtureDef, fixtureMode); QCOMPARE(fxi.type(), fixtureDef->type()); }
void VCXYPad_Test::modeChange() { //UniverseArray ua(512); QWidget w; Fixture* fxi = new Fixture(m_doc); QLCFixtureDef* def = m_doc->fixtureDefCache()->fixtureDef("Futurelight", "DJScan250"); QVERIFY(def != NULL); QLCFixtureMode* mode = def->modes().first(); QVERIFY(mode != NULL); fxi->setFixtureDefinition(def, mode); m_doc->addFixture(fxi); VCXYPad pad(&w, m_doc); pad.show(); w.show(); pad.resize(QSize(200, 200)); VCXYPadFixture xy(m_doc); xy.setHead(GroupHead(fxi->id(), 0)); pad.appendFixture(xy); QCOMPARE(pad.fixtures().size(), 1); QCOMPARE(pad.fixtures()[0].m_xMSB, QLCChannel::invalid()); QCOMPARE(pad.fixtures()[0].m_xLSB, QLCChannel::invalid()); m_doc->setMode(Doc::Operate); QVERIFY(pad.fixtures()[0].m_xMSB != QLCChannel::invalid()); QVERIFY(pad.fixtures()[0].m_yMSB != QLCChannel::invalid()); QCOMPARE(m_doc->masterTimer()->m_dmxSourceList.size(), 1); QCOMPARE(m_doc->masterTimer()->m_dmxSourceList[0], &pad); /* // FIXME !! pad.m_area->setPosition(QPoint(pad.m_area->width(), pad.m_area->height())); pad.writeDMX(m_doc->masterTimer(), &ua); QCOMPARE(ua.preGMValues()[0], char(255)); QCOMPARE(ua.preGMValues()[1], char(255)); pad.m_area->setPosition(QPoint(pad.m_area->width() / 2, pad.m_area->height() / 4)); pad.writeDMX(m_doc->masterTimer(), &ua); QCOMPARE(ua.preGMValues()[0], char(128)); QCOMPARE(ua.preGMValues()[1], char(64)); */ m_doc->setMode(Doc::Design); QCOMPARE(pad.fixtures()[0].m_xMSB, QLCChannel::invalid()); QCOMPARE(pad.fixtures()[0].m_yMSB, QLCChannel::invalid()); QCOMPARE(m_doc->masterTimer()->m_dmxSourceList.size(), 0); }
void QLCFixtureDef_Test::modes() { QLCFixtureDef* fd = new QLCFixtureDef(); QLCFixtureMode* mode1 = new QLCFixtureMode(fd); QLCFixtureMode* mode2 = new QLCFixtureMode(fd); QLCFixtureMode* mode3 = new QLCFixtureMode(fd); QVERIFY(fd->modes().size() == 0); fd->addMode(mode1); QVERIFY(fd->modes().size() == 1); QVERIFY(fd->modes().at(0) == mode1); fd->addMode(mode2); QVERIFY(fd->modes().size() == 2); QVERIFY(fd->modes().at(0) == mode1); QVERIFY(fd->modes().at(1) == mode2); fd->addMode(mode3); QVERIFY(fd->modes().size() == 3); QVERIFY(fd->modes().at(0) == mode1); QVERIFY(fd->modes().at(1) == mode2); QVERIFY(fd->modes().at(2) == mode3); delete fd; }
void Fixture_Test::channels() { Fixture fxi(this); QLCFixtureDef* fixtureDef = m_doc->fixtureDefCache()->fixtureDef("i-Pix", "BB4"); QVERIFY(fixtureDef != NULL); QLCFixtureMode* fixtureMode = fixtureDef->modes().last(); QVERIFY(fixtureMode != NULL); fxi.setFixtureDefinition(fixtureDef, fixtureMode); QCOMPARE(fxi.channel(QLCChannel::Intensity, QLCChannel::Red), quint32(3)); QSet <quint32> chs; chs << 3 << 4 << 21 << 22 << 12 << 13 << 30 << 31; QCOMPARE(chs, fxi.channels(QLCChannel::Intensity, QLCChannel::Red)); chs.clear(); chs << 5 << 6 << 23 << 24 << 14 << 15 << 32 << 33; QCOMPARE(chs, fxi.channels(QLCChannel::Intensity, QLCChannel::Green)); chs.clear(); chs << 7 << 8 << 16 << 17 << 25 << 26 << 34 << 35; QCOMPARE(chs, fxi.channels(QLCChannel::Intensity, QLCChannel::Blue)); chs.clear(); QCOMPARE(chs, fxi.channels(QLCChannel::Colour, QLCChannel::Blue)); }
void AddFixture_Test::initialScanner() { Fixture* fxi = new Fixture(m_doc); fxi->setName("My scanner"); QLCFixtureDef* def = m_doc->fixtureDefCache()->fixtureDef("Martin", "MAC300"); Q_ASSERT(def != NULL); Q_ASSERT(def != NULL); Q_ASSERT(def->channels().size() > 0); QLCFixtureMode* mode = def->modes().first(); Q_ASSERT(def->modes().size() > 1); fxi->setFixtureDefinition(def, mode); fxi->setUniverse(2); fxi->setAddress(484); m_doc->addFixture(fxi); AddFixture af(NULL, m_doc, fxi); QVERIFY(m_doc == af.m_doc); QVERIFY(af.fixtureDef() == def); QVERIFY(af.mode() == mode); QVERIFY(af.name() == QString("My scanner")); QVERIFY(af.address() == 484); QVERIFY(af.universe() == 2); QVERIFY(af.amount() == 1); QVERIFY(af.gap() == 0); QVERIFY(af.channels() == fxi->channels()); // Check that all makes & models are put to the tree QStringList makers(m_doc->fixtureDefCache()->manufacturers()); QVERIFY(makers.isEmpty() == false); for (int i = 0; i < af.m_tree->topLevelItemCount(); i++) { QTreeWidgetItem* top = af.m_tree->topLevelItem(i); if (top->text(0) != KXMLFixtureGeneric) { QStringList models(m_doc->fixtureDefCache()->models(top->text(0))); for (int j = 0; j < top->childCount(); j++) { QTreeWidgetItem* child = top->child(j); QCOMPARE(child->childCount(), 0); QCOMPARE(models.removeAll(child->text(0)), 1); } QCOMPARE(makers.removeAll(top->text(0)), 1); } else { QCOMPARE(i, af.m_tree->topLevelItemCount() - 1); // Generic should be last QCOMPARE(top->childCount(), 3); QCOMPARE(top->child(0)->text(0), QString(KXMLFixtureGeneric)); QStringList models(m_doc->fixtureDefCache()->models(top->text(0))); for (int j = 0; j < top->childCount(); j++) { QTreeWidgetItem* child = top->child(j); QCOMPARE(child->childCount(), 0); QCOMPARE(models.removeAll(child->text(0)), child->text(0) == KXMLFixtureGeneric ? 0 : 1); } QCOMPARE(makers.removeAll(top->text(0)), 1); } } QVERIFY(makers.isEmpty() == true); // Generic / Generic should be selected for dimmers QVERIFY(af.m_tree->currentItem() != NULL); QCOMPARE(af.m_tree->currentItem()->text(0), def->model()); QVERIFY(af.m_tree->currentItem()->parent() != NULL); QCOMPARE(af.m_tree->currentItem()->parent()->text(0), def->manufacturer()); QVERIFY(af.m_modeCombo->isEnabled() == true); QCOMPARE(af.m_modeCombo->count(), def->modes().size()); QCOMPARE(af.m_modeCombo->itemText(0), mode->name()); QVERIFY(af.m_universeCombo->isEnabled() == true); QCOMPARE(af.m_universeCombo->currentIndex(), 2); QCOMPARE(af.m_universeCombo->count(), 4); QVERIFY(af.m_addressSpin->isEnabled() == true); QCOMPARE(af.m_addressSpin->value(), 485); QVERIFY(af.m_channelsSpin->isEnabled() == false); QCOMPARE(af.m_channelsSpin->value(), (int) fxi->channels()); QVERIFY(af.m_nameEdit->isEnabled() == true); QCOMPARE(af.m_nameEdit->text(), QString("My scanner")); QVERIFY(af.m_nameEdit->isModified() == true); QVERIFY(af.m_multipleGroup->isEnabled() == false); QVERIFY(af.m_gapSpin->isEnabled() == false); QCOMPARE(af.m_gapSpin->value(), 0); QVERIFY(af.m_amountSpin->isEnabled() == false); QCOMPARE(af.m_amountSpin->value(), 1); }
void CueStack_Test::postRun() { QLCFixtureDef* def = m_doc->fixtureDefCache()->fixtureDef("Futurelight", "DJScan250"); QVERIFY(def != NULL); QLCFixtureMode* mode = def->modes().first(); QVERIFY(mode != NULL); Fixture* fxi = new Fixture(m_doc); fxi->setFixtureDefinition(def, mode); fxi->setName("Test Scanner"); fxi->setAddress(10); fxi->setUniverse(0); m_doc->addFixture(fxi); MasterTimer mt(m_doc); QList<Universe*> ua; ua.append(new Universe(0, new GrandMaster())); CueStack cs(m_doc); cs.setFadeInSpeed(100); cs.setFadeOutSpeed(200); cs.setDuration(300); Cue cue; cue.setName("One"); cue.setValue(0, 255); cue.setValue(1, 255); cue.setValue(500, 255); cue.setValue(10, 255); // LTP cue.setValue(11, 255); // LTP cs.appendCue(cue); cue = Cue(); cue.setName("Two"); cue.setValue(500, 255); cue.setValue(3, 255); cue.setValue(4, 255); cue.setValue(11, 255); // LTP cs.appendCue(cue); cs.preRun(); // Switch to cue one cs.switchCue(-1, 0, ua); QCOMPARE(cs.m_fader->channels().size(), 5); QSignalSpy cueSpy(&cs, SIGNAL(currentCueChanged(int))); QSignalSpy stopSpy(&cs, SIGNAL(stopped())); cs.postRun(&mt); QCOMPARE(cs.m_fader, (GenericFader*) NULL); QCOMPARE(cs.m_currentIndex, -1); QCOMPARE(cueSpy.size(), 1); QCOMPARE(cueSpy.at(0).size(), 1); QCOMPARE(cueSpy.at(0).at(0).toInt(), -1); QCOMPARE(stopSpy.size(), 1); // Only HTP channels go to MasterTimer's GenericFader QCOMPARE(mt.m_fader->channels().size(), 3); FadeChannel fc; fc.setChannel(0); QCOMPARE(mt.m_fader->channels().contains(fc), true); fc.setChannel(1); QCOMPARE(mt.m_fader->channels().contains(fc), true); fc.setChannel(500); QCOMPARE(mt.m_fader->channels().contains(fc), true); }
void Fixture_Test::save() { QLCFixtureDef* fixtureDef; fixtureDef = m_doc->fixtureDefCache()->fixtureDef("Martin", "MAC250+"); Q_ASSERT(fixtureDef != NULL); QLCFixtureMode* fixtureMode; fixtureMode = fixtureDef->modes().at(0); Q_ASSERT(fixtureMode != NULL); Fixture fxi(this); fxi.setID(1337); fxi.setName("Test Fixture"); fxi.setUniverse(2); fxi.setAddress(438); fxi.setFixtureDefinition(fixtureDef, fixtureMode); QBuffer buffer; buffer.open(QIODevice::WriteOnly | QIODevice::Text); QXmlStreamWriter xmlWriter(&buffer); xmlWriter.writeStartElement("TestRoot"); QVERIFY(fxi.saveXML(&xmlWriter) == true); xmlWriter.setDevice(NULL); buffer.close(); buffer.open(QIODevice::ReadOnly | QIODevice::Text); QXmlStreamReader xmlReader(&buffer); xmlReader.readNextStartElement(); QVERIFY(xmlReader.name().toString() == "TestRoot"); xmlReader.readNextStartElement(); QVERIFY(xmlReader.name().toString() == "Fixture"); bool manufacturer = false, model = false, mode = false, name = false, channels = false, universe = false, address = false, id = false; while (xmlReader.readNextStartElement()) { if (xmlReader.name() == "Manufacturer") { QVERIFY(xmlReader.readElementText() == "Martin"); manufacturer = true; } else if (xmlReader.name() == "Model") { QVERIFY(xmlReader.readElementText() == "MAC250+"); model = true; } else if (xmlReader.name() == "Mode") { QVERIFY(xmlReader.readElementText() == fixtureMode->name()); mode = true; } else if (xmlReader.name() == "ID") { QVERIFY(xmlReader.readElementText() == "1337"); id = true; } else if (xmlReader.name() == "Name") { QVERIFY(xmlReader.readElementText() == "Test Fixture"); name = true; } else if (xmlReader.name() == "Universe") { QVERIFY(xmlReader.readElementText() == "2"); universe = true; } else if (xmlReader.name() == "Address") { QVERIFY(xmlReader.readElementText() == "438"); address = true; } else if (xmlReader.name() == "Channels") { QVERIFY(xmlReader.readElementText().toInt() == fixtureMode->channels().count()); channels = true; } else { QFAIL(QString("Unexpected tag: %1").arg(xmlReader.name().toString()) .toLatin1()); xmlReader.skipCurrentElement(); } } QVERIFY(manufacturer == true); QVERIFY(model == true); QVERIFY(mode == true); QVERIFY(id == true); QVERIFY(name == true); QVERIFY(universe == true); QVERIFY(address == true); QVERIFY(channels == true); }
void FixtureGroup_Test::assignFixture4x2() { QLCPoint pt; FixtureGroup grp(m_doc); grp.setSize(QSize(4, 2)); QCOMPARE(grp.headList().size(), 0); for (int i = 0; i < 11; i++) { QLCFixtureDef* def = m_doc->fixtureDefCache()->fixtureDef("Futurelight", "DJScan250"); QVERIFY(def != NULL); QLCFixtureMode* mode = def->modes().first(); QVERIFY(mode != NULL); Fixture* fxi = new Fixture(m_doc); fxi->setFixtureDefinition(def, mode); m_doc->addFixture(fxi); } grp.assignFixture(0); QCOMPARE(grp.headList().size(), 1); QCOMPARE(grp.size(), QSize(4, 2)); pt = QLCPoint(0, 0); QVERIFY(grp.head(pt) == GroupHead(0, 0)); grp.assignFixture(1); QCOMPARE(grp.headList().size(), 2); QCOMPARE(grp.size(), QSize(4, 2)); pt = QLCPoint(0, 0); QVERIFY(grp.head(pt) == GroupHead(0, 0)); pt = QLCPoint(1, 0); QVERIFY(grp.head(pt) == GroupHead(1, 0)); grp.assignFixture(2); QCOMPARE(grp.headList().size(), 3); QCOMPARE(grp.size(), QSize(4, 2)); pt = QLCPoint(0, 0); QVERIFY(grp.head(pt) == GroupHead(0, 0)); pt = QLCPoint(1, 0); QVERIFY(grp.head(pt) == GroupHead(1, 0)); pt = QLCPoint(2, 0); QVERIFY(grp.head(pt) == GroupHead(2, 0)); grp.assignFixture(3); QCOMPARE(grp.headList().size(), 4); QCOMPARE(grp.size(), QSize(4, 2)); pt = QLCPoint(0, 0); QVERIFY(grp.head(pt) == GroupHead(0, 0)); pt = QLCPoint(1, 0); QVERIFY(grp.head(pt) == GroupHead(1, 0)); pt = QLCPoint(2, 0); QVERIFY(grp.head(pt) == GroupHead(2, 0)); pt = QLCPoint(3, 0); QVERIFY(grp.head(pt) == GroupHead(3, 0)); grp.assignFixture(4); QCOMPARE(grp.headList().size(), 5); QCOMPARE(grp.size(), QSize(4, 2)); pt = QLCPoint(0, 0); QVERIFY(grp.head(pt) == GroupHead(0, 0)); pt = QLCPoint(1, 0); QVERIFY(grp.head(pt) == GroupHead(1, 0)); pt = QLCPoint(2, 0); QVERIFY(grp.head(pt) == GroupHead(2, 0)); pt = QLCPoint(3, 0); QVERIFY(grp.head(pt) == GroupHead(3, 0)); pt = QLCPoint(0, 1); QVERIFY(grp.head(pt) == GroupHead(4, 0)); grp.assignFixture(5); QCOMPARE(grp.headList().size(), 6); QCOMPARE(grp.size(), QSize(4, 2)); pt = QLCPoint(0, 0); QVERIFY(grp.head(pt) == GroupHead(0, 0)); pt = QLCPoint(1, 0); QVERIFY(grp.head(pt) == GroupHead(1, 0)); pt = QLCPoint(2, 0); QVERIFY(grp.head(pt) == GroupHead(2, 0)); pt = QLCPoint(3, 0); QVERIFY(grp.head(pt) == GroupHead(3, 0)); pt = QLCPoint(0, 1); QVERIFY(grp.head(pt) == GroupHead(4, 0)); pt = QLCPoint(1, 1); QVERIFY(grp.head(pt) == GroupHead(5, 0)); grp.assignFixture(6); QCOMPARE(grp.headList().size(), 7); QCOMPARE(grp.size(), QSize(4, 2)); pt = QLCPoint(0, 0); QVERIFY(grp.head(pt) == GroupHead(0, 0)); pt = QLCPoint(1, 0); QVERIFY(grp.head(pt) == GroupHead(1, 0)); pt = QLCPoint(2, 0); QVERIFY(grp.head(pt) == GroupHead(2, 0)); pt = QLCPoint(3, 0); QVERIFY(grp.head(pt) == GroupHead(3, 0)); pt = QLCPoint(0, 1); QVERIFY(grp.head(pt) == GroupHead(4, 0)); pt = QLCPoint(1, 1); QVERIFY(grp.head(pt) == GroupHead(5, 0)); pt = QLCPoint(2, 1); QVERIFY(grp.head(pt) == GroupHead(6, 0)); grp.assignFixture(7); QCOMPARE(grp.headList().size(), 8); QCOMPARE(grp.size(), QSize(4, 2)); pt = QLCPoint(0, 0); QVERIFY(grp.head(pt) == GroupHead(0, 0)); pt = QLCPoint(1, 0); QVERIFY(grp.head(pt) == GroupHead(1, 0)); pt = QLCPoint(2, 0); QVERIFY(grp.head(pt) == GroupHead(2, 0)); pt = QLCPoint(3, 0); QVERIFY(grp.head(pt) == GroupHead(3, 0)); pt = QLCPoint(0, 1); QVERIFY(grp.head(pt) == GroupHead(4, 0)); pt = QLCPoint(1, 1); QVERIFY(grp.head(pt) == GroupHead(5, 0)); pt = QLCPoint(2, 1); QVERIFY(grp.head(pt) == GroupHead(6, 0)); pt = QLCPoint(3, 1); QVERIFY(grp.head(pt) == GroupHead(7, 0)); // Now beyond size(); should continue to make a third row of 4 columns grp.assignFixture(8); QCOMPARE(grp.headList().size(), 9); QCOMPARE(grp.size(), QSize(4, 2)); pt = QLCPoint(0, 0); QVERIFY(grp.head(pt) == GroupHead(0, 0)); pt = QLCPoint(1, 0); QVERIFY(grp.head(pt) == GroupHead(1, 0)); pt = QLCPoint(2, 0); QVERIFY(grp.head(pt) == GroupHead(2, 0)); pt = QLCPoint(3, 0); QVERIFY(grp.head(pt) == GroupHead(3, 0)); pt = QLCPoint(0, 1); QVERIFY(grp.head(pt) == GroupHead(4, 0)); pt = QLCPoint(1, 1); QVERIFY(grp.head(pt) == GroupHead(5, 0)); pt = QLCPoint(2, 1); QVERIFY(grp.head(pt) == GroupHead(6, 0)); pt = QLCPoint(3, 1); QVERIFY(grp.head(pt) == GroupHead(7, 0)); pt = QLCPoint(0, 2); QVERIFY(grp.head(pt) == GroupHead(8, 0)); grp.assignFixture(9); QCOMPARE(grp.headList().size(), 10); QCOMPARE(grp.size(), QSize(4, 2)); pt = QLCPoint(0, 0); QVERIFY(grp.head(pt) == GroupHead(0, 0)); pt = QLCPoint(1, 0); QVERIFY(grp.head(pt) == GroupHead(1, 0)); pt = QLCPoint(2, 0); QVERIFY(grp.head(pt) == GroupHead(2, 0)); pt = QLCPoint(3, 0); QVERIFY(grp.head(pt) == GroupHead(3, 0)); pt = QLCPoint(0, 1); QVERIFY(grp.head(pt) == GroupHead(4, 0)); pt = QLCPoint(1, 1); QVERIFY(grp.head(pt) == GroupHead(5, 0)); pt = QLCPoint(2, 1); QVERIFY(grp.head(pt) == GroupHead(6, 0)); pt = QLCPoint(3, 1); QVERIFY(grp.head(pt) == GroupHead(7, 0)); pt = QLCPoint(0, 2); QVERIFY(grp.head(pt) == GroupHead(8, 0)); pt = QLCPoint(1, 2); QVERIFY(grp.head(pt) == GroupHead(9, 0)); // Going waaay beyond size should be possible pt = QLCPoint(1024, 2048); grp.assignFixture(10, pt); QVERIFY(grp.headHash().contains(pt) == true); QCOMPARE(grp.head(pt), GroupHead(10, 0)); QCOMPARE(grp.size(), QSize(4, 2)); }
void FixtureGroup_Test::assignFixtureNoSize() { QLCPoint pt; FixtureGroup grp(m_doc); QCOMPARE(grp.headList().size(), 0); Fixture* fxi = new Fixture(m_doc); fxi->setChannels(2); m_doc->addFixture(fxi); grp.assignFixture(fxi->id()); QCOMPARE(grp.headList().size(), 2); QCOMPARE(grp.size(), QSize(1, 1)); QVERIFY(grp.headHash()[QLCPoint(0, 0)] == GroupHead(0, 0)); QVERIFY(grp.headHash()[QLCPoint(0, 1)] == GroupHead(0, 1)); // Same fixture can't be at two places grp.assignFixture(0, QLCPoint(100, 100)); QCOMPARE(grp.headList().size(), 2); QCOMPARE(grp.size(), QSize(1, 1)); QVERIFY(grp.headHash()[QLCPoint(0, 0)] == GroupHead(0, 0)); QVERIFY(grp.headHash()[QLCPoint(0, 1)] == GroupHead(0, 1)); fxi = new Fixture(m_doc); fxi->setChannels(1); m_doc->addFixture(fxi); grp.assignFixture(fxi->id()); QCOMPARE(grp.headList().size(), 3); QCOMPARE(grp.size(), QSize(1, 1)); QVERIFY(grp.headHash()[QLCPoint(0, 0)] == GroupHead(0, 0)); QVERIFY(grp.headHash()[QLCPoint(0, 1)] == GroupHead(0, 1)); QVERIFY(grp.headHash()[QLCPoint(0, 2)] == GroupHead(1, 0)); QLCFixtureDef* def = m_doc->fixtureDefCache()->fixtureDef("Futurelight", "DJScan250"); QVERIFY(def != NULL); QLCFixtureMode* mode = def->modes().first(); QVERIFY(mode != NULL); fxi = new Fixture(m_doc); fxi->setFixtureDefinition(def, mode); m_doc->addFixture(fxi); grp.assignFixture(fxi->id()); QCOMPARE(grp.headList().size(), 4); QCOMPARE(grp.size(), QSize(1, 1)); QVERIFY(grp.headHash()[QLCPoint(0, 0)] == GroupHead(0, 0)); QVERIFY(grp.headHash()[QLCPoint(0, 1)] == GroupHead(0, 1)); QVERIFY(grp.headHash()[QLCPoint(0, 2)] == GroupHead(1, 0)); QVERIFY(grp.headHash()[QLCPoint(0, 3)] == GroupHead(2, 0)); def = m_doc->fixtureDefCache()->fixtureDef("i-Pix", "BB4"); QVERIFY(def != NULL); mode = def->modes().last(); QVERIFY(mode != NULL); QCOMPARE(mode->heads().size(), 4); fxi = new Fixture(m_doc); fxi->setFixtureDefinition(def, mode); m_doc->addFixture(fxi); grp.assignFixture(fxi->id()); QCOMPARE(grp.headList().size(), 8); QCOMPARE(grp.size(), QSize(1, 1)); QVERIFY(grp.headHash()[QLCPoint(0, 0)] == GroupHead(0, 0)); QVERIFY(grp.headHash()[QLCPoint(0, 1)] == GroupHead(0, 1)); QVERIFY(grp.headHash()[QLCPoint(0, 2)] == GroupHead(1, 0)); QVERIFY(grp.headHash()[QLCPoint(0, 3)] == GroupHead(2, 0)); // BB4 heads QVERIFY(grp.headHash()[QLCPoint(0, 4)] == GroupHead(3, 0)); QVERIFY(grp.headHash()[QLCPoint(0, 5)] == GroupHead(3, 1)); QVERIFY(grp.headHash()[QLCPoint(0, 6)] == GroupHead(3, 2)); QVERIFY(grp.headHash()[QLCPoint(0, 7)] == GroupHead(3, 3)); }
void Doc_Test::totalPowerConsumption() { int fuzzy = 0; /* Load Showtec - MiniMax 250 with 250W power consumption */ QLCFixtureDef* fixtureDef; fixtureDef = m_doc->fixtureDefCache()->fixtureDef("Showtec", "MiniMax 250"); Q_ASSERT(fixtureDef != NULL); QLCFixtureMode* fixtureMode; fixtureMode = fixtureDef->modes().at(0); Q_ASSERT(fixtureMode != NULL); /* Add a new fixture */ Fixture* f1 = new Fixture(m_doc); f1->setName("250W (total 250W)"); f1->setChannels(6); f1->setAddress(0); f1->setUniverse(0); f1->setFixtureDefinition(fixtureDef, fixtureMode); QVERIFY(f1->fixtureDef() == fixtureDef); QVERIFY(f1->fixtureMode() == fixtureMode); QVERIFY(f1->fixtureMode()->physical().powerConsumption() == 250); QVERIFY(m_doc->addFixture(f1) == true); QVERIFY(m_doc->totalPowerConsumption(fuzzy) == 250); QVERIFY(fuzzy == 0); /* Add the same fixture once more */ Fixture* f2 = new Fixture(m_doc); f2->setName("250W (total 500W)"); f2->setChannels(6); f2->setAddress(10); f2->setUniverse(0); f2->setFixtureDefinition(fixtureDef, fixtureMode); QVERIFY(f2->fixtureDef() == fixtureDef); QVERIFY(f2->fixtureMode() == fixtureMode); QVERIFY(f2->fixtureMode()->physical().powerConsumption() == 250); QVERIFY(m_doc->addFixture(f2) == true); QVERIFY(m_doc->totalPowerConsumption(fuzzy) == 500); QVERIFY(fuzzy == 0); /* Test generic dimmer and fuzzy */ Fixture* f3 = new Fixture(m_doc); f3->setName("Generic Dimmer"); f3->setChannels(6); f3->setAddress(20); f3->setUniverse(0); QVERIFY(m_doc->addFixture(f3) == true); QVERIFY(m_doc->totalPowerConsumption(fuzzy) == 500); QVERIFY(fuzzy == 1); // reset fuzzy count fuzzy = 0; /* Test fuzzy count */ Fixture* f4 = new Fixture(m_doc); f4->setName("Generic Dimmer 2"); f4->setChannels(6); f4->setAddress(30); f4->setUniverse(0); QVERIFY(m_doc->addFixture(f4) == true); QVERIFY(m_doc->totalPowerConsumption(fuzzy) == 500); QVERIFY(fuzzy == 2); }
void CueStack_Test::switchCue() { QLCFixtureDef* def = m_doc->fixtureDefCache()->fixtureDef("Futurelight", "DJScan250"); QVERIFY(def != NULL); QLCFixtureMode* mode = def->modes().first(); QVERIFY(mode != NULL); Fixture* fxi = new Fixture(m_doc); fxi->setFixtureDefinition(def, mode); fxi->setName("Test Scanner"); fxi->setAddress(10); fxi->setUniverse(0); m_doc->addFixture(fxi); QList<Universe*> ua; ua.append(new Universe(0, new GrandMaster())); CueStack cs(m_doc); cs.setFadeInSpeed(100); cs.setFadeOutSpeed(200); cs.setDuration(300); Cue cue; cue.setName("One"); cue.setValue(0, 255); cue.setValue(1, 255); cue.setValue(500, 255); cue.setValue(10, 255); // LTP cue.setValue(11, 255); // LTP cue.setFadeInSpeed(20); cue.setFadeOutSpeed(40); cs.appendCue(cue); cue = Cue(); cue.setName("Two"); cue.setValue(500, 255); cue.setValue(3, 255); cue.setValue(4, 255); cue.setValue(11, 255); // LTP cue.setFadeInSpeed(60); cue.setFadeOutSpeed(80); cs.appendCue(cue); cs.preRun(); // Do nothing with invalid cue indices cs.switchCue(-1, -1, ua); QCOMPARE(cs.m_fader->channels().size(), 0); cs.switchCue(-1, 3, ua); QCOMPARE(cs.m_fader->channels().size(), 0); // Switch to cue one cs.switchCue(3, 0, ua); QCOMPARE(cs.m_fader->channels().size(), 5); FadeChannel fc; fc.setChannel(0); QCOMPARE(cs.m_fader->channels()[fc].start(), uchar(0)); QCOMPARE(cs.m_fader->channels()[fc].current(), uchar(0)); QCOMPARE(cs.m_fader->channels()[fc].target(), uchar(255)); QCOMPARE(cs.m_fader->channels()[fc].channel(), uint(0)); QCOMPARE(cs.m_fader->channels()[fc].fadeTime(), uint(20)); fc.setChannel(1); QCOMPARE(cs.m_fader->channels()[fc].start(), uchar(0)); QCOMPARE(cs.m_fader->channels()[fc].current(), uchar(0)); QCOMPARE(cs.m_fader->channels()[fc].target(), uchar(255)); QCOMPARE(cs.m_fader->channels()[fc].channel(), uint(1)); QCOMPARE(cs.m_fader->channels()[fc].fadeTime(), uint(20)); fc.setChannel(10); QCOMPARE(cs.m_fader->channels()[fc].start(), uchar(0)); QCOMPARE(cs.m_fader->channels()[fc].current(), uchar(0)); QCOMPARE(cs.m_fader->channels()[fc].target(), uchar(255)); QCOMPARE(cs.m_fader->channels()[fc].channel(), uint(10)); QCOMPARE(cs.m_fader->channels()[fc].fadeTime(), uint(20)); fc.setChannel(11); QCOMPARE(cs.m_fader->channels()[fc].start(), uchar(0)); QCOMPARE(cs.m_fader->channels()[fc].current(), uchar(0)); QCOMPARE(cs.m_fader->channels()[fc].target(), uchar(255)); QCOMPARE(cs.m_fader->channels()[fc].channel(), uint(11)); QCOMPARE(cs.m_fader->channels()[fc].fadeTime(), uint(20)); fc.setChannel(500); QCOMPARE(cs.m_fader->channels()[fc].start(), uchar(0)); QCOMPARE(cs.m_fader->channels()[fc].current(), uchar(0)); QCOMPARE(cs.m_fader->channels()[fc].target(), uchar(255)); QCOMPARE(cs.m_fader->channels()[fc].channel(), uint(500)); QCOMPARE(cs.m_fader->channels()[fc].fadeTime(), uint(20)); fc.setChannel(3); QCOMPARE(cs.m_fader->channels()[fc].channel(), QLCChannel::invalid()); fc.setChannel(4); QCOMPARE(cs.m_fader->channels()[fc].channel(), QLCChannel::invalid()); fc.setChannel(0); cs.m_fader->m_channels[fc].setCurrent(127); fc.setChannel(1); cs.m_fader->m_channels[fc].setCurrent(127); fc.setChannel(10); cs.m_fader->m_channels[fc].setCurrent(127); fc.setChannel(11); cs.m_fader->m_channels[fc].setCurrent(127); fc.setChannel(500); cs.m_fader->m_channels[fc].setCurrent(127); // Switch to cue two cs.switchCue(0, 1, ua); QCOMPARE(cs.m_fader->channels().size(), 7); fc.setChannel(0); QCOMPARE(cs.m_fader->channels()[fc].start(), uchar(127)); QCOMPARE(cs.m_fader->channels()[fc].current(), uchar(127)); QCOMPARE(cs.m_fader->channels()[fc].target(), uchar(0)); QCOMPARE(cs.m_fader->channels()[fc].channel(), uint(0)); QCOMPARE(cs.m_fader->channels()[fc].fadeTime(), uint(40)); fc.setChannel(1); QCOMPARE(cs.m_fader->channels()[fc].start(), uchar(127)); QCOMPARE(cs.m_fader->channels()[fc].current(), uchar(127)); QCOMPARE(cs.m_fader->channels()[fc].target(), uchar(0)); QCOMPARE(cs.m_fader->channels()[fc].channel(), uint(1)); QCOMPARE(cs.m_fader->channels()[fc].fadeTime(), uint(40)); fc.setChannel(11); // LTP channel also in the next cue QCOMPARE(cs.m_fader->channels()[fc].start(), uchar(127)); QCOMPARE(cs.m_fader->channels()[fc].current(), uchar(127)); QCOMPARE(cs.m_fader->channels()[fc].target(), uchar(255)); QCOMPARE(cs.m_fader->channels()[fc].channel(), uint(11)); QCOMPARE(cs.m_fader->channels()[fc].fadeTime(), uint(60)); fc.setChannel(500); QCOMPARE(cs.m_fader->channels()[fc].start(), uchar(127)); QCOMPARE(cs.m_fader->channels()[fc].current(), uchar(127)); QCOMPARE(cs.m_fader->channels()[fc].target(), uchar(255)); QCOMPARE(cs.m_fader->channels()[fc].channel(), uint(500)); QCOMPARE(cs.m_fader->channels()[fc].fadeTime(), uint(60)); fc.setChannel(3); QCOMPARE(cs.m_fader->channels()[fc].start(), uchar(0)); QCOMPARE(cs.m_fader->channels()[fc].current(), uchar(0)); QCOMPARE(cs.m_fader->channels()[fc].target(), uchar(255)); QCOMPARE(cs.m_fader->channels()[fc].channel(), uint(3)); QCOMPARE(cs.m_fader->channels()[fc].fadeTime(), uint(60)); fc.setChannel(4); QCOMPARE(cs.m_fader->channels()[fc].start(), uchar(0)); QCOMPARE(cs.m_fader->channels()[fc].current(), uchar(0)); QCOMPARE(cs.m_fader->channels()[fc].target(), uchar(255)); QCOMPARE(cs.m_fader->channels()[fc].channel(), uint(4)); QCOMPARE(cs.m_fader->channels()[fc].fadeTime(), uint(60)); // Stop cs.switchCue(1, -1, ua); QCOMPARE(cs.m_fader->channels().size(), 7); MasterTimer mt(m_doc); cs.postRun(&mt); }
void Fixture_Test::fixtureDef() { Fixture fxi(this); QVERIFY(fxi.fixtureDef() == NULL); QVERIFY(fxi.fixtureMode() == NULL); QVERIFY(fxi.channels() == 0); QVERIFY(fxi.channel(0) == NULL); QCOMPARE(fxi.panMsbChannel(), QLCChannel::invalid()); QCOMPARE(fxi.tiltMsbChannel(), QLCChannel::invalid()); QCOMPARE(fxi.panLsbChannel(), QLCChannel::invalid()); QCOMPARE(fxi.tiltLsbChannel(), QLCChannel::invalid()); QCOMPARE(fxi.masterIntensityChannel(), QLCChannel::invalid()); QLCFixtureDef* fixtureDef; fixtureDef = m_doc->fixtureDefCache()->fixtureDef("Martin", "MAC300"); Q_ASSERT(fixtureDef != NULL); fxi.setFixtureDefinition(fixtureDef, NULL); QVERIFY(fxi.fixtureDef() == NULL); QVERIFY(fxi.fixtureMode() == NULL); QLCFixtureMode* fixtureMode; fixtureMode = fixtureDef->modes().last(); Q_ASSERT(fixtureMode != NULL); fxi.setFixtureDefinition(NULL, fixtureMode); QVERIFY(fxi.fixtureDef() == NULL); QVERIFY(fxi.fixtureMode() == NULL); fxi.setFixtureDefinition(fixtureDef, fixtureMode); QVERIFY(fxi.fixtureDef() != NULL); QVERIFY(fxi.fixtureMode() != NULL); QVERIFY(fxi.fixtureDef() == fixtureDef); QVERIFY(fxi.fixtureMode() == fixtureMode); QVERIFY(fxi.channels() == quint32(fixtureMode->channels().count())); QVERIFY(fxi.channel(fxi.channels() - 1) != NULL); QVERIFY(fxi.channel(fxi.channels()) == NULL); QVERIFY(fxi.channel("Pan") != QLCChannel::invalid()); const QLCChannel* ch = fxi.channel(fxi.channel("Pan")); QVERIFY(ch != NULL); QVERIFY(ch->name().toLower() == "pan"); ch = fxi.channel(fxi.channel("Pan", Qt::CaseInsensitive, QLCChannel::Colour)); QVERIFY(ch == NULL); QVERIFY(fxi.channel("fect") != QLCChannel::invalid()); ch = fxi.channel(fxi.channel("fect")); QVERIFY(ch != NULL); QCOMPARE(ch->name(), QString("Effect speed")); QCOMPARE(fxi.panMsbChannel(), quint32(7)); QCOMPARE(fxi.tiltMsbChannel(), quint32(9)); QCOMPARE(fxi.panLsbChannel(), quint32(8)); QCOMPARE(fxi.tiltLsbChannel(), quint32(10)); QCOMPARE(fxi.masterIntensityChannel(), quint32(1)); QCOMPARE(fxi.rgbChannels(), QList <quint32> ()); QCOMPARE(fxi.cmyChannels(), QList <quint32> () << 2 << 3 << 4); }
void Fixture_Test::save() { QLCFixtureDef* fixtureDef; fixtureDef = m_doc->fixtureDefCache()->fixtureDef("Martin", "MAC250+"); Q_ASSERT(fixtureDef != NULL); QLCFixtureMode* fixtureMode; fixtureMode = fixtureDef->modes().at(0); Q_ASSERT(fixtureMode != NULL); Fixture fxi(this); fxi.setID(1337); fxi.setName("Test Fixture"); fxi.setUniverse(2); fxi.setAddress(438); fxi.setFixtureDefinition(fixtureDef, fixtureMode); QDomDocument doc; QDomElement root = doc.createElement("TestRoot"); QVERIFY(fxi.saveXML(&doc, &root) == true); QDomNode node = root.firstChild(); QVERIFY(node.toElement().tagName() == "Fixture"); bool manufacturer = false, model = false, mode = false, name = false, channels = false, universe = false, address = false, id = false; node = node.firstChild(); while (node.isNull() == false) { QDomElement e = node.toElement(); if (e.tagName() == "Manufacturer") { QVERIFY(e.text() == "Martin"); manufacturer = true; } else if (e.tagName() == "Model") { QVERIFY(e.text() == "MAC250+"); model = true; } else if (e.tagName() == "Mode") { QVERIFY(e.text() == fixtureMode->name()); mode = true; } else if (e.tagName() == "ID") { QVERIFY(e.text() == "1337"); id = true; } else if (e.tagName() == "Name") { QVERIFY(e.text() == "Test Fixture"); name = true; } else if (e.tagName() == "Universe") { QVERIFY(e.text() == "2"); universe = true; } else if (e.tagName() == "Address") { QVERIFY(e.text() == "438"); address = true; } else if (e.tagName() == "Channels") { QVERIFY(e.text().toInt() == fixtureMode->channels().count()); channels = true; } else { QFAIL(QString("Unexpected tag: %1").arg(e.tagName()) .toLatin1()); } node = node.nextSibling(); } QVERIFY(manufacturer == true); QVERIFY(model == true); QVERIFY(mode == true); QVERIFY(id == true); QVERIFY(name == true); QVERIFY(universe == true); QVERIFY(address == true); QVERIFY(channels == true); }