| |   |
| 43 | 43 | #include "qglcolladafxeffectfactory.h" |
| 44 | 44 | #include <QXmlStreamReader> |
| 45 | 45 | #include <QColor> |
| #include "qgl.h" |
| 46 | 47 | |
| 47 | 48 | class QGLColladaFxEffect; |
| 48 | 49 | |
| 49 | 50 | Q_DECLARE_METATYPE(QVector<float>) |
| Q_DECLARE_METATYPE(QGLShaderProgramEffect*) |
| 50 | 52 | |
| 51 | 53 | static void cleanupEffectList(QList<QGLColladaFxEffect*> &effects) |
| 52 | 54 | { |
| … | … | |
| 76 | 76 | void processFloatList(); |
| 77 | 77 | void processLibraryImagesElement(); |
| 78 | 78 | void loadEffectsFromFile(); |
| void exportImportEffect_data(); |
| void exportImportEffect(); |
| 79 | 81 | }; |
| 80 | 82 | |
| 81 | 83 | |
| … | … | |
| 199 | 199 | QVERIFY2(cubeEffect->material()->shininess() == 20, "Shininess doesn't match"); |
| 200 | 200 | } |
| 201 | 201 | |
| void tst_QGLColladaFxEffectFactory::exportImportEffect_data() |
| { |
| QTest::addColumn<QGLShaderProgramEffect*>("effect"); |
| QTest::addColumn<QString>("effectId"); |
| QTest::addColumn<QString>("techniqueSid"); |
|
| QGLShaderProgramEffect* effect = new QGLShaderProgramEffect; |
| QTest::newRow("empty effect") << effect << QString("EmptyEffect") << QString("EmptyTechnique"); |
|
| effect = new QGLShaderProgramEffect; |
| effect->setFragmentShader("test fragment shader"); |
| effect->setVertexShader("Test vertex shader"); |
| QGLMaterialParameters* material = new QGLMaterialParameters; |
| material->setAmbientColor(QColor(1,2,3)); |
| material->setDiffuseColor(QColor(2,3,4)); |
| material->setEmittedLight(QColor(255,255,255)); |
| material->setShininess(129); |
| material->setSpecularColor(QColor(3,4,5)); |
| effect->setMaterial(material); |
|
| QTest::newRow("Test Effect") << effect << QString("TestEffect") << QString("TestTechnique"); |
| } |
|
| void tst_QGLColladaFxEffectFactory::exportImportEffect() |
| { |
| QFETCH(QGLShaderProgramEffect*, effect); |
| QFETCH(QString, effectId); |
| QFETCH(QString, techniqueSid); |
| QString colladaEffectString = QGLColladaFxEffectFactory::exportEffect(effect, effectId, techniqueSid); |
| QXmlStreamReader xml(colladaEffectString); |
|
| QList<QGLColladaFxEffect*> importedEffects = QGLColladaFxEffectFactory::loadEffectsFromXml(xml); |
| QCOMPARE(importedEffects.count(), 1); |
|
| QGLColladaFxEffect* importedEffect = importedEffects[0]; |
| QCOMPARE(effect->fragmentShader(), importedEffect->fragmentShader()); |
| QCOMPARE(effect->vertexShader(), importedEffect->vertexShader()); |
| QEXPECT_FAIL("Test Effect", "QGLColladaFxEffect import/export does not respect materials", Continue); |
| QCOMPARE(effect->material(), importedEffect->material()); |
| QCOMPARE(effect->requiredFields(), importedEffect->requiredFields()); |
| QCOMPARE(effect->supportsPicking(), importedEffect->supportsPicking()); |
| } |
| 202 | 244 | |
| 203 | 245 | QTEST_APPLESS_MAIN(tst_QGLColladaFxEffectFactory) |
| 204 | 246 | |