#!/usr/bin/env python3 """Basic tests for selectui functionality.""" from thefuzz import fuzz from selectui import SelectUI def test_filtering_logic(): """Test the filtering logic.""" items = [ {"title": "Python Developer", "subtitle": "Backend"}, {"title": "Frontend Engineer", "subtitle": "React"}, {"title": "DevOps Engineer", "subtitle": "AWS"}, ] # Test exact search (case insensitive) query = "python" filtered = [] for item in items: title = item.get('title', '').lower() subtitle = item.get('subtitle', '').lower() if query in title or query in subtitle: filtered.append(item) assert len(filtered) == 1 assert filtered[0]["title"] == "Python Developer" print("✓ Basic filtering logic passed") def test_fuzzy_search_logic(): """Test fuzzy search logic.""" items = [ {"title": "Python Developer", "subtitle": "Backend"}, {"title": "Frontend Engineer", "subtitle": "React"}, ] # Fuzzy match with typo query = "Pythn" filtered = [] for item in items: title = item.get('title', '') subtitle = item.get('subtitle', '') title_score = fuzz.partial_ratio(query, title) subtitle_score = fuzz.partial_ratio(query, subtitle) if title_score > 60 or subtitle_score > 60: filtered.append(item) assert len(filtered) == 1 assert filtered[0]["title"] == "Python Developer" print("✓ Fuzzy search logic passed") def test_ui_initialization(): """Test UI can be initialized.""" items = [ {"title": "Item 1", "subtitle": "Sub 1"}, {"title": "Item 2", "subtitle": "Sub 2"}, ] ui = SelectUI(items) assert ui.items == items assert ui.filtered_items == items assert not ui.fuzzy_search assert not ui.case_sensitive print("✓ UI initialization passed") def test_ui_initialization_empty(): """Test UI can be initialized with empty items (for async loading).""" ui = SelectUI() assert ui.items == [] assert ui.filtered_items == [] assert not ui.fuzzy_search assert not ui.case_sensitive assert ui.stdin_fd is None assert not ui._stream_complete print("✓ UI empty initialization passed") if __name__ == "__main__": test_filtering_logic() test_fuzzy_search_logic() test_ui_initialization() test_ui_initialization_empty() print("\n✅ All tests passed!")