"""
GASKET 분류 테스트
"""

from .gasket_classifier import (
    classify_gasket, 
    get_gasket_purchase_info,
    is_high_temperature_gasket,
    is_high_pressure_gasket
)

def test_gasket_classification():
    """GASKET 분류 테스트"""
    
    test_cases = [
        {
            "name": "스파이럴 와운드 가스켓",
            "dat_file": "SWG_150",
            "description": "SPIRAL WOUND GASKET, GRAPHITE FILLER, SS316 WINDING, 150LB",
            "main_nom": "4\""
        },
        {
            "name": "링 조인트 가스켓",
            "dat_file": "RTJ_600",
            "description": "RING JOINT GASKET, RTJ, SS316, 600LB",
            "main_nom": "6\""
        },
        {
            "name": "풀 페이스 가스켓",
            "dat_file": "FF_150",
            "description": "FULL FACE GASKET, RUBBER, 150LB",
            "main_nom": "8\""
        },
        {
            "name": "레이즈드 페이스 가스켓",
            "dat_file": "RF_300",
            "description": "RAISED FACE GASKET, PTFE, 300LB, -200°C TO 260°C",
            "main_nom": "3\""
        },
        {
            "name": "오링",
            "dat_file": "OR_VITON",
            "description": "O-RING, VITON, ID 50MM, THK 3MM",
            "main_nom": "50mm"
        },
        {
            "name": "시트 가스켓",
            "dat_file": "SHEET_150",
            "description": "SHEET GASKET, GRAPHITE, 150LB, MAX 650°C",
            "main_nom": "10\""
        },
        {
            "name": "캄프로파일 가스켓",
            "dat_file": "KAMM_600",
            "description": "KAMMPROFILE GASKET, GRAPHITE FACING, SS304 CORE, 600LB",
            "main_nom": "12\""
        },
        {
            "name": "특수 가스켓",
            "dat_file": "CUSTOM_SPEC",
            "description": "CUSTOM GASKET, SPECIAL SHAPE, PTFE, -50°C TO 200°C",
            "main_nom": "특수"
        }
    ]
    
    print("🔧 GASKET 분류 테스트 시작\n")
    print("=" * 80)
    
    for i, test in enumerate(test_cases, 1):
        print(f"\n테스트 {i}: {test['name']}")
        print("-" * 60)
        
        result = classify_gasket(
            test["dat_file"],
            test["description"],
            test["main_nom"]
        )
        
        purchase_info = get_gasket_purchase_info(result)
        
        print(f"📋 입력:")
        print(f"  DAT_FILE: {test['dat_file']}")
        print(f"  DESCRIPTION: {test['description']}")
        print(f"  SIZE: {result['size_info']['size_description']}")
        
        print(f"\n🔧 분류 결과:")
        print(f"  가스켓타입: {result['gasket_type']['type']}")
        print(f"  특성: {result['gasket_type']['characteristics']}")
        print(f"  가스켓재질: {result['gasket_material']['material']}")
        print(f"  재질특성: {result['gasket_material']['characteristics']}")
        print(f"  압력등급: {result['pressure_rating']['rating']}")
        print(f"  온도범위: {result['temperature_info']['range']}")
        print(f"  용도: {result['gasket_type']['applications']}")
        
        # 특수 조건 표시
        conditions = []
        if is_high_temperature_gasket(result):
            conditions.append("🔥 고온용")
        if is_high_pressure_gasket(result):
            conditions.append("💪 고압용")
        if conditions:
            print(f"  특수조건: {' '.join(conditions)}")
        
        print(f"\n📊 신뢰도:")
        print(f"  전체신뢰도: {result['overall_confidence']}")
        print(f"  가스켓타입: {result['gasket_type']['confidence']}")
        print(f"  가스켓재질: {result['gasket_material']['confidence']}")
        print(f"  압력등급: {result['pressure_rating']['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"  GASKET_TYPE: {result['gasket_type']['type']}")
        print(f"  GASKET_MATERIAL: {result['gasket_material']['material']}")
        print(f"  PRESSURE_RATING: {result['pressure_rating']['rating']}")
        print(f"  SIZE_INFO: {result['size_info']['size_description']}")
        print(f"  TEMPERATURE_RANGE: {result['temperature_info']['range']}")
        
        if i < len(test_cases):
            print("\n" + "=" * 80)

if __name__ == "__main__":
    test_gasket_classification()
