"""
IDialogCevirici - Basit Test Script

Bu script sistemi adım adım test eder ve sonuçları gösterir.
"""

import sys
import os

# Encoding sorununu çöz
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')

print("=" * 70)
print("  IDialogCevirici - Basit Test")
print("=" * 70)

# Test 1: Modül import kontrolü
print("\n[1/5] Modül import kontrolleri...")
print("-" * 70)

try:
    import win32com.client
    print("  ✓ win32com.client - OK")
except ImportError as e:
    print(f"  ✗ win32com.client - HATA: {e}")
    print("    Çözüm: pip install pywin32")
    sys.exit(1)

try:
    from PyQt6.QtWidgets import QApplication
    print("  ✓ PyQt6 - OK")
except ImportError as e:
    print(f"  ✗ PyQt6 - HATA: {e}")
    print("    Çözüm: pip install PyQt6")
    sys.exit(1)

try:
    import requests
    print("  ✓ requests - OK")
except ImportError as e:
    print(f"  ✗ requests - HATA (opsiyonel): {e}")
    print("    HTTP client testleri için: pip install requests")

# Test 2: CATIA bağlantısı
print("\n[2/5] CATIA bağlantı kontrolü...")
print("-" * 70)

try:
    catia = win32com.client.Dispatch("Catia.Application")
    print(f"  ✓ CATIA bağlantısı başarılı")
    print(f"    Versiyon: {catia.Caption}")

    # Aktif döküman var mı?
    try:
        doc = catia.ActiveDocument
        print(f"    Aktif Döküman: {doc.Name}")
    except:
        print(f"    ⚠ Uyarı: Aktif döküman yok (normal olabilir)")

    catia_available = True
except Exception as e:
    print(f"  ✗ CATIA bağlantısı kurulamadı: {e}")
    print("    CATIA'nın açık olduğundan emin olun!")
    catia_available = False
    catia = None

# Test 3: IDialogCevirici import
print("\n[3/5] IDialogCevirici modül kontrolü...")
print("-" * 70)

try:
    # Proje yolunu ekle
    current_dir = os.path.dirname(os.path.abspath(__file__))
    dialog_dir = current_dir
    project_root = os.path.dirname(os.path.dirname(current_dir))

    print(f"    Dialog dizini: {dialog_dir}")
    print(f"    Proje kök dizini: {project_root}")

    # Her iki yolu da ekle
    if dialog_dir not in sys.path:
        sys.path.insert(0, dialog_dir)
    if project_root not in sys.path:
        sys.path.insert(0, project_root)

    # Direkt dosyadan import et
    import IDialogCevirici as module
    IDialogCevirici = module.IDialogCevirici
    print("  ✓ IDialogCevirici import edildi")

    dialog_available = True
except Exception as e:
    print(f"  ✗ IDialogCevirici import hatası: {e}")
    import traceback
    traceback.print_exc()
    dialog_available = False

# Test 4: Dialog oluşturma
print("\n[4/5] Dialog oluşturma testi...")
print("-" * 70)

if not catia_available:
    print("  ⊘ CATIA olmadan test yapılamıyor")
    dialog = None
elif not dialog_available:
    print("  ⊘ IDialogCevirici import edilemediği için test yapılamıyor")
    dialog = None
else:
    try:
        app = QApplication.instance()
        if not app:
            app = QApplication([sys.argv])
            app.setStyle("fusion")

        print("  ✓ QApplication oluşturuldu")

        dialog = IDialogCevirici(Catia=catia)
        print("  ✓ IDialogCevirici dialog oluşturuldu")

    except Exception as e:
        print(f"  ✗ Dialog oluşturma hatası: {e}")
        import traceback
        traceback.print_exc()
        dialog = None

# Test 5: Sonuçlar
print("\n[5/5] Test Özeti")
print("=" * 70)

test_results = []
test_results.append(("Modül Importları", True))
test_results.append(("CATIA Bağlantısı", catia_available))
test_results.append(("IDialogCevirici Import", dialog_available))
test_results.append(("Dialog Oluşturma", dialog is not None))

for test_name, result in test_results:
    status = "✓ BAŞARILI" if result else "✗ BAŞARISIZ"
    print(f"  {test_name:.<50} {status}")

print("=" * 70)

# Sonuç ve öneriler
all_passed = all(result for _, result in test_results)

if all_passed:
    print("\n🎉 TÜM TESTLER BAŞARILI!")
    print("\nDialog'u başlatmak için:")
    print("  1. Bu pencereyi kapatmayın")
    print("  2. Dialog penceresi açılacak")
    print("  3. 'Server Başlat' butonuna tıklayın")
    print("  4. HTTP istekleri gönderebilirsiniz")

    if dialog:
        print("\n✓ Dialog gösteriliyor...")
        dialog.show()
        sys.exit(app.exec())
else:
    print("\n⚠ BAZI TESTLER BAŞARISIZ!")
    print("\nÇözüm önerileri:")

    if not catia_available:
        print("  • CATIA'yı açın")
        print("  • CATIA'da bir döküman açın (isteğe bağlı)")

    if not dialog_available:
        print("  • Proje yollarını kontrol edin")
        print("  • IFikatia ve IDokuman modüllerinin mevcut olduğundan emin olun")

    print("\nTekrar denemek için:")
    print("  python basit_test.py")
