File: test_types.py

package info (click to toggle)
xphyle 4.4.4-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,904 kB
  • sloc: python: 6,308; makefile: 205; ruby: 105
file content (84 lines) | stat: -rw-r--r-- 3,210 bytes parent folder | download
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
from unittest import TestCase
from xphyle.types import *


class TypeTests(TestCase):
    def test_mode_access(self):
        for t in ("READ", "READWRITE", "TRUNCATE_READWRITE"):
            self.assertTrue(ModeAccess[t].readable)
        for t in ("WRITE", "READWRITE", "TRUNCATE_READWRITE", "APPEND", "EXCLUSIVE"):
            self.assertTrue(ModeAccess[t].writable)

    def test_file_mode(self):
        for f in (
            FileMode(),
            FileMode("rt"),
            FileMode(access="r"),
            FileMode(coding="t"),
            FileMode(access=ModeAccess.READ),
            FileMode(coding=ModeCoding.TEXT),
            FileMode(access="r", coding="t"),
            FileMode(access=ModeAccess.READ, coding="t"),
            FileMode(access="r", coding=ModeCoding.TEXT),
            FileMode(access=ModeAccess.READ, coding=ModeCoding.TEXT),
        ):
            self.assertEqual(ModeAccess.READ, f.access)
            self.assertEqual(ModeCoding.TEXT, f.coding)
            self.assertTrue(f.readable)
            self.assertFalse(f.writable)
            self.assertTrue(f.text)
            self.assertFalse(f.binary)
            self.assertTrue("rt" in f)
            self.assertFalse("b" in f)
            self.assertTrue(ModeAccess.READ in f)
            self.assertTrue(ModeCoding.TEXT in f)
            self.assertEqual("rt", f.value)
            self.assertEqual("rt", str(f))
        with self.assertRaises(ValueError):
            FileMode("rz")

    def test_permissions(self):
        self.assertEqual(os.R_OK, Permission.READ.os_flag)
        self.assertEqual(os.W_OK, Permission.WRITE.os_flag)
        self.assertEqual(os.X_OK, Permission.EXECUTE.os_flag)
        self.assertEqual(stat.S_IREAD, Permission.READ.stat_flag)
        self.assertEqual(stat.S_IWRITE, Permission.WRITE.stat_flag)
        self.assertEqual(stat.S_IEXEC, Permission.EXECUTE.stat_flag)

    def test_permission_set(self):
        for a in (
            PermissionSet("rwx"),
            PermissionSet(("r", "w", "x")),
            PermissionSet(7),
            PermissionSet((1, 2, 4)),
            PermissionSet((Permission.READ, Permission.WRITE, Permission.EXECUTE)),
        ):
            self.assertEqual(7, a.os_flags)
            self.assertEqual(448, a.stat_flags)
            self.assertEqual("rwx", "".join(f.value for f in a))
            self.assertEqual("rwx", str(a))
            for char in "rwx":
                self.assertTrue(char in a)
                self.assertTrue(Permission(char) in a)

        a = PermissionSet()
        a.add(ModeAccess.READ)
        a.add(ModeAccess.WRITE)
        self.assertEqual("rw", str(a))

    def test_cache(self):
        fm1 = FileMode("rt")
        fm2 = FileMode("rt")
        fm3 = FileMode("tr")
        self.assertEqual(fm1, fm2)
        self.assertEqual(fm1, fm3)
        self.assertEqual(id(fm1), id(fm2))
        self.assertNotEqual(id(fm1), id(fm3))

        perm1 = PermissionSet("rw")
        perm2 = PermissionSet("rw")
        perm3 = PermissionSet("wr")
        self.assertEqual(perm1, perm2)
        self.assertEqual(perm1, perm3)
        self.assertEqual(id(perm1), id(perm2))
        self.assertNotEqual(id(perm1), id(perm3))