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 Doc_Test::save() { Scene* s = new Scene(m_doc); m_doc->addFunction(s); Fixture* f1 = new Fixture(m_doc); f1->setName("One"); f1->setChannels(5); f1->setAddress(0); f1->setUniverse(0); m_doc->addFixture(f1); Chaser* c = new Chaser(m_doc); m_doc->addFunction(c); Fixture* f2 = new Fixture(m_doc); f2->setName("Two"); f2->setChannels(10); f2->setAddress(20); f2->setUniverse(1); m_doc->addFixture(f2); Collection* o = new Collection(m_doc); m_doc->addFunction(o); Fixture* f3 = new Fixture(m_doc); f3->setName("Three"); f3->setChannels(15); f3->setAddress(40); f3->setUniverse(2); m_doc->addFixture(f3); EFX* e = new EFX(m_doc); m_doc->addFunction(e); FixtureGroup* grp = new FixtureGroup(m_doc); grp->setName("Group 1"); m_doc->addFixtureGroup(grp); grp = new FixtureGroup(m_doc); grp->setName("Group 2"); m_doc->addFixtureGroup(grp); QVERIFY(m_doc->isModified() == true); QBuffer buffer; buffer.open(QIODevice::WriteOnly | QIODevice::Text); QXmlStreamWriter xmlWriter(&buffer); xmlWriter.writeStartElement("TestRoot"); QVERIFY(m_doc->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() == "Engine"); uint fixtures = 0, groups = 0, functions = 0, ioMap = 0; // Merely tests that the start of each hierarchy is found from the XML document. // Their contents are tested individually in their own separate tests. while (xmlReader.readNextStartElement()) { if (xmlReader.name() == "Fixture") fixtures++; else if (xmlReader.name() == "Function") functions++; else if (xmlReader.name() == "FixtureGroup") groups++; else if (xmlReader.name() == "InputOutputMap") ioMap++; else if (xmlReader.name() == "Bus") QFAIL("Bus tags should not be saved anymore!"); else QFAIL(QString("Unexpected tag: %1") .arg(xmlReader.name().toString()).toLatin1()); xmlReader.skipCurrentElement(); } QVERIFY(fixtures == 3); QVERIFY(groups == 2); QVERIFY(functions == 4); QVERIFY(ioMap == 1); /* Saving doesn't implicitly reset modified status */ QVERIFY(m_doc->isModified() == true); }
void Doc_Test::save() { Scene* s = new Scene(m_doc); m_doc->addFunction(s); Fixture* f1 = new Fixture(m_doc); f1->setName("One"); f1->setChannels(5); f1->setAddress(0); f1->setUniverse(0); m_doc->addFixture(f1); Chaser* c = new Chaser(m_doc); m_doc->addFunction(c); Fixture* f2 = new Fixture(m_doc); f2->setName("Two"); f2->setChannels(10); f2->setAddress(20); f2->setUniverse(1); m_doc->addFixture(f2); Collection* o = new Collection(m_doc); m_doc->addFunction(o); Fixture* f3 = new Fixture(m_doc); f3->setName("Three"); f3->setChannels(15); f3->setAddress(40); f3->setUniverse(2); m_doc->addFixture(f3); EFX* e = new EFX(m_doc); m_doc->addFunction(e); FixtureGroup* grp = new FixtureGroup(m_doc); grp->setName("Group 1"); m_doc->addFixtureGroup(grp); grp = new FixtureGroup(m_doc); grp->setName("Group 2"); m_doc->addFixtureGroup(grp); QVERIFY(m_doc->isModified() == true); QDomDocument document; QDomElement root = document.createElement("TestRoot"); QVERIFY(m_doc->saveXML(&document, &root) == true); uint fixtures = 0, groups = 0, functions = 0; QDomNode node = root.firstChild(); QVERIFY(node.toElement().tagName() == "Engine"); // Merely tests that the start of each hierarchy is found from the XML document. // Their contents are tested individually in their own separate tests. node = node.firstChild(); while (node.isNull() == false) { QDomElement tag = node.toElement(); if (tag.tagName() == "Fixture") fixtures++; else if (tag.tagName() == "Function") functions++; else if (tag.tagName() == "FixtureGroup") groups++; else if (tag.tagName() == "Bus") QFAIL("Bus tags should not be saved anymore!"); else QFAIL(QString("Unexpected tag: %1") .arg(tag.tagName()).toLatin1()); node = node.nextSibling(); } QVERIFY(fixtures == 3); QVERIFY(groups == 2); QVERIFY(functions == 4); /* Saving doesn't implicitly reset modified status */ QVERIFY(m_doc->isModified() == true); }