Create new Test
mode that enables unittests
#68
Labels
enhancement
New feature or request
tracking
This issue is used to track a specific function or idea but will not be actively worked on
A new
Test
mode should be introduced. It enables a testfile to be read. A testfile containes multiple input-output-definitions, such that the given program is executed on each of the inputs (with a timeout to prevent endless loops), and then its output is compared to the expected output. The results are printed for the user.A more detailed explanation is available in German:
Beschreibung:
Mit
./alpha_tui test <program> <testfile>
kann man ein Testfile einlesen. Das enthält beliebig oft die Kombination aus Memory Layout Vorgabe (wie in einem Memory Config File) und einem expected Output (also eine Auflistung von "Speicherstellen/Registern=Wert", im Endeffekt auch eine Art spezielles Memory Config File) -> das ist jeweils ein Test (der hat zusätzlich noch einen Namen).Wenn man den command ausführt, wird für jeden Test das Program mit der gegebenen Memory Konfiguration (damit kann man ja Speicherstellen auf gewisse Werte setzen) ausgeführt. Dabei muss es ein Timeout geben (was man mit
--timeout
auf nen anderen Wert setzen kann). Sobald das Programm auf einer Eingabe terminiert ist, wird jede Zeile des expected outputs mit dem aktuellen Zustand der Register und des Speichers verglichen.Sobald alle Tests durchgelaufen sind, erhält man für jeden Test die Info, ob er gepassed wurde, gefailed ist, oder getimeoutet.
Darstellung:
Es bietet sich ein neues TUI Layout an. Die Liste der Tests (deren Namen) und ihr Result (vlcht ein farbiges Icon) kann man gut in einer Spalte links darstellen. Dann kann man mit den Pfeiltasten die Tests einzeln auswählen. Immer für den Test, den man gerade ausgewählt hat, wird auf der rechten Seite
dargestellt. Output ist dabei jeweils
<Speicherstelle>=<actual value> (expected: <expected value>)
,wobei das in den Klammern nur dasteht, wenn die Outputs sich unterschieden haben.
Es gibt dann die Möglichkeit, mit einem Hotkey für den gerade ausgewählten Test direkt das äquivalent zu
./alpha_tui load --memory-layout-file <Temporäre Kopie des Eingabelayouts des aktuellen Tests> <program>
zu launchen, um zu debuggen, warum ein Test gefailed istThe text was updated successfully, but these errors were encountered: