Files
homecontrol.esp-sensors/tests/test_oled_display.py

107 lines
3.5 KiB
Python

"""
Tests for the OLED display module.
"""
import pytest
from src.esp_sensors.oled_display import OLEDDisplay
def test_oled_display_initialization():
"""Test that an OLED display can be initialized with valid parameters."""
display = OLEDDisplay("test_display", scl_pin=22, sda_pin=21)
assert display.name == "test_display"
assert display.scl_pin == 22
assert display.sda_pin == 21
assert display.pin == 21 # pin in base class is set to sda_pin
assert display.width == 128
assert display.height == 64
assert display.address == 0x3C
assert display.interval == 60
assert display._values == []
def test_oled_display_custom_parameters():
"""Test that an OLED display can be initialized with custom parameters."""
display = OLEDDisplay(
"custom_display",
scl_pin=22,
sda_pin=21,
width=64,
height=32,
address=0x3D,
interval=30
)
assert display.name == "custom_display"
assert display.scl_pin == 22
assert display.sda_pin == 21
assert display.width == 64
assert display.height == 32
assert display.address == 0x3D
assert display.interval == 30
def test_oled_display_read():
"""Test that reading from the display returns a success value."""
display = OLEDDisplay("test_display", scl_pin=22, sda_pin=21)
reading = display.read()
assert reading == 1.0
def test_oled_display_metadata():
"""Test that metadata includes the display parameters."""
display = OLEDDisplay("test_display", scl_pin=22, sda_pin=21)
metadata = display.get_metadata()
assert metadata["name"] == "test_display"
assert metadata["pin"] == 21
assert metadata["scl_pin"] == 22
assert metadata["sda_pin"] == 21
assert metadata["width"] == 128
assert metadata["height"] == 64
assert metadata["address"] == 0x3C
assert metadata["interval"] == 60
assert metadata["type"] == "SSD1306"
assert metadata["values_count"] == 0
def test_oled_display_values():
"""Test that display values are stored correctly."""
display = OLEDDisplay("test_display", scl_pin=22, sda_pin=21)
# Test with empty values
assert display._values == []
# Test with string values
test_values = ["Temperature: 25.0°C", "Humidity: 45.0%"]
display.display_values(test_values)
assert display._values == test_values
# Check that metadata reflects the number of values
metadata = display.get_metadata()
assert metadata["values_count"] == 2
def test_oled_display_clear():
"""Test that clearing the display works in simulation mode."""
display = OLEDDisplay("test_display", scl_pin=22, sda_pin=21)
# This is mostly a coverage test since we can't check the actual display in tests
display.clear()
# Verify that clearing doesn't affect stored values
test_values = ["Temperature: 25.0°C"]
display.display_values(test_values)
display.clear()
assert display._values == test_values
def test_oled_display_text():
"""Test that displaying text works in simulation mode."""
display = OLEDDisplay("test_display", scl_pin=22, sda_pin=21)
# This is mostly a coverage test since we can't check the actual display in tests
display.display_text("Hello, World!")
# Verify that displaying text doesn't affect stored values
test_values = ["Temperature: 25.0°C"]
display.display_values(test_values)
display.display_text("Hello, World!")
assert display._values == test_values