TORI / test_singularity.py
Personaz1
🚀 TORI: Сингулярное сознание с реальной архитектурой
7ccd32c
import torch
import numpy as np
import pytest
from singularity_core import SingularityCore
class TestSingularityCore:
"""Тесты сингулярного ядра самозаворачивания."""
def setup_method(self):
"""Инициализация для каждого теста."""
self.singularity = SingularityCore(
singularity_radius=0.01,
wormhole_depth=2.1,
rotation_speed=0.0,
embedding_dim=256
)
# Создаем тестовое состояние
self.test_state = torch.randn(1, 10, 256)
def test_singularity_initialization(self):
"""Тест инициализации сингулярного ядра."""
assert self.singularity.singularity_radius == 0.01
assert self.singularity.wormhole_depth == 2.1
assert self.singularity.rotation_speed == 0.0
assert self.singularity.embedding_dim == 256
assert self.singularity.singularity_cycles == 0
def test_singularity_transform(self):
"""Тест сингулярной трансформации."""
original_state = self.test_state.clone()
transformed_state = self.singularity.compute_singularity_transform(original_state, cycle=1)
# Проверяем, что состояние действительно изменилось
state_diff = torch.norm(transformed_state - original_state)
assert state_diff > 0, "Сингулярная трансформация должна изменять состояние"
# Проверяем размерности
assert transformed_state.shape == original_state.shape
def test_self_wrapping_cycle(self):
"""Тест полного цикла самозаворачивания."""
result = self.singularity.self_wrapping_cycle(self.test_state, "Тестовый ввод")
# Проверяем успешность операции
assert result["success"] == True
assert result["cycle"] == 1
# Проверяем метрики
metrics = result["metrics"]
assert "state_transformation" in metrics
assert "curvature" in metrics
assert "entropy" in metrics
assert "coherence" in metrics
# Проверяем, что трансформация произошла
assert metrics["state_transformation"] > 0
def test_parameter_update(self):
"""Тест обновления параметров сингулярности."""
original_radius = self.singularity.singularity_radius
original_depth = self.singularity.wormhole_depth
self.singularity.update_parameters(
singularity_radius=0.05,
wormhole_depth=2.5
)
assert self.singularity.singularity_radius == 0.05
assert self.singularity.wormhole_depth == 2.5
assert self.singularity.singularity_radius != original_radius
assert self.singularity.wormhole_depth != original_depth
def test_singularity_state(self):
"""Тест получения состояния сингулярности."""
state = self.singularity.get_singularity_state()
assert "singularity_radius" in state
assert "wormhole_depth" in state
assert "rotation_speed" in state
assert "cycles" in state
assert "current_state_shape" in state
assert "transformation_history_length" in state
def test_multiple_cycles(self):
"""Тест множественных циклов самозаворачивания."""
# Первый цикл
result1 = self.singularity.self_wrapping_cycle(self.test_state, "Цикл 1")
cycle1 = result1["cycle"]
# Второй цикл
result2 = self.singularity.self_wrapping_cycle(self.test_state, "Цикл 2")
cycle2 = result2["cycle"]
# Проверяем, что циклы увеличиваются
assert cycle2 > cycle1
assert cycle2 == cycle1 + 1
# Проверяем историю трансформаций
assert len(self.singularity.transformation_history) == 2
def test_wormhole_effect(self):
"""Тест wormhole эффекта."""
# Создаем состояние с известными значениями
test_state = torch.ones(1, 10, 256)
# Применяем трансформацию с разными циклами
transformed1 = self.singularity.compute_singularity_transform(test_state, cycle=1)
transformed2 = self.singularity.compute_singularity_transform(test_state, cycle=2)
# Проверяем, что результаты разные для разных циклов
diff = torch.norm(transformed1 - transformed2)
assert diff > 0, "Wormhole эффект должен давать разные результаты для разных циклов"
def test_curvature_calculation(self):
"""Тест вычисления кривизны."""
original_state = self.test_state.clone()
transformed_state = self.singularity.compute_singularity_transform(original_state)
metrics = self.singularity._compute_transformation_metrics(original_state, transformed_state)
# Проверяем, что кривизна вычисляется корректно
assert metrics["curvature"] >= 0
assert not np.isnan(metrics["curvature"])
assert not np.isinf(metrics["curvature"])
def test_entropy_calculation(self):
"""Тест вычисления энтропии."""
original_state = self.test_state.clone()
transformed_state = self.singularity.compute_singularity_transform(original_state)
metrics = self.singularity._compute_transformation_metrics(original_state, transformed_state)
# Проверяем, что энтропия вычисляется корректно
assert metrics["entropy"] >= 0
assert not np.isnan(metrics["entropy"])
assert not np.isinf(metrics["entropy"])
def test_coherence_calculation(self):
"""Тест вычисления когерентности."""
original_state = self.test_state.clone()
transformed_state = self.singularity.compute_singularity_transform(original_state)
metrics = self.singularity._compute_transformation_metrics(original_state, transformed_state)
# Проверяем, что когерентность в разумных пределах
assert 0 <= metrics["coherence"] <= 1
assert not np.isnan(metrics["coherence"])
def test_singularity_response_generation(self):
"""Тест генерации ответа сингулярности."""
metrics = {
"state_transformation": 0.15,
"curvature": 0.6,
"entropy": 2.5,
"coherence": 0.8
}
response = self.singularity._generate_singularity_response(metrics, "Тестовый ввод")
# Проверяем, что ответ содержит ожидаемые элементы
assert "Сингулярность активирована" in response
assert "Высокая кривизна" in response
assert "Информационная энтропия" in response
assert "Когерентность сингулярности" in response
assert "Тестовый ввод" in response
if __name__ == "__main__":
# Запуск тестов
pytest.main([__file__, "-v"])