aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/declarative/qdeclarativeecmascript/data/functionAssignment.2.qml
blob: 0f78eaf1dc6e9958976a39269596d4318e22bcc4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import Qt.test 1.0
import QtQuick 2.0

import "functionAssignment.js" as Script

MyQmlObject {
    property variant a
    property int aNumber: 10

    property bool assignToProperty: false
    property bool assignToPropertyFromJsFile: false

    property bool assignWithThis: false
    property bool assignWithThisFromJsFile: false

    property bool assignToValueType: false

    property bool assignFuncWithoutReturn: false
    property bool assignWrongType: false
    property bool assignWrongTypeToValueType: false


    onAssignToPropertyChanged: {
        function myFunction() {
            return aNumber * 10;
        }
        a = myFunction;
    }

    property QtObject obj: QtObject {
        property int aNumber: 4212
        function myFunction() {
            return this.aNumber * 10;   // should use the aNumber from root, not this object
        }
    }
    onAssignWithThisChanged: {
        a = obj.myFunction;
    }

    onAssignToPropertyFromJsFileChanged: {
        Script.bindPropertyWithThis()
    }

    onAssignWithThisFromJsFileChanged: {
        Script.bindProperty()
    }

    property Text text: Text { }
    onAssignToValueTypeChanged: {
        text.font.pixelSize = (function() { return aNumber * 10; })
        a = (function() { return text.font.pixelSize; })
    }


    // detecting errors:

    onAssignFuncWithoutReturnChanged: {
        function myFunction() {
        }
        a = myFunction;
    }

    onAssignWrongTypeChanged: {
        function myFunction() {
            return 'a string';
        }
        aNumber = myFunction;
    }

    onAssignWrongTypeToValueTypeChanged: {
        text.font.pixelSize = (function() { return 'a string'; })
    }
}