From 1281d0e298d5b68f55e5c290e145ec0255552d7a Mon Sep 17 00:00:00 2001 From: hcpl Date: Sat, 29 Oct 2016 18:41:05 +0300 Subject: [PATCH] Backlight: add tests --- tests/test_backlight.py | 82 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 tests/test_backlight.py diff --git a/tests/test_backlight.py b/tests/test_backlight.py new file mode 100644 index 0000000..bee2b8c --- /dev/null +++ b/tests/test_backlight.py @@ -0,0 +1,82 @@ +import i3pystatus.backlight as backlight + +import os +import pytest + +from contextlib import contextmanager +from operator import itemgetter +from tempfile import TemporaryDirectory + + +@contextmanager +def setattr_temporarily(obj, attr, value): + old_value = getattr(obj, attr) + setattr(obj, attr, value) + yield + setattr(obj, attr, old_value) + + +@pytest.mark.parametrize("backlights_data", [ + [], + [("acpi_video0", 0, 255)], + [("acpi_video0", 86, 171)], + [("acpi_video0", 255, 255)], + [("intel_backlight", 0, 7)], + [("intel_backlight", 15, 33)], + [("intel_backlight", 79, 255)], + [("acpi_video0", 0, 50), ("intel_backlight", 44, 60)], + [("acpi_video0", 100, 100), ("intel_backlight", 187, 255)], + [("intel_backlight", 87, 88), ("acpi_video0", 150, 150)], + [("intel_backlight", 237, 237), ("acpi_video0", 1, 2)], +]) +@pytest.mark.parametrize("format", [ + None, "{brightness}/{max_brightness} ({percentage}%)" +]) +@pytest.mark.parametrize("format_no_backlight", [ + None, "({percentage}% -- {brightness}) [{max_brightness}]" +]) +def test_backlight(backlights_data, format, format_no_backlight): + print(backlight.Backlight.base_path) + with TemporaryDirectory() as tmp_dirname: + for (backlight_name, brightness, max_brightness) in backlights_data: + backlight_dirname = tmp_dirname + "/" + backlight_name + os.mkdir(backlight_dirname) + + with open(backlight_dirname + "/brightness", "w") as f: + print(brightness, file=f) + with open(backlight_dirname + "/max_brightness", "w") as f: + print(max_brightness, file=f) + + if not format: + format = backlight.Backlight.format + if not format_no_backlight: + format_no_backlight = backlight.Backlight.format_no_backlight + if not format_no_backlight: + format_no_backlight = format + + with setattr_temporarily(backlight.Backlight, 'base_path', tmp_dirname + "/{backlight}/"): + i3backlight = backlight.Backlight( + format=format, + format_no_backlight=format_no_backlight) + + i3backlight.run() + + if len(backlights_data) == 0: + used_format = format_no_backlight + cdict = { + "brightness": -1, + "max_brightness": -1, + "percentage": -1 + } + else: + backlights_data = sorted(backlights_data, key=itemgetter(0)) + (_, brightness, max_brightness) = backlights_data[0] + + used_format = format + cdict = { + "brightness": brightness, + "max_brightness": max_brightness, + "percentage": round((brightness / max_brightness) * 100) + } + + assert i3backlight.output["full_text"] == used_format.format(**cdict)