File: test_issue33_microcode.py

package info (click to toggle)
segno 1.6.6-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 4,068 kB
  • sloc: python: 9,936; makefile: 162; javascript: 16
file content (97 lines) | stat: -rw-r--r-- 2,839 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
#
# Copyright (c) 2016 - 2024 -- Lars Heuer
# All rights reserved.
#
# License: BSD License
#
"""\
Tests against issue 33 and 37
<https://github.com/heuer/segno/issues/33>
<https://github.com/heuer/segno/issues/37>
"""
import pytest
import segno
from segno import consts
from segno import encoder
try:
    from .tutils import read_matrix
# Attempted relative import in non-package
except (ValueError, SystemError, ImportError):
    from tutils import read_matrix


def test_format_info_figure25():
    # 7.9.1 QR Code symbols (page 55)
    version = 1
    mask_pattern = 5
    error = consts.ERROR_LEVEL_M
    # 100000011001110
    assert 0x40ce == encoder.calc_format_info(version, error, mask_pattern)


def test_format_info_figure26():
    # 7.9.2 Micro QR Code symbols (page 57)
    version = consts.VERSION_M1
    mask_pattern = 3
    error = None
    # 100101100011100
    assert 0x4b1c == encoder.calc_format_info(version, error, mask_pattern)


@pytest.mark.parametrize('data', ['50041', 50041])
@pytest.mark.parametrize('version', [None, 'm1'])
def test_m1_50041(data, version):
    qr = segno.make(data, version=version)
    assert 'M1' == qr.designator
    ref_matrix = read_matrix('issue-33-m1-50041')[0]
    assert ref_matrix == qr.matrix


@pytest.mark.parametrize('data', ['1234', 1234])
@pytest.mark.parametrize('version', [None, 'm1'])
def test_m1_1234(data, version):
    qr = segno.make(data, version=version)
    assert 'M1' == qr.designator
    ref_matrix = read_matrix('issue-33-m1-1234')[0]
    assert ref_matrix == qr.matrix


@pytest.mark.parametrize('data', ['12345', 12345])
@pytest.mark.parametrize('version', [None, 'm1'])
def test_m1_12345(data, version):
    qr = segno.make(data, version=version)
    assert 'M1' == qr.designator
    ref_matrix = read_matrix('issue-33-m1-12345')[0]
    assert ref_matrix == qr.matrix


def test_m3_wikipedia():
    qr = segno.make('Wikipedia', version='m3', error='l')
    assert 'M3-L' == qr.designator
    ref_matrix = read_matrix('issue-33-m3-l-wikipedia')[0]
    assert ref_matrix == qr.matrix


def test_m3_max_numeric():
    qr = segno.make('12345678901234567890123', version='m3', error='l')
    assert 'M3-L' == qr.designator
    ref_matrix = read_matrix('issue-33-m3-l-12345678901234567890123')[0]
    assert ref_matrix == qr.matrix


def test_jump_from_m3_to_m4_dont_boost_error():
    qr = segno.make('123456789012345678901234', boost_error=False)
    assert 'M4-L' == qr.designator
    ref_matrix = read_matrix('issue-33-m3-l-to-m4-l-jump')[0]
    assert ref_matrix == qr.matrix


def test_jump_from_m3_to_m4_boost_error():
    qr = segno.make('123456789012345678901234')
    assert 'M4-M' == qr.designator
    ref_matrix = read_matrix('issue-33-m3-l-to-m4-m-jump')[0]
    assert ref_matrix == qr.matrix


if __name__ == '__main__':
    pytest.main([__file__])