"""Test UCC complete counter implementation.""" from pathlib import Path import sys sys.path.insert(0, str(Path(__file__).parent.parent)) from pyucc.core.ucc_complete_counter import UCCCompleteCounter def test_single_file(): """Test complete counter on single file.""" test_file = Path(r"C:\__temp\Metrics\_25_10\REP\Projects\DSP\ChimeraMCK\dev\mck_c66\mck_c66_boot_multicore.c") if not test_file.exists(): print(f"ERROR: Test file not found: {test_file}") return print(f"Testing: {test_file.name}") print("=" * 80) counter = UCCCompleteCounter(language="C") result = counter.analyze_file(test_file) print("\nPyUCC Complete Counter Results:") print(f" Total Lines: {result['total_lines']:>6}") print(f" Blank Lines: {result['blank_lines']:>6}") print(f" Comments (Whole): {result['comment_whole']:>6}") print(f" Comments (Embedded): {result['comment_embedded']:>6}") print(f" Compiler Directives: {result['compiler_directives']:>6}") print(f" Data Declarations: {result['data_declarations']:>6}") print(f" Exec Instructions: {result['exec_instructions']:>6}") print(f" Logical SLOC: {result['logical_sloc']:>6}") print(f" Physical SLOC: {result['physical_sloc']:>6}") print("\n" + "=" * 80) print("UCC Expected Values:") ucc_expected = { 'total_lines': 402, 'blank_lines': 86, 'comment_whole': 45, 'comment_embedded': 13, 'compiler_directives': 22, 'data_declarations': 57, 'exec_instructions': 127, 'logical_sloc': 206, 'physical_sloc': 271 } for key, expected in ucc_expected.items(): actual = result[key] diff = actual - expected accuracy = 100 * (1 - abs(diff) / expected) if expected > 0 else (100 if diff == 0 else 0) status = "✓" if abs(diff) <= 2 else "✗" if abs(diff) > 10 else "~" print(f" {key:25s} UCC:{expected:>6} PyUCC:{actual:>6} Diff:{diff:>+6} {accuracy:>5.1f}% {status}") # Calculate overall accuracy total_diff = sum(abs(result[k] - ucc_expected[k]) for k in ucc_expected.keys()) total_expected = sum(ucc_expected.values()) overall_accuracy = 100 * (1 - total_diff / total_expected) print("\n" + "=" * 80) print(f"Overall accuracy: {overall_accuracy:.1f}%") if overall_accuracy >= 95: print(">> EXCELLENT! Target 95%+ achieved!") elif overall_accuracy >= 90: print(">> GOOD! Target 90%+ achieved!") elif overall_accuracy >= 85: print(">> FAIR - Close to target") else: print(">> NEEDS WORK - Below 85% accuracy") if __name__ == "__main__": test_single_file()