Files
becomingone/tests/test_memory_witnessing.py
T

143 lines
4.3 KiB
Python
Raw Normal View History

2026-02-19 05:46:51 +00:00
"""
Tests for BecomingONE Memory and Witnessing
Tests temporal memory system and witnessing layer.
"""
import unittest
import os
import shutil
2026-02-19 09:18:39 +00:00
from datetime import datetime, timedelta, timezone
from becomingone import (
KAIROSTemporalEngine,
TemporalMemory,
TemporalSignature,
WitnessingLayer,
WitnessingMode
2026-02-19 05:46:51 +00:00
)
2026-02-19 09:18:39 +00:00
from becomingone.memory.temporal import MemoryStrength
2026-02-19 05:46:51 +00:00
class TestTemporalSignature(unittest.TestCase):
"""Tests for TemporalSignature."""
2026-02-19 09:18:39 +00:00
2026-02-19 05:46:51 +00:00
def test_create_signature(self):
"""Test creating a temporal signature."""
sig = TemporalSignature(
signature_id="test_123",
coherence_value=0.85,
phase_vector=[0.0, 0.1, 0.2],
frequency_modes={"omega1": 0.1},
context_hash="abc123",
2026-02-19 09:18:39 +00:00
strength=None, # Optional
created_at=datetime.now(timezone.utc),
last_accessed=datetime.now(timezone.utc),
2026-02-19 05:46:51 +00:00
access_count=0
)
2026-02-19 09:18:39 +00:00
2026-02-19 05:46:51 +00:00
self.assertEqual(sig.signature_id, "test_123")
self.assertEqual(sig.coherence_value, 0.85)
2026-02-19 09:18:39 +00:00
2026-02-19 05:46:51 +00:00
def test_signature_serialization(self):
"""Test signature to/from dict."""
sig = TemporalSignature(
signature_id="test_456",
coherence_value=0.75,
phase_vector=[0.1, 0.2],
frequency_modes={},
context_hash="xyz",
strength=MemoryStrength.WORKING,
2026-02-19 09:18:39 +00:00
created_at=datetime.now(timezone.utc),
last_accessed=datetime.now(timezone.utc)
2026-02-19 05:46:51 +00:00
)
2026-02-19 09:18:39 +00:00
2026-02-19 05:46:51 +00:00
data = sig.to_dict()
2026-02-19 09:18:39 +00:00
self.assertIn("signature_id", data)
self.assertEqual(data["signature_id"], "test_456")
2026-02-19 05:46:51 +00:00
class TestTemporalMemory(unittest.TestCase):
"""Tests for TemporalMemory system."""
2026-02-19 09:18:39 +00:00
2026-02-19 05:46:51 +00:00
def setUp(self):
"""Set up test fixtures with temporary directory."""
self.test_dir = "/tmp/becomingone_test_memory"
os.makedirs(self.test_dir, exist_ok=True)
2026-02-19 09:18:39 +00:00
self.memory = TemporalMemory(storage_path=self.test_dir)
2026-02-19 05:46:51 +00:00
# Create engine and bind
2026-02-19 09:18:39 +00:00
engine = KAIROSTemporalEngine()
2026-02-19 05:46:51 +00:00
self.memory.bind_engine(engine)
2026-02-19 09:18:39 +00:00
2026-02-19 05:46:51 +00:00
def tearDown(self):
"""Clean up test directory."""
if os.path.exists(self.test_dir):
shutil.rmtree(self.test_dir)
2026-02-19 09:18:39 +00:00
2026-02-19 05:46:51 +00:00
def test_initialization(self):
"""Test memory initializes correctly."""
self.assertEqual(len(self.memory), 0)
self.assertIsNotNone(self.memory.engine)
2026-02-19 09:18:39 +00:00
def test_instantiate(self):
"""Test memory can be instantiated."""
memory = TemporalMemory()
self.assertIsNotNone(memory)
2026-02-19 05:46:51 +00:00
class TestWitnessingLayer(unittest.TestCase):
"""Tests for WitnessingLayer."""
2026-02-19 09:18:39 +00:00
2026-02-19 05:46:51 +00:00
def test_create_witness(self):
"""Test creating a witness."""
2026-02-19 09:18:39 +00:00
witnessing = WitnessingLayer()
witness = witnessing.create_witness(
2026-02-19 05:46:51 +00:00
"test_witness",
mode=WitnessingMode.OBSERVE
)
2026-02-19 09:18:39 +00:00
2026-02-19 05:46:51 +00:00
self.assertEqual(witness.witness_id, "test_witness")
self.assertEqual(witness.mode, WitnessingMode.OBSERVE)
2026-02-19 09:18:39 +00:00
2026-02-19 05:46:51 +00:00
def test_observe(self):
"""Test observing content."""
2026-02-19 09:18:39 +00:00
witnessing = WitnessingLayer()
witnessing.create_witness("observer1")
2026-02-19 05:46:51 +00:00
content = {"data": "test_content", "value": 42}
2026-02-19 09:18:39 +00:00
witnessed = witnessing.observe(content, "observer1")
2026-02-19 05:46:51 +00:00
self.assertIsNotNone(witnessed)
self.assertEqual(witnessed.witness_id, "observer1")
2026-02-19 09:18:39 +00:00
2026-02-19 05:46:51 +00:00
def test_integrate(self):
"""Test integrating witnessed content."""
2026-02-19 09:18:39 +00:00
witnessing = WitnessingLayer()
witnessing.create_witness("integrator")
2026-02-19 05:46:51 +00:00
content = "test"
2026-02-19 09:18:39 +00:00
witnessed = witnessing.observe(content, "integrator")
contribution = witnessing.integrate(witnessed, "integrator")
2026-02-19 05:46:51 +00:00
self.assertGreaterEqual(contribution, 0.0)
2026-02-19 09:18:39 +00:00
2026-02-19 05:46:51 +00:00
def test_witness_modes(self):
"""Test different witnessing modes."""
modes = list(WitnessingMode)
2026-02-19 09:18:39 +00:00
2026-02-19 05:46:51 +00:00
for mode in modes:
2026-02-19 09:18:39 +00:00
witnessing = WitnessingLayer()
witness = witnessing.create_witness(
2026-02-19 05:46:51 +00:00
f"mode_test_{mode.value}",
mode=mode
)
self.assertEqual(witness.mode, mode)
if __name__ == "__main__":
unittest.main()