File: tests_line_settings.py

package info (click to toggle)
libgpiod 2.2.1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,108 kB
  • sloc: ansic: 26,612; sh: 7,554; cpp: 4,944; python: 2,426; makefile: 811; xml: 49
file content (82 lines) | stat: -rw-r--r-- 3,446 bytes parent folder | download | duplicates (2)
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
# SPDX-License-Identifier: LGPL-2.1-or-later
# SPDX-FileCopyrightText: 2022 Bartosz Golaszewski <brgl@bgdev.pl>

import datetime
import gpiod

from . import gpiosim
from gpiod.line import Direction, Edge, Bias, Drive, Value, Clock
from unittest import TestCase


class LineSettingsConstructor(TestCase):
    def test_default_values(self):
        settings = gpiod.LineSettings()

        self.assertEqual(settings.direction, Direction.AS_IS)
        self.assertEqual(settings.edge_detection, Edge.NONE)
        self.assertEqual(settings.bias, Bias.AS_IS)
        self.assertEqual(settings.drive, Drive.PUSH_PULL)
        self.assertFalse(settings.active_low)
        self.assertEqual(settings.debounce_period.total_seconds(), 0.0)
        self.assertEqual(settings.event_clock, Clock.MONOTONIC)
        self.assertEqual(settings.output_value, Value.INACTIVE)

    def test_keyword_arguments(self):
        settings = gpiod.LineSettings(
            direction=Direction.INPUT,
            edge_detection=Edge.BOTH,
            bias=Bias.PULL_UP,
            event_clock=Clock.REALTIME,
        )

        self.assertEqual(settings.direction, Direction.INPUT)
        self.assertEqual(settings.edge_detection, Edge.BOTH)
        self.assertEqual(settings.bias, Bias.PULL_UP)
        self.assertEqual(settings.drive, Drive.PUSH_PULL)
        self.assertFalse(settings.active_low)
        self.assertEqual(settings.debounce_period.total_seconds(), 0.0)
        self.assertEqual(settings.event_clock, Clock.REALTIME)
        self.assertEqual(settings.output_value, Value.INACTIVE)


class LineSettingsAttributes(TestCase):
    def test_line_settings_attributes_are_mutable(self):
        settings = gpiod.LineSettings()

        settings.direction = Direction.INPUT
        settings.edge_detection = Edge.BOTH
        settings.bias = Bias.DISABLED
        settings.debounce_period = datetime.timedelta(microseconds=3000)
        settings.event_clock = Clock.HTE

        self.assertEqual(settings.direction, Direction.INPUT)
        self.assertEqual(settings.edge_detection, Edge.BOTH)
        self.assertEqual(settings.bias, Bias.DISABLED)
        self.assertEqual(settings.drive, Drive.PUSH_PULL)
        self.assertFalse(settings.active_low)
        self.assertEqual(settings.debounce_period.total_seconds(), 0.003)
        self.assertEqual(settings.event_clock, Clock.HTE)
        self.assertEqual(settings.output_value, Value.INACTIVE)


class LineSettingsStringRepresentation(TestCase):
    def setUp(self):
        self.settings = gpiod.LineSettings(
            direction=Direction.OUTPUT, drive=Drive.OPEN_SOURCE, active_low=True
        )

    def test_repr(self):
        self.assertEqual(
            repr(self.settings),
            "gpiod.LineSettings(direction=gpiod.line.Direction.OUTPUT, edge_detection=gpiod.line.Edge.NONE, bias=gpiod.line.Bias.AS_IS, drive=gpiod.line.Drive.OPEN_SOURCE, active_low=True, debounce_period=datetime.timedelta(0), event_clock=gpiod.line.Clock.MONOTONIC, output_value=gpiod.line.Value.INACTIVE)",
        )

        cmp = eval(repr(self.settings))
        self.assertEqual(self.settings, cmp)

    def test_str(self):
        self.assertEqual(
            str(self.settings),
            "<LineSettings direction=Direction.OUTPUT edge_detection=Edge.NONE bias=Bias.AS_IS drive=Drive.OPEN_SOURCE active_low=True debounce_period=0:00:00 event_clock=Clock.MONOTONIC output_value=Value.INACTIVE>",
        )