aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qqmlecmascript/data/sequenceConversion.read.qml
blob: 4a8a4a17b2e0fbcedab1023019a96f5086f30250 (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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import QtQuick 2.0
import Qt.test 1.0

Item {
    id: root
    objectName: "root"

    MySequenceConversionObject {
        id: msco
        objectName: "msco"
    }

    property int intListLength: 0
    property variant intList
    property int qrealListLength: 0
    property variant qrealList
    property int boolListLength: 0
    property variant boolList
    property int stringListLength: 0
    property variant stringList
    property int urlListLength: 0
    property variant urlList
    property int qstringListLength: 0
    property variant qstringList

    function readSequences() {
        intListLength = msco.intListProperty.length;
        intList = msco.intListProperty;
        qrealListLength = msco.qrealListProperty.length;
        qrealList = msco.qrealListProperty;
        boolListLength = msco.boolListProperty.length;
        boolList = msco.boolListProperty;
        stringListLength = msco.stringListProperty.length;
        stringList = msco.stringListProperty;
        urlListLength = msco.urlListProperty.length;
        urlList = msco.urlListProperty;
        qstringListLength = msco.qstringListProperty.length;
        qstringList = msco.qstringListProperty;
    }

    property int intVal
    property real qrealVal
    property bool boolVal
    property string stringVal
    property url urlVal
    property string qstringVal

    function readSequenceElements() {
        intVal = msco.intListProperty[1];
        qrealVal = msco.qrealListProperty[1];
        boolVal = msco.boolListProperty[1];
        stringVal = msco.stringListProperty[1];
        urlVal = msco.urlListProperty[1];
        qstringVal = msco.qstringListProperty[1];
    }

    property bool enumerationMatches
    function enumerateSequenceElements() {
        var jsIntList = [1, 2, 3, 4, 5];
        msco.intListProperty = [1, 2, 3, 4, 5];

        var jsIntListProps = []
        var seqIntListProps = []

        enumerationMatches = true;
        for (var i in jsIntList) {
            jsIntListProps.push(i);
            if (jsIntList[i] != msco.intListProperty[i]) {
                enumerationMatches = false;
            }
        }
        for (var j in msco.intListProperty) {
            seqIntListProps.push(j);
            if (jsIntList[j] != msco.intListProperty[j]) {
                enumerationMatches = false;
            }
        }

        if (jsIntListProps.length != seqIntListProps.length) {
            enumerationMatches = false;
        }

        var emptyList = [];
        msco.stringListProperty = []
        if (emptyList.toString() != msco.stringListProperty.toString()) {
            enumerationMatches = false;
        }
        if (emptyList.valueOf() != msco.stringListProperty.valueOf()) {
            enumerationMatches = false;
        }
    }

    property bool referenceDeletion: false
    function testReferenceDeletion() {
        referenceDeletion = true;
        var testObj = msco.generateTestObject();
        testObj.intListProperty = [1, 2, 3, 4, 5];
        var testSequence = testObj.intListProperty;
        if (testSequence[4] != 5)
            referenceDeletion = false;
        msco.deleteTestObject(testObj); // delete referenced object.
        if (testSequence[4] == 5)
            referenceDeletion = false;
    }
}