diff --git a/part1-examples/Example-1-3GPP-7.1.3.tdlan2 b/part1-examples/Example-1-3GPP-7.1.3.tdlan2
new file mode 100644
index 0000000000000000000000000000000000000000..f10efd5d5c50e5921d8b0b44b5d7b8bd1d5edbd5
--- /dev/null
+++ b/part1-examples/Example-1-3GPP-7.1.3.tdlan2
@@ -0,0 +1,148 @@
+Package Layer_2_DL_SCH_Data_Transfer {
+ //Procedures carried out by a component of a test configuration
+ //or an actor during test execution
+ Action preCondition : "Pre-test Conditions:
+ RRC Connection Reconfiguration" ;
+ Action preamble : "Preamble:
+ The generic procedure to get UE in test state Loopback
+ Activated (State 4) according to TS 36.508 clause 4.5
+ is executed, with all the parameters as specified in the
+ procedure except that the RLC SDU size is set to return no
+ data in uplink.
+ (reference corresponding behavior once implemented" ;
+
+ //User-defined verdicts
+ //Alternatively the predefined verdicts may be used as well
+ Type Verdict ;
+ Verdict PASS;
+ Verdict FAIL;
+
+ //User-defined annotation types
+ Annotation TITLE ; //Test description title
+ Annotation STEP ; //Step identifiers in source documents
+ Annotation PROCEDURE ; //Informal textual description of a test step
+ Annotation PRECONDITION ; //Identify pre-condition behaviour
+ Annotation PREAMBLE ; //Identify preamble behaviour.
+
+ //Test objectives (copied verbatim from source document)
+ Test Objective TP1 {
+ from : "36523-1-a20_s07_01.doc::7.1.3.1.1 (1)" ;
+ description : "with { UE in E-UTRA RRC_CONNECTED state }
+ ensure that {
+ when { UE receives downlink assignment on the PDCCH
+ for the UE's C-RNTI and receives data in the
+ associated subframe and UE performs HARQ
+ operation }
+ then { UE sends a HARQ feedback on the HARQ
+ process }
+ }" ;
+ }
+ Test Objective TP2 {
+ from : "36523-1-a20_s07_01.doc::7.1.3.1.1 (2)" ;
+ description : "with { UE in E-UTRA RRC_CONNECTED state }
+ ensure that {
+ when { UE receives downlink assignment on the PDCCH
+ with a C-RNTI unknown by the UE and data is
+ available in the associated subframe }
+ then { UE does not send any HARQ feedback on the
+ HARQ process }
+ }" ;
+ }
+
+ //Relevant data definitions
+ Type PDU;
+ PDU mac_pdu ;
+
+ Type ACK ;
+ ACK harq_ack ;
+
+ Type C_RNTI;
+ C_RNTI ue;
+ C_RNTI unknown;
+
+ Type PDCCH (optional c_rnti of type C_RNTI);
+ PDCCH pdcch();
+
+ Type CONFIGURATION;
+ CONFIGURATION RRCConnectionReconfiguration ;
+
+ //User-defined time units
+ Time Second;
+ Second five;
+
+ //Gate type definitions
+ Gate Type defaultGT accepts ACK, PDU, PDCCH, C_RNTI, CONFIGURATION ;
+
+ //Component type definitions
+ Component Type defaultCT having {
+ gate g of type defaultGT;
+ }
+
+ //Test configuration definition
+ Test Configuration defaultTC {
+ create Tester SS of type defaultCT;
+ create SUT UE of type defaultCT ;
+ connect UE.g to SS.g ;
+ }
+
+ //Test description definition
+ Test Description TD_7_1_3_1 uses configuration defaultTC {
+ //Pre-conditions and preamble from the source document
+ perform action preCondition with { PRECONDITION ; } ;
+ perform action preamble with { PREAMBLE ; } ;
+
+ //Test sequence
+ SS.g sends pdcch (c_rnti=ue) to UE.g with {
+ STEP : "1" ;
+ PROCEDURE : "SS transmits a downlink assignment
+ including the C-RNTI assigned to
+ the UE" ;
+ } ;
+ SS.g sends mac_pdu to UE.g with {
+ STEP : "2" ;
+ PROCEDURE : "SS transmits in the indicated
+ downlink assignment a RLC PDU in
+ a MAC PDU" ;
+ } ;
+ UE.g sends harq_ack to SS.g with {
+ STEP : "3" ;
+ PROCEDURE : "Check: Does the UE transmit an
+ HARQ ACK on PUCCH?" ;
+ test objectives : TP1 ;
+ } ;
+ set verdict to PASS ;
+ SS.g sends pdcch (c_rnti=unknown) to UE.g with {
+ STEP : "4" ;
+ PROCEDURE : "SS transmits a downlink assignment
+ to including a C-RNTI different from
+ the assigned to the UE" ;
+ } ;
+ SS.g sends mac_pdu to UE.g with {
+ STEP : "5" ;
+ PROCEDURE : "SS transmits in the indicated
+ downlink assignment a RLC PDU in
+ a MAC PDU" ;
+ } ;
+
+ //Interpolated original step 6 into an alternative behaviour,
+ //covering both the incorrect and the correct behaviours of the UE
+ alternatively {
+ UE.g sends harq_ack to SS.g ;
+ set verdict to FAIL ;
+ } or {
+ gate SS.g is quiet for five ;
+ set verdict to PASS ;
+ } with {
+ STEP : "6" ;
+ PROCEDURE : "Check: Does the UE send any HARQ ACK
+ on PUCCH?" ;
+ test objectives : TP2 ;
+ }
+ } with {
+ Note : "Note 1: For TDD, the timing of ACK/NACK is not
+ constant as FDD, see Table 10.1-1 of TS 36.213." ;
+ }
+} with {
+ Note : "Taken from 3GPP TS 36.523-1 V10.2.0 (2012-09)" ;
+ TITLE : "Correct handling of DL assignment / Dynamic case" ;
+}
diff --git a/part1-examples/Example-1-3GPP-7.1.3.tdlan2.tdl b/part1-examples/Example-1-3GPP-7.1.3.tdlan2.tdl
new file mode 100644
index 0000000000000000000000000000000000000000..bad18c36bdeedf2013d9bc73f1f1334ba47bb1d8
--- /dev/null
+++ b/part1-examples/Example-1-3GPP-7.1.3.tdlan2.tdl
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ "36523-1-a20_s07_01.doc::7.1.3.1.1 (1)"
+
+
+ "36523-1-a20_s07_01.doc::7.1.3.1.1 (2)"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/part1-examples/Example-2-IMS-4.5.1.tdlan2 b/part1-examples/Example-2-IMS-4.5.1.tdlan2
new file mode 100644
index 0000000000000000000000000000000000000000..a79317921f0a983ff3b7fef79562675a0e6476ee
--- /dev/null
+++ b/part1-examples/Example-2-IMS-4.5.1.tdlan2
@@ -0,0 +1,129 @@
+//Translated from [i.6], Section 4.5.1.
+Package IMS_NNI_General_Capabilities {
+ //Procedures carried out by a component of a test configuration
+ //or an actor during test execution
+ Action preConditions : "Pre-test conditions:
+ - HSS of IMS_A and of IMS B is configured according to table 1
+ - UE_A and UE_B have IP bearers established to their respective
+ IMS networks as per clause 4.2.1
+ - UE_A and IMS_A configured to use TCP for transport
+ - UE_A is registered in IMS_A using any user identity
+ - UE_B is registered user of IMS_B using any user identity
+ - MESSAGE request and response has to be supported at II-NNI
+ (ETSI TS 129 165 [16]
+ see tables 6.1 and 6.3)" ;
+
+ //User-defined verdicts
+ //Alternatively the predefined verdicts may be used as well
+ Type Verdict ;
+ Verdict PASS ;
+ Verdict FAIL ;
+
+ //User-defined annotation types
+ Annotation TITLE ; //Test description title
+ Annotation STEP ; //Step identifiers in source documents
+ Annotation PROCEDURE ; //Informal textual description of a test step
+ Annotation PRECONDITION ; //Identify pre-condition behaviour
+ Annotation PREAMBLE ; //Identify preamble behaviour.
+ Annotation SUMMARY ; //Informal textual description of test sequence
+
+ //Test objectives (copied verbatim from source document)
+ Test Objective TP_IMS_4002_1 {
+ //Location in source document
+ from : "ts_18601102v030101p.pdf::4.5.1.1 (CC 1)" ;
+ //Further reference to another document
+ from : "ETSI TS 124 229 [1], clause 4.2A, paragraph 1" ;
+ description : "ensure that {
+ when { UE_A sends a MESSAGE to UE_B
+ containing a Message_Body greater than 1 300
+ bytes }
+ then { IMS_B receives the MESSAGE containing the
+ Message_Body greater than 1 300 bytes }
+ }" ;
+ }
+ Test Objective UC_05_I {
+ //Only a reference to corresponding section in the source document
+ from : "ts_18601102v030101p.pdf::4.4.4.2" ;
+ }
+
+ //Relevant data definitions
+ Type MSG (optional TCP of type CONTENT);
+ MSG MESSAGE() ;
+ MSG DING() ;
+ MSG DELIVERY_REPORT() ;
+ MSG M_200_OK() ;
+
+ Type CONTENT ;
+ CONTENT tcp;
+
+ Time SECONDS;
+ SECONDS default_timeout;
+
+ //Gate type definitions.
+ Gate Type defaultGT accepts MSG, CONTENT ;
+
+ //Component type definitions
+ //In this case they may also be reduced to a single component type
+ Component Type USER having {
+ gate g of type defaultGT ;
+ }
+ Component Type UE having {
+ gate g of type defaultGT ;
+ }
+ Component Type IMS having {
+ gate g of type defaultGT ;
+ }
+ Component Type IBCF having {
+ gate g of type defaultGT ;
+ }
+
+ //Test configuration definition
+ Test Configuration CF_INT_CALL {
+ create Tester USER_A of type USER;
+ create Tester UE_A of type UE;
+ create Tester IMS_A of type IMS;
+ create Tester IBCF_A of type IBCF;
+ create Tester IBCF_B of type IBCF;
+ create SUT IMS_B of type IMS;
+ create Tester UE_B of type UE;
+ create Tester USER_B of type USER;
+ connect USER_A.g to UE_A.g ;
+ connect UE_A.g to IMS_A.g ;
+ connect IMS_A.g to IBCF_A.g ;
+ connect IBCF_A.g to IBCF_B.g ;
+ connect IBCF_B.g to IMS_B.g ;
+ connect IMS_B.g to UE_B.g ;
+ connect UE_B.g to USER_B.g ;
+ }
+
+ //Test description definition
+ Test Description TD_IMS_MESS_0001 uses configuration CF_INT_CALL {
+ //Pre-conditions from the source document
+ perform action preConditions with { PRECONDITION ; };
+
+ //Test sequence
+ USER_A.g sends MESSAGE to UE_A.g with { STEP : "1" ; } ;
+ UE_A.g sends MESSAGE to IMS_A.g with { STEP : "2" ; } ;
+ IMS_A.g sends MESSAGE to IBCF_A.g with { STEP : "3" ; } ;
+ IBCF_A.g sends MESSAGE to IBCF_B.g with { STEP : "4" ; } ;
+ IBCF_B.g sends MESSAGE (TCP = tcp) to IMS_B.g with { STEP : "5" ; } ;
+ IMS_B.g sends MESSAGE to UE_B.g with { STEP : "6" ; } ;
+ UE_B.g sends DING to USER_B.g with { STEP : "7" ; } ;
+ UE_B.g sends M_200_OK to IMS_B.g with { STEP : "8" ; } ;
+ IMS_B.g sends M_200_OK to IBCF_B.g with { STEP : "9" ; } ;
+ IBCF_B.g sends M_200_OK to IBCF_A.g with { STEP : "10" ; } ;
+ IBCF_A.g sends M_200_OK to IMS_A.g with { STEP : "11" ; } ;
+ IMS_A.g sends M_200_OK to UE_A.g with { STEP : "12" ; } ;
+ alternatively {
+ UE_A.g sends DELIVERY_REPORT to USER_A.g with { STEP : "13" ; } ;
+ } or {
+ gate USER_A.g is quiet for default_timeout;
+ }
+ } with {
+ SUMMARY : "IMS network shall support SIP messages greater than
+ 1 500 bytes" ;
+ }
+} with {
+ Note : "Taken from ETSI TS 186 011-2 [i.3] V3.1.1 (2011-06)" ;
+ TITLE : "SIP messages longer than 1 500 bytes" ;
+}
diff --git a/part1-examples/Example-2-IMS-4.5.1.tdlan2.tdl b/part1-examples/Example-2-IMS-4.5.1.tdlan2.tdl
new file mode 100644
index 0000000000000000000000000000000000000000..5505f4f2b6b3bdb854f87bdaf8a8467debd93755
--- /dev/null
+++ b/part1-examples/Example-2-IMS-4.5.1.tdlan2.tdl
@@ -0,0 +1,187 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ "ts_18601102v030101p.pdf::4.5.1.1 (CC 1)"
+ "ETSI TS 124 229 [1], clause 4.2A, paragraph 1"
+
+
+ "ts_18601102v030101p.pdf::4.4.4.2"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/part1-examples/Example-3-Data.tdlan2 b/part1-examples/Example-3-Data.tdlan2
new file mode 100644
index 0000000000000000000000000000000000000000..01a9e15da77dfd4b1501d2de94e24e852fa2b387
--- /dev/null
+++ b/part1-examples/Example-3-Data.tdlan2
@@ -0,0 +1,133 @@
+//A manually constructed example illustrating the data mapping concepts
+Package DataExample {
+ //User-defined verdicts
+ //Alternatively the predefined verdicts may be used as well
+ Type Verdict ;
+ Verdict PASS ;
+ Verdict FAIL ;
+
+ //Test objectives
+ Test Objective CHECK_SESSION_ID_IS_MAINTAINED {
+ //Only a description
+ description : "Check whether the session id is maintained
+ after the first response." ;
+ }
+
+ //Data definitions
+ Type SESSION_ID;
+ SESSION_ID SESSION_ID_1 ;
+ SESSION_ID SESSION_ID_2 ;
+
+ Type MSG (optional session of type SESSION_ID);
+ MSG REQUEST_SESSION_ID(session = omit);
+ MSG RESPONSE(session = ?);
+ MSG MESSAGE(session = ?);
+
+ //Data mappings
+
+ //Load resource.ttcn3
+ Use "resource.ttcn3" as TTCN_MAPPING ;
+
+ //Map types and instances to TTCN-3 records and templates, respectively
+ //(located in the used TTCN-3 file)
+ Map MSG to "record_message" in TTCN_MAPPING as MSG_mapping with {
+ session mapped to "session_id";
+ };
+ Map REQUEST_SESSION_ID to "template_message_request" in TTCN_MAPPING as REQUEST_mapping ;
+ Map RESPONSE to "template_response" in TTCN_MAPPING as RESPONSE_mapping ;
+ Map MESSAGE to "template_message" in TTCN_MAPPING as MESSAGE_mapping ;
+
+ //Use a runtime URI for dynamic data available at runtime, such as
+ //session IDs
+ Use "runtime://sessions/" as RUNTIME_MAPPING ;
+ //Map session ID data instances to locations within the runtime URI
+ Map SESSION_ID_1 to "id_1" in RUNTIME_MAPPING as SESSION_ID_1_mapping ;
+ Map SESSION_ID_2 to "id_2" in RUNTIME_MAPPING as SESSION_ID_2_mapping ;
+
+ //Gate type definitions
+ Gate Type defaultGT accepts MSG , SESSION_ID;
+
+ //Component type definitions
+ Component Type defaultCT having {
+ gate g of type defaultGT ;
+ }
+
+ //Test configuration definition
+ Test Configuration defaultTC {
+ create SUT UE of type defaultCT;
+ create Tester SS of type defaultCT;
+ connect SS.g to UE.g ;
+ }
+
+ //Test description definition
+ Test Description exampleTD uses configuration defaultTC {
+ //Tester requests a session id
+ SS.g sends REQUEST_SESSION_ID to UE.g ;
+ //SUT responds with a session id that is assigned to the URI
+ //provided by the execution environment
+ UE.g sends RESPONSE (session=SESSION_ID_1) to SS.g ;
+ //Tester sends a message with the session id
+ //from the runtime URI
+ SS.g sends MESSAGE (session=SESSION_ID_1) to UE.g ;
+
+ alternatively {
+ //SUT responds with the same session id
+ UE.g sends RESPONSE (session=SESSION_ID_1) to SS.g ;
+ set verdict to PASS;
+ } or {
+ //SUT responds with a new session id
+ UE.g sends RESPONSE (session=SESSION_ID_2) to SS.g ;
+ set verdict to FAIL;
+ } with {
+ test objectives : CHECK_SESSION_ID_IS_MAINTAINED ;
+ }
+ }
+
+ //Alternative approach with variables
+
+ //Component type definitions
+ Component Type defaultCTwithVariable having {
+ variable v of type MSG;
+ gate g of type defaultGT ;
+ }
+
+ //Test configuration definition
+ Test Configuration defaultTCwithVariables {
+ create SUT UE of type defaultCT;
+ create Tester SS of type defaultCTwithVariable;
+ connect SS.g to UE.g ;
+ }
+
+ Test Description exampleTD uses configuration defaultTCwithVariables {
+ //Tester requests a session id
+ SS.g sends REQUEST_SESSION_ID to UE.g ;
+
+ //SUT responds with a response message containing a session ID
+ //The response could contain any of the known session IDs
+ //The received response is stored in the variable v of the SS
+ UE.g sends RESPONSE to SS.g where it is assigned to v;
+
+ //Tester sends a message with the session ID
+ //from the response stored in the variable v of the SS
+ SS.g sends MESSAGE(session=SS->v.session) to UE.g ;
+
+ alternatively {
+ //SUT responds with the same session ID that is stored in
+ //the variable v of the SS from the previous response
+ UE.g sends RESPONSE(session=SS->v.session) to SS.g ;
+ set verdict to PASS;
+ } or {
+ //SUT responds with a any session ID, including the one from the
+ //previous response stored in v. The ordering of evaluation will
+ //always select the first alternative in that case. Alternatively
+ //a function can be defined and called that checks explicitly that
+ //a the specific session ID from the previous response stored in v
+ //is not received e.g.
+ // UE.g sends RESPONSE(session=not(SS->v.session)) to SS.g;
+ UE.g sends RESPONSE to SS.g ;
+ set verdict to FAIL;
+ } with {
+ test objectives : CHECK_SESSION_ID_IS_MAINTAINED ;
+ }
+ }
+}
diff --git a/part1-examples/Example-3-Data.tdlan2.tdl b/part1-examples/Example-3-Data.tdlan2.tdl
new file mode 100644
index 0000000000000000000000000000000000000000..46680064e43931ffe67d0d72fd91631566f76899
--- /dev/null
+++ b/part1-examples/Example-3-Data.tdlan2.tdl
@@ -0,0 +1,172 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+