117 lines
3.3 KiB
Python
117 lines
3.3 KiB
Python
from parser import zerlege
|
|
|
|
VOLL = """<!-- titel -->
|
|
Login
|
|
----------------------------------------
|
|
<!-- art -->
|
|
kern
|
|
----------------------------------------
|
|
<!-- ziel -->
|
|
Nutzer können sich anmelden.
|
|
----------------------------------------
|
|
<!-- funktion -->
|
|
Anmeldung mit E-Mail
|
|
<!-- regeln -->
|
|
- Passwort nie loggen
|
|
- Sperre nach 5 Fehlversuchen
|
|
<!-- testen -->
|
|
- Formular öffnen
|
|
- Daten eingeben
|
|
<!-- funktion -->
|
|
Abmeldung
|
|
"""
|
|
|
|
|
|
def test_alle_sektionen():
|
|
s = zerlege(VOLL)
|
|
assert s["titel"] == "Login"
|
|
assert s["art"] == "kern"
|
|
assert s["ziel"] == "Nutzer können sich anmelden."
|
|
assert s["funktionen"] == [
|
|
{
|
|
"text": "Anmeldung mit E-Mail",
|
|
"ziel": "",
|
|
"regeln": "- Passwort nie loggen\n- Sperre nach 5 Fehlversuchen",
|
|
"testen": "- Formular öffnen\n- Daten eingeben",
|
|
},
|
|
{"text": "Abmeldung", "ziel": "", "regeln": "", "testen": ""},
|
|
]
|
|
|
|
|
|
def test_ziel_nach_funktion_gehoert_zur_funktion():
|
|
s = zerlege("<!-- ziel -->\nKarte\n<!-- funktion -->\nX\n<!-- ziel -->\nFunktion\n")
|
|
assert s["ziel"] == "Karte"
|
|
assert s["funktionen"][0]["ziel"] == "Funktion"
|
|
|
|
|
|
def test_mehrere_testen_bloecke_werden_verbunden():
|
|
s = zerlege("<!-- funktion -->\nX\n<!-- testen -->\n- a\n<!-- testen -->\n- b\n")
|
|
assert s["funktionen"][0]["testen"] == "- a\n- b"
|
|
|
|
|
|
def test_alter_flow_marker_wird_gelesen():
|
|
s = zerlege("<!-- funktion -->\nX\n<!-- flow -->\n- a\n")
|
|
assert s["funktionen"][0]["testen"] == "- a"
|
|
|
|
|
|
def test_alte_regel_bloecke_werden_zusammengefuehrt():
|
|
s = zerlege("<!-- funktion -->\nX\n<!-- regel -->\na\n<!-- regel -->\nb\n")
|
|
assert s["funktionen"][0]["regeln"] == "a\nb"
|
|
|
|
|
|
def test_trenner_zeilen_werden_ignoriert():
|
|
s = zerlege("<!-- ziel -->\nText\n-----\n")
|
|
assert s["ziel"] == "Text"
|
|
|
|
|
|
def test_praeambel_landet_in_sonstiges():
|
|
s = zerlege("Vorspann ohne Marker\n<!-- titel -->\nX\n")
|
|
assert s["titel"] == "X"
|
|
assert s["sonstiges"] == "Vorspann ohne Marker"
|
|
|
|
|
|
def test_unbekannter_marker_landet_in_sonstiges():
|
|
s = zerlege("<!-- titel -->\nX\n<!-- notizen -->\nGeheim\n")
|
|
assert s["sonstiges"] == "Geheim"
|
|
|
|
|
|
def test_regeln_vor_erster_funktion_gehoeren_zur_karte():
|
|
s = zerlege("<!-- regeln -->\n- karte\n<!-- funktion -->\nX\n<!-- regeln -->\n- funktion\n")
|
|
assert s["regeln"] == "- karte"
|
|
assert s["funktionen"][0]["regeln"] == "- funktion"
|
|
|
|
|
|
def test_testen_ohne_funktion_landet_in_sonstiges():
|
|
s = zerlege("<!-- testen -->\n- verwaist\n")
|
|
assert s["funktionen"] == []
|
|
assert s["sonstiges"] == "- verwaist"
|
|
|
|
|
|
def test_doppelter_marker_wird_konkateniert():
|
|
s = zerlege("<!-- ziel -->\na\n<!-- titel -->\nX\n<!-- ziel -->\nb\n")
|
|
assert s["ziel"] == "a\n\nb"
|
|
|
|
|
|
def test_leerer_text():
|
|
s = zerlege("")
|
|
assert s == {"titel": "", "art": "kern", "ziel": "", "regeln": "", "funktionen": [], "sonstiges": ""}
|
|
|
|
|
|
def test_art_optional():
|
|
assert zerlege("<!-- art -->\nOptional\n")["art"] == "optional"
|
|
|
|
|
|
def test_art_default_und_unbekannter_wert():
|
|
assert zerlege("<!-- titel -->\nX\n")["art"] == "kern"
|
|
assert zerlege("<!-- art -->\nquatsch\n")["art"] == "kern"
|
|
|
|
|
|
def test_marker_mit_leerraum():
|
|
s = zerlege("<!-- titel -->\nX\n")
|
|
assert s["titel"] == "X"
|
|
|
|
|
|
def test_titel_erste_nicht_leere_zeile():
|
|
s = zerlege("<!-- titel -->\n\nErste\nZweite\n")
|
|
assert s["titel"] == "Erste"
|