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')
Example #2
0
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
Example #3
0
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
Example #4
0
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)
Example #6
0
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)
Example #7
0
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'
Example #8
0
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'
Example #9
0
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'
Example #10
0
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'
Example #11
0
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)
Example #13
0
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
Example #15
0
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]
Example #16
0
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]
Example #17
0
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')
Example #19
0
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)
Example #21
0
def test_id():
    a = chip.Chip('chip', 4, 'lib')
    assert a.id == 'lib/chip'
    a.library = ''
    assert a.id == 'chip'
Example #22
0
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)'
Example #23
0
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)'
Example #24
0
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()
Example #26
0
def _create_bad(id, pins=4):
    with pytest.raises(chip.ValidationError):
        chip.Chip(id, pins, library='')
Example #27
0
 def bad_library_name(name):
     with pytest.raises(TypeError):
         a.library = name
     with pytest.raises(TypeError):
         chip.Chip('chip', 4, name)
Example #28
0
def test_unscoped_id():
    a = chip.Chip('chip', 4, 'lib')
    assert a.unscoped_id == 'chip'
    a.library = ''
    assert a.unscoped_id == 'chip'