ALLINSIGHT

Home of the AlmostImplementedException

Basis-Datentypen in TTCN-3

Wie in jeder Programmiersprache bietet auch TTCN-3 verschiedene Datentypen. In diesem Post werde ich die verschiedenen Typen und die speziellen Dinge die man mit ihnen anfangen kann vorstellen.

Fangen wir mit einer Übersicht aller Datentypen und einer kleinen Beschreibung an. Anschließend erkläre ich noch was mit den Subtypen gemeint ist.

Simple basic types
Keyword

Werte

Beschreibung

Subtypes
integer

-infinity bis infinity

positive und negative ganze Zahlen

list, range
float

-infinity bis infinity

positive und negative Fließkommazahlen

list, range
boolean

true order false

Kann etweder wahr oder falsch sein.

list
verdicttype

pass, fail, inconc, none und error

Ist für das Ergebnis von Testfällen gedacht

list

Integer und float sind die beiden einzigen numerischen Datentypen in TTCN-3 und beide haben keine Limitierung (solange man nicht selber eine mit den Subtypen definiert).
Was ein boolean-Typ ist, sollte klar sein. Nur true oder false sind als Werte erlaubt.
Verdicttype ist ein spezieller TTCN-3 Datentyp um das Ergebnis eines Testfalles oder eine Testkomponente zu übermitteln.
Mögliche Werte sind:
pass für Erfolgreich,
fail für Fehlgeschlagen,
inconc für Inconclusive = Ergebnislose Tests,
error um einen Fehler bei der Testausführung anzuzeigen
und none für kein Ergebnis.

String Typen
Keyword

Werte

Beschreibung

Subtypes
bitstring

0 or 1

String von Bit-Werten

list, length
hexstring

Hex-DezimalWerte

String von Hex-Dezimal-Werten

list, length
octetstring

Hex-DezimalWerte

String von Hex-Dezimal-Werten mit einer geraden Anzahl von Stellen (2 Zeichen sind 1 Byte)

list, length
charstring

Jeder Character von ASCII 32 (Space) bis 126 (Tilde)

String mit begrenztem Zeichensatz

list, length, range, pattern
universal charstring

Jeder Character

String mit UTF-32 Zeichensatz. Es werden 4 Bytes pro Zeichen verwendet

list, length, range, pattern

Bitstring, hexstring und octetstring können für das Speichern und übermitteln von Binärdaten verwendet werden, aber nur octetstring ist direkt dafür vorgesehen. Bit- und hexstring können Bit- bzw. 4-Bitweise verwendet werden.
Example:
Beispiel
[ttcn3 inline=”true”]var bitstring mybitstring := ‘100100101101’B;[/ttcn3]
[ttcn3 inline=”true”]var hexstring myhexstring := ’09A8B’H;[/ttcn3]
[ttcn3 inline=”true”]var octetstring myoctetstring := ’09A8B8’O;[/ttcn3]

Strukturierte Typen
Keyword

Beschreibung

Subtypes
record

Wird für eigene Datentypen verwendet (geordnet)

list
record of

Wird für eine Liste von Datentypen verwendet (geordnet)

list, length
set

Wird für eigene Datentypen verwendet (ungeordnet)

list
set of

Wird für eine Liste von Datentypen verwendet (ungeordnet)

list, length
enumerated

Aufzählung von möglichen Werten

list
union

Kombination verschiedener Datentypen (nur einer kann verwendet werden)

list

Um seine eigenen Datentypen zu definieren, benötigt man einen der obigen Datentypen.
Record und set können für die Definition komplexer Datentypen verwendet werden, wobei bei set die Reihenfolge der Felder keine Rolle spielt.
Wenn man eine Liste eines simplen oder komplexen Datentypens benötigt, kann record of oder set of (wieder unsortiert) verwendet werden.
Enumerated können genauso wie enum in Java oder C# verwendet werden um eine Liste mit möglichen Werten zu definieren.
Union kann zur Kombination von zwei oder mehr Datentypen verwendet werden, wobei nur einer davon gefüllt werden kann (ähnlich wie ein choice in XML)

Special types
Keyword

Beschreibung

Subtypes
anytype

kombiniert jeden bekannten Datentypen, aber nur einer kann verwendet

list
address

Referenz auf eine Komponente oder SUT

port

component

default

für die Verwaltung der Verwendung von altsteps (de-/aktivieren)

Ein sehr spezieller Typ ist der anytype. Er funktioniert wie ein union auf alle basic, string und eigenen Datentypen und wie beim union kann nur einer davon verwendet werden.
[ttcn3 inline=”true”]var anytype myany := {charstring:=”hello”};[/ttcn3]

Address, port und component sind spezielle Typen für die Definition der Architektur des Testsystems und werden, genauso wie default in einem späteren Post besprochen.

All die obigen Datentypen können beliebig kombiniert werden um eigene komplexe Datentypen zu erzeugen

Subtypes

All die verschiedenen Datentypen bieten auch verschiedene Möglichkeiten um Subtypen mit eigenen Grenzen zu definieren.

List

Mit List kann man die Werte limitieren die von einem Datentypen akzeptiert werden
[ttcn3 inline=”true”]type integer simpleInt (1, 2, 3); // nur 1, 2 oder 3 sind erlaubt[/ttcn3]
[ttcn3 inline=”true”]type boolean trueBool (true); // ein boolean der nur true akzeptiert :D[/ttcn3]

Ranges

Mit Range kann man auch die möglichen Werte begrenzen, aber ohne jeden Wert einzeln angeben zu müssen
[ttcn3 inline=”true”]type integer positiveInt (0 .. infinity); //nur positive Zahlen[/ttcn3]
[ttcn3 inline=”true”]type integer byte (0 .. 255); //nur 0 bis 255 (ein Byte)[/ttcn3]
[ttcn3 inline=”true”]type charstring aToZ (“a” .. “z”); //nur Character von a bis z (case insensitive)[/ttcn3]

Length

Für String-Werte kann man eine minimale und eine maximale Länge vorgeben.
[ttcn3 inline=”true”]type bitstring myByte length (8); // string mit exakt 8 Zeichen[/ttcn3]
[ttcn3 inline=”true”]type charstring myChar length (4 .. 8); // string mit 4 bis 8 Zeichen[/ttcn3]

Man kann auch für record of oder set of die Länge setzen:
[ttcn3 inline=”true”]type record length(5) of integer myIntList; // eine List von integer mit 5 Elementen.[/ttcn3]

Pattern

Pattern sind nur für charstring oder universal charstring und werden in einem späteren Post im Detail erklärt.
[ttcn3 inline=”true”]type charstring allInSightString (pattern “all*Sight”); //Nur Strings die mit “all” anfangen und “Sight” enden werden akzeptiert.[/ttcn3]

All diese subtypen können kombiniert werden, um den Datentypen zu erzeugen den man benöigt. Aber aufpassen, verschiedene Regeln können sich gegenseitig stören oder beeinflussen.
[ttcn3 inline=”true”]type charstring myFunnyChar (pattern “[a-z]#(4,8)”) length (1 .. 6); // Ein charstring der nur a bis z akzeptiert und eine Länge von 4 bis 6 haben kann.[/ttcn3]

Share :

Leave a Reply