aboutsummaryrefslogtreecommitdiffstats
path: root/tests/QtCore/qabstractfileengine_test.py
blob: 457c5c530e5ddad41ec21b6a7568c0f5210bc079 (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
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import unittest
import os
from PySide.QtCore import QAbstractFileEngineIterator, QAbstractFileEngine, QAbstractFileEngineHandler, QDir


class TestFSIterator(QAbstractFileEngineIterator):
    def __init__(self, parent, filters, filterNames):
        QAbstractFileEngineIterator.__init__(self, filters, filterNames)
        self.index = -1
        self._list = ['.', '..']
        if parent == '/bup':
            self._list += ['A', 'B', 'C']

    def next(self):
        self.index += 1
        return self.currentFileName()

    def hasNext(self):
        return (self.index + 1) < len(self._list)

    def currentFileName(self):
        if self.index < len(self._list):
            return self._list[self.index]
        return None


class TestFS(QAbstractFileEngine):
    def __init__(self, path):
        QAbstractFileEngine.__init__(self)
        self.path = path

    def beginEntryList(self, filters, filterNames):
        return TestFSIterator(self.path, filters, filterNames)

    def fileFlags(self, _ = QAbstractFileEngine.FileInfoAll):
        return QAbstractFileEngine.ExistsFlag\
               |QAbstractFileEngine.ReadOwnerPerm\
               |QAbstractFileEngine.ReadUserPerm\
               |QAbstractFileEngine.ReadGroupPerm\
               |QAbstractFileEngine.ReadOtherPerm\
               |QAbstractFileEngine.DirectoryType

    def fileName(self, path=QAbstractFileEngine.DefaultName):
        if path == QAbstractFileEngine.DefaultName:
            return self.path
        return os.path.basename(self.path)

    def setFileName(self, path):
        self.path = path

class TestFSHandler(QAbstractFileEngineHandler):
    def __init__(self):
        QAbstractFileEngineHandler.__init__(self)

    def create(self, path):
        if path.startswith('/bup'):
            return TestFS(path)
        return None

class QAbstractFileEngineTest(unittest.TestCase):

    def testBeginEntryList(self):
        obj = TestFSHandler()
        qdir = QDir('/bup')
        for n1, n2 in zip(qdir.entryList(), ['.', '..', 'A', 'B', 'C']):
            self.assertEqual(n1, n2)
        self.assertEqual(len(qdir.entryList()), 5)


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