162 lines
5.2 KiB
Python
162 lines
5.2 KiB
Python
#!/usr/bin/env python3
|
|
"""Test script for new optimization features."""
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
# Add project root to Python path
|
|
project_root = Path(__file__).parent.parent
|
|
sys.path.insert(0, str(project_root))
|
|
|
|
import asyncio
|
|
from loguru import logger
|
|
|
|
async def test_grammar_checker():
|
|
"""Test grammar checker."""
|
|
logger.info("Testing Grammar Checker...")
|
|
try:
|
|
from src.agents.grammar_checker import GrammarCheckAgent
|
|
|
|
checker = GrammarCheckAgent()
|
|
|
|
# Test with correct text
|
|
result1 = await checker.process("Ich habe einen guten Text geschrieben.")
|
|
logger.info(f" Correct text: {result1['error_count']} errors")
|
|
|
|
# Test with error
|
|
result2 = await checker.process("Ich habe ein Fehler gemacht.")
|
|
logger.info(f" Text with error: {result2['error_count']} errors")
|
|
|
|
logger.success("✅ Grammar Checker working!")
|
|
return True
|
|
except Exception as e:
|
|
logger.error(f"❌ Grammar Checker failed: {e}")
|
|
return False
|
|
|
|
async def test_style_validator():
|
|
"""Test style validator."""
|
|
logger.info("Testing Style Validator...")
|
|
try:
|
|
from src.agents.style_validator import StyleValidator
|
|
|
|
validator = StyleValidator()
|
|
|
|
# Test similarity
|
|
result = await validator.process(
|
|
generated_text="Das ist ein Test-Post über Business.",
|
|
reference_texts=[
|
|
"Dies ist ein anderer Post über Business.",
|
|
"Noch ein Text über geschäftliche Themen."
|
|
],
|
|
threshold=0.7
|
|
)
|
|
|
|
if result.get("available"):
|
|
logger.info(f" Similarity: {result['avg_similarity']:.2%}")
|
|
logger.info(f" Passed: {result['passed']}")
|
|
logger.success("✅ Style Validator working!")
|
|
return True
|
|
else:
|
|
logger.warning("⚠️ Style Validator not available (model not loaded)")
|
|
return False
|
|
|
|
except Exception as e:
|
|
logger.error(f"❌ Style Validator failed: {e}")
|
|
return False
|
|
|
|
async def test_readability_checker():
|
|
"""Test readability checker."""
|
|
logger.info("Testing Readability Checker...")
|
|
try:
|
|
from src.agents.readability_checker import ReadabilityChecker
|
|
|
|
checker = ReadabilityChecker()
|
|
|
|
# Test with simple text
|
|
result = await checker.process(
|
|
"Dies ist ein kurzer Satz. Noch ein kurzer Satz. LinkedIn Posts sollten gut lesbar sein."
|
|
)
|
|
|
|
if result.get("available"):
|
|
metrics = result.get("metrics", {})
|
|
logger.info(f" WSTF: {metrics.get('wiener_sachtextformel', 'N/A')}")
|
|
logger.info(f" Flesch: {metrics.get('flesch_reading_ease', 'N/A')}")
|
|
logger.info(f" Avg Sentence Length: {metrics.get('avg_sentence_length', 'N/A'):.1f}")
|
|
logger.success("✅ Readability Checker working!")
|
|
return True
|
|
else:
|
|
logger.warning("⚠️ Readability Checker not available")
|
|
return False
|
|
|
|
except Exception as e:
|
|
logger.error(f"❌ Readability Checker failed: {e}")
|
|
return False
|
|
|
|
async def test_ngram_extraction():
|
|
"""Test N-gram extraction."""
|
|
logger.info("Testing N-gram Extraction...")
|
|
try:
|
|
from src.agents.profile_analyzer import ProfileAnalyzerAgent
|
|
|
|
analyzer = ProfileAnalyzerAgent()
|
|
|
|
# Test with sample posts
|
|
posts = [
|
|
"Ich bin absolut überzeugt dass dies funktioniert.",
|
|
"Meine Erfahrung zeigt dass wir das schaffen.",
|
|
"Ich bin fest davon überzeugt dass es klappt."
|
|
]
|
|
|
|
result = analyzer._extract_ngram_patterns(posts)
|
|
|
|
if result.get("available"):
|
|
logger.info(f" Bigrams found: {len(result['typical_bigrams'])}")
|
|
logger.info(f" Trigrams found: {len(result['typical_trigrams'])}")
|
|
logger.info(f" Signatures found: {len(result['signature_combinations'])}")
|
|
|
|
if result['typical_bigrams']:
|
|
logger.info(f" Sample bigrams: {result['typical_bigrams'][:3]}")
|
|
|
|
logger.success("✅ N-gram Extraction working!")
|
|
return True
|
|
else:
|
|
logger.error("❌ N-gram Extraction not available")
|
|
return False
|
|
|
|
except Exception as e:
|
|
logger.error(f"❌ N-gram Extraction failed: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
return False
|
|
|
|
async def main():
|
|
"""Run all tests."""
|
|
logger.info("🧪 Testing Optimization Features\n")
|
|
|
|
results = {
|
|
"Grammar Checker": await test_grammar_checker(),
|
|
"Style Validator": await test_style_validator(),
|
|
"Readability Checker": await test_readability_checker(),
|
|
"N-gram Extraction": await test_ngram_extraction()
|
|
}
|
|
|
|
logger.info("\n" + "="*50)
|
|
logger.info("📊 Test Results:")
|
|
logger.info("="*50)
|
|
|
|
for name, passed in results.items():
|
|
status = "✅ PASS" if passed else "❌ FAIL"
|
|
logger.info(f" {name}: {status}")
|
|
|
|
all_passed = all(results.values())
|
|
|
|
if all_passed:
|
|
logger.success("\n🎉 All tests passed!")
|
|
else:
|
|
logger.warning("\n⚠️ Some tests failed - check the logs above")
|
|
|
|
return all_passed
|
|
|
|
if __name__ == "__main__":
|
|
success = asyncio.run(main())
|
|
exit(0 if success else 1)
|