Files
blackroad-operating-system/core_os/tests/test_state.py
2025-11-17 22:22:26 -06:00

95 lines
2.1 KiB
Python

"""Tests for OS state management"""
from core_os.state import (
get_initial_state,
get_current_state,
open_window,
close_window,
minimize_window,
maximize_window,
set_active_window,
reset_state,
)
from core_os.models import WindowState
def test_get_initial_state():
"""Test getting initial OS state"""
reset_state() # Reset to clean state
state = get_initial_state()
assert state is not None
assert state.session is not None
assert len(state.desktop_items) > 0
assert len(state.taskbar_items) > 0
def test_open_window():
"""Test opening a new window"""
reset_state()
initial_count = len(get_current_state().windows)
state = open_window("notepad", "Notepad")
assert len(state.windows) == initial_count + 1
assert state.windows[-1].app_id == "notepad"
assert state.windows[-1].title == "Notepad"
assert state.active_window_id == state.windows[-1].id
def test_close_window():
"""Test closing a window"""
reset_state()
# Open a window first
state = open_window("test-app")
window_id = state.windows[0].id
initial_count = len(state.windows)
# Close it
state = close_window(window_id)
assert len(state.windows) == initial_count - 1
def test_minimize_window():
"""Test minimizing a window"""
reset_state()
# Open and minimize
state = open_window("test-app")
window_id = state.windows[0].id
state = minimize_window(window_id)
assert state.windows[0].state == WindowState.MINIMIZED
def test_maximize_window():
"""Test maximizing a window"""
reset_state()
# Open and maximize
state = open_window("test-app")
window_id = state.windows[0].id
state = maximize_window(window_id)
assert state.windows[0].state == WindowState.MAXIMIZED
def test_set_active_window():
"""Test setting active window"""
reset_state()
# Open two windows
open_window("app1")
open_window("app2")
state = get_current_state()
first_window_id = state.windows[0].id
# Set first window as active
state = set_active_window(first_window_id)
assert state.active_window_id == first_window_id