void tst_QTemporaryFile::resize() { QTemporaryFile file; file.setAutoRemove(true); QVERIFY(file.open()); QVERIFY(file.resize(100)); QCOMPARE(QFileInfo(file.fileName()).size(), qint64(100)); file.close(); }
void SignalDataSource::setSamples(float *samples, qint64 count, double sampleRate) { clean(); m_samples = samples; m_count = count; m_sampleRate = sampleRate; qint64 spp = 2; while (m_count / spp > 0) { qint64 count = m_count / spp + ((m_count % spp) ? (1) : (0)); float *maximums; float *minimums; { QTemporaryFile *file = new QTemporaryFile(); if (!file->open()) return ; file->resize(count * sizeof(float)); maximums = (float *)(file->map(0, count * sizeof(float))); } { QTemporaryFile *file = new QTemporaryFile(); if (!file->open()) return ; file->resize(count * sizeof(float)); minimums = (float *)(file->map(0, count * sizeof(float))); } for (qint64 arrIndex = 0; arrIndex < count; ++arrIndex) { qint64 sampleFirstIndex = arrIndex * spp; qint64 sampleLastIndex = sampleFirstIndex + spp - 1; if (sampleLastIndex >= m_count) sampleLastIndex = m_count - 1; double min; double max; min = max = m_samples[sampleFirstIndex]; for (int i = sampleFirstIndex + 1; i <= sampleLastIndex; ++i) { if (m_samples[i] < min) min = m_samples[i]; else if (m_samples[i] > max) max = m_samples[i]; } minimums[arrIndex] = min; maximums[arrIndex] = max; } m_peakMaximums[spp] = maximums; m_peakMinimums[spp] = minimums; m_peakCount[spp] = count; spp *= 2; } emit dataChanged(); }
/*? Test function for QUsbStorageGadgetProvider. This test: * Creates a QUsbStorageGadgetProvider. * Does simple set-get tests on QUsbStorageGadgetProvider attributes. * Activates and deactivates the gadget and ensures that the required signals are emitted. */ void tst_QUsbStorageGadget::providerTests() { QUsbManager *manager = new QUsbManager(this); // Test that there is no current usb gadget QList<QUsbGadget *> activeGadgets = manager->activeGadgets(); QVERIFY(activeGadgets.count() == 0); foreach (QUsbGadget *gadget, activeGadgets) delete gadget; // Test that the provider works as expected { QUsbStorageGadgetProvider *provider = new QUsbStorageGadgetProvider("Qt Extended"); // Set and test various attributes { if (provider->supportsProduct()) { provider->setProduct("Qt Extended Product"); QVERIFY(provider->product() == "Qt Extended Product"); } if (provider->supportsProductId()) { provider->setProductId(0x5454); QVERIFY(provider->productId() == 0x5454); } if (provider->supportsVendor()) { provider->setVendor("Qt Extended Vendor"); QVERIFY(provider->vendor() == "Qt Extended Vendor"); } if (provider->supportsVendorId()) { provider->setVendorId(0x5454); QVERIFY(provider->vendorId() == 0x5454); } QVERIFY(provider->backingStore().isEmpty()); provider->addBackingStore("/dev/partition1"); QVERIFY(provider->backingStore().count() == 1); QVERIFY(provider->backingStore().contains("/dev/partition1")); provider->addBackingStore("/dev/partition2"); QVERIFY(provider->backingStore().count() == 2); QVERIFY(provider->backingStore().contains("/dev/partition1")); QVERIFY(provider->backingStore().contains("/dev/partition2")); provider->removeBackingStore("/dev/partition1"); QVERIFY(provider->backingStore().count() == 1); QVERIFY(!provider->backingStore().contains("/dev/partition1")); QVERIFY(provider->backingStore().contains("/dev/partition2")); QStringList partitions; partitions << "/dev/partition3" << "/dev/partition4"; provider->setBackingStore(partitions); QVERIFY(provider->backingStore() == partitions); provider->setBackingStore(QStringList()); QVERIFY(provider->backingStore().isEmpty()); } // Activate and deactivate gadget if (QProcess::execute("/sbin/modinfo g_file_storage")) { QSKIP("This test requires the g_file_storage usb gadget driver", SkipSingle); } else { QVERIFY(manager->canActivate("Storage")); QSignalSpy activateSpy(provider, SIGNAL(activated())); QSignalSpy deactivateSpy(provider, SIGNAL(deactivated())); QTemporaryFile backingStore; backingStore.open(); backingStore.resize(5*1024*1024); provider->addBackingStore(backingStore.fileName()); provider->activate(); //QTRY_VERIFY(activateSpy.count() + deactivateSpy.count() == 1); activateSpy.clear(); deactivateSpy.clear(); QVERIFY(provider->active()); QList<QUsbGadget *> activeGadgets = manager->activeGadgets(); bool activated = false; foreach (QUsbGadget *gadget, activeGadgets) { if (gadget->gadget() == provider->gadget()) activated = true; delete gadget; } QVERIFY(activated); provider->deactivate(); //QTRY_VERIFY(activateSpy.count() + deactivateSpy.count() == 1); QVERIFY(!provider->active()); activeGadgets = manager->activeGadgets(); bool deactivated = true; foreach (QUsbGadget *gadget, activeGadgets) { if (gadget->gadget() == provider->gadget()) deactivated = false; delete gadget; } QVERIFY(deactivated); } delete provider; } delete manager; QValueSpaceObject::sync(); }
QString createObjectsAndTypesPage(PandaDocument* document) { static QTemporaryFile file(QDir::tempPath() + "/pandaRef_XXXXXX.html"); file.open(); file.resize(0); QTextStream out(&file); out << "<!DOCTYPE html>\n" "<html lang=\"en\">\n" " <head>\n" " <meta charset=\"utf-8\">\n" " <title>List of available objects and types for Panda</title>\n" " </head>\n" " <body>\n"; out << " <h1>Types</h1>\n"; auto dataEntriesList = DataFactory::entries(); std::sort(dataEntriesList.begin(), dataEntriesList.end(), dataTypeIdLessThan); std::vector<EnrichedDataEntry> dataEntries; // Copy entries and get additional info for(auto d : dataEntriesList) { EnrichedDataEntry e = *d; auto tmpData = DataFactory::create(d->fullType, "", "", nullptr); if(tmpData) { e.description = tmpData->getDescription(); e.trait = tmpData->getDataTrait(); } dataEntries.push_back(e); } for(const auto& d : dataEntries) { out << " <h2>" << QString::fromStdString(d.description) << "</h2>\n" << " <p>Type: " << toHtml(d.className) << "</p>\n" << " <p>Id: " << d.fullType << "</p>\n"; bool hasConversions = false; for(const auto& d2 : dataEntries) { if(d.fullType == d2.fullType) continue; if(!d.trait || !d2.trait) continue; if(canConvert(d.trait, d2.trait)) { if(!hasConversions) { out << " <p>Can be converted to: "; hasConversions = true; } else out << ", "; out << QString::fromStdString(d2.description); } } if(!hasConversions) out << " <p>Has no known conversion"; out << "</p>\n"; auto widgets = DataWidgetFactory::getInstance()->getWidgetNames(d.fullType); if(widgets.empty()) out << " <p>No widgets for this type</p>\n"; else { out << " <p>Widgets available: "; bool first = true; for(const auto& w : widgets) { if(first) first = false; else out << ", "; out << w; } out << "</p>\n"; } } out << " <h1>Objects</h1>\n"; std::vector<ObjectFactory::ClassEntry> objectsEntries; for(const auto& object : ObjectFactory::registryMap()) objectsEntries.push_back(object.second); std::sort(objectsEntries.begin(), objectsEntries.end(), objectsMenuLessThan); for(const auto& o : objectsEntries) { out << " <h2>" << QString::fromStdString(o.menuDisplay) << "</h2>\n"; out << " <p>In module: " << toHtml(o.moduleName) << "</p>\n"; out << " <p>Type: " << toHtml(o.className) << "</p>\n"; out << " <p>" << QString::fromStdString(o.description) << "</p>\n"; if(o.creator) { auto object = o.creator->create(document); auto datas = object->getDatas(); if(!datas.empty()) out << " <h3>Datas</h3>\n"; for(auto d : datas) { out << " <p>" << QString::fromStdString(d->getName()) << ": " << QString::fromStdString(d->getDescription()) << ". " << QString::fromStdString(d->getHelp()) << "</p>\n"; } } } out << " </body>\n" "</html>\n"; return file.fileName(); }