| | |
| | """ |
| | Test script for the demo functionality |
| | """ |
| |
|
| | from demo_page import initialize_models, detect_with_all_models, create_results_dataframe, run_demo_tests, DEMO_SAMPLES |
| |
|
| | def test_model_initialization(): |
| | """Test that all models can be initialized.""" |
| | print("π Testing model initialization...") |
| | models = initialize_models() |
| | |
| | print(f"β
Initialized {len(models)} models:") |
| | for model_key, model_info in models.items(): |
| | status_icon = "β
" if model_info["status"] == "Ready" else "β" |
| | print(f" {status_icon} {model_info['name']}: {model_info['status']}") |
| | |
| | return models |
| |
|
| | def test_single_detection(): |
| | """Test detection with a single text across all models.""" |
| | print("\nπ Testing single text detection...") |
| | |
| | models = initialize_models() |
| | test_text = "Hello, how are you today?" |
| | |
| | results = detect_with_all_models(test_text, models) |
| | |
| | print(f"Text: '{test_text}'") |
| | print("Results:") |
| | for model_key, result in results.items(): |
| | print(f" {model_key}: {result['language_code']} ({result['confidence']:.3f}) - {result['status']}") |
| | |
| | return results |
| |
|
| | def test_category_samples(): |
| | """Test a few samples from each category.""" |
| | print("\nπ Testing category samples...") |
| | |
| | models = initialize_models() |
| | |
| | for category, samples in DEMO_SAMPLES.items(): |
| | print(f"\nπ Category: {category}") |
| | |
| | text, expected, description = samples[0] |
| | results = detect_with_all_models(text, models) |
| | |
| | print(f" Text: '{text}' (Expected: {expected})") |
| | print(f" Description: {description}") |
| | for model_key, result in results.items(): |
| | match_icon = "β
" if result['language_code'] == expected or expected in ['ambiguous', 'mix', 'transliteration'] else "β" |
| | print(f" {model_key}: {result['language_code']} ({result['confidence']:.3f}) {match_icon}") |
| |
|
| | def test_dataframe_creation(): |
| | """Test DataFrame creation with sample data.""" |
| | print("\nπ Testing DataFrame creation...") |
| | |
| | models = initialize_models() |
| | |
| | |
| | test_texts = [ |
| | "Hello world", |
| | "Bonjour le monde", |
| | "Hola mundo" |
| | ] |
| | expected_langs = ["en", "fr", "es"] |
| | categories = ["Custom", "Custom", "Custom"] |
| | |
| | all_results = [] |
| | for text in test_texts: |
| | results = detect_with_all_models(text, models) |
| | all_results.append(results) |
| | |
| | df = create_results_dataframe(test_texts, all_results, expected_langs, categories) |
| | |
| | print("DataFrame shape:", df.shape) |
| | print("Columns:", list(df.columns)) |
| | print("\nFirst few rows:") |
| | print(df.head()) |
| | |
| | return df |
| |
|
| | def test_demo_workflow(): |
| | """Test the complete demo workflow.""" |
| | print("\nπ Testing complete demo workflow...") |
| | |
| | models = initialize_models() |
| | |
| | |
| | selected_categories = ["Easy/Obvious", "Short Text"] |
| | custom_texts = "Hello world\nBonjour\nδ½ ε₯½" |
| | |
| | summary, df = run_demo_tests(selected_categories, custom_texts, models) |
| | |
| | print(f"Summary: {summary}") |
| | if df is not None: |
| | print(f"Results DataFrame shape: {df.shape}") |
| | print("Sample results:") |
| | print(df.head()) |
| | else: |
| | print("β No DataFrame returned") |
| | |
| | return summary, df |
| |
|
| | def main(): |
| | """Run all tests.""" |
| | print("π Starting demo functionality tests...\n") |
| | |
| | try: |
| | |
| | models = test_model_initialization() |
| | |
| | |
| | single_results = test_single_detection() |
| | |
| | |
| | test_category_samples() |
| | |
| | |
| | df = test_dataframe_creation() |
| | |
| | |
| | summary, demo_df = test_demo_workflow() |
| | |
| | print("\nβ
All tests completed successfully!") |
| | print(f"π Total categories available: {len(DEMO_SAMPLES)}") |
| | print(f"π Total sample texts: {sum(len(samples) for samples in DEMO_SAMPLES.values())}") |
| | |
| | except Exception as e: |
| | print(f"\nβ Test failed with error: {e}") |
| | import traceback |
| | traceback.print_exc() |
| |
|
| | if __name__ == "__main__": |
| | main() |