workbench / tests /unit /test_synthetic_dataset.py
GitHub Actions
Initial ZeroGPU deployment with spaces shim
7f9dfed
Raw
History Blame Contribute Delete
2.15 kB
from __future__ import annotations
import tempfile
import unittest
from pathlib import Path
from datasets.synthetic import (
SyntheticExample,
augment_examples,
export_synthetic_jsonl,
generate_synthetic_examples,
quality_filter_examples,
validate_synthetic_example,
)
class SyntheticDatasetTest(unittest.TestCase):
def test_generates_deterministic_examples(self) -> None:
examples = generate_synthetic_examples("field notes", 2)
self.assertEqual(len(examples), 2)
self.assertIn("field notes #1", examples[0].prompt)
self.assertIn("synthetic", examples[0].tags)
def test_rejects_negative_count(self) -> None:
with self.assertRaises(ValueError):
generate_synthetic_examples("demo", -1)
def test_validates_required_fields(self) -> None:
errors = validate_synthetic_example(
SyntheticExample(prompt="", response="", correction="", tags=[])
)
self.assertIn("prompt is required", errors)
self.assertIn("at least one tag is required", errors)
def test_filters_low_quality_examples(self) -> None:
good = generate_synthetic_examples("demo", 1)[0]
bad = SyntheticExample(prompt="same", response="same", correction="better", tags=["x"])
filtered = quality_filter_examples([good, bad])
self.assertEqual(filtered, [good])
def test_augments_examples(self) -> None:
examples = generate_synthetic_examples("demo", 1)
augmented = augment_examples(examples)
self.assertEqual(len(augmented), 2)
self.assertIn("augmented", augmented[1].tags)
self.assertIn("verification detail", augmented[1].prompt.casefold())
def test_exports_jsonl(self) -> None:
with tempfile.TemporaryDirectory() as tmp:
path = Path(tmp) / "synthetic.jsonl"
examples = generate_synthetic_examples("demo", 1)
exported = export_synthetic_jsonl(examples, path)
self.assertEqual(exported, path)
self.assertIn('"prompt"', path.read_text(encoding="utf-8"))
if __name__ == "__main__":
unittest.main()