"""Test cache consistency: same file content in different locations should give same result."""
import os
import shutil
import tempfile
from pathlib import Path

# Create temporary directories
temp_dir1 = tempfile.mkdtemp(prefix="test_cache_1_")
temp_dir2 = tempfile.mkdtemp(prefix="test_cache_2_")

try:
    # Create identical file content in two different locations
    test_content = '''"""Test module with some code."""

def function_one():
    """This is a function."""
    x = 1
    y = 2
    return x + y

def function_two():
    """Another function."""
    # This is a comment
    result = function_one()
    return result * 2

# Main code
if __name__ == "__main__":
    print("Hello World")
'''

    file1 = Path(temp_dir1) / "test.py"
    file2 = Path(temp_dir2) / "test.py"
    
    file1.write_text(test_content, encoding='utf-8')
    file2.write_text(test_content, encoding='utf-8')
    
    print(f"File 1: {file1}")
    print(f"File 2: {file2}")
    print()
    
    # Import after creating files to ensure clean cache
    from pyucc.core.countings_impl import analyze_file_counts, _COUNTING_CACHE
    
    # Analyze both files
    print("Analyzing file 1 (should compute)...")
    result1 = analyze_file_counts(file1)
    print(f"Result 1: code={result1['code_lines']}, comment={result1['comment_lines']}, blank={result1['blank_lines']}")
    print(f"Cache size: {len(_COUNTING_CACHE)}")
    print()
    
    print("Analyzing file 2 (should use cache)...")
    result2 = analyze_file_counts(file2)
    print(f"Result 2: code={result2['code_lines']}, comment={result2['comment_lines']}, blank={result2['blank_lines']}")
    print(f"Cache size: {len(_COUNTING_CACHE)}")
    print()
    
    # Compare results (ignoring 'file' field which contains path)
    keys_to_compare = ['physical_lines', 'code_lines', 'comment_lines', 'blank_lines', 'language']
    results_match = all(result1[k] == result2[k] for k in keys_to_compare)
    
    print(f"Results match: {results_match}")
    if results_match:
        print("✅ SUCCESS: Same content in different locations produces identical results!")
    else:
        print("❌ FAIL: Results differ!")
        for k in keys_to_compare:
            if result1[k] != result2[k]:
                print(f"  {k}: {result1[k]} != {result2[k]}")
    
    # Verify cache was used
    print()
    if len(_COUNTING_CACHE) == 1:
        print("✅ Cache working: Only one entry for identical content in different locations")
    else:
        print(f"❌ Cache issue: Expected 1 cache entry, got {len(_COUNTING_CACHE)}")

finally:
    # Cleanup
    shutil.rmtree(temp_dir1, ignore_errors=True)
    shutil.rmtree(temp_dir2, ignore_errors=True)
