#!/usr/bin/env python3 """ Test the new professional multi-filter NLP engine Run: python test_nlp_engine.py """ import sys sys.path.insert(0, '/c/Users/barat/OneDrive/Desktop/model/plate-detector') from database import FilterExtractor, ask_llm def test_filter_extraction(): """Test filter extraction from various queries""" extractor = FilterExtractor() test_cases = [ { "query": "show TN buses in adyar on monday", "expected": { "state": "TN", "vehicle_type": "bus", "location": "adyar", "day": "Monday" } }, { "query": "track TN63MB3157 in guindy", "expected": { "plate": "TN63MB3157", "location": "guindy" } }, { "query": "show bikes on weekend", "expected": { "vehicle_type": "bike", "day": ["Saturday", "Sunday"] } }, { "query": "count TN trucks in velachery on 2026-05-04", "expected": { "state": "TN", "vehicle_type": "truck", "location": "velachery", "date": "2026-05-04" } }, { "query": "buses on friday", "expected": { "vehicle_type": "bus", "day": "Friday" } } ] print("\n" + "="*60) print("FILTER EXTRACTION TESTS") print("="*60) for i, test in enumerate(test_cases, 1): query = test["query"] expected = test["expected"] filters = extractor.extract_filters(query) print(f"\nโœ“ Test {i}: {query}") print(f" Extracted: {filters}") # Check key filters for key, value in expected.items(): if filters.get(key) == value: print(f" โœ… {key}: {value}") else: print(f" โŒ {key}: expected {value}, got {filters.get(key)}") def test_sql_generation(): """Test SQL generation from various queries""" print("\n" + "="*60) print("SQL GENERATION TESTS") print("="*60) test_queries = [ "show TN buses in adyar on monday", "track TN63MB3157 in adyar", "count bikes in velachery", "show trucks in guindy on 2026-05-04", "buses on friday", "show vehicles on weekend", "top vehicles", "hourly traffic", ] for query in test_queries: print(f"\n๐Ÿ“ Query: {query}") sql = ask_llm(query) print(f"๐Ÿ“‹ SQL:\n{sql}") # Validate if "SELECT" in sql and "vehicle_logs" in sql: print("โœ… Valid SQL generated") else: print("โŒ Invalid SQL!") if __name__ == "__main__": try: print("\n๐Ÿงช TESTING PROFESSIONAL MULTI-FILTER NLP ENGINE\n") test_filter_extraction() test_sql_generation() print("\n" + "="*60) print("โœ… ALL TESTS COMPLETED") print("="*60 + "\n") except Exception as e: print(f"\nโŒ Test failed: {e}") import traceback traceback.print_exc()