File size: 2,714 Bytes
1bb4678
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# Path: QAgents-workflos/tests/quick_mode_test.py
# Description: Quick test of all modes on one HARD problem
"""
Quick Mode Test: Test all 4 modes on 1 problem each difficulty
Designed to be fast by testing only essential combinations.
"""

import sys
import os
import warnings
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

# Suppress warnings
warnings.filterwarnings("ignore", message=".*non-text parts.*")
warnings.filterwarnings("ignore", message=".*GOOGLE_API_KEY.*")

import time
from orchestrators import create_orchestrator
from tests.test_problems import get_problems_by_difficulty, ProblemDifficulty

def test_mode(mode, problem):
    """Test a single mode on a problem."""
    try:
        orch = create_orchestrator(mode)
        start = time.perf_counter()
        result = orch.run(problem.prompt)
        elapsed = (time.perf_counter() - start) * 1000
        
        gates = 0
        if result.final_output:
            gates = len([l for l in result.final_output.split('\n') 
                        if l.strip() and not l.startswith(('OPENQASM', 'include', 'qreg', 'creg', 'measure', '//'))])
        
        return result.success, elapsed, gates, None
    except Exception as e:
        return False, 0, 0, str(e)[:50]

def main():
    print("=" * 60)
    print("QUICK MODE TEST: All 4 modes on HARD problem")
    print("=" * 60)
    
    # Get one VERY_HARD problem - this will show where modes struggle
    very_hard_problems = get_problems_by_difficulty(ProblemDifficulty.VERY_HARD)
    problem = very_hard_problems[0]  # 4-Qubit QFT
    
    print(f"\nProblem: {problem.name}")
    print(f"Difficulty: VERY_HARD")
    print(f"Description: {problem.prompt[:80]}...")
    print("-" * 60)
    
    modes = ["naked", "quasar", "hybrid", "blackboard"]
    results = []
    
    for mode in modes:
        print(f"\nTesting {mode}...", end=" ", flush=True)
        ok, ms, gates, error = test_mode(mode, problem)
        
        if ok:
            print(f"✅ {ms:.0f}ms, {gates} gates")
            results.append((mode, True, ms, gates))
        elif error:
            print(f"❌ Error: {error}")
            results.append((mode, False, 0, 0))
        else:
            print(f"❌ Failed ({ms:.0f}ms)")
            results.append((mode, False, ms, gates))
    
    print("\n" + "=" * 60)
    print("RESULTS SUMMARY")
    print("=" * 60)
    
    for mode, ok, ms, gates in results:
        status = "✅ PASS" if ok else "❌ FAIL"
        print(f"  {mode:12}: {status:10} {ms:6.0f}ms  {gates:2} gates")
    
    passed = sum(1 for r in results if r[1])
    print(f"\nTotal: {passed}/{len(results)} modes passed")

if __name__ == "__main__":
    main()