Handbuch

STS Handbuch

Stellwerksim Handbuch

Webseiten-Werkzeuge


stellwerksim:erbauer:themascripte:ts_tester

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
stellwerksim:erbauer:themascripte:ts_tester [2019/01/23 18:06] billystellwerksim:erbauer:themascripte:ts_tester [2021/04/14 16:34] (aktuell) – Überarbeitung ThemaScript-Editor DevonFrosch
Zeile 1: Zeile 1:
 ====== ThemaScript-Tester ====== ====== ThemaScript-Tester ======
 +
 +Der ThemaScript-Tester dient zum Ausprobieren von ThemaScripten. Hierzu muss nicht gespeichert werden.
 +
 +{{:stellwerksim:erbauer:themascripte:themascript-editor-tester.png?800}}
 +
 +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 =====  ===== Testparameter ===== 
  
 ^ Parameter ^ Eingabe ^ Funktion ^ ^ Parameter ^ Eingabe ^ Funktion ^
-Testlauf-Thema | [[stellwerksim:erbauer:themascripte:themen|Thema]] und [[stellwerksim:erbauer:themascripte:klassen|Klasse]] (Drop down) | Nur Zeilen mit dem übergebenen Thema und Klasse werden im Test ausgeführt +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 | 
-| testen mit Zugtemplate (TID) | TID | Füllt die Felder Länge und Geschwindigkeit aus; Liefert die vom Zugtemplate durchfahrenen AID's als Drop down +Thema | [[stellwerksim:erbauer:themascripte:themen|Thema]] und [[stellwerksim:erbauer:themascripte:klassen|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. 
-aktuelle Länge | Zahl | Startlänge für den Test (damit wird gerechnet) | +| Länge | Zahl | Startlänge für den Test (damit wird gerechnet) | 
-aktuelle Geschwindigkeit | Zahl | Startgeschwindigkeit für den Test (damit wird gerechnet) | +Tempo | Zahl | Starttempo für den Test (damit wird gerechnet) | 
-aktuelle Verspätung | Zahl (Verspätung in min) | Startverspätung für den Test (damit wird gerechnet) | +| Verspätung | Zahl (in Minuten) | Startverspätung für den Test (damit wird gerechnet) | 
-aktiv? | | Aktivität zu Beginn des Tests | +Aktiv? | | Aktiv-Status 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 +Aktuelle Spielstunde | Zahl Die Spiel-Stunde zu der das Script ausgeführt wird | 
-wurde gesteuert? | | sagt dem Test ob das letzte Stellwerk gesteuert wurde +| Aktuelle AID | Anlagen-ID | AID für den Test - wenn eine TID geladen wurde, als Dropdown-Liste 
-wird gesteuert? | | sagt dem Test ob das nächste Stellwerk gesteuert wird | +Wurde gesteuert? | | Bestimmt die Ausgabe des Befehls wurdegesteuert 
-| aktuelle Spielstunde | Zahl | übergibt dem Test die Stunde zu der das Script ausgeführt wird |+Wird gesteuert? | | Bestimmt die Ausgabe des Befehls wirdgesteuert |
  
-<note erfahrung>Für den Test nicht benötigte Felder können Leer gelassen/ignoriert werden.</note>+<note erfahrung>Für den Test nicht benötigte Felder können leer gelassen/ignoriert werden.</note>
  
 ===== Ausgabe ===== ===== Ausgabe =====
  
-<code>Thema: 'herbst' +<code>Thema: ''Klasse: 'start', AIDs: '',  ZIDs: '' 
-Klasse: 'Startaids: '' zids: '' +UPN-Code: '1,sub
-UPN-Code: '$tempo,$tempo,3,7,rnd,/,-,tempo+Script passt nicht wegen Klasse.</code> 
-Klasse: nok + 
-Thema: nok +Für jeden Codeblock wird jeweils der Blockkopf aufgelöst und zusammen mit dem UPN-Code wie im obigen Beispiel dargestellt. 
-AID: nok + 
-ZID: nok </code> +Anschliessend wird der Kopf ausgewertet: alle Bedingungen, welche durch den Blockkopf gestellt werdenmüssen erfüllt sein. Passt mindestens eine Bedingung nicht, wird die Zeile nicht ausgeführt und eine entsprechende Meldung gezeigt.
-  +
-   +
-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.+
  
-<note erfahrung>Wird vom Tester ein Hook aufgerufen werden dessen Codeblocks im Tester angezeigt, wie wenn sie im selben ThemaScript stehen würden, welches getestet wird.</note>+<note erfahrung>Wird vom Tester ein Hook aufgerufen, so werden dessen Zeilen im Tester ebenfalls angezeigt.</note>
      
-<code> Thema: 'herbst' +<code>Thema: 'herbst'Klasse: 'Start', AIDs: '',  ZIDs: ''
-Klasse: 'Start' aids: '' zids: ''+
 UPN-Code: '$tempo,$tempo,3,7,rnd,/,-,tempo' UPN-Code: '$tempo,$tempo,3,7,rnd,/,-,tempo'
-  Klasse: ok +Script passt 
-  Thema: ok +#Token: '$tempo' 
-  AID: ok + #Stack: {5
-  ZID: ok +#Token: '$tempo' 
- Script passt --- + #Stack: {5},{5
-  #Stack vor  Token: {} +#Token: '3' 
-   #Token: '$tempo'  + #Stack: {5},{5},{3} 
-  #Stack nach Token: {9+#Token: '7' 
-  #Stack vor  Token: {9} + #Stack: {5},{5},{3},{7} 
-   #Token: '$tempo'  +#Token: 'rnd' 
-  #Stack nach Token: {9},{9+ #Stack: {5},{5},{5
-  #Stack vor  Token: {9},{9} +#Token: '/' 
-   #Token: '3'  + #Stack: {5},{1} 
-  #Stack nach Token: {9},{9},{3} +#Token: '-' 
-  #Stack vor  Token: {9},{9},{3} + #Stack: {4
-   #Token: '7'  +#Token: 'tempo' 
-  #Stack nach Token: {9},{9},{3},{7} +setze Tempo auf 4 
-  #Stack vor  Token: {9},{9},{3},{7} + #Stack: {}</code>
-   #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: {}</code>+
  
-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ötigtbeginnend von hintenwieder daraus entnimmt.+Hier sieht man, wie die einzelnen Werte in den Speicher (Stack) geladen werden. Sobald der Tester auf einen Befehl trifft, wird dieser ausgeführtund nimmt weitere Werte vom Stack.
  
 <note hinweis>  <note hinweis> 
-<code>  #Stack vor  Token: {},{nop+<code>#Token: '$wurdegesteuert' 
-#Token: '($verspaetung,0,$abstunde,1,+,$abstundev,-,3,*,rnd,+,verspaetung)'  + #Stack: {1
-#Stack nach Token: {},{nop},{$verspaetung,0,$abstunde,1,+,$abstundev,-,3,*,rnd,+,verspaetung} +#Token: '(nop)' 
-#Stack vor  Token: {},{nop},{$verspaetung,0,$abstunde,1,+,$abstundev,-,3,*,rnd,+,verspaetung} + #Stack: {1},{nop} 
-#Token: 'if'</code>+#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: {}</code>
        
 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. 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.
 </note> </note>
        
-<note warnung>Boolsche Operatoren werden im Tester falsch dargestellt:\\ +<note warnung>Boolsche Operatoren werden im Tester falsch dargestellt: 
-Ein True/Wahr im Speicher sieht so aus: {1}\\ +  Ein True/Wahr im Speicher sieht so aus: {1} 
-Ein False/Falsch im Speicher sieht so aus:{}+  Ein False/Falsch im Speicher sieht so aus: {}
  
 Mit diesen Werten kann nicht gerechnet werden.</note> Mit diesen Werten kann nicht gerechnet werden.</note>
      
 {{tag>ThemaScript}} {{tag>ThemaScript}}
stellwerksim/erbauer/themascripte/ts_tester.1548263191.txt.gz · Zuletzt geändert: 2019/01/23 18:06 von billy