"""Tests for components and standard library.""" import uframe def test_inline_component(): source = '''page "Test" 50 component greeting(name) heading 1 "Hello $name" text "Welcome, $name!" greeting "Alice" greeting "Bob"''' result = uframe.compile(source) assert "Hello Alice" in result.ascii assert "Welcome, Alice!" in result.ascii assert "Hello Bob" in result.ascii assert "Welcome, Bob!" in result.ascii def test_component_with_gauge(): source = '''page "Test" 50 component stat(label, value, max) gauge "$label" $value $max 20 stat "CPU" 62 100 stat "MEM" 84 100''' result = uframe.compile(source) assert "CPU" in result.ascii assert "MEM" in result.ascii assert "█" in result.ascii def test_use_std_dashboard(): source = '''page "Test" 60 use std/dashboard banner "My Node" "Mesh Network"''' result = uframe.compile(source) assert "My Node" in result.ascii assert "Mesh Network" in result.ascii assert "╔" in result.ascii # double box from banner def test_use_std_dashboard_resources(): source = '''page "Test" 60 use std/dashboard resources 42 67''' result = uframe.compile(source) assert "CPU" in result.ascii assert "MEM" in result.ascii assert "Resources" in result.ascii def test_use_std_nav(): source = '''page "Test" 50 use std/nav nav_link "Home" "/page/index.mu" nav_divider nav_link "About" "/page/about.mu"''' result = uframe.compile(source) assert "Home" in result.ascii assert "About" in result.ascii def test_use_std_status_bar(): source = '''page "Test" 60 use std/status-bar status_bar "Uptime" 95 100''' result = uframe.compile(source) assert "Uptime" in result.ascii assert "█" in result.ascii def test_use_std_status_bar_item(): source = '''page "Test" 60 use std/status-bar status_item "Gateway" online''' result = uframe.compile(source) assert "Gateway" in result.ascii assert "●" in result.ascii def test_use_std_status_bar_row(): source = '''page "Test" 60 use std/status-bar status_row "East" online "West" offline''' result = uframe.compile(source) assert "East" in result.ascii assert "West" in result.ascii def test_use_std_network_peer_list(): source = '''page "Test" 60 use std/network peer_list "Active Peers"''' result = uframe.compile(source) assert "Active Peers" in result.ascii def test_use_std_form_search(): source = '''page "Test" 60 use std/form search_form "search" "/page/results.mu"''' result = uframe.compile(source) assert "Search" in result.ascii assert "results.mu" in result.micron def test_use_std_form_login(): source = '''page "Test" 60 use std/form login_form "/page/auth.mu"''' result = uframe.compile(source) assert "Login" in result.ascii assert "auth.mu" in result.micron def test_unknown_component_ignored(): source = '''page "Test" 50 heading 1 "Hello" nonexistent_thing "arg"''' result = uframe.compile(source) assert "Hello" in result.ascii