#!/usr/bin/env python3 """ Comprehensive Test Suite for Extended IIT Framework Tests all major components and validates implementation """ import json import math from extended_iit import ( ExtendedIITFramework, IITSystem, NovelInformationMeasures, ConsciousnessBoundaryModel, IITAlgorithmsLibrary ) def test_system_creation(): """Test IIT system creation and basic operations""" print("=" * 50) print("TEST 1: System Creation and Basic Operations") print("=" * 50) # Create 3-element system system = IITSystem(num_elements=3, state_space=[0, 1]) print(f"Created system with {system.num_elements} elements") print(f"State space: {system.state_space}") print(f"Transition matrix size: {len(system.transition_matrix)}x{len(system.transition_matrix[0])}") # Test state transitions system.set_transition([0, 0, 0], [1, 0, 1], 0.7) system.set_transition([0, 0, 0], [0, 1, 0], 0.3) system.set_transition([1, 0, 1], [1, 1, 1], 1.0) print("✓ Transitions set successfully") return system def test_extended_iit_framework(): """Test Extended IIT framework calculations""" print("\n" + "=" * 50) print("TEST 2: Extended IIT Framework") print("=" * 50) system = IITSystem(num_elements=3, state_space=[0, 1]) system.set_transition([0, 0, 0], [1, 0, 0], 0.7) system.set_transition([0, 0, 0], [0, 1, 0], 0.3) framework = ExtendedIITFramework(system_size=3) phi = framework.compute_emergent_phi(system.transition_matrix) print(f"Extended Phi: {phi:.4f}") # Test novel measures on system state measures = framework.compute_novel_measures([1, 0, 1]) print(f"Novel measures: {json.dumps(measures, indent=2)}") print("✓ Extended IIT framework calculations successful") return phi, measures def test_novel_measures(): """Test novel information-theoretic measures""" print("\n" + "=" * 50) print("TEST 3: Novel Information-Theoretic Measures") print("=" * 50) system = IITSystem(num_elements=4, state_space=[0, 1]) # Set some transitions system.set_transition([0, 0, 0, 0], [1, 1, 0, 0], 0.6) system.set_transition([0, 0, 0, 0], [0, 1, 1, 0], 0.4) measures = NovelInformationMeasures(system) # Test all novel measures integration_index = measures.calculate_information_integration_index() complexity = measures.calculate_causal_complexity() differentiation = measures.calculate_integrated_differentiation() print(f"Information Integration Index: {integration_index:.4f}") print(f"Causal Complexity: {complexity:.4f}") print(f"Integrated Differentiation: {differentiation:.4f}") print("✓ Novel measures calculated successfully") return integration_index, complexity, differentiation def test_consciousness_boundaries(): """Test consciousness boundary condition models""" print("\n" + "=" * 50) print("TEST 4: Consciousness Boundary Models") print("=" * 50) system = IITSystem(num_elements=4, state_space=[0, 1]) # Create a more complex system with higher consciousness potential for i in range(16): from_state = [(i >> j) & 1 for j in range(4)] to_state = [(i >> (j+1)) % 2 for j in range(4)] prob = 1.0 / 8 # Distribute probabilities system.set_transition(from_state, to_state, prob) boundaries = ConsciousnessBoundaryModel() assessment = boundaries.consciousness_threshold(system) print(f"Consciousness Assessment: {json.dumps(assessment, indent=2)}") # Test phase transition analysis phi_trajectory = [0.1, 0.2, 0.15, 0.8, 0.75, 0.9, 0.85] phase_analysis = boundaries.analyze_phase_transition(phi_trajectory) print(f"Phase Transition Analysis: {json.dumps(phase_analysis, indent=2)}") print("✓ Consciousness boundary models working correctly") return assessment, phase_analysis def test_algorithms_library(): """Test the algorithms library""" print("\n" + "=" * 50) print("TEST 5: IIT Algorithms Library") print("=" * 50) # Create two systems for comparison system1 = IITSystem(num_elements=3, state_space=[0, 1]) system1.set_transition([0, 0, 0], [1, 1, 0], 1.0) system2 = IITSystem(num_elements=3, state_space=[0, 1]) system2.set_transition([0, 0, 0], [1, 0, 1], 1.0) # Test individual analysis analysis1 = IITAlgorithmsLibrary.integrated_information_analysis(system1) analysis2 = IITAlgorithmsLibrary.integrated_information_analysis(system2) print(f"System 1 Analysis: {json.dumps(analysis1, indent=2)}") print(f"System 2 Analysis: {json.dumps(analysis2, indent=2)}") # Test system comparison comparison = IITAlgorithmsLibrary.system_comparison(system1, system2) print(f"System Comparison: {json.dumps(comparison['comparison'], indent=2)}") print("✓ Algorithms library functions working correctly") return analysis1, analysis2, comparison def test_comprehensive_integration(): """Test comprehensive integration of all components""" print("\n" + "=" * 50) print("TEST 6: Comprehensive Integration Test") print("=" * 50) # Create a complex system system = IITSystem(num_elements=5, state_space=[0, 1]) # Set up interesting transition patterns for i in range(32): from_state = [(i >> j) & 1 for j in range(5)] # Create cyclic behavior with complexity to_state = [(i >> ((j+1) % 5)) & 1 for j in range(5)] system.set_transition(from_state, to_state, 1.0/32) # Test all components together framework = ExtendedIITFramework(system_size=5) measures = NovelInformationMeasures(system) boundaries = ConsciousnessBoundaryModel() # Calculate comprehensive metrics phi = framework.compute_emergent_phi(system.transition_matrix) integration_index = measures.calculate_information_integration_index() assessment = boundaries.consciousness_threshold(system) # Full analysis using library full_analysis = IITAlgorithmsLibrary.integrated_information_analysis(system) results = { 'phi': phi, 'integration_index': integration_index, 'is_conscious': assessment['is_conscious'], 'consciousness_confidence': assessment['confidence'], 'complexity': full_analysis['information_measures']['causal_complexity'] } print(f"Comprehensive Results: {json.dumps(results, indent=2)}") # Validate results are reasonable assert 0 <= phi <= 10, "Phi should be in reasonable range" assert 0 <= integration_index <= 5, "Integration index should be reasonable" assert 0 <= results['consciousness_confidence'] <= 1, "Confidence should be 0-1" print("✓ Comprehensive integration test passed") return results def run_all_tests(): """Run all test suites and provide final validation""" print("STARTING EXTENDED IIT FRAMEWORK COMPREHENSIVE TESTING") print("=" * 60) try: # Run all tests test_system_creation() test_extended_iit_framework() test_novel_measures() test_consciousness_boundaries() test_algorithms_library() final_results = test_comprehensive_integration() print("\n" + "=" * 60) print("ALL TESTS PASSED SUCCESSFULLY!") print("=" * 60) print("\nIMPLEMENTATION SUMMARY:") print("✓ Extended IIT formalism with Phi calculation") print("✓ Novel information-theoretic measures") print("✓ Consciousness boundary condition models") print("✓ Complete algorithms library") print("✓ System integration and comparison capabilities") return { 'success': True, 'test_results': final_results, 'components_implemented': [ 'ExtendedIITFramework', 'IITSystem', 'NovelInformationMeasures', 'ConsciousnessBoundaryModel', 'IITAlgorithmsLibrary' ] } except Exception as e: print(f"\n❌ TEST FAILED: {str(e)}") return { 'success': False, 'error': str(e) } if __name__ == "__main__": results = run_all_tests() if results['success']: print(f"\n🎯 Implementation Status: COMPLETE") print(f"📊 Final test results: {json.dumps(results['test_results'], indent=2)}") else: print(f"\n💥 Implementation Status: FAILED - {results['error']}")