File: smoke_tests.py

package info (click to toggle)
python-librt 0.6.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 360 kB
  • sloc: ansic: 5,555; python: 203; makefile: 6
file content (140 lines) | stat: -rw-r--r-- 3,724 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
from __future__ import annotations

from typing import Final
from mypy_extensions import u8

from librt.internal import (
    ReadBuffer,
    WriteBuffer,
    write_bool, read_bool,
    write_str, read_str,
    write_float, read_float,
    write_int, read_int,
    write_tag, read_tag,
    write_bytes, read_bytes,
    cache_version,
)

Tag = u8
TAG_A: Final[Tag] = 33
TAG_B: Final[Tag] = 255
TAG_SPECIAL: Final[Tag] = 239


def test_cache_version() -> None:
    assert cache_version() == 0


def test_buffer_write_and_read_int() -> None:
    b = WriteBuffer()
    write_int(b, 42)
    rb = ReadBuffer(b.getvalue())
    assert read_int(rb) == 42


def test_buffer_roundtrip() -> None:
    b: WriteBuffer | ReadBuffer
    b = WriteBuffer()
    write_str(b, "foo")
    write_bool(b, True)
    write_str(b, "bar" * 1000)
    write_bool(b, False)
    write_bytes(b, b"bar")
    write_bytes(b, b"bar" * 100)
    write_bytes(b, b"")
    write_bytes(b, b"a" * 117)
    write_bytes(b, b"a" * 118)
    write_float(b, 0.1)
    write_float(b, -1.0)
    write_float(b, -113.0)
    write_int(b, 0)
    write_int(b, 1)
    write_tag(b, TAG_A)
    write_tag(b, TAG_SPECIAL)
    write_tag(b, TAG_B)
    write_int(b, 2)
    write_int(b, 2 ** 85)
    write_int(b, 255)
    write_int(b, -1)
    write_int(b, -255)
    write_int(b, 536860911)
    write_int(b, 536860912)
    write_int(b, 1234567891)

    b = ReadBuffer(b.getvalue())
    assert read_str(b) == "foo"
    assert read_bool(b) is True
    assert read_str(b) == "bar" * 1000
    assert read_bool(b) is False
    assert read_bytes(b) == b"bar"
    assert read_bytes(b) == b"bar" * 100
    assert read_bytes(b) == b""
    assert read_bytes(b) == b"a" * 117
    assert read_bytes(b) == b"a" * 118
    assert read_float(b) == 0.1
    assert read_float(b) == -1.0
    assert read_float(b) == -113.0
    assert read_int(b) == 0
    assert read_int(b) == 1
    assert read_tag(b) == TAG_A
    assert read_tag(b) == TAG_SPECIAL
    assert read_tag(b) == TAG_B
    assert read_int(b) == 2
    assert read_int(b) == 2 ** 85
    assert read_int(b) == 255
    assert read_int(b) == -1
    assert read_int(b) == -255
    assert read_int(b) == 536860911
    assert read_int(b) == 536860912
    assert read_int(b) == 1234567891


def test_buffer_int_size() -> None:
    b: WriteBuffer | ReadBuffer
    for i in (-10, -9, 0, 116, 117):
        b = WriteBuffer()
        write_int(b, i)
        assert len(b.getvalue()) == 1
        b = ReadBuffer(b.getvalue())
        assert read_int(b) == i
    for i in (-100, -11, 118, 12344, 16283):
        b = WriteBuffer()
        write_int(b, i)
        assert len(b.getvalue()) == 2
        b = ReadBuffer(b.getvalue())
        assert read_int(b) == i
    for i in (-10000, 16284, 123456789):
        b = WriteBuffer()
        write_int(b, i)
        assert len(b.getvalue()) == 4
        b = ReadBuffer(b.getvalue())
        assert read_int(b) == i


def test_buffer_int_powers() -> None:
    # 0, 1, 2 are tested above
    b: WriteBuffer | ReadBuffer
    for p in range(2, 100):
        b = WriteBuffer()
        write_int(b, 1 << p)
        write_int(b, -1 << p)
        b = ReadBuffer(b.getvalue())
        assert read_int(b) == 1 << p
        assert read_int(b) == -1 << p


def test_buffer_str_size() -> None:
    b: WriteBuffer | ReadBuffer
    for s in ("", "a", "a" * 117):
        b = WriteBuffer()
        write_str(b, s)
        assert len(b.getvalue()) == len(s) + 1
        b = ReadBuffer(b.getvalue())
        assert read_str(b) == s

    for s in ("a" * 118, "a" * 16283):
        b = WriteBuffer()
        write_str(b, s)
        assert len(b.getvalue()) == len(s) + 2
        b = ReadBuffer(b.getvalue())
        assert read_str(b) == s