Dies ist eine alte Version des Dokuments!
Parameter | Eingabe | Funktion |
---|---|---|
Testlauf-Thema | Thema und Klasse (Drop down) | Nur Zeilen mit dem übergebenen Thema und Klasse werden im Test ausgeführt |
testen mit Zug-Template (TID) | TID | Füllt die Felder Länge und Geschwindigkeit aus; Liefert die vom Template durchfahrenen AID's als Drop down |
aktuelle Länge | Zahl | Startlänge für den Test (damit wird gerechnet) |
aktuelle Geschwindigkeit | Zahl | Startgeschwindigkeit für den Test (damit wird gerechnet) |
aktuelle Verspätung | Zahl (Verspätung in min) | Startverspätung für den Test (damit wird gerechnet) |
aktiv? | Aktivität zu Beginn des Tests | |
aktuelle AID | AID (wenn eine AID verwendet wird: Auswahl aus Drop down Liste) | Stellt die aktuelle AID für den Test zur Verfügung |
wurde gesteuert? | sagt dem Test ob das letzte Stellwerk gesteuert wurde | |
wird gesteuert? | sagt dem Test ob das nächste Stellwerk gesteuert wird | |
aktuelle Spielstunde | Zahl | übergibt dem Test die Stunde zu der das Script ausgeführt wird |
Thema: 'herbst' Klasse: 'Start' aids: '' zids: '' UPN-Code: '$tempo,$tempo,3,7,rnd,/,-,tempo' Klasse: nok Thema: nok AID: nok ZID: nok
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 und somit ein ok erhalten (sind sie nicht erfüllt steht wie in diesem Beispiel „nok“ hinter der jeweiligen Bedingung), nur dann wie der UPN-Code ausgewertet.
Thema: 'herbst' Klasse: 'Start' aids: '' zids: '' UPN-Code: '$tempo,$tempo,3,7,rnd,/,-,tempo' Klasse: ok Thema: ok AID: ok ZID: ok Script passt --- #Stack vor Token: {} #Token: '$tempo' #Stack nach Token: {9} #Stack vor Token: {9} #Token: '$tempo' #Stack nach Token: {9},{9} #Stack vor Token: {9},{9} #Token: '3' #Stack nach Token: {9},{9},{3} #Stack vor Token: {9},{9},{3} #Token: '7' #Stack nach Token: {9},{9},{3},{7} #Stack vor Token: {9},{9},{3},{7} #Token: 'rnd' #Stack nach Token: {9},{9},{6} #Stack vor Token: {9},{9},{6} #Token: '/' #Stack nach Token: {9},{1} #Stack vor Token: {9},{1} #Token: '-' #Stack nach Token: {8} #Stack vor Token: {8} #Token: 'tempo' setze Tempo auf 8 #Stack nach Token: {}
An diesem Beispiel ist schön zu sehen, wie die einzelnen Werte in den Speicher (Stack) geladen werden und sobald der Tester auf einen Operator oder Befehl trifft jeweils soviele Werte wie benötigt, beginnend von hinten, wieder daraus entnimmt.
#Stack vor Token: {},{nop} #Token: '($verspaetung,0,$abstunde,1,+,$abstundev,-,3,*,rnd,+,verspaetung)' #Stack nach Token: {},{nop},{$verspaetung,0,$abstunde,1,+,$abstundev,-,3,*,rnd,+,verspaetung} #Stack vor Token: {},{nop},{$verspaetung,0,$abstunde,1,+,$abstundev,-,3,*,rnd,+,verspaetung} #Token: 'if'
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.
Mit diesen Werten kann nicht gerechnet werden.