Some checks failed
CI / test (push) Has been cancelled
- Created models.py with HistoryEntry and SearchResult classes - Created database.py with Database wrapper class - Fixed test files to use actual implementation APIs - Fixed conftest.py SearchResult fixture field names
31 lines
1.0 KiB
Python
31 lines
1.0 KiB
Python
import pytest
|
|
import numpy as np
|
|
from shell_history_search.core.embeddings import EmbeddingService
|
|
|
|
|
|
class TestEmbeddingService:
|
|
@pytest.fixture
|
|
def service(self):
|
|
return EmbeddingService()
|
|
|
|
def test_encode_single(self, service):
|
|
embedding = service.encode_single("test command")
|
|
assert isinstance(embedding, np.ndarray)
|
|
assert len(embedding) == 384
|
|
|
|
def test_encode_consistency(self, service):
|
|
emb1 = service.encode_single("test command")
|
|
emb2 = service.encode_single("test command")
|
|
assert np.allclose(emb1, emb2)
|
|
|
|
def test_encode_different_commands(self, service):
|
|
emb1 = service.encode_single("command one")
|
|
emb2 = service.encode_single("command two")
|
|
assert not np.allclose(emb1, emb2)
|
|
|
|
def test_cosine_similarity(self, service):
|
|
emb1 = service.encode_single("list files")
|
|
emb2 = service.encode_single("show directory contents")
|
|
similarity = EmbeddingService.cosine_similarity(emb1, emb2)
|
|
assert -1.0 <= similarity <= 1.0
|