Esempio n. 1
0
def test_encode_iso_i3():
    # ISO/IEC 18004:2015(E) - page 96
    # 01234567 as M2-L symbol
    qr = encoder.encode('01234567', error='l', version='m2', mask=1, micro=True,
                        boost_error=False)
    assert consts.ERROR_LEVEL_L == qr.error
    assert consts.VERSION_M2 == qr.version
    assert 1 == qr.mask, 'Wrong mask, got: {0}'.format(qr.mask)
    qr = encoder.encode('01234567', error='l', version=None, mask=1, micro=True,
                        boost_error=False)
    assert consts.ERROR_LEVEL_L == qr.error
    assert consts.VERSION_M2 == qr.version
    assert 1 == qr.mask, 'Wrong mask, got: {0}'.format(qr.mask)
    ref_matrix = read_matrix('iso-i3')
    assert ref_matrix == qr.matrix
Esempio n. 2
0
def test_encode_iso_i3():
    # ISO/IEC 18004:2015(E) - page 96
    # 01234567 as M2-L symbol
    qr = encoder.encode('01234567', error='l', version='m2', mask=1, micro=True,
                        boost_error=False)
    assert consts.ERROR_LEVEL_L == qr.error
    assert consts.VERSION_M2 == qr.version
    assert 1 == qr.mask, 'Wrong mask, got: {0}'.format(qr.mask)
    qr = encoder.encode('01234567', error='l', version=None, mask=1, micro=True,
                        boost_error=False)
    assert consts.ERROR_LEVEL_L == qr.error
    assert consts.VERSION_M2 == qr.version
    assert 1 == qr.mask, 'Wrong mask, got: {0}'.format(qr.mask)
    ref_matrix = read_matrix('iso-i3')
    assert ref_matrix == qr.matrix
Esempio n. 3
0
def test_detect_hanzi_encoder2():
    # detect as utf8
    qr = encoder.encode('汉字')
    assert 1 == len(qr.segments)
    segment = qr.segments[0]
    assert consts.MODE_BYTE == segment.mode
    assert 6 == segment.char_count
Esempio n. 4
0
def test_no_darkmodule_mqr():
    # Micro QR Codes don't have a dark module.
    qr = encoder.encode('A', micro=True)
    res = []
    for row in utils.matrix_iter_detail(qr.matrix, qr.version, border=0):
        res.extend([v == utils.TYPE_DARKMODULE for v in row])
    assert True not in res
Esempio n. 5
0
def test_timing_dark_qr():
    qr = encoder.encode('A', micro=False)
    res = []
    for row in utils.matrix_iter_detail(qr.matrix, qr.version, border=0):
        res.append(bytearray([(0x2, 0x1)[v == utils.TYPE_TIMING_DARK] for v in row]))
    expected = read_matrix('v1-timing-dark')
    assert expected == res
Esempio n. 6
0
def test_no_darkmodule_mqr():
    # Micro QR Codes don't have a dark module.
    qr = encoder.encode('A', micro=True)
    res = []
    for row in utils.matrix_iter_verbose(qr.matrix, qr.version, border=0):
        res.extend([v == consts.TYPE_DARKMODULE for v in row])
    assert True not in res
Esempio n. 7
0
def test_timing_light_mqr():
    qr = encoder.encode('A', micro=True)
    res = []
    for row in utils.matrix_iter_detail(qr.matrix, qr.version, border=0):
        res.append(bytearray([(0x2, 0x0)[v == utils.TYPE_TIMING_LIGHT] for v in row]))
    expected = read_matrix('m2-timing-light')
    assert expected == res
Esempio n. 8
0
def test_version_dark_and_light():
    qr = encoder.encode('A', version=7)
    res = []
    for row in utils.matrix_iter_verbose(qr.matrix, qr.version, border=0):
        res.append(bytearray([(0x2, 0x1)[v in (consts.TYPE_VERSION_LIGHT, consts.TYPE_VERSION_DARK)] for v in row]))
    expected = read_matrix('v7-version-dark-and-light')
    assert expected == res
Esempio n. 9
0
def test_version_no_version():
    # The version information is not available in QR Codes < 7
    qr = encoder.encode('A', version=6)
    res = []
    for row in utils.matrix_iter_verbose(qr.matrix, qr.version, border=0):
        res.extend([v in (consts.TYPE_VERSION_LIGHT, consts.TYPE_VERSION_DARK) for v in row])
    assert True not in res
Esempio n. 10
0
def test_alignment_dark_and_light():
    qr = encoder.encode('A', version=12)
    res = []
    for row in utils.matrix_iter_verbose(qr.matrix, qr.version, border=0):
        res.append(bytearray([(0x2, 0x1)[v in (consts.TYPE_ALIGNMENT_PATTERN_LIGHT, consts.TYPE_ALIGNMENT_PATTERN_DARK)] for v in row]))
    expected = read_matrix('v12-alignment-dark-and-light')
    assert expected == res
Esempio n. 11
0
def test_timing_light_mqr():
    qr = encoder.encode('A', micro=True)
    res = []
    for row in utils.matrix_iter_verbose(qr.matrix, qr.version, border=0):
        res.append(bytearray([(0x2, 0x0)[v == consts.TYPE_TIMING_LIGHT] for v in row]))
    expected = read_matrix('m2-timing-light')
    assert expected == res
Esempio n. 12
0
def test_timing_dark_qr():
    qr = encoder.encode('A', micro=False)
    res = []
    for row in utils.matrix_iter_verbose(qr.matrix, qr.version, border=0):
        res.append(bytearray([(0x2, 0x1)[v == consts.TYPE_TIMING_DARK] for v in row]))
    expected = read_matrix('v1-timing-dark')
    assert expected == res
Esempio n. 13
0
def test_format_dark_and_light_qr():
    qr = encoder.encode('A', micro=False)
    res = []
    for row in utils.matrix_iter_verbose(qr.matrix, qr.version, border=0):
        res.append(bytearray([(0x2, 0x1)[v in (consts.TYPE_FORMAT_DARK, consts.TYPE_FORMAT_LIGHT)] for v in row]))
    expected = read_matrix('v1-format-dark-and-light')
    assert expected == res
Esempio n. 14
0
def test_separator_mqr():
    qr = encoder.encode('A', micro=True)
    res = []
    for row in utils.matrix_iter_verbose(qr.matrix, qr.version, border=0):
        res.append(bytearray([(0x2, 0x0)[v == consts.TYPE_SEPARATOR] for v in row]))
    expected = read_matrix('m2-separator')
    assert expected == res
Esempio n. 15
0
def test_quietzone_default_mqr():
    qr = encoder.encode('A', micro=True)
    res = []
    for row in utils.matrix_iter_detail(qr.matrix, qr.version):
        res.append(bytearray([(0x1, 0x0)[v == utils.TYPE_QUIET_ZONE] for v in row]))
    expected = read_matrix('m2-quietzone-2')
    assert expected == res
Esempio n. 16
0
def test_finder_pattern_dark_and_light_mqr():
    qr = encoder.encode('A', micro=True)
    res = []
    for row in utils.matrix_iter_detail(qr.matrix, qr.version, border=0):
        res.append(bytearray([(0x2, 0x1)[v in (utils.TYPE_FINDER_PATTERN_DARK, utils.TYPE_FINDER_PATTERN_LIGHT)] for v in row]))
    expected = read_matrix('m2-finder-dark-and-light')
    assert expected == res
Esempio n. 17
0
def test_alignment_dark_and_light():
    qr = encoder.encode('A', version=12)
    res = []
    for row in utils.matrix_iter_detail(qr.matrix, qr.version, border=0):
        res.append(bytearray([(0x2, 0x1)[v in (utils.TYPE_ALIGNMENT_PATTERN_LIGHT, utils.TYPE_ALIGNMENT_PATTERN_DARK)] for v in row]))
    expected = read_matrix('v12-alignment-dark-and-light')
    assert expected == res
Esempio n. 18
0
def test_quietzone_default_mqr():
    qr = encoder.encode('A', micro=True)
    res = []
    for row in utils.matrix_iter_verbose(qr.matrix, qr.version):
        res.append(bytearray([(0x1, 0x0)[v == consts.TYPE_QUIET_ZONE] for v in row]))
    expected = read_matrix('m2-quietzone-2')
    assert expected == res
Esempio n. 19
0
def test_version_no_version():
    # The version information is not available in QR Codes < 7
    qr = encoder.encode('A', version=6)
    res = []
    for row in utils.matrix_iter_detail(qr.matrix, qr.version, border=0):
        res.extend([v in (utils.TYPE_VERSION_LIGHT, utils.TYPE_VERSION_DARK) for v in row])
    assert True not in res
Esempio n. 20
0
def test_separator_mqr():
    qr = encoder.encode('A', micro=True)
    res = []
    for row in utils.matrix_iter_detail(qr.matrix, qr.version, border=0):
        res.append(bytearray([(0x2, 0x0)[v == utils.TYPE_SEPARATOR] for v in row]))
    expected = read_matrix('m2-separator')
    assert expected == res
Esempio n. 21
0
def test_format_dark_and_light_qr():
    qr = encoder.encode('A', micro=False)
    res = []
    for row in utils.matrix_iter_detail(qr.matrix, qr.version, border=0):
        res.append(bytearray([(0x2, 0x1)[v in (utils.TYPE_FORMAT_DARK, utils.TYPE_FORMAT_LIGHT)] for v in row]))
    expected = read_matrix('v1-format-dark-and-light')
    assert expected == res
Esempio n. 22
0
def test_finder_pattern_dark_light_qr():
    qr = encoder.encode('A', micro=False)
    res = []
    for row in utils.matrix_iter_detail(qr.matrix, qr.version, border=0):
        res.append(bytearray([(0x2, 0x0)[v == utils.TYPE_FINDER_PATTERN_LIGHT] for v in row]))
    expected = read_matrix('v1-finder-light')
    assert expected == res
Esempio n. 23
0
def test_finder_pattern_dark_and_light_mqr():
    qr = encoder.encode('A', micro=True)
    res = []
    for row in utils.matrix_iter_verbose(qr.matrix, qr.version, border=0):
        res.append(bytearray([(0x2, 0x1)[v in (consts.TYPE_FINDER_PATTERN_DARK, consts.TYPE_FINDER_PATTERN_LIGHT)] for v in row]))
    expected = read_matrix('m2-finder-dark-and-light')
    assert expected == res
Esempio n. 24
0
def test_finder_pattern_dark_light_qr():
    qr = encoder.encode('A', micro=False)
    res = []
    for row in utils.matrix_iter_verbose(qr.matrix, qr.version, border=0):
        res.append(bytearray([(0x2, 0x0)[v == consts.TYPE_FINDER_PATTERN_LIGHT] for v in row]))
    expected = read_matrix('v1-finder-light')
    assert expected == res
Esempio n. 25
0
def test_version_dark_and_light():
    qr = encoder.encode('A', version=7)
    res = []
    for row in utils.matrix_iter_detail(qr.matrix, qr.version, border=0):
        res.append(bytearray([(0x2, 0x1)[v in (utils.TYPE_VERSION_LIGHT, utils.TYPE_VERSION_DARK)] for v in row]))
    expected = read_matrix('v7-version-dark-and-light')
    assert expected == res
Esempio n. 26
0
def test_encode_kanji_byte2():
    qr = encoder.encode('漢字'.encode(consts.KANJI_ENCODING),
                        encoding=consts.KANJI_ENCODING)
    assert 1 == len(qr.segments)
    segment = qr.segments[0]
    assert consts.MODE_KANJI == segment.mode
    assert 2 == segment.char_count
Esempio n. 27
0
def test_encode_iso_i2():
    # ISO/IEC 18004:2015(E) - page 94
    # 01234567 as 1-M symbol
    #TODO: Without the mask param Segno chooses mask 3 which seems to be correct
    # Mask 2 is IMO an error in the standard
    qr = encoder.encode('01234567', error='m', version=1, mask=2, micro=False,
                        boost_error=False)
    assert consts.ERROR_LEVEL_M == qr.error
    assert 1 == qr.version
    assert 2 == qr.mask, 'Wrong mask, got: {0}'.format(qr.mask)
    qr = encoder.encode('01234567', error='m', mask=2, micro=False,
                        boost_error=False)
    assert consts.ERROR_LEVEL_M == qr.error
    assert 1 == qr.version
    assert 2 == qr.mask, 'Wrong mask, got: {0}'.format(qr.mask)
    ref_matrix = read_matrix('iso-i2')
    assert ref_matrix == qr.matrix
Esempio n. 28
0
def test_convert_to_boolean():
    qr = encoder.encode('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',
                        error='m', mask=4, boost_error=False)
    res = []
    for row in utils.matrix_iter_verbose(qr.matrix, qr.version):
        res.append(bytearray([bool(v >> 8) for v in row]))
    expected = read_matrix('iso-fig-29')
    assert expected == res
Esempio n. 29
0
def test_encode_iso_i2():
    # ISO/IEC 18004:2015(E) - page 94
    # 01234567 as 1-M symbol
    #TODO: Without the mask param Segno chooses mask 3 which seems to be correct
    # Mask 2 is IMO an error in the standard
    qr = encoder.encode('01234567', error='m', version=1, mask=2, micro=False,
                        boost_error=False)
    assert consts.ERROR_LEVEL_M == qr.error
    assert 1 == qr.version
    assert 2 == qr.mask, 'Wrong mask, got: {0}'.format(qr.mask)
    qr = encoder.encode('01234567', error='m', mask=2, micro=False,
                        boost_error=False)
    assert consts.ERROR_LEVEL_M == qr.error
    assert 1 == qr.version
    assert 2 == qr.mask, 'Wrong mask, got: {0}'.format(qr.mask)
    ref_matrix = read_matrix('iso-i2')
    assert ref_matrix == qr.matrix
Esempio n. 30
0
def test_quietzone_custom_qr():
    qr = encoder.encode('A', micro=False)
    border = 1
    res = []
    for row in utils.matrix_iter_verbose(qr.matrix, qr.version, border=border):
        res.append(bytearray([(0x2, 0x0)[v == consts.TYPE_QUIET_ZONE] for v in row]))
    expected = read_matrix('v1-quietzone-1')
    assert expected == res
Esempio n. 31
0
def test_quietzone_custom_qr():
    qr = encoder.encode('A', micro=False)
    border = 1
    res = []
    for row in utils.matrix_iter_detail(qr.matrix, qr.version, border=border):
        res.append(bytearray([(0x2, 0x0)[v == utils.TYPE_QUIET_ZONE] for v in row]))
    expected = read_matrix('v1-quietzone-1')
    assert expected == res
Esempio n. 32
0
def test_encode_iso_fig29():
    # ISO/IEC 18004:2015(E) - page 60
    # ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ

    #TODO: If mask is None, Segno chooses mask 3, but the figure uses mask 4...
    qr = encoder.encode('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',
                            error='m', mask=4, boost_error=False)
    assert qr.mask == 4
    ref_matrix = read_matrix('iso-fig-29')
    assert ref_matrix == qr.matrix
Esempio n. 33
0
def test_encode_iso_fig29():
    # ISO/IEC 18004:2015(E) - page 60
    # ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ

    #TODO: If mask is None, Segno chooses mask 3, but the figure uses mask 4...
    qr = encoder.encode('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',
                            error='m', mask=4, boost_error=False)
    assert qr.mask == 4
    ref_matrix = read_matrix('iso-fig-29')
    assert ref_matrix == qr.matrix
Esempio n. 34
0
def test_version_as_str():
    qr = encoder.encode('test',
                        version='1',
                        error=None,
                        mode=None,
                        mask=None,
                        eci=None,
                        micro=None,
                        encoding=None)
    assert 1 == qr.version
Esempio n. 35
0
def test_encode_iso_fig1():
    # ISO/IEC 18004:2015(E) - page 7
    # 'QR Code Symbol' as 1-M symbol
    qr = encoder.encode('QR Code Symbol', error='M', mask=None, micro=False,
                        boost_error=False)
    assert consts.ERROR_LEVEL_M == qr.error
    assert 1 == qr.version
    assert 5 == qr.mask, 'Wrong mask, got: {0}'.format(qr.mask)
    ref_matrix = read_matrix('iso-fig-1')
    assert ref_matrix == qr.matrix
Esempio n. 36
0
def test_encode_iso_fig1():
    # ISO/IEC 18004:2015(E) - page 7
    # 'QR Code Symbol' as 1-M symbol
    qr = encoder.encode('QR Code Symbol', error='M', mask=None, micro=False,
                        boost_error=False)
    assert consts.ERROR_LEVEL_M == qr.error
    assert 1 == qr.version
    assert 5 == qr.mask, 'Wrong mask, got: {0}'.format(qr.mask)
    ref_matrix = read_matrix('iso-fig-1')
    assert ref_matrix == qr.matrix
Esempio n. 37
0
def test_detect_kanji_encoder2():
    qr = encoder.encode('漢字')
    assert 1 == len(qr.segments)
    segment = qr.segments[0]
    assert consts.MODE_KANJI == segment.mode
    assert 2 == segment.char_count
Esempio n. 38
0
def test_version_as_str():
    qr = encoder.encode('test', version='1', error=None, mode=None, mask=None, eci=None, micro=None, encoding=None)
    assert 1 == qr.version
Esempio n. 39
0
def test_kanji_bytes():
    qr = encoder.encode('続きを読む'.encode(consts.KANJI_ENCODING))
    assert 1 == len(qr.segments)
    segment = qr.segments[0]
    assert consts.MODE_KANJI == segment.mode
    assert 5 == segment.char_count
Esempio n. 40
0
def test_issue_4_explicit_error2():
    qr = encoder.encode(1, error='m')
    assert consts.VERSION_M2 == qr.version
    assert consts.ERROR_LEVEL_M == qr.error
Esempio n. 41
0
def test_issue_4_explicit_error():
    qr = encoder.encode(1, error=None)
    assert consts.VERSION_M1 == qr.version
    assert qr.error is None
Esempio n. 42
0
def test_issue_4():
    qr = encoder.encode(0)
    assert consts.VERSION_M1 == qr.version
    assert qr.error is None
Esempio n. 43
0
def test_hanzi_bytes():
    qr = encoder.encode('书读百遍其义自现'.encode(consts.HANZI_ENCODING), mode='hanzi')
    assert 1 == len(qr.segments)
    segment = qr.segments[0]
    assert consts.MODE_HANZI == segment.mode
    assert 8 == segment.char_count
Esempio n. 44
0
def test_issue_4_autodetect_micro():
    qr = encoder.encode(1)
    assert consts.VERSION_M1 == qr.version
    assert qr.error is None
Esempio n. 45
0
def test_force_hanzi_encoder():
    qr = encoder.encode('书读百遍其义自现', mode='hanzi')
    assert 1 == len(qr.segments)
    segment = qr.segments[0]
    assert consts.MODE_HANZI == segment.mode
    assert 8 == segment.char_count
Esempio n. 46
0
def test_issue_4_explicit_error():
    qr = encoder.encode(1, error=None)
    assert consts.VERSION_M1 == qr.version
    assert qr.error is None
Esempio n. 47
0
def test_issue_4_autodetect_micro():
    qr = encoder.encode(1)
    assert consts.VERSION_M1 == qr.version
    assert qr.error is None
Esempio n. 48
0
def test_issue_4():
    qr = encoder.encode(0)
    assert consts.VERSION_M1 == qr.version
    assert qr.error is None
Esempio n. 49
0
def test_issue_4_explicit_error2():
    qr = encoder.encode(1, error='m')
    assert consts.VERSION_M2 == qr.version
    assert consts.ERROR_LEVEL_M == qr.error
Esempio n. 50
0
def test_default_utf8_encoder():
    qr = encoder.encode('书读百遍其义自现')
    assert 1 == len(qr.segments)
    segment = qr.segments[0]
    assert consts.MODE_BYTE == segment.mode
    assert 24 == segment.char_count