def test_print_chip(): pins = [f'A{n}' for n in range(1, 9)] pins[3] = '/A4' pins[7] = '/A8' normal_chip = chip.Chip('normal', 8) normal_chip.description = 'desc' normal_chip.set_pins(pins) wide_chip = chip.Chip('wide', 8, rowSpacing=12) wide_chip.description = 'desc' wide_chip.set_pins(pins) if CREATE_REFERENCES: _create_reference(ChipPrinter(font=DEFAULT_FONT, dpi=300), normal_chip, 'nn300') _create_reference(ChipPrinter(font=DEFAULT_FONT, dpi=300), wide_chip, 'nw300') _create_reference(ChipPrinter(font=DEFAULT_FONT, dpi=300, invert=True), normal_chip, 'in300') _create_reference(ChipPrinter(font=DEFAULT_FONT, dpi=300, invert=True), wide_chip, 'iw300') _create_reference(ChipPrinter(font=DEFAULT_FONT, dpi=600), normal_chip, 'nn600') _create_reference(ChipPrinter(font=DEFAULT_FONT, dpi=600), wide_chip, 'nw600') _create_reference(ChipPrinter(font=DEFAULT_FONT, dpi=600, invert=True), normal_chip, 'in600') _create_reference(ChipPrinter(font=DEFAULT_FONT, dpi=600, invert=True), wide_chip, 'iw600') _compare_reference(ChipPrinter(font=DEFAULT_FONT, dpi=300), normal_chip, 'nn300') _compare_reference(ChipPrinter(font=DEFAULT_FONT, dpi=300), wide_chip, 'nw300') _compare_reference(ChipPrinter(font=DEFAULT_FONT, dpi=300, invert=True), normal_chip, 'in300') _compare_reference(ChipPrinter(font=DEFAULT_FONT, dpi=300, invert=True), wide_chip, 'iw300') _compare_reference(ChipPrinter(font=DEFAULT_FONT, dpi=600), normal_chip, 'nn600') _compare_reference(ChipPrinter(font=DEFAULT_FONT, dpi=600), wide_chip, 'nw600') _compare_reference(ChipPrinter(font=DEFAULT_FONT, dpi=600, invert=True), normal_chip, 'in600') _compare_reference(ChipPrinter(font=DEFAULT_FONT, dpi=600, invert=True), wide_chip, 'iw600')
def test_len_size(): a = chip.Chip('chip', 28) assert len(a) == 28 assert a.size == 28 b = chip.Chip('chip', 14) assert len(b) == 14 assert b.size == 14
def test_kwargs(): a = chip.Chip('chip', 28) assert a.config['rowSpacing'] == 6 assert a.config['pinSpacing'] == 2.54 a = chip.Chip('chip', 28, pinSpacing=1.23, dpi=300, rowSpacing=12) assert a.config['dpi'] == 300 assert a.config['rowSpacing'] == 12 assert a.config['pinSpacing'] == 1.23
def test_bad_set_pins(): a = chip.Chip('chip', 4) assert len(a) == 4 with pytest.raises(ValueError): a.set_pins(None) with pytest.raises(ValueError): a.set_pins(124) with pytest.raises(ValueError): a.set_pins(12.34) with pytest.raises(ValueError): a.set_pins('abc') with pytest.raises(ValueError): a.set_pins({'a': True}) with pytest.raises(chip.ValidationError): a.set_pins([]) with pytest.raises(chip.ValidationError): a.set_pins(['1', '2', '3']) with pytest.raises(chip.ValidationError): a.set_pins(['1', None, '3']) with pytest.raises(chip.ValidationError): a.set_pins(['1', [1, 2], '3']) with pytest.raises(chip.ValidationError): a.set_pins(['1', {}, '3']) with pytest.raises(chip.ValidationError): a.set_pins(['1', {'a': True}, '3'])
def test_new_page(tmpdir): c = chip.Chip('id', 20, rowSpacing=25.4) # Square page p = ChipGridPrinter(page_size=(2.2, 2.2), page_padding=0.1, output=tmpdir) assert p.page_size_pixels == (660, 660) assert p.page_padding_pixels == 30 # Square chip chip_size = p.get_chip_size(c) assert chip_size == (300, 300) assert p.current_page == 1 assert p.page_pos == (0, 0) # Row 0 p.print_to_page(c) assert p.current_page == 1 assert p.page_pos == (330, 0) p.save_page() p.new_page() assert p.current_page == 2 assert p.page_pos == (0, 0) p.print_to_page(c) assert p.current_page == 2 assert p.page_pos == (330, 0) assert tmpdir.join('page1.png').check(file=1) # Page 3 is not complete, need to save manually assert tmpdir.join('page2.png').check(file=0) p.save_page() assert tmpdir.join('page2.png').check(file=1)
def test_library(): def good_library_name(name): a.library = name assert a.library == name.strip() assert a.id == f'{name.strip()}/chip' def bad_library_name(name): with pytest.raises(TypeError): a.library = name with pytest.raises(TypeError): chip.Chip('chip', 4, name) a = chip.Chip('chip', 4) assert a.library == '' assert a.id == 'chip' GOOD_NAMES = ['lib', ' spacelib ', 'space-lib', 'space_lib'] for name in GOOD_NAMES: good_library_name(name) with pytest.raises(TypeError): a.library = 3 with pytest.raises(TypeError): a.library = None with pytest.raises(TypeError): a.library = [1, 2] BAD_NAMES = ['-spaceLib', '-a', 'a/b', r'a\b'] for name in BAD_NAMES: bad_library_name(name)
def test_alias(): a = chip.Chip('chip', 4, 'lib', config_flag='flag') a.name = 'aname' a.description = 'adescription' a.set_pins(['1', '2', '3', '4']) alias = a.create_alias('alias') assert alias.id == 'lib/alias' assert alias.name == 'aname' assert alias.description == 'adescription' assert alias[1] == '1' assert alias[4] == '4' alias.name = 'newname' assert alias.name == 'newname' assert a.name == 'aname' alias.description = 'newdesc' assert alias.description == 'newdesc' assert a.description == 'adescription' # This is a shallow copy so pins and config are shared a[1] = 'newpin1' assert a[1] == 'newpin1' assert alias[1] == 'newpin1' assert a.config['config_flag'] == 'flag' assert alias.config['config_flag'] == 'flag' alias.config['config_flag'] = 'newflag' assert a.config['config_flag'] == 'newflag'
def test_display_name(): a = chip.Chip('chip', 4, 'lib') assert a.display_name == 'chip' assert a.name == '' a.name = 'myname' assert a.display_name == 'myname' a.name = '' assert a.display_name == 'chip'
def test_full_name(): a = chip.Chip('chip', 4, 'lib') assert a.description == '' assert a.full_name == 'chip' a.description = 'desc' assert a.full_name == 'chip desc' a.description = ' ' assert a.full_name == 'chip'
def test_getsetitem(): a = chip.Chip('Chip', 8) assert a[1] == 'NC' assert a[8] == 'NC' a[1] = 'PIN1' a[8] = 'PIN8' assert a[1] == 'PIN1' assert a[8] == 'PIN8'
def test_iter(): a = chip.Chip('chip', 4) chip_iter = iter(a) assert chip_iter != None assert next(chip_iter) == 'NC' assert next(chip_iter) == 'NC' assert next(chip_iter) == 'NC' assert next(chip_iter) == 'NC' with pytest.raises(StopIteration): next(chip_iter)
def test_get_chip_size(): narrow_chip = chip.Chip('narrow', 8, rowSpacing=6) wide_chip = chip.Chip('wide', 8, rowSpacing=12) weird_chip = chip.Chip('weird', 8, pinSpacing=5.08, rowSpacing=12) p = ChipPrinter(dpi=100) assert p.get_chip_size(narrow_chip) == (24, 40) assert p.get_chip_size(wide_chip) == (48, 40) assert p.get_chip_size(weird_chip) == (48, 80) p = ChipPrinter(dpi=200) assert p.get_chip_size(narrow_chip) == (48, 80) assert p.get_chip_size(wide_chip) == (95, 80) assert p.get_chip_size(weird_chip) == (95, 160) p = ChipPrinter(dpi=1000) assert p.get_chip_size(narrow_chip) == (237, 400) assert p.get_chip_size(wide_chip) == (473, 400) assert p.get_chip_size(weird_chip) == (473, 800)
def test_print_ASCII(capsys): a = chip.Chip('chip', 4) a.description = 'desc' a.set_pins(['P1', 'P2', 3, 'P4']) a.print_ASCII() captured = capsys.readouterr() assert 'chip' in captured.out assert 'desc' in captured.out assert '1 | P1' in captured.out assert '2 | P2' in captured.out assert '3 | 3' in captured.out assert 'P4 | 4' in captured.out
def _crop(printer, tmpdir, expected_size): c = chip.Chip('id', 20, rowSpacing=25.4) # Square chip chip_size = printer.get_chip_size(c) assert chip_size == (300, 300) printer.print_chips([c]) assert tmpdir.join('page1.png').check(file=1) image = Image.open(str(tmpdir.join('page1.png'))) assert (image) assert image.size == expected_size
def test_name(): a = chip.Chip('chip', 4, 'lib') assert a.name == '' a.name = 'name' assert a.name == 'name' a.name = ' spacename ' assert a.name == 'spacename' with pytest.raises(TypeError): a.name = 3 with pytest.raises(TypeError): a.name = None with pytest.raises(TypeError): a.name = [1, 2]
def test_description(): a = chip.Chip('chip', 4, 'lib') assert a.description == '' a.description = 'name' assert a.description == 'name' a.description = ' space description ' assert a.description == 'space description' with pytest.raises(TypeError): a.description = 3 with pytest.raises(TypeError): a.description = None with pytest.raises(TypeError): a.description = [1, 2]
def test_good_set_pins(): a = chip.Chip('chip', 4) assert len(a) == 4 a.set_pins(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']) assert len(a) == 8 assert a[1] == 'a' assert a[8] == 'h' a.set_pins(['1', '2', '3', '4']) assert len(a) == 4 assert a[1] == '1' assert a[4] == '4' a.set_pins(['1', 2, '3', 4]) assert len(a) == 4 assert a[1] == '1' assert a[4] == '4'
def test_print_chip_to_file(tmpdir): c = chip.Chip('normal', 8) p = ChipPrinter() with pytest.raises(AttributeError): p.print_chip_to_file(None, 'out.png') with pytest.raises(ValueError): p.print_chip_to_file(c, None) with pytest.raises(ValueError): p.print_chip_to_file(c, '') p = ChipPrinter(font=DEFAULT_FONT, dpi=300) _save_to_file(tmpdir, p, c, 300, 'png') _save_to_file(tmpdir, p, c, 300, 'jpg') p = ChipPrinter(font=DEFAULT_FONT, dpi=600) _save_to_file(tmpdir, p, c, 600, 'png') _save_to_file(tmpdir, p, c, 600, 'jpg')
def test_bad_setitem(): a = chip.Chip('Chip', 8) with pytest.raises(IndexError): a[0] = "ERROR" with pytest.raises(IndexError): a[-1] = "ERROR" with pytest.raises(ValueError): a[1] = [1, 2, 3] with pytest.raises(ValueError): a[1] = {'a': 123} with pytest.raises(ValueError): a[1] = None with pytest.raises(IndexError): pin = a[0] with pytest.raises(IndexError): pin = a[-1] with pytest.raises(IndexError): pin = a[29]
def test_print_chips(tmpdir): c = chip.Chip('id', 20, rowSpacing=25.4) # Square page p = ChipGridPrinter(page_size=(2.2, 2.2), page_padding=0.1, output=tmpdir) assert p.page_size_pixels == (660, 660) assert p.page_padding_pixels == 30 # Square chip chip_size = p.get_chip_size(c) assert chip_size == (300, 300) assert p.current_page == 1 assert p.page_pos == (0, 0) p.print_chips([c] * 15) assert p.current_page == 4 assert p.page_pos == (330, 330) assert tmpdir.join('page1.png').check(file=1) assert tmpdir.join('page2.png').check(file=1) assert tmpdir.join('page3.png').check(file=1) assert tmpdir.join('page4.png').check(file=1)
def test_id(): a = chip.Chip('chip', 4, 'lib') assert a.id == 'lib/chip' a.library = '' assert a.id == 'chip'
def test_repr(): a = chip.Chip('chip', 4) assert a.__repr__() == 'chip.Chip(chip, 4)' a = chip.Chip('chip', 4, 'lib') assert a.__repr__() == 'chip.Chip(lib/chip, 4)'
def test_str(): a = chip.Chip('chip', 4) assert a.__str__() == 'chip(4)' a = chip.Chip('chip', 4, 'lib') assert a.__str__() == 'lib/chip(4)'
def _create_good(id, pins=4): a = chip.Chip(id, pins, library='') assert a.id == id return a
def test_output_dir(): c = chip.Chip('id', 20) p = ChipGridPrinter(output='bad/dir') with pytest.raises(ValueError): p.save_page()
def _create_bad(id, pins=4): with pytest.raises(chip.ValidationError): chip.Chip(id, pins, library='')
def bad_library_name(name): with pytest.raises(TypeError): a.library = name with pytest.raises(TypeError): chip.Chip('chip', 4, name)
def test_unscoped_id(): a = chip.Chip('chip', 4, 'lib') assert a.unscoped_id == 'chip' a.library = '' assert a.unscoped_id == 'chip'