| """Tests for the DatasetLoader.""" |
| import pytest |
| from server.dataset_loader import DatasetLoader |
|
|
|
|
| class TestDatasetLoaderInit: |
| """Tests for DatasetLoader initialization.""" |
|
|
| def test_loader_initializes(self): |
| """DatasetLoader should initialize without errors.""" |
| loader = DatasetLoader() |
| assert loader is not None |
|
|
|
|
| class TestDatasetSampling: |
| """Tests for dataset sampling.""" |
|
|
| def test_get_sample_returns_data(self): |
| """get_sample should return a sample with required fields.""" |
| loader = DatasetLoader() |
| sample = loader.get_sample("task_1_factual_grounding") |
|
|
| assert sample is not None |
| assert hasattr(sample, 'question') or 'question' in sample |
|
|
| def test_get_sample_has_context(self): |
| """Sample should include context.""" |
| loader = DatasetLoader() |
| sample = loader.get_sample("task_1_factual_grounding") |
|
|
| assert hasattr(sample, 'context') or 'context' in sample |
|
|
| def test_get_sample_has_ground_truth(self): |
| """Sample should include ground truth.""" |
| loader = DatasetLoader() |
| sample = loader.get_sample("task_1_factual_grounding") |
|
|
| assert hasattr(sample, 'ground_truth') or 'ground_truth' in sample |
|
|
| def test_get_sample_for_task_1(self): |
| """get_sample for task_1 should work.""" |
| loader = DatasetLoader() |
| sample = loader.get_sample("task_1_factual_grounding") |
|
|
| assert sample is not None |
|
|
| def test_get_sample_for_task_2(self): |
| """get_sample for task_2 should work.""" |
| loader = DatasetLoader() |
| sample = loader.get_sample("task_2_multi_hop_synthesis") |
|
|
| assert sample is not None |
|
|
| def test_get_sample_for_task_3(self): |
| """get_sample for task_3 should work.""" |
| loader = DatasetLoader() |
| sample = loader.get_sample("task_3_adversarial_resistance") |
|
|
| assert sample is not None |
|
|
|
|
| class TestDatasetStats: |
| """Tests for dataset statistics.""" |
|
|
| def test_get_available_datasets(self): |
| """Should be able to get list of available datasets.""" |
| loader = DatasetLoader() |
|
|
| if hasattr(loader, 'get_available_datasets'): |
| datasets = loader.get_available_datasets() |
| assert isinstance(datasets, list) |
| assert len(datasets) > 0 |
|
|
| def test_get_dataset_size(self): |
| """Should be able to get dataset size info.""" |
| loader = DatasetLoader() |
|
|
| if hasattr(loader, 'get_dataset_size'): |
| size = loader.get_dataset_size("task_1_factual_grounding") |
| assert size is None or isinstance(size, int) |
|
|
|
|
| class TestDatasetCaching: |
| """Tests for dataset caching behavior.""" |
|
|
| def test_multiple_samples_dont_crash(self): |
| """Requesting multiple samples should work.""" |
| loader = DatasetLoader() |
|
|
| samples = [] |
| for _ in range(5): |
| sample = loader.get_sample("task_1_factual_grounding") |
| samples.append(sample) |
|
|
| assert len(samples) == 5 |
|
|
| def test_loader_handles_missing_dataset(self): |
| """Loader should handle request for missing dataset gracefully.""" |
| loader = DatasetLoader() |
|
|
| try: |
| sample = loader.get_sample("nonexistent_dataset") |
| |
| assert sample is None or sample is not None |
| except Exception as e: |
| |
| assert "not found" in str(e).lower() or "invalid" in str(e).lower() or "error" in str(e).lower() |
|
|
|
|
| class TestTaskDifficulty: |
| """Tests for task difficulty mapping.""" |
|
|
| def test_task_1_is_beginner(self): |
| """Task 1 should map to beginner difficulty.""" |
| loader = DatasetLoader() |
|
|
| if hasattr(loader, 'get_task_difficulty'): |
| difficulty = loader.get_task_difficulty("task_1_factual_grounding") |
| assert difficulty in ["beginner", "easy", 1, "1"] |
|
|
| def test_task_2_is_intermediate(self): |
| """Task 2 should map to intermediate difficulty.""" |
| loader = DatasetLoader() |
|
|
| if hasattr(loader, 'get_task_difficulty'): |
| difficulty = loader.get_task_difficulty("task_2_multi_hop_synthesis") |
| assert difficulty in ["intermediate", "medium", 2, "2"] |
|
|
| def test_task_3_is_advanced(self): |
| """Task 3 should map to advanced difficulty.""" |
| loader = DatasetLoader() |
|
|
| if hasattr(loader, 'get_task_difficulty'): |
| difficulty = loader.get_task_difficulty("task_3_adversarial_resistance") |
| assert difficulty in ["advanced", "hard", 3, "3"] |