const wasm = require('../wasm/strange_loop.js');
console.log('🔬 Strange Loops Full Functionality Test\n');
console.log('========================================\n');
wasm.init_wasm();
const allTests = [
{ name: 'get_version', test: () => wasm.get_version() },
{ name: 'get_system_info', test: () => wasm.get_system_info() },
{ name: 'create_nano_swarm', test: () => wasm.create_nano_swarm(100) },
{ name: 'run_swarm_ticks', test: () => wasm.run_swarm_ticks(1000) },
{ name: 'benchmark_nano_agents', test: () => wasm.benchmark_nano_agents(50) },
{ name: 'quantum_superposition', test: () => wasm.quantum_superposition(4) },
{ name: 'measure_quantum_state', test: () => wasm.measure_quantum_state(4) },
{ name: 'quantum_classical_hybrid', test: () => wasm.quantum_classical_hybrid(3, 64) },
{ name: 'evolve_consciousness', test: () => wasm.evolve_consciousness(500) },
{ name: 'calculate_phi', test: () => wasm.calculate_phi(10, 30) },
{ name: 'verify_consciousness', test: () => wasm.verify_consciousness(0.5, 0.7, 0.6) },
{ name: 'create_lorenz_attractor', test: () => wasm.create_lorenz_attractor(10, 28, 2.667) },
{ name: 'step_attractor', test: () => wasm.step_attractor(1, 1, 1, 0.01) },
{ name: 'solve_linear_system_sublinear', test: () => wasm.solve_linear_system_sublinear(1000, 0.001) },
{ name: 'compute_pagerank', test: () => wasm.compute_pagerank(10000, 0.85) },
{ name: 'create_retrocausal_loop', test: () => wasm.create_retrocausal_loop(100) },
{ name: 'predict_future_state', test: () => wasm.predict_future_state(10, 500) },
{ name: 'detect_temporal_patterns', test: () => wasm.detect_temporal_patterns(1000) },
{ name: 'create_lipschitz_loop', test: () => wasm.create_lipschitz_loop(0.9) },
{ name: 'verify_convergence', test: () => wasm.verify_convergence(0.9, 100) },
{ name: 'create_self_modifying_loop', test: () => wasm.create_self_modifying_loop(0.7) },
];
let passed = 0;
let failed = 0;
console.log('Running', allTests.length, 'tests...\n');
for (const { name, test } of allTests) {
try {
const result = test();
console.log(`✅ ${name}: ${typeof result === 'object' ? JSON.stringify(result) : result}`);
passed++;
} catch (error) {
console.log(`❌ ${name}: ${error.message}`);
failed++;
}
}
console.log('\n========================================');
console.log(`Results: ${passed}/${allTests.length} passed, ${failed} failed`);
if (failed === 0) {
console.log('🎉 All tests passed! Full functionality verified.');
process.exit(0);
} else {
console.log('⚠️ Some tests failed. Please review.');
process.exit(1);
}