import torch from torch import nn from cortex_ai.identity import ( IDENTITY_STATEMENT, IDENTITY_STATEMENT_EN, identity_response, is_identity_question, ) from cortex_ai.vision import PrefixFusion, VisionConfig, build_vision_adapter def test_identity_questions_and_canonical_responses(): assert is_identity_question("Qui t'a créé ?") assert is_identity_question("Who is your creator?") assert identity_response("fr") == IDENTITY_STATEMENT assert identity_response("en") == IDENTITY_STATEMENT_EN def test_image_encoder_projector_and_fusion_path(): class DummyEncoder(nn.Module): def forward(self, images): batch = images.shape[0] return torch.ones(batch, 2, 4) config = VisionConfig(vision_hidden_size=4, cortex_hidden_size=8) adapter = build_vision_adapter(config, DummyEncoder()) multimodal = adapter.prepare_multimodal_input(torch.zeros(2, 3, 16, 16)) assert multimodal.image_embeddings.shape == (2, 2, 8) text = torch.zeros(2, 3, 8) fused = PrefixFusion().fuse(text, multimodal.image_embeddings) assert fused.shape == (2, 5, 8) assert multimodal.metadata["vision_status"] == "experimental / in development"