aboutsummaryrefslogtreecommitdiffstats
path: root/tests/QtScript/qscriptvalue_test.py
blob: e5b6a637fd92844a626f72dedff07c091b9c01c7 (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
import unittest
import PySide
from PySide.QtScript import *

from helper import UsesQApplication

class TestQScriptValue (UsesQApplication):

    def testOperator(self):
        engine = QScriptEngine()
        value = engine.evaluate('x = {"a": 1, "b":2}')
        self.assertEqual(value['a'], 1)
        self.assertRaises(KeyError, value.__getitem__, 'c')
        value = engine.evaluate('x = ["x", "y", "z"]')
        self.assertEqual(value[2], 'z')
        self.assertRaises(IndexError, value.__getitem__, 23)

    def testRepr(self):
        value = QScriptValue("somePerson = { firstName: 'John', lastName: 'Doe' }")
        value2 = eval(repr(value))
        self.assertEqual(value.toString(), value2.toString())
        self.assertEqual(value.toVariant(), value2.toVariant())

    def testIteratorProtocol(self):
        engine = QScriptEngine()
        value = engine.evaluate('x = {"a": 1, "b":2}')
        d = {}
        for k, v in QScriptValueIterator(value):
            d[k] = v
        self.assertEqual(d, {'a': 1, 'b': 2})

        d = {}
        for k, v in value:
            d[k] = v
        self.assertEqual(d, {'a': 1, 'b': 2})

if __name__ == '__main__':
    unittest.main()