예제 #1
0
    def test_optimize_size(self):
        text = 'A1abc12345123451234512345def1HELLOHELLOHELLOHELLOa' * 5

        qr = qrcode.QRCode()
        qr.add_data(text)
        qr.make()
        self.assertEqual(qr.version, 10)

        qr = qrcode.QRCode()
        qr.add_data(text, optimize=0)
        qr.make()
        self.assertEqual(qr.version, 11)
예제 #2
0
    def test_qrcode_factory(self):
        class MockFactory(BaseImage):
            drawrect = mock.Mock()

        qr = qrcode.QRCode(image_factory=MockFactory)
        qr.add_data(UNICODE_TEXT)
        qr.make_image()
        self.assertTrue(MockFactory.drawrect.called)
예제 #3
0
 def test_render_pymaging_png(self):
     qr = qrcode.QRCode()
     qr.add_data(UNICODE_TEXT)
     img = qr.make_image(image_factory=pure.PymagingImage)
     with warnings.catch_warnings():
         if six.PY3:
             warnings.simplefilter('ignore', DeprecationWarning)
         img.save(six.BytesIO())
예제 #4
0
 def test_fit(self):
     qr = qrcode.QRCode()
     qr.add_data('a')
     qr.make()
     self.assertEqual(qr.version, 1)
     qr.add_data('bcdefghijklmno')
     qr.make()
     self.assertEqual(qr.version, 2)
예제 #5
0
 def test_print_ascii_stdout(self):
     qr = qrcode.QRCode()
     stdout_encoding = sys.stdout.encoding
     with mock.patch('sys.stdout') as fake_stdout:
         # Python 2.6 needs sys.stdout.encoding to be a real string.
         sys.stdout.encoding = stdout_encoding
         fake_stdout.isatty.return_value = None
         self.assertRaises(OSError, qr.print_ascii, tty=True)
         self.assertTrue(fake_stdout.isatty.called)
예제 #6
0
def test_svgfragment():
    qr = qrcode.QRCode()
    qr.add_data('test')
    img = qr.make_image(image_factory=qrcode.image.svg.SvgPathImage)
    out = io.BytesIO()
    img.save(out)
    assert out.getvalue().startswith(b'<?xml')
    img = qr.make_image(image_factory=qrcode.image.svg.SvgFragmentImage)
    out = io.BytesIO()
    img.save(out)
    assert out.getvalue().startswith(b'<svg')
예제 #7
0
def test_change_format():
    qr = qrcode.QRCode()
    qr.add_data('test')
    img = qr.make_image()
    out = io.BytesIO()
    img.save(out)
    png_magic_no = b'\211PNG\r\n\032\n'
    assert out.getvalue().startswith(png_magic_no)
    out = io.BytesIO()
    img.save(out, format='svg')
    assert out.getvalue().startswith(b'<?xml')
예제 #8
0
def test_svgfill_image2():
    qr = qrcode.QRCode(image_factory=SVGFillRed)
    qr.add_data('test')
    img = qr.make_image()
    out = io.BytesIO()
    img.save(out)
    root = _parse_xml(out)
    # Background should be the first path in the doc
    path = _get_path(root)
    assert path is not None
    assert 'red' == path.attrib.get('fill')
예제 #9
0
def test_eps():
    qr = qrcode.QRCode()
    qr.add_data('test')
    img = qr.make_image()
    out = io.BytesIO()
    img.save(out)
    png_magic_no = b'\211PNG\r\n\032\n'
    assert out.getvalue().startswith(png_magic_no)
    out = io.StringIO()
    img.save(out, format='eps')
    assert out.getvalue().startswith('%!PS-Adobe-3.0 EPSF-3.0')
예제 #10
0
 def test_optimize(self):
     qr = qrcode.QRCode()
     text = 'A1abc12345def1HELLOa'
     qr.add_data(text, optimize=4)
     qr.make()
     self.assertEqual(len(qr.data_list), 5)
     self.assertEqual(qr.data_list[0].mode, MODE_8BIT_BYTE)
     self.assertEqual(qr.data_list[1].mode, MODE_NUMBER)
     self.assertEqual(qr.data_list[2].mode, MODE_8BIT_BYTE)
     self.assertEqual(qr.data_list[3].mode, MODE_ALPHA_NUM)
     self.assertEqual(qr.data_list[4].mode, MODE_8BIT_BYTE)
     self.assertEqual(qr.version, 2)
예제 #11
0
 def test_print_tty(self):
     qr = qrcode.QRCode()
     f = six.StringIO()
     f.isatty = lambda: True
     qr.print_tty(out=f)
     printed = f.getvalue()
     f.close()
     BOLD_WHITE_BG = '\x1b[1;47m'
     BLACK_BG = '\x1b[40m'
     WHITE_BLOCK = BOLD_WHITE_BG + '  ' + BLACK_BG
     EOL = '\x1b[0m\n'
     expected = (BOLD_WHITE_BG + '  ' * 23 + EOL + WHITE_BLOCK + '  ' * 7 +
                 WHITE_BLOCK)
     self.assertEqual(printed[:len(expected)], expected)
예제 #12
0
    def test_print_ascii(self):
        qr = qrcode.QRCode(border=0)
        f = six.StringIO()
        qr.print_ascii(out=f)
        printed = f.getvalue()
        f.close()
        expected = u'\u2588\u2580\u2580\u2580\u2580\u2580\u2588'
        self.assertEqual(printed[:len(expected)], expected)

        f = six.StringIO()
        f.isatty = lambda: True
        qr.print_ascii(out=f, tty=True)
        printed = f.getvalue()
        f.close()
        expected = (u'\x1b[48;5;232m\x1b[38;5;255m' +
                    u'\xa0\u2584\u2584\u2584\u2584\u2584\xa0')
        self.assertEqual(printed[:len(expected)], expected)
예제 #13
0
 def test_mode_number(self):
     qr = qrcode.QRCode()
     qr.add_data('1234567890123456789012345678901234', optimize=0)
     qr.make()
     self.assertEqual(qr.version, 1)
     self.assertEqual(qr.data_list[0].mode, MODE_NUMBER)
예제 #14
0
 def test_render_pil(self):
     qr = qrcode.QRCode()
     qr.add_data(UNICODE_TEXT)
     img = qr.make_image()
     img.save(six.BytesIO())
예제 #15
0
 def test_add_qrdata(self):
     qr = qrcode.QRCode(version=1)
     data = QRData('a')
     qr.add_data(data)
     qr.make(fit=False)
예제 #16
0
 def test_overflow(self):
     qr = qrcode.QRCode(version=1)
     qr.add_data('abcdefghijklmno')
     self.assertRaises(DataOverflowError, qr.make, fit=False)
예제 #17
0
 def test_invalid_version(self):
     qr = qrcode.QRCode(version=41)
     self.assertRaises(ValueError, qr.make, fit=False)
예제 #18
0
 def test_render_svg_with_background(self):
     qr = qrcode.QRCode()
     qr.add_data(UNICODE_TEXT)
     img = qr.make_image(image_factory=SvgImageWhite)
     img.save(six.BytesIO())
예제 #19
0
 def test_mode_8bit(self):
     qr = qrcode.QRCode()
     qr.add_data(u'abcABC' + UNICODE_TEXT, optimize=0)
     qr.make()
     self.assertEqual(qr.version, 1)
     self.assertEqual(qr.data_list[0].mode, MODE_8BIT_BYTE)
예제 #20
0
 def test_negative_size_at_usage(self):
     qr = qrcode.QRCode()
     qr.box_size = -1
     self.assertRaises(ValueError, qr.make_image)
예제 #21
0
 def test_get_matrix_border(self):
     qr = qrcode.QRCode(border=1)
     qr.add_data('1')
     matrix = [row[1:-1] for row in qr.get_matrix()[1:-1]]
     self.assertEqual(matrix, qr.modules)
예제 #22
0
 def test_get_matrix(self):
     qr = qrcode.QRCode(border=0)
     qr.add_data('1')
     self.assertEqual(qr.get_matrix(), qr.modules)
예제 #23
0
 def test_render_svg_fragment(self):
     qr = qrcode.QRCode()
     qr.add_data(UNICODE_TEXT)
     img = qr.make_image(image_factory=qrcode.image.svg.SvgFragmentImage)
     img.save(six.BytesIO())
예제 #24
0
 def test_print_tty_stdout(self):
     qr = qrcode.QRCode()
     with mock.patch('sys.stdout') as fake_stdout:
         fake_stdout.isatty.return_value = None
         self.assertRaises(OSError, qr.print_tty)
         self.assertTrue(fake_stdout.isatty.called)
예제 #25
0
 def test_mode_alpha(self):
     qr = qrcode.QRCode()
     qr.add_data('ABCDEFGHIJ1234567890', optimize=0)
     qr.make()
     self.assertEqual(qr.version, 1)
     self.assertEqual(qr.data_list[0].mode, MODE_ALPHA_NUM)
예제 #26
0
 def test_basic(self):
     qr = qrcode.QRCode(version=1)
     qr.add_data('a')
     qr.make(fit=False)
예제 #27
0
 def test_regression_mode_comma(self):
     qr = qrcode.QRCode()
     qr.add_data(',', optimize=0)
     qr.make()
     self.assertEqual(qr.data_list[0].mode, MODE_8BIT_BYTE)
예제 #28
0
 def test_large(self):
     qr = qrcode.QRCode(version=27)
     qr.add_data('a')
     qr.make(fit=False)
예제 #29
0
 def test_mode_8bit_newline(self):
     qr = qrcode.QRCode()
     qr.add_data('ABCDEFGHIJ1234567890\n', optimize=0)
     qr.make()
     self.assertEqual(qr.data_list[0].mode, MODE_8BIT_BYTE)
예제 #30
0
 def test_render_pymaging_png_bad_kind(self):
     qr = qrcode.QRCode()
     qr.add_data(UNICODE_TEXT)
     img = qr.make_image(image_factory=pure.PymagingImage)
     self.assertRaises(ValueError, img.save, six.BytesIO(), kind='FISH')