Inhaltsverzeichnis

ThemaScript-Tester

Der ThemaScript-Tester dient zum Ausprobieren von ThemaScripten. Hierzu muss nicht gespeichert werden.

Der Tester lässt sich oben rechts mit dem Knopf „Script-Tester“ einblenden, die Ausgabe mit dem Knopf „Testergebnis“. Wird der Tester ausgeführt, wird der Tester geschlossen und das Testergebnis geöffnet - in der Überschrift ist ein Icon zum nochmaligen Ausführen des Tests (mit gleichen Werten, falls das Script selbst geändert wurde) sowie zum Öffnen des Testers.

Testparameter

Parameter Eingabe Funktion
Werte von TID Zugtemplate-ID Füllt zusätzlich die Felder Länge und Geschwindigkeit aus und liefert die vom Zugtemplate durchfahrenen AIDs als Dropdown-Liste
Thema Thema und Klasse (Drop down) Nur Zeilen mit dem übergebenen Thema und Klasse werden im Test ausgeführt. Mehrere Klassen können mit Komma getrennt angegeben werden.
Länge Zahl Startlänge für den Test (damit wird gerechnet)
Tempo Zahl Starttempo für den Test (damit wird gerechnet)
Verspätung Zahl (in Minuten) Startverspätung für den Test (damit wird gerechnet)
Aktiv? Aktiv-Status zu Beginn des Tests
Aktuelle Spielstunde Zahl Die Spiel-Stunde zu der das Script ausgeführt wird
Aktuelle AID Anlagen-ID AID für den Test - wenn eine TID geladen wurde, als Dropdown-Liste
Wurde gesteuert? Bestimmt die Ausgabe des Befehls wurdegesteuert
Wird gesteuert? Bestimmt die Ausgabe des Befehls wirdgesteuert
Für den Test nicht benötigte Felder können leer gelassen/ignoriert werden.

Ausgabe

Thema: '', Klasse: 'start', AIDs: '',  ZIDs: ''
UPN-Code: '1,sub'
Script passt nicht wegen Klasse.

Für jeden Codeblock wird jeweils der Blockkopf aufgelöst und zusammen mit dem UPN-Code wie im obigen Beispiel dargestellt.

Anschliessend wird der Kopf ausgewertet: alle Bedingungen, welche durch den Blockkopf gestellt werden, müssen erfüllt sein. Passt mindestens eine Bedingung nicht, wird die Zeile nicht ausgeführt und eine entsprechende Meldung gezeigt.

Wird vom Tester ein Hook aufgerufen, so werden dessen Zeilen im Tester ebenfalls angezeigt.
Thema: 'herbst', Klasse: 'Start', AIDs: '',  ZIDs: ''
UPN-Code: '$tempo,$tempo,3,7,rnd,/,-,tempo'
Script passt
#Token: '$tempo'
 #Stack: {5}
#Token: '$tempo'
 #Stack: {5},{5}
#Token: '3'
 #Stack: {5},{5},{3}
#Token: '7'
 #Stack: {5},{5},{3},{7}
#Token: 'rnd'
 #Stack: {5},{5},{5}
#Token: '/'
 #Stack: {5},{1}
#Token: '-'
 #Stack: {4}
#Token: 'tempo'
setze Tempo auf 4
 #Stack: {}

Hier sieht man, wie die einzelnen Werte in den Speicher (Stack) geladen werden. Sobald der Tester auf einen Befehl trifft, wird dieser ausgeführt, und nimmt weitere Werte vom Stack.

#Token: '$wurdegesteuert'
 #Stack: {1}
#Token: '(nop)'
 #Stack: {1},{nop}
#Token: '($verspaetung,0,$abstunde,1,+,$abstundev,-,2,*,rnd,+,verspaetung)'
 #Stack: {1},{nop},{$verspaetung,0,$abstunde,1,+,$abstundev,-,2,*,rnd,+,verspaetung}
#Token: 'if'
#Token: 'nop'
 #Stack: {}

Bei „if-Befehlen“ werden die in Klammern stehenden Teile welche ausgewertet werden, wenn die Bedingung wahr bzw. falsch ist, als ganzes in Speicher geladen. Um Fehler in diesem Teil des Codes zu finden müssen diese Teilblöcke in einen neuen Codeblock kopiert werden und dieser durch den Tester ausgewertet werden lassen.

Boolsche Operatoren werden im Tester falsch dargestellt:
  • Ein True/Wahr im Speicher sieht so aus: {1}
  • Ein False/Falsch im Speicher sieht so aus: {}

Mit diesen Werten kann nicht gerechnet werden.