File: testbooleanparam.py

package info (click to toggle)
python-param 2.1.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,048 kB
  • sloc: python: 17,980; makefile: 3
file content (159 lines) | stat: -rw-r--r-- 3,934 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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
"""
Unit test for Boolean parameters.
"""
import unittest

import param

from .utils import check_defaults


class TestBooleanParameters(unittest.TestCase):

    def setUp(self):
        super().setUp()
        class P(param.Parameterized):
            e = param.Boolean()
            f = param.Boolean(default=None)

        self.P = P

    def _check_defaults(self, p):
        assert p.default is False
        assert p.allow_None is False

    def test_defaults_class(self):
        class A(param.Parameterized):
            b = param.Boolean()

        check_defaults(A.param.b, label='B')
        self._check_defaults(A.param.b)

    def test_defaults_inst(self):
        class A(param.Parameterized):
            b = param.Boolean()

        a = A()

        check_defaults(a.param.b, label='B')
        self._check_defaults(a.param.b)

    def test_defaults_unbound(self):
        b = param.Boolean()

        check_defaults(b, label=None)
        self._check_defaults(b)

    def test_default_is_None(self):
        p = self.P()
        assert p.f is None
        assert p.param.f.allow_None is True

        p.f = True
        p.f = None
        assert p.f is None

    def test_raise_None_when_not_allowed(self):
        p = self.P()

        msg = r"Boolean parameter 'P.e' must be True or False, not None"
        with self.assertRaisesRegex(ValueError, msg):
            p.e = None

        with self.assertRaisesRegex(ValueError, msg):
            self.P.e = None

    def test_bad_type(self):
        msg = r"Boolean parameter 'P.e' must be True or False, not 'test'"

        with self.assertRaisesRegex(ValueError, msg):
            self.P.e = 'test'

        with self.assertRaisesRegex(ValueError, msg):
            self.P(e='test')

        p = self.P()

        with self.assertRaisesRegex(ValueError, msg):
            p.e = 'test'

    def test_bad_default_type(self):
        msg = r"Boolean parameter 'b' must be True or False, not 'test'\."

        with self.assertRaisesRegex(ValueError, msg):
            class A(param.Parameterized):
                b = param.Boolean(default='test')


class TestEventParameters(unittest.TestCase):

    def setUp(self):
        super().setUp()
        class P(param.Parameterized):
            e = param.Event()
            f = param.Event(default=None)

        self.P = P

    def _check_defaults(self, p):
        assert p.default is False
        assert p.allow_None is False

    def test_defaults_class(self):
        class A(param.Parameterized):
            b = param.Event()

        check_defaults(A.param.b, label='B')
        self._check_defaults(A.param.b)

    def test_defaults_inst(self):
        class A(param.Parameterized):
            b = param.Event()

        a = A()

        check_defaults(a.param.b, label='B')
        self._check_defaults(a.param.b)

    def test_defaults_unbound(self):
        b = param.Event()

        check_defaults(b, label=None)
        self._check_defaults(b)

    def test_resets_to_false(self):
        p = self.P()
        p.e = True
        assert p.e is False

    def test_default_is_None(self):
        p = self.P()
        assert p.f is None
        assert p.param.f.allow_None is True

        p.f = None
        assert p.f is False

    def test_raise_None_when_not_allowed(self):
        p = self.P()

        msg = r"Event parameter 'P.e' must be True or False, not None"
        with self.assertRaisesRegex(ValueError, msg):
            p.e = None

        with self.assertRaisesRegex(ValueError, msg):
            self.P.e = None

    def test_bad_type(self):
        msg = r"Event parameter 'P.e' must be True or False, not 'test'"

        with self.assertRaisesRegex(ValueError, msg):
            self.P.e = 'test'

        with self.assertRaisesRegex(ValueError, msg):
            self.P(e='test')

        p = self.P()

        with self.assertRaisesRegex(ValueError, msg):
            p.e = 'test'