# -*- 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)