Revision control

Copy as Markdown

// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QTest>
#include <QSignalSpy>
#include <QScopedPointer>
#include <QtQuick3DParticles/private/qquick3dparticlesystem_p.h>
#include <QtQuick3DParticles/private/qquick3dparticleemitter_p.h>
#include <QtQuick3DParticles/private/qquick3dparticlespriteparticle_p.h>
#include <QtQuick3DParticles/private/qquick3dparticletargetdirection_p.h>
#include <QtQuick3DParticles/private/qquick3dparticleshape_p.h>
class tst_QQuick3DParticleEmitter : public QObject
{
Q_OBJECT
private slots:
void testInitialization();
void testEmitter();
};
void tst_QQuick3DParticleEmitter::testInitialization()
{
QQuick3DParticleEmitter *emitter = new QQuick3DParticleEmitter();
QCOMPARE(emitter->system(), nullptr);
QCOMPARE(emitter->velocity(), nullptr);
QCOMPARE(emitter->particle(), nullptr);
QCOMPARE(emitter->enabled(), true);
QCOMPARE(emitter->shape(), nullptr);
QCOMPARE(emitter->emitRate(), 0);
QCOMPARE(emitter->lifeSpan(), 1000);
QCOMPARE(emitter->lifeSpanVariation(), 0);
QVERIFY(qFuzzyCompare(emitter->particleScale(), 1.0f));
QVERIFY(qFuzzyCompare(emitter->particleEndScale(), -1.0f));
QVERIFY(qFuzzyCompare(emitter->particleScaleVariation(), 0.0f));
QVERIFY(qFuzzyCompare(emitter->particleEndScaleVariation(), -1.0f));
QVERIFY(qFuzzyCompare(emitter->particleRotation(), QVector3D()));
QVERIFY(qFuzzyCompare(emitter->particleRotationVariation(), QVector3D()));
QVERIFY(qFuzzyCompare(emitter->particleRotationVelocity(), QVector3D()));
QVERIFY(qFuzzyCompare(emitter->particleRotationVelocityVariation(), QVector3D()));
QVERIFY(qFuzzyCompare(emitter->depthBias(), 0.0f));
delete emitter;
}
void tst_QQuick3DParticleEmitter::testEmitter()
{
QQuick3DParticleSystem *system = new QQuick3DParticleSystem();
QQuick3DParticleEmitter *emitter = new QQuick3DParticleEmitter(system);
QQuick3DParticleTargetDirection *direction = new QQuick3DParticleTargetDirection(system);
QQuick3DParticleSpriteParticle *particle = new QQuick3DParticleSpriteParticle(system);
QQuick3DParticleShape *shape = new QQuick3DParticleShape(system);
emitter->setSystem(system);
QCOMPARE(emitter->system(), system);
emitter->setVelocity(direction);
QCOMPARE(emitter->velocity(), direction);
emitter->setParticle(particle);
QCOMPARE(emitter->particle(), particle);
emitter->setShape(shape);
QCOMPARE(emitter->shape(), shape);
emitter->setEnabled(false);
QCOMPARE(emitter->enabled(), false);
emitter->setEmitRate(200);
QCOMPARE(emitter->emitRate(), 200);
emitter->setLifeSpan(10000);
QCOMPARE(emitter->lifeSpan(), 10000);
emitter->setLifeSpan(-10000);
//QCOMPARE(emitter->lifeSpan(), 10000);
emitter->setLifeSpanVariation(1000);
QCOMPARE(emitter->lifeSpanVariation(), 1000);
emitter->setParticleScale(100.0f);
QVERIFY(qFuzzyCompare(emitter->particleScale(), 100.0f));
emitter->setParticleScale(-2.0f);
//QVERIFY(qFuzzyCompare(emitter->particleScale(), 100.0f));
emitter->setParticleEndScale(10.0f);
QVERIFY(qFuzzyCompare(emitter->particleEndScale(), 10.0f));
emitter->setParticleScaleVariation(0.2f);
QVERIFY(qFuzzyCompare(emitter->particleScaleVariation(), 0.2f));
emitter->setParticleEndScaleVariation(0.5f);
QVERIFY(qFuzzyCompare(emitter->particleEndScaleVariation(), 0.5f));
const QVector3D rotation(1.0f, 2.0f, 3.0f);
emitter->setParticleRotation(rotation);
QVERIFY(qFuzzyCompare(emitter->particleRotation(), rotation));
const QVector3D rotationVariation(0.2f, 0.3f, 0.4f);
emitter->setParticleRotationVariation(rotationVariation);
QVERIFY(qFuzzyCompare(emitter->particleRotationVariation(), rotationVariation));
const QVector3D velocity(1.2f, 2.3f, 3.4f);
emitter->setParticleRotationVelocity(velocity);
QVERIFY(qFuzzyCompare(emitter->particleRotationVelocity(), velocity));
const QVector3D velocityVariation(0.1f, 0.3f, 0.4f);
emitter->setParticleRotationVelocityVariation(velocityVariation);
QVERIFY(qFuzzyCompare(emitter->particleRotationVelocityVariation(), velocityVariation));
emitter->setDepthBias(10.0f);
QVERIFY(qFuzzyCompare(emitter->depthBias(), 10.0f));
emitter->setDepthBias(-10.0f);
QVERIFY(qFuzzyCompare(emitter->depthBias(), -10.0f));
delete system;
}
QTEST_APPLESS_MAIN(tst_QQuick3DParticleEmitter)
#include "tst_qquick3dparticleemitter.moc"