diff --git a/KI/gemini.md b/KI/gemini.md index 2eef970..fb3c6b4 100644 --- a/KI/gemini.md +++ b/KI/gemini.md @@ -79,19 +79,25 @@ * RECORDs, die einen Initialize-Operator haben, sind Managed Records. Sie benötigen also kein explizites Create. * Vorwärtsdeklarationen von Records werden in Delphi nicht unterstützt. Die Lösung dafür ist, das benutzende Element im Scope des Records zu definieren. -# In Unit-Tests +# Unit-Tests -* Verwende nur statische Strings für Log-Einträge und Asserts. Keine Format(), ToString usw. (Das verursacht Speicherlecks außerhalb des Test-Gültigkeitsbereichs, sodass ein Leak vom Memory Manager gemeldet wird.) +* Unit-Tests basieren auf DUnitX. -* Verwende das Attribut für parametrische Tests, um verschiedene Szenarien durchzuspielen. Z. B. [TestCase('TestName', 'Parameter1,Parameter2,...')] +* Verwende in Tests nur statische Strings für Log-Einträge und Asserts. Kein Format(), ToString usw. (Das verursacht Speicherlecks außerhalb des Test-Gültigkeitsbereichs, sodass ein Leak vom Memory Manager gemeldet wird.) + +* Verwende möglichst Assert.AreEqual() anstelle von Assert.AreEqual(). + +* Nutze das TestCase-Attribut um Tests zu parametrisieren ausgiebig. Z. B. [TestCase('TestName', 'Parameter1,Parameter2,...')] + +* Neue Test-Units haben den Namen "Test.[unit].[what].pas", wobei [unit] der volle Name der zu testenden Unit ist und [what] ein optionales Wort, falls nur ein spezieller Aspekt der Unit getestet werden soll. # Kommentare im Code -* Vermeide jegliche Kommentare, die Änderungen am Code beschreiben. Z.B. `// hier wurde was geändert`. Das mag ich gar nicht. - * Kommentare sind immer englisch. +* Vermeide jegliche Kommentare, die Änderungen am Code beschreiben. Z.B. "// changed", "// added", "// removed". + * Benutze keine HTML-Tags (``, etc.)! * Benutze `//` oder `(* *)` und fasse dich extrem kurz. Meistens genügen Einzeiler vor den Deklarationen. @@ -120,11 +126,8 @@ - Formatiere in Markdown. Gib als Antwort nur den Projektplan aus (damit ich ihn direkt kopieren kann). - Füge Datum und Uhrzeit hinzu. - - Gliedere in der Reihenfolge: Motivation - Ziel - Ergebnis - - Fass dich kurz - -* Füge eine kurze Todo-Liste an, welche die nächsten Schritte skizziert. - + - Gliedere in der Reihenfolge: Motivation - Ziel - Ergebnis - Nächster Schritt + # Interface helper **Interface helper** sind ein Konzept, dass *nicht* explizit in Delphi/Pascal verankert ist. Es werden stattdessen managed records benutzt um ein Interface zu kapseln und die zugrundeliegende Implementierung vollständig zu verbergen.