#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Test script to verify encoding handling between Python and Rust
"""

import sys
import json
import os

def test_encoding():
    """Test various encoding scenarios"""
    
    # Configure encoding
    if os.name == 'nt':  # Windows
        try:
            import subprocess
            subprocess.run(['chcp', '65001'], shell=True, capture_output=True)
        except:
            pass
    
    if hasattr(sys.stdout, 'reconfigure'):
        try:
            sys.stdout.reconfigure(encoding='utf-8')
            sys.stderr.reconfigure(encoding='utf-8')
        except:
            pass
    
    # Test cases with various characters
    test_cases = [
        {"type": "ascii", "text": "Hello World"},
        {"type": "chinese", "text": "你好世界"},
        {"type": "japanese", "text": "こんにちは"},
        {"type": "emoji", "text": "🎉🚀✅"},
        {"type": "mixed", "text": "Hello 你好 🎉"},
        {"type": "special", "text": "Special chars: àáâãäåæçèéêë"},
    ]
    
    print("Testing encoding compatibility...")
    
    for i, test_case in enumerate(test_cases):
        # Test regular print
        print(f"Test {i+1}: {test_case['type']} - {test_case['text']}")
        
        # Test JSON-RPC format with ensure_ascii=True
        jsonrpc_response = {
            "jsonrpc": "2.0",
            "id": i,
            "result": {
                "status": True,
                "message": test_case['text'],
                "type": test_case['type']
            }
        }
        
        json_str = json.dumps(jsonrpc_response, ensure_ascii=True, separators=(',', ':'))
        output_line = f"JSONRPC:{json_str}"
        
        if hasattr(sys.stdout, 'buffer'):
            sys.stdout.buffer.write(output_line.encode('utf-8'))
            sys.stdout.buffer.write(b'\n')
            sys.stdout.buffer.flush()
        else:
            print(output_line)
            sys.stdout.flush()
    
    # Test final result
    final_result = {
        "status": True,
        "message": "编码测试完成 - Encoding test completed 🎉",
        "test_count": len(test_cases)
    }
    
    result_json = json.dumps(final_result, ensure_ascii=True, indent=2)
    if hasattr(sys.stdout, 'buffer'):
        sys.stdout.buffer.write(result_json.encode('utf-8'))
        sys.stdout.buffer.write(b'\n')
        sys.stdout.buffer.flush()
    else:
        print(result_json)
        sys.stdout.flush()

if __name__ == "__main__":
    test_encoding()
