def test_init():
    c = ChipGridPrinter()
    assert c.config['dpi'] == 300
    assert c.config['invert'] == False
    assert c.config['font'] == ''
    assert c.font
    assert c.dpi == 300
    assert c.page_padding == 0.1
    assert c.page_padding_pixels == 30
    assert c.page_size == (1, 1)
    assert c.page_size_pixels == (300, 300)

    c = ChipGridPrinter(invert=True,
                        foo='bar',
                        dpi=600,
                        page_size=(4, 4),
                        page_padding=0.2)
    assert c.config['invert'] == True
    assert c.config['foo'] == 'bar'
    assert c.font
    assert c.dpi == 600
    assert c.page_padding == 0.2
    assert c.page_padding_pixels == 120
    assert c.page_size == (4, 4)
    assert c.page_size_pixels == (2400, 2400)
def test_nocrop(tmpdir):
    # Square page
    p = ChipGridPrinter(page_size=(2, 2),
                        page_padding=0.1,
                        output=tmpdir,
                        page_nocrop=True)
    assert p.page_size_pixels == (600, 600)
    assert p.page_padding_pixels == 30
    _crop(p, tmpdir, (600, 600))
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_print_to_page2(tmpdir):
    c = chip.Chip('id', 20, rowSpacing=25.4)

    # Square page
    p = ChipGridPrinter(page_size=(2, 2), page_padding=0.1, output=tmpdir)
    assert p.page_size_pixels == (600, 600)
    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)

    # Page 2
    p.print_to_page(c)
    assert p.current_page == 2
    assert p.page_pos == (330, 0)

    # Page 3
    p.print_to_page(c)
    assert p.current_page == 3
    assert p.page_pos == (330, 0)

    assert tmpdir.join('page1.png').check(file=1)
    assert tmpdir.join('page2.png').check(file=1)
    # Page 3 is not complete, need to save manually
    assert tmpdir.join('page3.png').check(file=0)
    p.save_page()
    assert tmpdir.join('page3.png').check(file=1)
def test_output_dir():
    c = chip.Chip('id', 20)
    p = ChipGridPrinter(output='bad/dir')
    with pytest.raises(ValueError):
        p.save_page()