Commit f267e8f4343dfa0441bff9f00f6a063e697192e6

  • avatar
  • Julian de Bhal <julian.debhal @no…a.com>
  • Wed Mar 10 03:00:50 CET 2010
Shaderwizard: add autotest for exporting/importing effects
  
4343#include "qglcolladafxeffectfactory.h"
4444#include <QXmlStreamReader>
4545#include <QColor>
46#include "qgl.h"
4647
4748class QGLColladaFxEffect;
4849
4950Q_DECLARE_METATYPE(QVector<float>)
51Q_DECLARE_METATYPE(QGLShaderProgramEffect*)
5052
5153static void cleanupEffectList(QList<QGLColladaFxEffect*> &effects)
5254{
7676 void processFloatList();
7777 void processLibraryImagesElement();
7878 void loadEffectsFromFile();
79 void exportImportEffect_data();
80 void exportImportEffect();
7981};
8082
8183
199199 QVERIFY2(cubeEffect->material()->shininess() == 20, "Shininess doesn't match");
200200}
201201
202void tst_QGLColladaFxEffectFactory::exportImportEffect_data()
203{
204 QTest::addColumn<QGLShaderProgramEffect*>("effect");
205 QTest::addColumn<QString>("effectId");
206 QTest::addColumn<QString>("techniqueSid");
207
208 QGLShaderProgramEffect* effect = new QGLShaderProgramEffect;
209 QTest::newRow("empty effect") << effect << QString("EmptyEffect") << QString("EmptyTechnique");
210
211 effect = new QGLShaderProgramEffect;
212 effect->setFragmentShader("test fragment shader");
213 effect->setVertexShader("Test vertex shader");
214 QGLMaterialParameters* material = new QGLMaterialParameters;
215 material->setAmbientColor(QColor(1,2,3));
216 material->setDiffuseColor(QColor(2,3,4));
217 material->setEmittedLight(QColor(255,255,255));
218 material->setShininess(129);
219 material->setSpecularColor(QColor(3,4,5));
220 effect->setMaterial(material);
221
222 QTest::newRow("Test Effect") << effect << QString("TestEffect") << QString("TestTechnique");
223}
224
225void tst_QGLColladaFxEffectFactory::exportImportEffect()
226{
227 QFETCH(QGLShaderProgramEffect*, effect);
228 QFETCH(QString, effectId);
229 QFETCH(QString, techniqueSid);
230 QString colladaEffectString = QGLColladaFxEffectFactory::exportEffect(effect, effectId, techniqueSid);
231 QXmlStreamReader xml(colladaEffectString);
232
233 QList<QGLColladaFxEffect*> importedEffects = QGLColladaFxEffectFactory::loadEffectsFromXml(xml);
234 QCOMPARE(importedEffects.count(), 1);
235
236 QGLColladaFxEffect* importedEffect = importedEffects[0];
237 QCOMPARE(effect->fragmentShader(), importedEffect->fragmentShader());
238 QCOMPARE(effect->vertexShader(), importedEffect->vertexShader());
239 QEXPECT_FAIL("Test Effect", "QGLColladaFxEffect import/export does not respect materials", Continue);
240 QCOMPARE(effect->material(), importedEffect->material());
241 QCOMPARE(effect->requiredFields(), importedEffect->requiredFields());
242 QCOMPARE(effect->supportsPicking(), importedEffect->supportsPicking());
243}
202244
203245QTEST_APPLESS_MAIN(tst_QGLColladaFxEffectFactory)
204246