Drakulix / zwreec

Twee to Z-Code Compiler in Rust
BSD 2-Clause "Simplified" License
7 stars 3 forks source link

Tests #45

Closed felinira closed 9 years ago

felinira commented 9 years ago

Tests Es sollen Testcases (twee Files) für den Compiler erstellt werden, inklusive Spezifikation welches Ergebnis erwartet wird (beispielsweise Compiliert/Compiliert nicht/Compiliert mit Warning)

Die internen Tests wurden in #161 von der Milestone-Aufgabe getrennt (in der Hoffnung diese bald schließen zu können)

Da in der Aufgabe nicht genau spezifiziert ist wieviele Dateien erstellt werden sollen mach ich ein Vorschlag: Jedes "Thema" sollte nach Möglichkeit in mind. einem Test vorkommen der scheitert und in mindestens einem der erfolgreich ist.

Passage / Verlinkung

Macro

If/Else/ElseIf

Formatierung

Expressions

Bei den Tests die kompilieren sollen, wäre es gut, wenn gleichzeitig angegeben wird welche ausagabe die Richtige wäre. z.b. sollte in etwa sowas stehen wie:

Es sollte 120 ausgegeben werden;
<<print 1*2*3*4*5>>
msaehn commented 9 years ago

Der Compiler soll bei erkannten Fehlern (in der Twee-Datei) diese nicht ignorieren oder ausbessern, sondern mit einer Fehlermeldung abbrechen.

msaehn commented 9 years ago

-test der in #63 beschrieben ist

msaehn commented 9 years ago

unicode tests sollten ebenso enthalten sein^^

felinira commented 9 years ago

Wir sollten uns Gedanken machen, wie wir das Backend testen. Beim Frontend können wir einfach Tolens/AST/Parsebaum traversieren. Aber bei Zcode geht das nicht. Da könnten wir entweder auch ne Datenstruktur parallel erstellen oder gleich den zcode erst zum Ende aus der Struktur generieren. Aber irgend eine Möglichkeit, da einzuspringen und zu überprüfen, dass das auch das richtige tut, wäre wohl sinnvoll.

Drakulix commented 9 years ago

gibts nen zcode interpreter, der das adventure nach stdout printet? dann könnte man die ausgabe überprüfen.

felinira commented 9 years ago

Siehe Dumb-Frotz. Wer sich den mal anschauen möchte, das ist damit evtl möglich: http://www.ifarchive.org/indexes/if-archiveXinfocomXinterpretersXoldXfrotz.html

Update: Anscheinend gibt es eine aufgeräumtere Version bei https://github.com/DavidGriffith/frotz/tree/565f4b38dba9ddba647b32fe1c82f25ac7a04e24/src/dumb

felinira commented 9 years ago

Okay, ich habe dfrotz mal gebaut. Dafür einfach https://github.com/DavidGriffith/frotz/ clonen und make dfrotz machen. Der printet alles nach stdout, quasi optimal. @Drakulix können wir den irgendwie bei uns einbinden? Problem wäre, das Ding ist unter GPL (nicht LGPL), also entweder ist dann unser ganzes Projekt unter GPL oder wir müssen uns das extern laden.

Drakulix commented 9 years ago

naja wir können die binary als prozess ausführen, sollte ja kein thema sein? das kann die rust stdlib auf jeden fall

msaehn commented 9 years ago

ein paar sachen die failen sollten: -twee datei hat keine Start-passage -ein passagename kommt mehrmals vor -passagename enthält |, $, eckige klammern, <> -das gleiche sollte bei passagenamen geschehen -falsch verschachtelte formatierungen, z.b. ''fett//fettundkursiv''// -nicht existierende macros usw..

wäre gut, wenn wir das noch irgendwie bis do einbauen könnten.

felinira commented 9 years ago

Ich kümmer mich drum, auch wenn ich grad nicht ganz sagen kann, was der Lexer alles kann und nicht kann… Da ist noch viel im argen…

msaehn commented 9 years ago

ich hab den Text und die Übersicht hier mal aktualisiert. Damit klarer ist was uns noch fehlt. Wenn die Liste abgearbeitet ist, sollten wir das hier endlich schließen können. (es können gerne noch Sachen hinzugefügt werden, aber falls uns wirklich etwas fehlen sollte, dann geht das auch später.)