|
|
import app |
|
|
import gradio as gr |
|
|
|
|
|
|
|
|
class DummyPipe: |
|
|
def __init__(self, out_text: str): |
|
|
self.out_text = out_text |
|
|
|
|
|
def __call__(self, text, **kwargs): |
|
|
return [{"translation_text": self.out_text}] |
|
|
|
|
|
|
|
|
def test_translate_empty_returns_empty(): |
|
|
assert app.translate("", "Hindi → English") == "" |
|
|
assert app.translate(" ", "English → Hindi") == "" |
|
|
assert app.translate(None, "Hindi → Hinglish (transliteration)") == "" |
|
|
|
|
|
|
|
|
def test_hi_to_en_uses_hi_en_pipe(monkeypatch): |
|
|
app.get_hi_en_pipe.cache_clear() |
|
|
monkeypatch.setattr(app, "get_hi_en_pipe", lambda: DummyPipe("hello")) |
|
|
assert app.translate("नमस्ते", "Hindi → English") == "hello" |
|
|
|
|
|
|
|
|
def test_en_to_hi_uses_en_hi_pipe(monkeypatch): |
|
|
app.get_en_hi_pipe.cache_clear() |
|
|
monkeypatch.setattr(app, "get_en_hi_pipe", lambda: DummyPipe("नमस्ते")) |
|
|
assert app.translate("hello", "English → Hindi") == "नमस्ते" |
|
|
|
|
|
|
|
|
def test_hi_to_hinglish_transliteration_nonempty(): |
|
|
out = app.translate("नमस्ते भाई कैसे हो?", "Hindi → Hinglish (transliteration)") |
|
|
assert isinstance(out, str) |
|
|
assert len(out) > 0 |
|
|
|
|
|
def test_build_demo_returns_blocks(): |
|
|
demo = app.build_demo() |
|
|
assert isinstance(demo, gr.Blocks) |
|
|
assert demo.title == "Hindi ↔ English + Hinglish Translator" |
|
|
|
|
|
def get_all_component_types(block): |
|
|
types = set() |
|
|
def recurse(b): |
|
|
if hasattr(b, 'children'): |
|
|
for child in b.children or []: |
|
|
types.add(type(child).__name__) |
|
|
recurse(child) |
|
|
recurse(block) |
|
|
return types |
|
|
|
|
|
|
|
|
def test_build_demo_has_expected_components(): |
|
|
demo = app.build_demo() |
|
|
component_types = get_all_component_types(demo) |
|
|
|
|
|
assert "Dropdown" in component_types |
|
|
assert "Slider" in component_types |
|
|
assert "Textbox" in component_types |
|
|
assert "Button" in component_types |
|
|
|
|
|
def test_translate_catches_translation_error(monkeypatch): |
|
|
def broken_pipe(*args, **kwargs): |
|
|
raise RuntimeError("mock model crash") |
|
|
|
|
|
monkeypatch.setattr(app, "get_hi_en_pipe", lambda: broken_pipe) |
|
|
|
|
|
result = app.translate("नमस्ते", "Hindi → English") |
|
|
assert "error" in result.lower() |
|
|
assert "mock model crash" in result |