#!/usr/bin/env python3
"""
Test Chinese-English separation in brand names
"""
import sys
sys.path.append('backend')

from app.utils.text_parser import BrandExtractor

def test_chinese_separation():
    """Test brand extraction with Chinese-English separation"""
    extractor = BrandExtractor()
    
    test_cases = [
        {
            "name": "Tods女款卡其色麻花拖鞋 XXW70K0GU70MIDM033美国代购8.15 LA",
            "expected": "Tods",
            "description": "Tods directly followed by Chinese characters"
        },
        {
            "name": "SportMax女款黑色羊皮皮衣GEL 003 代购8.18",
            "expected": "SportMax",
            "description": "SportMax directly followed by Chinese characters"
        },
        {
            "name": "Burberry男款深蓝色连帽卫衣8084 代购MC",
            "expected": "Burberry",
            "description": "Burberry directly followed by Chinese characters"
        },
        {
            "name": "MaxMara主线红色龙年限定双排扣大衣ADDURRE 011代购8.18",
            "expected": "MaxMara",
            "description": "MaxMara directly followed by Chinese characters"
        },
        {
            "name": "小王国Acne女款白色经典笑脸T恤 代购MC",
            "expected": "Acne",
            "description": "Brand after 小王国 directly followed by Chinese"
        }
    ]
    
    print("Testing Chinese-English Separation in Brand Names")
    print("=" * 60)
    
    passed = 0
    total = len(test_cases)
    
    for i, case in enumerate(test_cases, 1):
        result = extractor.extract_brand(case["name"])
        expected = case["expected"]
        
        print(f"\nTest {i}: {case['description']}")
        print(f"Input: {case['name']}")
        print(f"Expected: {expected}")
        print(f"Got: {result}")
        
        # Debug: show candidates and preprocessing
        candidates = extractor._extract_brand_candidates(case["name"])
        print(f"Candidates: {candidates}")
        
        # Show preprocessing effect
        import re
        preprocessed = case["name"]
        preprocessed = re.sub(r'([A-Za-z])([\u4e00-\u9fff])', r'\1 \2', preprocessed)
        preprocessed = re.sub(r'([\u4e00-\u9fff])([A-Za-z])', r'\1 \2', preprocessed)
        print(f"After separation: {preprocessed}")
        
        if result == expected:
            print("✅ PASS")
            passed += 1
        else:
            print("❌ FAIL")
    
    print(f"\n{'='*60}")
    print(f"Results: {passed}/{total} tests passed ({passed/total*100:.1f}%)")
    
    return passed == total

if __name__ == "__main__":
    success = test_chinese_separation()
    sys.exit(0 if success else 1)