#!/usr/bin/env python3 """ Test for saving and loading settings Run with: mpremote run test/test_save_load.py """ import json import os from settings import Settings from patterns import Patterns def test_save_load(): """Test saving and loading settings""" print("Testing save and load functionality...") # Test 1: Save settings print("\nTest 1: Save settings") settings1 = Settings() # Modify some settings original_num_leds = settings1.get("num_leds", 50) original_pattern = settings1.get("pattern", "off") original_brightness = settings1.get("brightness", 127) settings1["num_leds"] = 100 settings1["pattern"] = "rainbow" settings1["brightness"] = 200 settings1["delay"] = 150 settings1["color1"] = "#ff0000" settings1["color2"] = "#00ff00" print(f"Original num_leds: {original_num_leds}") print(f"Setting num_leds to: {settings1['num_leds']}") print(f"Setting pattern to: {settings1['pattern']}") print(f"Setting brightness to: {settings1['brightness']}") # Save settings settings1.save() print("Settings saved") # Test 2: Load settings print("\nTest 2: Load settings") settings2 = Settings() # Verify loaded values print(f"Loaded num_leds: {settings2['num_leds']}") print(f"Loaded pattern: {settings2['pattern']}") print(f"Loaded brightness: {settings2['brightness']}") print(f"Loaded delay: {settings2.get('delay', 'not set')}") print(f"Loaded color1: {settings2.get('color1', 'not set')}") print(f"Loaded color2: {settings2.get('color2', 'not set')}") # Verify values match if settings2["num_leds"] == 100: print("✓ num_leds saved and loaded correctly") else: print(f"✗ num_leds mismatch! Expected 100, got {settings2['num_leds']}") if settings2["pattern"] == "rainbow": print("✓ pattern saved and loaded correctly") else: print(f"✗ pattern mismatch! Expected 'rainbow', got '{settings2['pattern']}'") if settings2["brightness"] == 200: print("✓ brightness saved and loaded correctly") else: print(f"✗ brightness mismatch! Expected 200, got {settings2['brightness']}") # Test 3: Test with patterns print("\nTest 3: Test pattern persistence") pin = settings2.get("led_pin", 10) num_leds = settings2["num_leds"] patterns = Patterns(pin=pin, num_leds=num_leds, selected=settings2["pattern"]) patterns.set_brightness(settings2["brightness"]) patterns.set_delay(settings2["delay"]) print(f"Pattern selected: {patterns.selected}") print(f"Pattern brightness: {patterns.brightness}") print(f"Pattern delay: {patterns.delay}") if patterns.selected == settings2["pattern"]: print("✓ Pattern selection persisted") else: print(f"✗ Pattern mismatch! Expected '{settings2['pattern']}', got '{patterns.selected}'") # Test 4: Restore original settings print("\nTest 4: Restore original settings") settings3 = Settings() settings3["num_leds"] = original_num_leds settings3["pattern"] = original_pattern settings3["brightness"] = original_brightness settings3.save() print(f"Restored num_leds to: {original_num_leds}") print(f"Restored pattern to: {original_pattern}") print(f"Restored brightness to: {original_brightness}") # Verify restoration settings4 = Settings() if settings4["num_leds"] == original_num_leds: print("✓ Settings restored correctly") else: print(f"✗ Restoration failed! Expected {original_num_leds}, got {settings4['num_leds']}") print("\n=== Save/Load test complete ===") if __name__ == "__main__": test_save_load()