Пример #1
0
void
Test_KCompletion::sortedOrder()
{
	KCompletion completion;
	completion.setSoundsEnabled(false);
	QSignalSpy spy1(&completion, SIGNAL(match(QString)));
	QSignalSpy spy3(&completion, SIGNAL(multipleMatches()));

	completion.setOrder(KCompletion::Sorted);
	QVERIFY(completion.order() == KCompletion::Sorted);

	completion.setItems(strings);
	QVERIFY(completion.items().count() == 4);

	completion.setCompletionMode(KGlobalSettings::CompletionShell);
	QCOMPARE(completion.makeCompletion("ca"), QString("carp"));
	QVERIFY(spy1.count() == 1);
	QCOMPARE(spy1.takeFirst().at(0).toString(), QString("carp"));
	QVERIFY(spy3.count() == 1); spy3.takeFirst();

	QSignalSpy spy2(&completion, SIGNAL(matches(QStringList)));
	completion.makeCompletion("ca");
	QCOMPARE(spy2.count(), 1);
	QVERIFY(spy3.count() == 0); // shouldn't be signaled on 2nd call

	QStringList matches = spy2.takeFirst().at(0).toStringList();
	QVERIFY(matches.count() == 2);
	QCOMPARE(matches[0], carp);
	QCOMPARE(matches[1], carpet);

	completion.setCompletionMode(KGlobalSettings::CompletionAuto);
	QCOMPARE(completion.makeCompletion("ca"), carp);
	QVERIFY(spy1.count() == 1);
	QCOMPARE(spy1.takeFirst().at(0).toString(), carp);
}
void medBoolGroupParameterTestObject::testShowHideDelete()
{
    medBoolGroupParameter* boolParameter = new medBoolGroupParameter(m_name);
    m_widget = boolParameter->getWidget();
    m_pushButtonGroup = boolParameter->getPushButtonGroup();
    m_checkBoxGroup = boolParameter->getCheckBoxGroup();
    m_radioButtonGroup = boolParameter->getRadioButtonGroup();

    QSignalSpy spy1(m_pushButtonGroup, SIGNAL(destroyed()));
    QSignalSpy spy2(m_checkBoxGroup, SIGNAL(destroyed()));
    QSignalSpy spy3(m_radioButtonGroup, SIGNAL(destroyed()));
    QSignalSpy spy4(m_widget, SIGNAL(destroyed()));

    boolParameter->show();
    QVERIFY(m_widget->isVisible());
    QVERIFY(m_pushButtonGroup->isVisible());
    QVERIFY(m_checkBoxGroup->isVisible());
    QVERIFY(m_radioButtonGroup->isVisible());
    boolParameter->hide();
    QVERIFY(!m_widget->isVisible());
    QVERIFY(!m_pushButtonGroup->isVisible());
    QVERIFY(!m_checkBoxGroup->isVisible());
    QVERIFY(!m_radioButtonGroup->isVisible());

    delete boolParameter;
    QCOMPARE(spy1.count(), 1);
    QCOMPARE(spy2.count(), 1);
    QCOMPARE(spy3.count(), 1);
    QCOMPARE(spy4.count(), 1);

    m_pushButtonGroup = NULL;
    m_widget = NULL;
    m_radioButtonGroup = NULL;
    m_checkBoxGroup = NULL;
}
void tst_QGraphicsTransform3D::rotation3D()
{
    QGraphicsRotation3D rot1;
    QVERIFY(rot1.origin() == QVector3D(0, 0, 0));
    QVERIFY(rot1.axis() == QVector3D(0, 0, 1));
    QCOMPARE(rot1.angle(), qreal(0.0f));

    QSignalSpy spy1(&rot1, SIGNAL(originChanged()));
    QSignalSpy spy2(&rot1, SIGNAL(axisChanged()));
    QSignalSpy spy3(&rot1, SIGNAL(angleChanged()));

    rot1.setOrigin(QVector3D(1, 2, 3));
    rot1.setAxis(QVector3D(4, -5, 6));
    rot1.setAngle(45.0f);
    QVERIFY(rot1.origin() == QVector3D(1, 2, 3));
    QVERIFY(rot1.axis() == QVector3D(4, -5, 6));
    QCOMPARE(rot1.angle(), qreal(45.0f));

    QCOMPARE(spy1.size(), 1);
    QCOMPARE(spy2.size(), 1);
    QCOMPARE(spy3.size(), 1);

    QMatrix4x4 m1;
    rot1.applyTo(&m1);

    QMatrix4x4 m2;
    m2.translate(1, 2, 3);
    m2.rotate(45.0f, QVector3D(4, -5, 6));
    m2.translate(-1, -2, -3);
    QVERIFY(isSameMatrix(m1, m2));
}
Пример #4
0
void tst_QPluginLoader::deleteinstanceOnUnload()
{
    for (int pass = 0; pass < 2; ++pass) {
        QPluginLoader loader1;
        loader1.setFileName( sys_qualifiedLibraryName("theplugin"));     //a plugin
        if (pass == 0)
            loader1.load(); // not recommended, instance() should do the job.
        PluginInterface *instance1 = qobject_cast<PluginInterface*>(loader1.instance());
        QVERIFY(instance1);
        QCOMPARE(instance1->pluginName(), QLatin1String("Plugin ok"));

        QPluginLoader loader2;
        loader2.setFileName( sys_qualifiedLibraryName("theplugin"));     //a plugin
        if (pass == 0)
            loader2.load(); // not recommended, instance() should do the job.
        PluginInterface *instance2 = qobject_cast<PluginInterface*>(loader2.instance());
        QCOMPARE(instance2->pluginName(), QLatin1String("Plugin ok"));

        QSignalSpy spy1(loader1.instance(), SIGNAL(destroyed()));
        QSignalSpy spy2(loader2.instance(), SIGNAL(destroyed()));
        if (pass == 0) {
            QCOMPARE(loader2.unload(), false);  // refcount not reached 0, not really unloaded
            QCOMPARE(spy1.count(), 0);
            QCOMPARE(spy2.count(), 0);
        }
        QCOMPARE(instance1->pluginName(), QLatin1String("Plugin ok"));
        QCOMPARE(instance2->pluginName(), QLatin1String("Plugin ok"));
        QVERIFY(loader1.unload());   // refcount reached 0, did really unload
        QCOMPARE(spy1.count(), 1);
        QCOMPARE(spy2.count(), 1);
    }
}
/*!
    Test for signal timeout
*/
void UnitTestCxeTestUtils::testWaitForSignal2()
{
    QTimer t2;
    QSignalSpy spy2(&t2, SIGNAL(timeout()));
    t2.setSingleShot(true);
    t2.start(1000);
    QVERIFY(!CxeTestUtils::waitForSignal(spy2, 100));
}
Пример #6
0
void HandleSignalRouterUnitTests::routingSignals()
{
    // Setup:
    // Get the object to be tested
    handleSignalRouter = HandleSignalRouter::instance();
    // Start spying the mock handles
    QSignalSpy spy1(mockHandleOne, SIGNAL(onValueChangedCalled(QString)));
    QSignalSpy spy2(mockHandleTwo, SIGNAL(onValueChangedCalled(QString)));
    QSignalSpy spy3(mockHandleThree, SIGNAL(onValueChangedCalled(QString)));
    QSignalSpy sspy1(mockHandleOne, SIGNAL(setSubscribeFinishedCalled(Provider *, QString)));
    QSignalSpy sspy2(mockHandleTwo, SIGNAL(setSubscribeFinishedCalled(Provider *, QString)));
    QSignalSpy sspy3(mockHandleThree, SIGNAL(setSubscribeFinishedCalled(Provider *, QString)));

    // Test:
    // Send a signal to the HandleSignalRouter
    handleSignalRouter->onValueChanged("Property.One");
    handleSignalRouter->onSubscribeFinished(0, "Property.One");

    // Expected results:
    // The mockHandleOne.setValue was called
    QCOMPARE(spy1.count(), 1);
    QList<QVariant> parameters = spy1.takeFirst();
    QCOMPARE(parameters.size(), 1);
    QCOMPARE(parameters.at(0), QVariant("Property.One"));

    QCOMPARE(sspy1.count(), 1);
    parameters = sspy1.takeFirst();
    QCOMPARE(parameters.size(), 2);
    QCOMPARE(parameters.at(1), QVariant("Property.One"));

    // The setValue of other mock handles were not called
    QCOMPARE(spy2.count(), 0);
    QCOMPARE(spy3.count(), 0);
    QCOMPARE(sspy2.count(), 0);
    QCOMPARE(sspy3.count(), 0);

    // Test:
    // Send a signal to the HandleSignalRouter
    handleSignalRouter->onValueChanged("Property.Two");
    handleSignalRouter->onSubscribeFinished(0, "Property.Two");

    // Expected results:
    // The mockHandleTwo.setValue was called
    QCOMPARE(spy2.count(), 1);
    QCOMPARE(sspy2.count(), 1);
    parameters = spy2.takeFirst();
    QCOMPARE(parameters.size(), 1);
    QCOMPARE(parameters.at(0), QVariant("Property.Two"));
    parameters = sspy2.takeFirst();
    QCOMPARE(parameters.size(), 2);
    QCOMPARE(parameters.at(1), QVariant("Property.Two"));
    // The setValue of other mock handles were not called
    QCOMPARE(spy1.count(), 0);
    QCOMPARE(spy3.count(), 0);
    QCOMPARE(sspy1.count(), 0);
    QCOMPARE(sspy3.count(), 0);

}
//-----------------------------------------------------------------------------
int ctkButtonGroupEventTranslatorPlayerTest1(int argc, char * argv [] )
{
  QApplication app(argc, argv);

  QString xmlDirectory = CTK_SOURCE_DIR "/Libs/Widgets/Testing/Cpp/";

  // ------------------------
  ctkEventTranslatorPlayerWidget etpWidget;
  pqTestUtility* testUtility = new pqTestUtility(&etpWidget);
  etpWidget.setTestUtility(testUtility);

  // Test case 1
  QWidget widget(0);

  QVBoxLayout* layout = new QVBoxLayout(&widget);

  QPushButton* button1 = new QPushButton("button 1", &widget);
  QPushButton* button2 = new QPushButton("button 2", &widget);
  QPushButton* button3 = new QPushButton("button 3", &widget);

  layout->addWidget(button1);
  layout->addWidget(button2);
  layout->addWidget(button3);

  widget.setLayout(layout);

  button1->setCheckable(true);
  button2->setCheckable(true);
  button3->setCheckable(false);

  ctkButtonGroup* buttonGroup = new ctkButtonGroup(&widget);
  buttonGroup->addButton(button1);
  buttonGroup->addButton(button2);
  buttonGroup->addButton(button3);

  QSignalSpy spy1(button1, SIGNAL(clicked()));
  QSignalSpy spy2(button2, SIGNAL(clicked()));
  QSignalSpy spy3(button3, SIGNAL(clicked()));

  Spy1 = &spy1;
  Spy2 = &spy2;
  Spy3 = &spy3;

  etpWidget.addTestCase(&widget,
                        xmlDirectory + "ctkButtonGroupEventTranslatorPlayerTest1.xml",
                        &checkFinalWidgetState);

  // ------------------------
  if (argc < 2 || QString(argv[1]) != "-I")
    {
    QTimer::singleShot(0, &etpWidget, SLOT(play()));
    }

  etpWidget.show();
  return app.exec();
}
void tst_QGraphicsTransform3D::scale3D()
{
    QGraphicsScale3D scale1;
    QVERIFY(scale1.origin() == QVector3D(0, 0, 0));
    QVERIFY(scale1.scaleVector() == QVector3D(1, 1, 1));
    QCOMPARE(scale1.xScale(), qreal(1.0f));
    QCOMPARE(scale1.yScale(), qreal(1.0f));
    QCOMPARE(scale1.zScale(), qreal(1.0f));
    QCOMPARE(scale1.scale(), qreal(1.0f));

    QSignalSpy spy1(&scale1, SIGNAL(originChanged()));
    QSignalSpy spy2(&scale1, SIGNAL(scaleChanged()));

    scale1.setOrigin(QVector3D(1, 2, 3));
    scale1.setScaleVector(QVector3D(4, -6, 0.5f));
    QVERIFY(scale1.origin() == QVector3D(1, 2, 3));
    QVERIFY(scale1.scaleVector() == QVector3D(4, -6, 0.5f));
    QCOMPARE(scale1.xScale(), qreal(4.0f));
    QCOMPARE(scale1.yScale(), qreal(-6.0f));
    QCOMPARE(scale1.zScale(), qreal(0.5f));
    QCOMPARE(scale1.scale(), qreal(-0.5f)); // Average of scale factors.

    QCOMPARE(spy1.size(), 1);
    QCOMPARE(spy2.size(), 1);

    QMatrix4x4 m1;
    scale1.applyTo(&m1);

    QMatrix4x4 m2;
    m2.translate(1, 2, 3);
    m2.scale(QVector3D(4, -6, 0.5f));
    m2.translate(-1, -2, -3);
    QVERIFY(isSameMatrix(m1, m2));

    scale1.setXScale(20);
    QCOMPARE(spy2.size(), 2);
    scale1.setYScale(-4);
    QCOMPARE(spy2.size(), 3);
    scale1.setZScale(42);
    QCOMPARE(spy2.size(), 4);

    QVERIFY(scale1.scaleVector() == QVector3D(20, -4, 42));
    QCOMPARE(scale1.scale(), qreal((20 - 4 + 42) / 3.0));

    scale1.setScale(33);
    QCOMPARE(spy2.size(), 5);

    QVERIFY(scale1.scaleVector() == QVector3D(33, 33, 33));
    QCOMPARE(scale1.scale(), qreal(33));

    QVERIFY(scale1.origin() == QVector3D(1, 2, 3));
    QCOMPARE(spy1.size(), 1);
}
Пример #9
0
void Doc_Test::cleanup()
{
    QSignalSpy spy1(m_doc, SIGNAL(clearing()));
    QSignalSpy spy2(m_doc, SIGNAL(cleared()));
    m_doc->clearContents();
    QCOMPARE(spy1.size(), 1);
    QCOMPARE(spy2.size(), 1);
    QCOMPARE(m_doc->functions().size(), 0);
    QCOMPARE(m_doc->fixtures().size(), 0);
    QCOMPARE(m_doc->fixtureGroups().size(), 0);
    QCOMPARE(m_doc->m_latestFunctionId, quint32(0));
    QCOMPARE(m_doc->m_latestFixtureId, quint32(0));
    QCOMPARE(m_doc->m_latestFixtureGroupId, quint32(0));
    QCOMPARE(m_doc->m_addresses.size(), 0);
}
//-----------------------------------------------------------------------------
int ctkMenuButtonEventTranslatorPlayerTest1(int argc, char * argv [] )
{
    QApplication app(argc, argv);

    QString xmlDirectory = CTK_SOURCE_DIR "/Libs/Widgets/Testing/Cpp/";

    // ------------------------
    ctkEventTranslatorPlayerWidget etpWidget;
    pqTestUtility* testUtility = new pqTestUtility(&etpWidget);
    etpWidget.setTestUtility(testUtility);

    // Test case 1
    QWidget* widget = new QWidget(0);
    ctkMenuButton* menuButton = new ctkMenuButton("ctkMenuButton", widget);

    QMenu* menu = new QMenu("menu", menuButton);
    QAction* action1 = new QAction("extra choice 1", menu);
    QAction* action2 = new QAction("extra choice 2", menu);
    QAction* action3 = new QAction("extra choice 3", menu);
    menu->addAction(action1);
    menu->addAction(action2);
    menu->addAction(action3);

    QSignalSpy spy1(action1, SIGNAL(triggered()));
    QSignalSpy spy2(action2, SIGNAL(triggered()));
    QSignalSpy spy3(action3, SIGNAL(triggered()));

    Spy1 = &spy1;
    Spy2 = &spy2;
    Spy3 = &spy3;

    menuButton->setMenu(menu);
    etpWidget.addTestCase(widget,
                          xmlDirectory + "ctkMenuButtonEventTranslatorPlayerTest1.xml",
                          &checkFinalWidgetState);

    // ------------------------
    if (!app.arguments().contains("-I"))
    {
        QTimer::singleShot(0, &etpWidget, SLOT(play()));
    }

    etpWidget.show();
    return app.exec();
}
Пример #11
0
void TestQPrefCloudStorage::test_signals()
{
	QSignalSpy spy1(qPrefCloudStorage::instance(), &qPrefCloudStorage::cloud_base_urlChanged);
	QSignalSpy spy2(qPrefCloudStorage::instance(), &qPrefCloudStorage::cloud_storage_emailChanged);
	QSignalSpy spy3(qPrefCloudStorage::instance(), &qPrefCloudStorage::cloud_storage_email_encodedChanged);
	QSignalSpy spy4(qPrefCloudStorage::instance(), &qPrefCloudStorage::cloud_storage_passwordChanged);
	QSignalSpy spy5(qPrefCloudStorage::instance(), &qPrefCloudStorage::cloud_storage_pinChanged);
	QSignalSpy spy6(qPrefCloudStorage::instance(), &qPrefCloudStorage::cloud_timeoutChanged);
	QSignalSpy spy7(qPrefCloudStorage::instance(), &qPrefCloudStorage::cloud_verification_statusChanged);
	QSignalSpy spy9(qPrefCloudStorage::instance(), &qPrefCloudStorage::save_password_localChanged);
	QSignalSpy spy10(qPrefCloudStorage::instance(), &qPrefCloudStorage::cloud_auto_syncChanged);

	qPrefCloudStorage::set_cloud_base_url("signal url");
	qPrefCloudStorage::set_cloud_storage_email("signal myEmail");
	qPrefCloudStorage::set_cloud_storage_email_encoded("signal encodedMyEMail");
	qPrefCloudStorage::set_cloud_storage_password("signal more secret");
	qPrefCloudStorage::set_cloud_storage_pin("signal a pin");
	qPrefCloudStorage::set_cloud_timeout(11);
	qPrefCloudStorage::set_cloud_verification_status(qPrefCloudStorage::CS_VERIFIED);
	qPrefCloudStorage::set_save_password_local(true);
	qPrefCloudStorage::set_cloud_auto_sync(true);

	QCOMPARE(spy1.count(), 1);
	QCOMPARE(spy2.count(), 1);
	QCOMPARE(spy3.count(), 1);
	QCOMPARE(spy4.count(), 1);
	QCOMPARE(spy5.count(), 1);
	QCOMPARE(spy6.count(), 1);
	QCOMPARE(spy7.count(), 1);
	QCOMPARE(spy9.count(), 1);
	QCOMPARE(spy10.count(), 1);

	QVERIFY(spy1.takeFirst().at(0).toString() == "signal url");
	QVERIFY(spy2.takeFirst().at(0).toString() == "signal myEmail");
	QVERIFY(spy3.takeFirst().at(0).toString() == "signal encodedMyEMail");
	QVERIFY(spy4.takeFirst().at(0).toString() == "signal more secret");
	QVERIFY(spy5.takeFirst().at(0).toString() == "signal a pin");
	QVERIFY(spy6.takeFirst().at(0).toInt() == 11);
	QVERIFY(spy7.takeFirst().at(0).toInt() == qPrefCloudStorage::CS_VERIFIED);
	QVERIFY(spy9.takeFirst().at(0).toBool() == true);
	QVERIFY(spy10.takeFirst().at(0).toBool() == true);
}
Пример #12
0
void tst_QGraphicsTransform3D::translation3D()
{
    QGraphicsTranslation3D translate1;
    QVERIFY(translate1.translate() == QVector3D(0, 0, 0));
    QCOMPARE(translate1.xTranslate(), qreal(0.0f));
    QCOMPARE(translate1.yTranslate(), qreal(0.0f));
    QCOMPARE(translate1.zTranslate(), qreal(0.0f));
    QCOMPARE(translate1.progress(), qreal(1.0f));

    QSignalSpy spy1(&translate1, SIGNAL(translateChanged()));
    QSignalSpy spy2(&translate1, SIGNAL(progressChanged()));

    translate1.setTranslate(QVector3D(4, -6, 0.5f));
    translate1.setProgress(2.0f);
    QVERIFY(translate1.translate() == QVector3D(4, -6, 0.5f));
    QCOMPARE(translate1.xTranslate(), qreal(4.0f));
    QCOMPARE(translate1.yTranslate(), qreal(-6.0f));
    QCOMPARE(translate1.zTranslate(), qreal(0.5f));
    QCOMPARE(translate1.progress(), qreal(2.0f));

    QCOMPARE(spy1.size(), 1);
    QCOMPARE(spy2.size(), 1);

    QMatrix4x4 m1;
    translate1.applyTo(&m1);

    QMatrix4x4 m2;
    m2.translate(QVector3D(8, -12, 1));
    QVERIFY(isSameMatrix(m1, m2));

    translate1.setXTranslate(20);
    QCOMPARE(spy1.size(), 2);
    translate1.setYTranslate(-4);
    QCOMPARE(spy1.size(), 3);
    translate1.setZTranslate(42);
    QCOMPARE(spy1.size(), 4);
    translate1.setProgress(0.5f);
    QCOMPARE(spy2.size(), 2);

    QVERIFY(translate1.translate() == QVector3D(20, -4, 42));
    QCOMPARE(translate1.progress(), qreal(0.5f));
}
Пример #13
0
void TestQPrefGeocoding::test_signals()
{
	QSignalSpy spy1(qPrefGeocoding::instance(), &qPrefGeocoding::first_taxonomy_categoryChanged);
	QSignalSpy spy2(qPrefGeocoding::instance(), &qPrefGeocoding::second_taxonomy_categoryChanged);
	QSignalSpy spy3(qPrefGeocoding::instance(), &qPrefGeocoding::third_taxonomy_categoryChanged);

	prefs.geocoding.category[0] = TC_NONE;
	qPrefGeocoding::set_first_taxonomy_category(TC_COUNTRY);
	prefs.geocoding.category[0] = TC_NONE;
	qPrefGeocoding::set_second_taxonomy_category(TC_ADMIN_L1);
	prefs.geocoding.category[0] = TC_NONE;
	qPrefGeocoding::set_third_taxonomy_category(TC_ADMIN_L2);

	QCOMPARE(spy1.count(), 1);
	QCOMPARE(spy2.count(), 1);
	QCOMPARE(spy3.count(), 1);

	QVERIFY(spy1.takeFirst().at(0).toInt() == TC_COUNTRY);
	QVERIFY(spy2.takeFirst().at(0).toInt() == TC_ADMIN_L1);
	QVERIFY(spy3.takeFirst().at(0).toInt() == TC_ADMIN_L2);
}
void medAbstractParameterTestObject::testShowHideDelete()
{
    medTestParameter* testParameter = new medTestParameter(m_name);
    m_widget = testParameter->getWidget();
    m_label = testParameter->getLabel();
    QSignalSpy spy1(m_widget, SIGNAL(destroyed()));
    QSignalSpy spy2(m_label, SIGNAL(destroyed()));

    testParameter->show();
    QVERIFY(m_widget->isVisible());
    QVERIFY(m_label->isVisible());

    testParameter->hide();
    QVERIFY(!m_widget->isVisible());
    QVERIFY(!m_label->isVisible());

    delete testParameter;
    QCOMPARE(spy1.count(), 1);
    QCOMPARE(spy2.count(), 1);
    m_label = NULL;
    m_widget = NULL;
}
Пример #15
0
void
Test_KCompletion::weightedOrder()
{
    KCompletion completion;
    completion.setSoundsEnabled(false);
    QSignalSpy spy1(&completion, SIGNAL(match(QString)));
    QSignalSpy spy3(&completion, SIGNAL(multipleMatches()));

    completion.setOrder(KCompletion::Weighted);
    QVERIFY(completion.order() == KCompletion::Weighted);

    completion.setItems(wstrings);
    QVERIFY(completion.items().count() == 4);

    completion.setCompletionMode(KCompletion::CompletionShell);
    QCOMPARE(completion.makeCompletion(QStringLiteral("ca")), QStringLiteral("carp"));
    spy1.takeFirst(); // empty the list
    QVERIFY(spy3.count() == 1); spy3.takeFirst();

    QSignalSpy spy2(&completion, SIGNAL(matches(QStringList)));
    completion.makeCompletion(QStringLiteral("ca"));
    QCOMPARE(spy2.count(), 1);
    QVERIFY(spy3.count() == 0); // shouldn't be signaled on 2nd call

    QStringList matches = spy2.takeFirst().at(0).toStringList();
    QVERIFY(matches.count() == 2);
    QCOMPARE(matches[0], carpet);
    QCOMPARE(matches[1], carp);

    completion.setCompletionMode(KCompletion::CompletionAuto);
    QCOMPARE(completion.makeCompletion(QStringLiteral("ca")), carpet);

    matches = completion.substringCompletion(QStringLiteral("ca"));
    QVERIFY(matches.count() == 3);
    QCOMPARE(matches[0], carpet);
    QCOMPARE(matches[1], coolcat);
    QCOMPARE(matches[2], carp);
}
void medStringListParameterTestObject::testShowHideDelete()
{
    medStringListParameter* parameter = new medStringListParameter(m_name);
    m_widget = parameter->getWidget();
    m_comboBox = parameter->getComboBox();

    QSignalSpy spy1(m_comboBox, SIGNAL(destroyed()));
    QSignalSpy spy2(m_widget, SIGNAL(destroyed()));

    parameter->show();
    QVERIFY(m_widget->isVisible());
    QVERIFY(m_comboBox->isVisible());
    parameter->hide();
    QVERIFY(!m_widget->isVisible());
    QVERIFY(!m_comboBox->isVisible());

    delete parameter;
    QCOMPARE(spy1.count(), 1);
    QCOMPARE(spy2.count(), 1);

    m_comboBox = NULL;
    m_widget = NULL;

}
Пример #17
0
void ChatTests::testTransmitMessage()
{
    QVERIFY(chat);

    QSignalSpy spy(session2.data(), SIGNAL(invitationReceived(QSharedPointer<Chat>)));
    QVERIFY(spy.isValid());
    QVERIFY(spy.isEmpty());

    QSignalSpy spy2(chat.data(), SIGNAL(userJoined(QSharedPointer<const User>)));
    QVERIFY(spy2.isValid());
    QVERIFY(spy2.isEmpty());

    QSharedPointer<const User> u(new User(TEMP_SESSION_USER2,
                                          WORKING_DIR "public.pem"));
    chat->invite(u);
    waitForResult(spy);

    QList<QVariant> arguments = spy.takeFirst();
    QSharedPointer<Chat> chat2 = arguments.at(0).value<QSharedPointer<Chat> >();

    waitForResult(spy2);

    QSignalSpy spy3(chat2.data(), SIGNAL(sendCompleted(bool, const QString &)));
    QVERIFY(spy3.isValid());
    QVERIFY(spy3.isEmpty());

    QSignalSpy spy4(chat.data(), SIGNAL(messageReceived(QSharedPointer<const User>, const QString &)));
    QVERIFY(spy4.isValid());
    QVERIFY(spy4.isEmpty());

    QSignalSpy spy5(chat2.data(), SIGNAL(messageReceived(QSharedPointer<const User>, const QString &)));
    QVERIFY(spy5.isValid());
    QVERIFY(spy5.isEmpty());

    chat2->send("Cupcakes!!!");

    waitForResult(spy3);

    QList<QVariant> arguments2 = spy3.takeFirst();
    QVERIFY(arguments2.at(0) == true);

    waitForResult(spy4);

    QList<QVariant> arguments3 = spy4.takeFirst();
    QCOMPARE(arguments3.at(1).toString(), QString("Cupcakes!!!"));
    QSharedPointer<const User> u2 = arguments3.at(0).value<QSharedPointer<const User> >();
    QCOMPARE(u2->getName(), u->getName());

    waitForResult(spy5);

    QList<QVariant> arguments4 = spy5.takeFirst();
    QCOMPARE(arguments4.at(1).toString(), QString("Cupcakes!!!"));
    QSharedPointer<const User> u3 = arguments4.at(0).value<QSharedPointer<const User> >();
    QCOMPARE(u3->getName(), u->getName());

    QSignalSpy spy6(chat.data(), SIGNAL(sendCompleted(bool, const QString &)));
    QVERIFY(spy6.isValid());
    QVERIFY(spy6.isEmpty());

    QSignalSpy spy7(chat2.data(), SIGNAL(messageReceived(QSharedPointer<const User>, const QString &)));
    QVERIFY(spy7.isValid());
    QVERIFY(spy7.isEmpty());

    QSignalSpy spy8(chat.data(), SIGNAL(messageReceived(QSharedPointer<const User>, const QString &)));
    QVERIFY(spy8.isValid());
    QVERIFY(spy8.isEmpty());

    chat->send("Khaaan!!!");

    waitForResult(spy6);

    QList<QVariant> arguments5 = spy6.takeFirst();
    QVERIFY(arguments5.at(0) == true);

    waitForResult(spy7);

    QList<QVariant> arguments6 = spy7.takeFirst();
    QCOMPARE(arguments6.at(1).toString(), QString("Khaaan!!!"));
    QSharedPointer<const User> u4 = arguments6.at(0).value<QSharedPointer<const User> >();
    QCOMPARE(u4->getName(), QString(TEMP_SESSION_USER3));

    waitForResult(spy8);

    QList<QVariant> arguments7 = spy8.takeFirst();
    QCOMPARE(arguments7.at(1).toString(), QString("Khaaan!!!"));
    QSharedPointer<const User> u5 = arguments7.at(0).value<QSharedPointer<const User> >();
    QCOMPARE(u5->getName(), QString(TEMP_SESSION_USER3));
}
Пример #18
0
void TestQPrefDivePlanner::test_signals()
{
	QSignalSpy spy1(qPrefDivePlanner::instance(), &qPrefDivePlanner::ascratelast6mChanged);
	QSignalSpy spy2(qPrefDivePlanner::instance(), &qPrefDivePlanner::ascratestopsChanged);
	QSignalSpy spy3(qPrefDivePlanner::instance(), &qPrefDivePlanner::ascrate50Changed);
	QSignalSpy spy4(qPrefDivePlanner::instance(), &qPrefDivePlanner::ascrate75Changed);
	QSignalSpy spy5(qPrefDivePlanner::instance(), &qPrefDivePlanner::bestmixendChanged);
	QSignalSpy spy6(qPrefDivePlanner::instance(), &qPrefDivePlanner::bottompo2Changed);
	QSignalSpy spy7(qPrefDivePlanner::instance(), &qPrefDivePlanner::bottomsacChanged);
	QSignalSpy spy8(qPrefDivePlanner::instance(), &qPrefDivePlanner::decopo2Changed);
	QSignalSpy spy9(qPrefDivePlanner::instance(), &qPrefDivePlanner::decosacChanged);
	QSignalSpy spy10(qPrefDivePlanner::instance(), &qPrefDivePlanner::descrateChanged);
	QSignalSpy spy11(qPrefDivePlanner::instance(), &qPrefDivePlanner::display_durationChanged);
	QSignalSpy spy12(qPrefDivePlanner::instance(), &qPrefDivePlanner::display_runtimeChanged);
	QSignalSpy spy13(qPrefDivePlanner::instance(), &qPrefDivePlanner::display_transitionsChanged);
	QSignalSpy spy14(qPrefDivePlanner::instance(), &qPrefDivePlanner::display_variationsChanged);
	QSignalSpy spy15(qPrefDivePlanner::instance(), &qPrefDivePlanner::doo2breaksChanged);
	QSignalSpy spy16(qPrefDivePlanner::instance(), &qPrefDivePlanner::drop_stone_modeChanged);
	QSignalSpy spy17(qPrefDivePlanner::instance(), &qPrefDivePlanner::last_stopChanged);
	QSignalSpy spy18(qPrefDivePlanner::instance(), &qPrefDivePlanner::min_switch_durationChanged);
	QSignalSpy spy19(qPrefDivePlanner::instance(), &qPrefDivePlanner::planner_deco_modeChanged);
	QSignalSpy spy20(qPrefDivePlanner::instance(), &qPrefDivePlanner::problemsolvingtimeChanged);
	QSignalSpy spy21(qPrefDivePlanner::instance(), &qPrefDivePlanner::reserve_gasChanged);
	QSignalSpy spy22(qPrefDivePlanner::instance(), &qPrefDivePlanner::sacfactorChanged);
	QSignalSpy spy23(qPrefDivePlanner::instance(), &qPrefDivePlanner::safetystopChanged);
	QSignalSpy spy24(qPrefDivePlanner::instance(), &qPrefDivePlanner::switch_at_req_stopChanged);
	QSignalSpy spy25(qPrefDivePlanner::instance(), &qPrefDivePlanner::verbatim_planChanged);

	qPrefDivePlanner::set_ascratelast6m(-20);
	qPrefDivePlanner::set_ascratestops(-21);
	qPrefDivePlanner::set_ascrate50(-22);
	qPrefDivePlanner::set_ascrate75(-23);
	qPrefDivePlanner::set_bestmixend(-21);
	qPrefDivePlanner::set_bottompo2(-24);
	qPrefDivePlanner::set_bottomsac(-25);
	qPrefDivePlanner::set_decopo2(-26);
	qPrefDivePlanner::set_decosac(-27);
	qPrefDivePlanner::set_descrate(-28);
	prefs.display_duration = true;
	qPrefDivePlanner::set_display_duration(false);
	prefs.display_runtime = true;
	qPrefDivePlanner::set_display_runtime(false);
	prefs.display_transitions = true;
	qPrefDivePlanner::set_display_transitions(false);
	prefs.display_variations = true;
	qPrefDivePlanner::set_display_variations(false);
	prefs.doo2breaks = true;
	qPrefDivePlanner::set_doo2breaks(false);
	prefs.drop_stone_mode = true;
	qPrefDivePlanner::set_drop_stone_mode(false);
	prefs.last_stop = true;
	qPrefDivePlanner::set_last_stop(false);
	qPrefDivePlanner::set_min_switch_duration(-29);
	qPrefDivePlanner::set_planner_deco_mode(VPMB);
	qPrefDivePlanner::set_problemsolvingtime(-30);
	qPrefDivePlanner::set_reserve_gas(-31);
	qPrefDivePlanner::set_sacfactor(-32);
	prefs.safetystop = true;
	qPrefDivePlanner::set_safetystop(false);
	prefs.switch_at_req_stop = true;
	qPrefDivePlanner::set_switch_at_req_stop(false);
	prefs.verbatim_plan = true;
	qPrefDivePlanner::set_verbatim_plan(false);

	QCOMPARE(spy1.count(), 1);
	QCOMPARE(spy2.count(), 1);
	QCOMPARE(spy3.count(), 1);
	QCOMPARE(spy4.count(), 1);
	QCOMPARE(spy5.count(), 1);
	QCOMPARE(spy6.count(), 1);
	QCOMPARE(spy7.count(), 1);
	QCOMPARE(spy8.count(), 1);
	QCOMPARE(spy9.count(), 1);
	QCOMPARE(spy10.count(), 1);
	QCOMPARE(spy11.count(), 1);
	QCOMPARE(spy12.count(), 1);
	QCOMPARE(spy13.count(), 1);
	QCOMPARE(spy14.count(), 1);
	QCOMPARE(spy15.count(), 1);
	QCOMPARE(spy16.count(), 1);
	QCOMPARE(spy17.count(), 1);
	QCOMPARE(spy18.count(), 1);
	QCOMPARE(spy19.count(), 1);
	QCOMPARE(spy20.count(), 1);
	QCOMPARE(spy21.count(), 1);
	QCOMPARE(spy22.count(), 1);
	QCOMPARE(spy23.count(), 1);
	QCOMPARE(spy24.count(), 1);
	QCOMPARE(spy25.count(), 1);

	QVERIFY(spy1.takeFirst().at(0).toInt() == -20);
	QVERIFY(spy2.takeFirst().at(0).toInt() == -21);
	QVERIFY(spy3.takeFirst().at(0).toInt() == -22);
	QVERIFY(spy4.takeFirst().at(0).toInt() == -23);
	QVERIFY(spy5.takeFirst().at(0).toInt() == -21);
	QVERIFY(spy6.takeFirst().at(0).toInt() == -24);
	QVERIFY(spy7.takeFirst().at(0).toInt() == -25);
	QVERIFY(spy8.takeFirst().at(0).toInt() == -26);
	QVERIFY(spy9.takeFirst().at(0).toInt() == -27);
	QVERIFY(spy10.takeFirst().at(0).toInt() == -28);
	QVERIFY(spy11.takeFirst().at(0).toBool() == false);
	QVERIFY(spy12.takeFirst().at(0).toBool() == false);
	QVERIFY(spy13.takeFirst().at(0).toBool() == false);
	QVERIFY(spy14.takeFirst().at(0).toBool() == false);
	QVERIFY(spy15.takeFirst().at(0).toBool() == false);
	QVERIFY(spy16.takeFirst().at(0).toBool() == false);
	QVERIFY(spy17.takeFirst().at(0).toBool() == false);
	QVERIFY(spy18.takeFirst().at(0).toInt() == -29);
	QVERIFY(spy19.takeFirst().at(0).toInt() == VPMB);
	QVERIFY(spy20.takeFirst().at(0).toInt() == -30);
	QVERIFY(spy21.takeFirst().at(0).toInt() == -31);
	QVERIFY(spy22.takeFirst().at(0).toInt() == -32);
	QVERIFY(spy23.takeFirst().at(0).toBool() == false);
	QVERIFY(spy24.takeFirst().at(0).toBool() == false);
	QVERIFY(spy25.takeFirst().at(0).toBool() == false);
}
Пример #19
0
void TestQgsAttributeForm::testOKButtonStatus()
{
  // make a temporary vector layer
  QString def = QStringLiteral( "Point?field=col0:integer" );
  QgsVectorLayer* layer = new QgsVectorLayer( def, QStringLiteral( "test" ), QStringLiteral( "memory" ) );

  // add a feature to the vector layer
  QgsFeature ft( layer->dataProvider()->fields(), 1 );
  ft.setAttribute( QStringLiteral( "col0" ), 0 );
  ft.setValid( true );

  // set constraint
  layer->setConstraintExpression( 0, QString() );

  // build a form for this feature
  QgsAttributeForm form( layer );
  form.setFeature( ft );

  QPushButton *okButton = form.mButtonBox->button( QDialogButtonBox::Ok );

  // get wrapper
  QgsEditorWidgetWrapper *ww;
  ww = qobject_cast<QgsEditorWidgetWrapper*>( form.mWidgets[0] );

  // testing stuff
  QSignalSpy spy1( &form, SIGNAL( attributeChanged( QString, QVariant ) ) );
  QSignalSpy spy2( layer, SIGNAL( editingStarted() ) );
  QSignalSpy spy3( layer, SIGNAL( editingStopped() ) );

  // no constraint but layer not editable : OK button disabled
  QCOMPARE( layer->isEditable(), false );
  QCOMPARE( okButton->isEnabled(), false );

  // no constraint and editable layer : OK button enabled
  layer->startEditing();
  QCOMPARE( spy2.count(), 1 );
  QCOMPARE( layer->isEditable(), true );
  QCOMPARE( okButton->isEnabled(), true );

  // invalid constraint and editable layer : OK button disabled
  layer->setConstraintExpression( 0, QStringLiteral( "col0 = 0" ) );
  QgsAttributeForm form2( layer );
  form2.setFeature( ft );
  ww = qobject_cast<QgsEditorWidgetWrapper*>( form2.mWidgets[0] );
  okButton = form2.mButtonBox->button( QDialogButtonBox::Ok );
  ww->setValue( 1 );
  QCOMPARE( okButton->isEnabled(), false );

  // valid constraint and editable layer : OK button enabled
  layer->setConstraintExpression( 0, QStringLiteral( "col0 = 2" ) );
  QgsAttributeForm form3( layer );
  form3.setFeature( ft );
  ww = qobject_cast<QgsEditorWidgetWrapper*>( form3.mWidgets[0] );
  okButton = form3.mButtonBox->button( QDialogButtonBox::Ok );

  ww->setValue( 2 );
  QCOMPARE( okButton->isEnabled(), true );

  // valid constraint and not editable layer : OK button disabled
  layer->rollBack();
  QCOMPARE( spy3.count(), 1 );
  QCOMPARE( layer->isEditable(), false );
  QCOMPARE( okButton->isEnabled(), false );

  // set soft constraint
  layer->setFieldConstraint( 0, QgsFieldConstraints::ConstraintExpression, QgsFieldConstraints::ConstraintStrengthSoft );
  QgsAttributeForm form4( layer );
  form4.setFeature( ft );
  ww = qobject_cast<QgsEditorWidgetWrapper*>( form4.mWidgets[0] );
  okButton = form4.mButtonBox->button( QDialogButtonBox::Ok );
  ww->setValue( 1 );
  QVERIFY( !okButton->isEnabled() );
  layer->startEditing();
  // just a soft constraint, so OK should be enabled
  QVERIFY( okButton->isEnabled() );
  layer->rollBack();
  QVERIFY( !okButton->isEnabled() );
}
Пример #20
0
void TestQgsAttributeForm::testFieldMultiConstraints()
{
  // make a temporary layer to check through
  QString def = QStringLiteral( "Point?field=col0:integer&field=col1:integer&field=col2:integer&field=col3:integer" );
  QgsVectorLayer* layer = new QgsVectorLayer( def, QStringLiteral( "test" ), QStringLiteral( "memory" ) );

  // add features to the vector layer
  QgsFeature ft( layer->dataProvider()->fields(), 1 );
  ft.setAttribute( QStringLiteral( "col0" ), 0 );
  ft.setAttribute( QStringLiteral( "col1" ), 1 );
  ft.setAttribute( QStringLiteral( "col2" ), 2 );
  ft.setAttribute( QStringLiteral( "col3" ), 3 );

  // set constraints for each field
  layer->setConstraintExpression( 0, QString() );
  layer->setConstraintExpression( 1, QString() );
  layer->setConstraintExpression( 2, QString() );
  layer->setConstraintExpression( 3, QString() );

  // build a form for this feature
  QgsAttributeForm form( layer );
  form.setFeature( ft );

  // testing stuff
  QSignalSpy spy( &form, SIGNAL( attributeChanged( QString, QVariant ) ) );
  QString val = QStringLiteral( "<font color=\"green\">✔</font>" );
  QString inv = QStringLiteral( "<font color=\"red\">✘</font>" );

  // get wrappers for each widget
  QgsEditorWidgetWrapper *ww0, *ww1, *ww2, *ww3;
  ww0 = qobject_cast<QgsEditorWidgetWrapper*>( form.mWidgets[0] );
  ww1 = qobject_cast<QgsEditorWidgetWrapper*>( form.mWidgets[1] );
  ww2 = qobject_cast<QgsEditorWidgetWrapper*>( form.mWidgets[2] );
  ww3 = qobject_cast<QgsEditorWidgetWrapper*>( form.mWidgets[3] );

  // get label for wrappers
  QLabel *label0 = form.mBuddyMap.value( ww0->widget() );
  QLabel *label1 = form.mBuddyMap.value( ww1->widget() );
  QLabel *label2 = form.mBuddyMap.value( ww2->widget() );
  QLabel *label3 = form.mBuddyMap.value( ww3->widget() );

  // no constraint so we expect a label with just the field name
  QCOMPARE( label0->text(), QString( "col0" ) );
  QCOMPARE( label1->text(), QString( "col1" ) );
  QCOMPARE( label2->text(), QString( "col2" ) );
  QCOMPARE( label3->text(), QString( "col3" ) );

  // update constraint
  layer->setConstraintExpression( 0, QStringLiteral( "col0 < (col1 * col2)" ) );
  layer->setConstraintExpression( 1, QString() );
  layer->setConstraintExpression( 2, QString() );
  layer->setConstraintExpression( 3, QStringLiteral( "col0 = 2" ) );

  QgsAttributeForm form2( layer );
  form2.setFeature( ft );
  ww0 = qobject_cast<QgsEditorWidgetWrapper*>( form2.mWidgets[0] );
  ww1 = qobject_cast<QgsEditorWidgetWrapper*>( form2.mWidgets[1] );
  ww2 = qobject_cast<QgsEditorWidgetWrapper*>( form2.mWidgets[2] );
  ww3 = qobject_cast<QgsEditorWidgetWrapper*>( form2.mWidgets[3] );
  label0 = form2.mBuddyMap.value( ww0->widget() );
  label1 = form2.mBuddyMap.value( ww1->widget() );
  label2 = form2.mBuddyMap.value( ww2->widget() );
  label3 = form2.mBuddyMap.value( ww3->widget() );
  QSignalSpy spy2( &form2, SIGNAL( attributeChanged( QString, QVariant ) ) );

  // change value
  ww0->setValue( 2 ); // update col0
  QCOMPARE( spy2.count(), 2 );

  QCOMPARE( label0->text(), QString( "col0" + inv ) ); // 2 < ( 1 + 2 )
  QCOMPARE( label1->text(), QString( "col1" ) );
  QCOMPARE( label2->text(), QString( "col2" ) );
  QCOMPARE( label3->text(), QString( "col3" + val ) ); // 2 = 2

  // change value
  spy2.clear();
  ww0->setValue( 1 ); // update col0
  QCOMPARE( spy2.count(), 2 );

  QCOMPARE( label0->text(), QString( "col0" + val ) ); // 1 < ( 1 + 2 )
  QCOMPARE( label1->text(), QString( "col1" ) );
  QCOMPARE( label2->text(), QString( "col2" ) );
  QCOMPARE( label3->text(), QString( "col3" + inv ) ); // 2 = 1
}
void TestQPrefTechnicalDetails::test_signals()
{
	QSignalSpy spy1(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::calcalltissuesChanged);
	QSignalSpy spy2(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::calcceilingChanged);
	QSignalSpy spy3(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::calcceiling3mChanged);
	QSignalSpy spy4(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::calcndlttsChanged);
	QSignalSpy spy5(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::dcceilingChanged);
	QSignalSpy spy6(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::display_deco_modeChanged);
	QSignalSpy spy7(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::display_unused_tanksChanged);
	QSignalSpy spy8(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::eadChanged);
	QSignalSpy spy9(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::gfhighChanged);
	QSignalSpy spy10(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::gflowChanged);
	QSignalSpy spy11(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::gf_low_at_maxdepthChanged);
	QSignalSpy spy12(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::hrgraphChanged);
	QSignalSpy spy13(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::modChanged);
	QSignalSpy spy14(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::modpO2Changed);
	QSignalSpy spy15(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::percentagegraphChanged);
	QSignalSpy spy16(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::redceilingChanged);
	QSignalSpy spy17(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::rulergraphChanged);
	QSignalSpy spy18(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::show_average_depthChanged);
	QSignalSpy spy19(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::show_ccr_sensorsChanged);
	QSignalSpy spy20(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::show_ccr_setpointChanged);
	QSignalSpy spy21(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::show_icdChanged);
	QSignalSpy spy22(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::show_pictures_in_profileChanged);
	QSignalSpy spy23(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::show_sacChanged);
	QSignalSpy spy24(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::show_scr_ocpo2Changed);
	QSignalSpy spy25(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::tankbarChanged);
	QSignalSpy spy26(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::vpmb_conservatismChanged);
	QSignalSpy spy27(qPrefTechnicalDetails::instance(), &qPrefTechnicalDetails::zoomed_plotChanged);

	prefs.calcalltissues = true;
	qPrefTechnicalDetails::set_calcalltissues(false);
	prefs.calcceiling = true;
	qPrefTechnicalDetails::set_calcceiling(false);
	prefs.calcceiling3m = true;
	qPrefTechnicalDetails::set_calcceiling3m(false);
	prefs.calcndltts = true;
	qPrefTechnicalDetails::set_calcndltts(false);
	prefs.dcceiling = true;
	qPrefTechnicalDetails::set_dcceiling(false);
	qPrefTechnicalDetails::set_display_deco_mode(VPMB);
	prefs.display_unused_tanks = true;
	qPrefTechnicalDetails::set_display_unused_tanks(false);
	prefs.ead = true;
	qPrefTechnicalDetails::set_ead(false);
	qPrefTechnicalDetails::set_gfhigh(-29);
	qPrefTechnicalDetails::set_gflow(-24);
	prefs.gf_low_at_maxdepth = true;
	qPrefTechnicalDetails::set_gf_low_at_maxdepth(false);
	prefs.hrgraph = true;
	qPrefTechnicalDetails::set_hrgraph(false);
	prefs.mod = true;
	qPrefTechnicalDetails::set_mod(false);
	qPrefTechnicalDetails::set_modpO2(-1.12);
	prefs.percentagegraph = true;
	qPrefTechnicalDetails::set_percentagegraph(false);
	prefs.redceiling = true;
	qPrefTechnicalDetails::set_redceiling(false);
	prefs.rulergraph = true;
	qPrefTechnicalDetails::set_rulergraph(false);
	prefs.show_average_depth = true;
	qPrefTechnicalDetails::set_show_average_depth(false);
	prefs.show_ccr_sensors = true;
	qPrefTechnicalDetails::set_show_ccr_sensors(false);
	prefs.show_ccr_setpoint = true;
	qPrefTechnicalDetails::set_show_ccr_setpoint(false);
	prefs.show_icd = true;
	qPrefTechnicalDetails::set_show_icd(false);
	prefs.show_pictures_in_profile = true;
	qPrefTechnicalDetails::set_show_pictures_in_profile(false);
	prefs.show_sac = true;
	qPrefTechnicalDetails::set_show_sac(false);
	prefs.show_scr_ocpo2 = true;
	qPrefTechnicalDetails::set_show_scr_ocpo2(false);
	prefs.tankbar = true;
	qPrefTechnicalDetails::set_tankbar(false);
	qPrefTechnicalDetails::set_vpmb_conservatism(-64);
	prefs.zoomed_plot = true;
	qPrefTechnicalDetails::set_zoomed_plot(false);

	QCOMPARE(spy1.count(), 1);
	QCOMPARE(spy2.count(), 1);
	QCOMPARE(spy3.count(), 1);
	QCOMPARE(spy4.count(), 1);
	QCOMPARE(spy5.count(), 1);
	QCOMPARE(spy6.count(), 1);
	QCOMPARE(spy7.count(), 1);
	QCOMPARE(spy8.count(), 1);
	QCOMPARE(spy9.count(), 1);
	QCOMPARE(spy10.count(), 1);
	QCOMPARE(spy11.count(), 1);
	QCOMPARE(spy12.count(), 1);
	QCOMPARE(spy13.count(), 1);
	QCOMPARE(spy14.count(), 1);
	QCOMPARE(spy15.count(), 1);
	QCOMPARE(spy16.count(), 1);
	QCOMPARE(spy17.count(), 1);
	QCOMPARE(spy18.count(), 1);
	QCOMPARE(spy19.count(), 1);
	QCOMPARE(spy20.count(), 1);
	QCOMPARE(spy21.count(), 1);
	QCOMPARE(spy22.count(), 1);
	QCOMPARE(spy23.count(), 1);
	QCOMPARE(spy24.count(), 1);
	QCOMPARE(spy25.count(), 1);
	QCOMPARE(spy26.count(), 1);
	QCOMPARE(spy27.count(), 1);

	QVERIFY(spy1.takeFirst().at(0).toBool() == false);
	QVERIFY(spy2.takeFirst().at(0).toBool() == false);
	QVERIFY(spy3.takeFirst().at(0).toBool() == false);
	QVERIFY(spy4.takeFirst().at(0).toBool() == false);
	QVERIFY(spy5.takeFirst().at(0).toBool() == false);
	QVERIFY(spy6.takeFirst().at(0).toInt() == VPMB);
	QVERIFY(spy7.takeFirst().at(0).toBool() == false);
	QVERIFY(spy8.takeFirst().at(0).toBool() == false);
	QVERIFY(spy9.takeFirst().at(0).toInt() == -29);
	QVERIFY(spy10.takeFirst().at(0).toInt() == -24);
	QVERIFY(spy11.takeFirst().at(0).toBool() == false);
	QVERIFY(spy12.takeFirst().at(0).toBool() == false);
	QVERIFY(spy13.takeFirst().at(0).toBool() == false);
	QVERIFY(spy14.takeFirst().at(0).toDouble() == -1.12);
	QVERIFY(spy15.takeFirst().at(0).toBool() == false);
	QVERIFY(spy16.takeFirst().at(0).toBool() == false);
	QVERIFY(spy17.takeFirst().at(0).toBool() == false);
	QVERIFY(spy18.takeFirst().at(0).toBool() == false);
	QVERIFY(spy19.takeFirst().at(0).toBool() == false);
	QVERIFY(spy20.takeFirst().at(0).toBool() == false);
	QVERIFY(spy21.takeFirst().at(0).toBool() == false);
	QVERIFY(spy22.takeFirst().at(0).toBool() == false);
	QVERIFY(spy23.takeFirst().at(0).toBool() == false);
	QVERIFY(spy24.takeFirst().at(0).toBool() == false);
	QVERIFY(spy25.takeFirst().at(0).toBool() == false);
	QVERIFY(spy26.takeFirst().at(0).toInt() == -64);
	QVERIFY(spy27.takeFirst().at(0).toBool() == false);
}