File: frame_command_run_status_notification_test.py

package info (click to toggle)
pyvlx 0.2.30-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,556 kB
  • sloc: python: 8,100; makefile: 38; sh: 5
file content (80 lines) | stat: -rw-r--r-- 3,207 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
"""Unit tests for FrameCommandRunStatusNotification."""
import unittest

from pyvlx.api.frame_creation import frame_from_raw
from pyvlx.api.frames import FrameCommandRunStatusNotification
from pyvlx.const import RunStatus, StatusReply


class TestFrameCommandRunStatusNotification(unittest.TestCase):
    """Test class FrameCommandRunStatusNotification."""

    # pylint: disable=too-many-public-methods,invalid-name

    EXAMPLE_FRAMES = [
        (
            "execution_completed",
            b"\x00\x10\x03\x02\x03\xe8\x07\x17*\x059\x00\xee\x00\x00\x00\x00\x12",
            RunStatus.EXECUTION_COMPLETED,
            StatusReply.LIMITATION_BY_EMERGENCY,
        ),
        (
            "execution_active",
            b"\x00\x10\x03\x02\x03\xe8\x07\x17*\x059\x02\xe2\x00\x00\x00\x00\x1c",
            RunStatus.EXECUTION_ACTIVE,
            StatusReply.LIMITATION_BY_USER,
        ),
        (
            "execution_failed",
            b"\x00\x10\x03\x02\x03\xe8\x07\x17*\x059\x01\xe3\x00\x00\x00\x00\x1e",
            RunStatus.EXECUTION_FAILED,
            StatusReply.LIMITATION_BY_RAIN,
        ),
    ]

    def test_bytes(self):
        """Test FrameCommandRunStatusNotification."""
        for name, raw, run_status, status_reply in self.EXAMPLE_FRAMES:
            with self.subTest(name=name):
                frame = FrameCommandRunStatusNotification(
                    session_id=1000,
                    status_id=7,
                    index_id=23,
                    node_parameter=42,
                    parameter_value=1337,
                    run_status=run_status,
                    status_reply=status_reply,
                )
                self.assertEqual(bytes(frame), raw)

    def test_frame_from_raw(self):
        """Test parse FrameCommandRunStatusNotification from raw."""
        for name, raw, run_status, status_reply in self.EXAMPLE_FRAMES:
            with self.subTest(name=name):
                frame = frame_from_raw(raw)
                self.assertIsInstance(frame, FrameCommandRunStatusNotification)
                self.assertEqual(frame.session_id, 1000)
                self.assertEqual(frame.status_id, 7)
                self.assertEqual(frame.index_id, 23)
                self.assertEqual(frame.node_parameter, 42)
                self.assertEqual(frame.parameter_value, 1337)
                self.assertEqual(frame.run_status, run_status)
                self.assertEqual(frame.status_reply, status_reply)

    def test_str(self):
        """Test string representation of FrameCommandRunStatusNotification."""
        frame = FrameCommandRunStatusNotification(
            session_id=1000,
            status_id=7,
            index_id=23,
            node_parameter=42,
            parameter_value=1337,
            run_status=RunStatus.EXECUTION_FAILED,
            status_reply=StatusReply.LIMITATION_BY_RAIN,
        )
        self.assertEqual(
            str(frame),
            '<FrameCommandRunStatusNotification session_id="1000" status_id="7" index_id="23" node_parameter="42" '
            'parameter_value="1337" run_status="RunStatus.EXECUTION_FAILED" '
            'status_reply="StatusReply.LIMITATION_BY_RAIN"/>',
        )