Files @ 93889b9694f4
Branch filter:

Location: rattail-project/rattail/tests/test_barcodes.py - annotation

lance
bump: version 0.18.12 → 0.19.0
0f028e630eb6
92c03f5d8db0
0f028e630eb6
515967da4ebd
515967da4ebd
515967da4ebd
515967da4ebd
515967da4ebd
515967da4ebd
515967da4ebd
515967da4ebd
515967da4ebd
515967da4ebd
515967da4ebd
515967da4ebd
515967da4ebd
515967da4ebd
515967da4ebd
bf0f52d92bc6
515967da4ebd
515967da4ebd
ab74508562ee
ab74508562ee
ab74508562ee
ab74508562ee
ab74508562ee
ab74508562ee
ab74508562ee
ab74508562ee
ab74508562ee
518a0e90a912
518a0e90a912
518a0e90a912
518a0e90a912
518a0e90a912
518a0e90a912
518a0e90a912
518a0e90a912
518a0e90a912
518a0e90a912
518a0e90a912
518a0e90a912
518a0e90a912
518a0e90a912
518a0e90a912
518a0e90a912
518a0e90a912
803384993f4d
518a0e90a912
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
803384993f4d
# -*- coding: utf-8; -*-

from __future__ import unicode_literals, absolute_import

from unittest import TestCase

from rattail import barcodes


class ModuleTests(TestCase):

    def test_upc_check_digit(self):
        data = [
            ('07430500132', 1),
            ('03600029145', 2),
            ('03600024145', 7),
            ('01010101010', 5),
            ('07430503112', 0),
        ]
        for in_, out in data:
            self.assertEqual(barcodes.upc_check_digit(in_), out)

    def test_luhn_check_digit(self):
        data = [
            ('7992739871', 3),
            ('4992739871', 6),
            ('123456781234567', 0),
            ]
        for in_, out in data:
            self.assertEqual(barcodes.luhn_check_digit(in_), out)

    def test_price_check_digit(self):
        data = [
            ('0512', 3),
            ]
        for in_, out in data:
            self.assertEqual(barcodes.price_check_digit(in_), out)

        # short string
        self.assertRaises(ValueError, barcodes.price_check_digit, '123')

        # long string
        self.assertRaises(ValueError, barcodes.price_check_digit, '12345')

        # not a string
        self.assertRaises(ValueError, barcodes.price_check_digit, 1234)

    def test_upce_to_upca(self):

        # without input check digit
        data = [
            ('123450', '01200000345'),
            ('123451', '01210000345'),
            ('123452', '01220000345'),
            ('123453', '01230000045'),
            ('123454', '01234000005'),
            ('123455', '01234500005'),
            ('123456', '01234500006'),
            ('123457', '01234500007'),
            ('123458', '01234500008'),
            ('123459', '01234500009'),
            ('654321', '06510000432'),
            ('425261', '04210000526'),
            ('234903', '02340000090'),
            ('234567', '02345600007'),
            ('234514', '02345000001'),
            ('639712', '06320000971'),
            ('867933', '08670000093'),
            ('913579', '09135700009'),
            ('421184', '04211000008'),
            ]
        for in_, out in data:
            self.assertEqual(barcodes.upce_to_upca(in_), out)

        # with input check digit
        data = [
            ('01234505', '01200000345'),
            ('01234514', '01210000345'),
            ('01234523', '01220000345'),
            ('01234531', '01230000045'),
            ('01234543', '01234000005'),
            ('01234558', '01234500005'),
            ('01234565', '01234500006'),
            ('01234572', '01234500007'),
            ('01234589', '01234500008'),
            ('01234596', '01234500009'),
            ('06543217', '06510000432'),
            ('04252614', '04210000526'),
            ('02349036', '02340000090'),
            ('02345673', '02345600007'),
            ('02345147', '02345000001'),
            ('06397126', '06320000971'),
            ('08679339', '08670000093'),
            ('09135796', '09135700009'),
            ('04211842', '04211000008'),
            ]
        for in_, out in data:
            self.assertEqual(barcodes.upce_to_upca(in_), out)

        # with output check digit
        data = [
            ('123450', '012000003455'),
            ('123451', '012100003454'),
            ('123452', '012200003453'),
            ('123453', '012300000451'),
            ('123454', '012340000053'),
            ('123455', '012345000058'),
            ('123456', '012345000065'),
            ('123457', '012345000072'),
            ('123458', '012345000089'),
            ('123459', '012345000096'),
            ('654321', '065100004327'),
            ('425261', '042100005264'),
            ('234903', '023400000906'),
            ('234567', '023456000073'),
            ('234514', '023450000017'),
            ('639712', '063200009716'),
            ('867933', '086700000939'),
            ('913579', '091357000096'),
            ('421184', '042110000082'),
            ]
        for in_, out in data:
            self.assertEqual(
                barcodes.upce_to_upca(in_, include_check_digit=True), out)

        # with input and output check digits
        data = [
            ('01234505', '012000003455'),
            ('01234514', '012100003454'),
            ('01234523', '012200003453'),
            ('01234531', '012300000451'),
            ('01234543', '012340000053'),
            ('01234558', '012345000058'),
            ('01234565', '012345000065'),
            ('01234572', '012345000072'),
            ('01234589', '012345000089'),
            ('01234596', '012345000096'),
            ('06543217', '065100004327'),
            ('04252614', '042100005264'),
            ('02349036', '023400000906'),
            ('02345673', '023456000073'),
            ('02345147', '023450000017'),
            ('06397126', '063200009716'),
            ('08679339', '086700000939'),
            ('09135796', '091357000096'),
            ('04211842', '042110000082'),
            ]
        for in_, out in data:
            self.assertEqual(
                barcodes.upce_to_upca(in_, include_check_digit=True), out)