"""
BOLT 분류 테스트
"""

from .bolt_classifier import (
    classify_bolt, 
    get_bolt_purchase_info,
    is_high_strength_bolt,
    is_stainless_bolt
)

def test_bolt_classification():
    """BOLT 분류 테스트"""
    
    test_cases = [
        {
            "name": "육각 볼트 (미터)",
            "dat_file": "BOLT_HEX_M12",
            "description": "HEX BOLT, M12 X 50MM, GRADE 8.8, ZINC PLATED",
            "main_nom": "M12"
        },
        {
            "name": "소켓 헤드 캡 스크류",
            "dat_file": "SHCS_M8",
            "description": "SOCKET HEAD CAP SCREW, M8 X 25MM, SS316",
            "main_nom": "M8"
        },
        {
            "name": "스터드 볼트",
            "dat_file": "STUD_M16",
            "description": "STUD BOLT, M16 X 100MM, ASTM A193 B7",
            "main_nom": "M16"
        },
        {
            "name": "플랜지 볼트",
            "dat_file": "FLG_BOLT_M20",
            "description": "FLANGE BOLT, M20 X 80MM, GRADE 10.9",
            "main_nom": "M20"
        },
        {
            "name": "인치 볼트",
            "dat_file": "BOLT_HEX_1/2",
            "description": "HEX BOLT, 1/2-13 UNC X 2 INCH, ASTM A325",
            "main_nom": "1/2\""
        },
        {
            "name": "육각 너트",
            "dat_file": "NUT_HEX_M12",
            "description": "HEX NUT, M12, GRADE 8, ZINC PLATED",
            "main_nom": "M12"
        },
        {
            "name": "헤비 너트",
            "dat_file": "HEAVY_NUT_M16",
            "description": "HEAVY HEX NUT, M16, SS316",
            "main_nom": "M16"
        },
        {
            "name": "평 와셔",
            "dat_file": "WASH_FLAT_M12",
            "description": "FLAT WASHER, M12, STAINLESS STEEL",
            "main_nom": "M12"
        },
        {
            "name": "스프링 와셔",
            "dat_file": "SPRING_WASH_M10",
            "description": "SPRING WASHER, M10, CARBON STEEL",
            "main_nom": "M10"
        },
        {
            "name": "U볼트",
            "dat_file": "U_BOLT_M8",
            "description": "U-BOLT, M8 X 50MM, GALVANIZED",
            "main_nom": "M8"
        }
    ]
    
    print("🔩 BOLT 분류 테스트 시작\n")
    print("=" * 80)
    
    for i, test in enumerate(test_cases, 1):
        print(f"\n테스트 {i}: {test['name']}")
        print("-" * 60)
        
        result = classify_bolt(
            test["dat_file"],
            test["description"],
            test["main_nom"]
        )
        
        purchase_info = get_bolt_purchase_info(result)
        
        print(f"📋 입력:")
        print(f"  DAT_FILE: {test['dat_file']}")
        print(f"  DESCRIPTION: {test['description']}")
        print(f"  SIZE: {result['dimensions']['dimension_description']}")
        
        print(f"\n🔩 분류 결과:")
        print(f"  카테고리: {result['fastener_category']['category']}")
        print(f"  타입: {result['fastener_type']['type']}")
        print(f"  특성: {result['fastener_type']['characteristics']}")
        print(f"  나사규격: {result['thread_specification']['standard']} {result['thread_specification']['size']}")
        if result['thread_specification']['pitch']:
            print(f"  피치: {result['thread_specification']['pitch']}")
        print(f"  치수: {result['dimensions']['dimension_description']}")
        print(f"  등급: {result['grade_strength']['grade']}")
        if result['grade_strength']['tensile_strength']:
            print(f"  인장강도: {result['grade_strength']['tensile_strength']}")
        
        # 특수 조건 표시
        conditions = []
        if is_high_strength_bolt(result):
            conditions.append("💪 고강도")
        if is_stainless_bolt(result):
            conditions.append("✨ 스테인리스")
        if conditions:
            print(f"  특수조건: {' '.join(conditions)}")
        
        print(f"\n📊 신뢰도:")
        print(f"  전체신뢰도: {result['overall_confidence']}")
        print(f"  재질: {result['material']['confidence']}")
        print(f"  타입: {result['fastener_type']['confidence']}")
        print(f"  나사규격: {result['thread_specification']['confidence']}")
        print(f"  등급: {result['grade_strength']['confidence']}")
        
        print(f"\n🛒 구매 정보:")
        print(f"  공급업체: {purchase_info['supplier_type']}")
        print(f"  예상납기: {purchase_info['lead_time_estimate']}")
        print(f"  구매단위: {purchase_info['purchase_unit']}")
        print(f"  구매카테고리: {purchase_info['purchase_category']}")
        
        print(f"\n💾 저장될 데이터:")
        print(f"  FASTENER_CATEGORY: {result['fastener_category']['category']}")
        print(f"  FASTENER_TYPE: {result['fastener_type']['type']}")
        print(f"  THREAD_STANDARD: {result['thread_specification']['standard']}")
        print(f"  THREAD_SIZE: {result['thread_specification']['size']}")
        print(f"  GRADE: {result['grade_strength']['grade']}")
        
        if i < len(test_cases):
            print("\n" + "=" * 80)

if __name__ == "__main__":
    test_bolt_classification()
