summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJulian de Bhal <julian.debhal@nokia.com>2011-10-04 16:48:55 +1000
committerQt by Nokia <qt-info@nokia.com>2011-10-04 09:10:15 +0200
commit805ddf719f008a3fa06894c5c7ef94e9ad40c768 (patch)
tree6a90b44c81385a6e3f3330bd700c8d4bc49e0339 /tests
parent3536f1f2bb52f8f93ce428c0557c8934961ea947 (diff)
QTBUG-19908 Do not crash with null / invalid shaders
Change-Id: I8aa01cb85d63e135f5ca1570f38d8f7803e7dfe1 Reviewed-on: http://codereview.qt-project.org/5959 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Patrick Burke <patrick.burke@nokia.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qml3d/shaders/test.pngbin0 -> 159 bytes
-rw-r--r--tests/auto/qml3d/shaders/tst_shaders.qml136
2 files changed, 136 insertions, 0 deletions
diff --git a/tests/auto/qml3d/shaders/test.png b/tests/auto/qml3d/shaders/test.png
new file mode 100644
index 000000000..80a4868f3
--- /dev/null
+++ b/tests/auto/qml3d/shaders/test.png
Binary files differ
diff --git a/tests/auto/qml3d/shaders/tst_shaders.qml b/tests/auto/qml3d/shaders/tst_shaders.qml
new file mode 100644
index 000000000..2a4258af2
--- /dev/null
+++ b/tests/auto/qml3d/shaders/tst_shaders.qml
@@ -0,0 +1,136 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import Qt 4.7
+import Qt3D 1.0
+import Qt3D.Shapes 1.0
+import QtQuickTest 1.0
+
+Viewport {
+ id: viewport
+
+ width: 480
+ height: 320
+
+ property string fragmentShader: "\
+\
+ void main(void)\
+ {\
+ gl_FragColor = vec4(1,0,1,1);\
+ }\
+ "
+
+ property string vertexShader: "\
+ attribute highp vec4 qt_Vertex;\
+ uniform mediump mat4 qt_ModelViewProjectionMatrix;\
+\
+ void main(void)\
+ {\
+ gl_Position = qt_ModelViewProjectionMatrix * qt_Vertex;\
+ }\
+ "
+
+ Effect {
+ id: testEffect
+ material: china
+ }
+
+ Cube {
+ id: testItemWithNullFragmentShader
+ effect: testShaderProgramWithNullFragmentShader
+ x: -1.5;
+ }
+
+ Cube {
+ id: testItem
+ effect: testShaderProgram
+ }
+
+ Cube {
+ id: testItemWithNullVertexShader
+ effect: testShaderProgramWithNullVertexShader
+ x: 1.5
+ }
+
+
+ // Simple
+ Timer {
+ running: true
+ interval: 1
+ onTriggered: {
+ shadersTest.when = true;
+ viewport.update3d();
+ }
+ }
+
+ TestCase {
+ id: shadersTest
+
+ // Delay test until after first paint
+ when: false
+ //
+ function test_null_fragment_shader() {
+ // a test failure is an assert during shader program linking
+ // so if execution reaches this point, the test has passed
+ verify(true, "shader program didn't crash with null shaders");
+ }
+ }
+
+ ShaderProgram {
+ id: testShaderProgram
+ fragmentShader: viewport.fragmentShader
+ vertexShader: viewport.vertexShader
+ }
+
+ ShaderProgram {
+ id: testShaderProgramWithNullFragmentShader
+
+ fragmentShader: ""
+ vertexShader: viewport.vertexShader
+ }
+
+ ShaderProgram {
+ id: testShaderProgramWithNullVertexShader
+ fragmentShader: viewport.fragmentShader
+ vertexShader: ""
+ }
+
+}