update
This commit is contained in:
@@ -92,7 +92,9 @@ def test_auftrag_nennt_feld_und_stelle():
|
||||
assert struktur.auftrag(b) == '- titel „Karten der Features prüfen“: Mehr als 3 Wörter'
|
||||
|
||||
|
||||
async def test_pruefe_verbindet_messung_und_modell(datenordner, monkeypatch):
|
||||
async def test_messung_ist_auftrag_und_tuersteher(datenordner, monkeypatch):
|
||||
"""Die Messung geht als Auftrag rein und prüft die Antwort wieder nach.
|
||||
Ein Vorschlag, der weiter verstößt, wird zurückgewiesen — mit Begründung."""
|
||||
import agents
|
||||
import features
|
||||
import projekte
|
||||
@@ -104,31 +106,48 @@ async def test_pruefe_verbindet_messung_und_modell(datenordner, monkeypatch):
|
||||
"<!-- regeln -->\n- Auch Passwort prüfen.\n",
|
||||
)
|
||||
gesehen = []
|
||||
# Jede Stimme liefert erst einen halbherzigen Vorschlag: Punkt weg, Füllwort bleibt
|
||||
halb = '{"felder": {"regeln": {"neu": "- Auch Passwort prüfen", "grund": "Füllwort"}}}'
|
||||
ganz = '{"felder": {"regeln": {"neu": "- Passwort prüfen", "grund": "Füllwort"}}}'
|
||||
|
||||
async def modell(system, inhalt):
|
||||
async def modell(system, inhalt, temperatur=0.0):
|
||||
gesehen.append(inhalt)
|
||||
# Das Modell meldet ein erfundenes Feld und dieselbe Zeile noch einmal
|
||||
return ('{"probleme": ['
|
||||
'{"feld": "struktur", "original": "x", "vorschlag": "y"},'
|
||||
'{"feld": "regeln", "original": "Auch Passwort prüfen.",'
|
||||
' "problem": "Füllwort", "vorschlag": "Passwort prüfen"},'
|
||||
'{"feld": "regeln", "original": "Auch Passwort prüfen.",'
|
||||
' "problem": "zwei Aussagen", "vorschlag": "Passwort prüfen"}]}')
|
||||
return ganz if "Dein Vorschlag verstößt" in inhalt else halb
|
||||
|
||||
monkeypatch.setattr(agents, "frage", modell)
|
||||
aufgabe = pruefung.aufgaben(f)[1]
|
||||
probleme = await pruefung._pruefe({"funktion": "<KATALOG>"}, aufgabe)
|
||||
|
||||
# Ein Befund für die Zeile, beide Verstöße auf einmal behoben — ohne Modell
|
||||
assert [p["problem"] for p in probleme] == [
|
||||
"Satzzeichen am Zeilenende, Füllwort „auch“",
|
||||
]
|
||||
# Eine Anfrage je Stimme, dazu je eine Nachbesserung
|
||||
assert len(gesehen) == 2 * len(pruefung.TEMPERATUREN)
|
||||
assert "Gemessen" in gesehen[0]
|
||||
assert "Füllwort „auch“" in gesehen[0]
|
||||
assert sum("Dein Vorschlag verstößt" in g for g in gesehen) == len(pruefung.TEMPERATUREN)
|
||||
|
||||
assert [p["original"] for p in probleme] == ["Auch Passwort prüfen."]
|
||||
assert probleme[0]["vorschlag"] == "Passwort prüfen"
|
||||
# Erfundenes Feld fällt raus, Doppelmeldung der gemessenen Zeile ebenso
|
||||
assert probleme[0]["feld"] == "regeln"
|
||||
assert probleme[0]["funktion"] == "Anmelden"
|
||||
# Nichts zu kürzen -> kein Auftrag im Ausschnitt
|
||||
assert "Gemessen" not in gesehen[0]
|
||||
|
||||
|
||||
async def test_unverbesserlicher_vorschlag_faellt_weg(datenordner, monkeypatch):
|
||||
import agents
|
||||
import features
|
||||
import projekte
|
||||
|
||||
projekte.anlegen("Test")
|
||||
f = features.anlegen(
|
||||
"Test",
|
||||
"<!-- titel -->\nLogin\n<!-- funktion -->\nAnmelden\n"
|
||||
"<!-- regeln -->\n- Auch Passwort prüfen.\n",
|
||||
)
|
||||
|
||||
async def sturr(system, inhalt, temperatur=0.0):
|
||||
return '{"felder": {"regeln": {"neu": "- Auch anders.", "grund": "x"}}}'
|
||||
|
||||
monkeypatch.setattr(agents, "frage", sturr)
|
||||
probleme = await pruefung._pruefe({"funktion": "<KATALOG>"}, pruefung.aufgaben(f)[1])
|
||||
assert probleme == [] # lieber nichts als ein Vorschlag, der wieder auffällt
|
||||
|
||||
|
||||
def test_gemessene_befunde_haengen_am_ausschnitt(datenordner):
|
||||
|
||||
Reference in New Issue
Block a user