123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- # Copyright (c) 2017-18 Richard Hull and contributors
- # See LICENSE.rst for details.
- import pytest
- from PIL import Image
- from luma.led_matrix.device import neosegment
- from luma.core.device import dummy
- from luma.core.render import canvas
- import luma.core.error
- from helpers import assert_identical_image, get_reference_image
- def test_invalid_dimensions():
- with pytest.raises(luma.core.error.DeviceDisplayModeError) as ex:
- neosegment(width=3, device=dummy(width=6, height=7))
- assert "Unsupported display mode: width=3" in str(ex.value)
- def test_overflow():
- with pytest.raises(OverflowError) as ex:
- neoseg = neosegment(width=6, device=dummy(width=6, height=7))
- neoseg.text = "TooBig!"
- assert "Device's capabilities insufficient for value 'TooBig!'" in str(ex.value)
- def test_settext_nocolor():
- neoseg = neosegment(width=6, device=dummy(width=6, height=7))
- neoseg.text = "888888"
- ref = dummy(width=6, height=7)
- with canvas(ref) as draw:
- draw.rectangle(ref.bounding_box, fill="white")
- assert_identical_image(ref.image, neoseg.device.image)
- def test_settext_singlecolor():
- neoseg = neosegment(width=6, device=dummy(width=6, height=7))
- neoseg.text = "888888"
- neoseg.color = "red"
- ref = dummy(width=6, height=7)
- with canvas(ref) as draw:
- draw.rectangle(ref.bounding_box, fill="red")
- assert_identical_image(ref.image, neoseg.device.image)
- def test_settext_charcolor():
- neoseg = neosegment(width=6, device=dummy(width=6, height=7))
- neoseg.text = "888888"
- neoseg.color[2] = "green"
- ref = dummy(width=6, height=7)
- with canvas(ref) as draw:
- draw.rectangle(ref.bounding_box, fill="white")
- draw.rectangle([2, 0, 2, 6], fill="green")
- assert_identical_image(ref.image, neoseg.device.image)
- def test_settext_replacechars():
- neoseg = neosegment(width=6, device=dummy(width=6, height=7))
- neoseg.text = "888888"
- neoseg.text[2:4] = " "
- ref = dummy(width=6, height=7)
- with canvas(ref) as draw:
- draw.rectangle(ref.bounding_box, fill="white")
- draw.rectangle([2, 0, 3, 6], fill="black")
- assert_identical_image(ref.image, neoseg.device.image)
- def test_segment_mapper():
- img_path = get_reference_image('neosegment.png')
- with open(img_path, 'rb') as img:
- reference = Image.open(img)
- neoseg = neosegment(width=6, device=dummy(width=6, height=7))
- neoseg.color = ["red", "green", "blue", "yellow", "cyan", "magenta"]
- neoseg.text = "012345"
- assert_identical_image(reference, neoseg.device.image)
- def test_unknown_char():
- neoseg = neosegment(width=6, device=dummy(width=6, height=7))
- neoseg.text = "888888"
- neoseg.text[2:4] = "&\x7f"
- neoseg.color[2:4] = ["orange", "orange"]
- ref = dummy(width=6, height=7)
- with canvas(ref) as draw:
- draw.rectangle(ref.bounding_box, fill="white")
- draw.rectangle([2, 0, 3, 6], fill="black")
- draw.rectangle([2, 1, 3, 1], fill="orange")
- assert_identical_image(ref.image, neoseg.device.image)
|