###############################################################################
# Copyright (c) 2000-2025 Ericsson Telecom AB
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
#
# Contributors:
#   Balasko, Jeno
#   Baranyi, Botond
#
###############################################################################
[LOGGING]
SourceInfoFormat := Stack

[MODULE_PARAMETERS]

#boolean
tspt_b_a1 := true
tspt_b_a2 := false
tspt_b_a3 := omit
tspt_b_a4 := *
tspt_b_a5 := ?
tspt_b_a6 := true ifpresent
tspt_b_a7 := false ifpresent
tspt_b_a8 := * ifpresent
tspt_b_a9 := ? ifpresent
tspt_b_a10 := (true,false)
tspt_b_a11 := complement(true)

#tspt_b_err := xy //error
#tspt_b_err := "apple"
#tspt_b_err := 'apple2'
#tspt_b_err := 12

#Type: integer
tspt_i1 := 9
tspt_i2 := omit
tspt_i3 := *
tspt_i4 := ? 
tspt_i5 := (0,1,-1)
tspt_i6 := 9 ifpresent
tspt_i7 := omit ifpresent 
tspt_i8 := * ifpresent
tspt_i9 := ? ifpresent
tspt_i10 := (0,1,-1) ifpresent
tspt_i11 := complement(9)
#value list:
#tspt_i_vl := (0,1,-1)

#Tpe:float
tspt_f1 := 9.00
tspt_f2 := omit
tspt_f3 := *
tspt_f4 := ?
tspt_f_mod4vl1 := (0.0)
tspt_f_mod4vl3 := (0.0, 1.2, -1.9)
tspt_f6 := 9.00 ifpresent
tspt_f7 := omit ifpresent
tspt_f8 := * ifpresent
tspt_f9 := ? ifpresent
tspt_f10 := (0.0, 1.2, -1.9) ifpresent
tspt_f11 := complement(9.000)
tspt_f12 := complement(9.000) ifpresent
tspt_f13 := (-1.9..3.1) 
tspt_f14 := (-1.9..3.1) ifpresent
#Type: bitstring

tspt_bs_mod4v := '01101'B;
 tspt_bs_mod4o := omit;
 tspt_bs_mod4a := *;
 tspt_bs_mod4q := ?;
 tspt_bs_mod4al1 := * length(2); //length restriction
 tspt_bs_mod4al2 := * length(2..4);
 tspt_bs_mod4ql1 := ? length(2);
 tspt_bs_mod4ql2 := ? length(2..4);
 //tspt_bs_mod4vl1 := ('01101'B);  //TODO for Adam: in line xx, at or before token `)': syntax error, unexpected ')', expecting ','
 tspt_bs_mod4vl2 := ('01101'B,'1010'B); 
 tspt_bs_mod4vl3 := ('01101'B,'1010'B,'101'B);
 tspt_bs_mod4c1 := complement('01101'B)
 tspt_bs_mod4c2 := complement('01101'B,'1010'B);
 tspt_bs_mod4c3 := complement('01101'B,'1010'B,'101'B);
 //tspt_bs_mod4r1 := ("A".."B"); //range not allowed
 //tspt_bs_mod4r2 := ("a".."c"); //range not allowed
 tspt_bs_mod4pa := '000*111'B
 tspt_bs_mod4pq := '000?111'B

 tspt_bs_mod4vifp := '01101'B ifpresent;
 tspt_bs_mod4oifp := omit ifpresent;
 tspt_bs_mod4aifp := * ifpresent;
 tspt_bs_mod4qifp := ? ifpresent;
 tspt_bs_mod4al1ifp := * length(2) ifpresent; //length restriction
 tspt_bs_mod4al2ifp := * length(2..4) ifpresent;
 tspt_bs_mod4ql1ifp := ? length(2) ifpresent;
 tspt_bs_mod4ql2ifp := ? length(2..4) ifpresent;
 //tspt_bs_mod4vl1ifp := ('01101'B) ifpresent; //TODO for Adam: in line yy, at or before token `)': syntax error, unexpected ')', expecting ','
 tspt_bs_mod4vl2ifp := ('01101'B,'1010'B) ifpresent;
 tspt_bs_mod4vl3ifp := ('01101'B,'1010'B,'101'B) ifpresent;
 tspt_bs_mod4c1ifp := complement('01101'B) ifpresent
 tspt_bs_mod4c2ifp := complement('01101'B,'1010'B) ifpresent;
 tspt_bs_mod4c3ifp := complement('01101'B,'1010'B,'101'B) ifpresent;
 //tspt_bs_mod4r1ifp := ('A'B .. 'B'B) ifpresent; //range not allowed
 //tspt_bs_mod4r2ifp := ('a'B ..'c'B) ifpresent;//range not allowed
 tspt_bs_mod4paifp := '000*111'B  ifpresent
 tspt_bs_mod4pqifp := '000?111'B  ifpresent
 

#Type: octetstring
 tspt_os_mod4v := 'ABBA'O;
 tspt_os_mod4o := omit;
 tspt_os_mod4a := *;
 tspt_os_mod4q := ?;
 tspt_os_mod4al1 := * length(2); //length restriction
 tspt_os_mod4al2 := * length(2..4);
 tspt_os_mod4ql1 := ? length(2);
 tspt_os_mod4ql2 := ? length(2..4);
 //tspt_os_mod4vl1 := ('ABBA'O);  //TODO for Adam: in line xx, at or before token `)': syntax error, unexpected ')', expecting ','
 tspt_os_mod4vl2 := ('ABBA'O,'baba'O); 
 tspt_os_mod4vl3 := ('ABBA'O,'baba'O,'B120'O);
 tspt_os_mod4c1 := complement('ABBA'O)
 tspt_os_mod4c2 := complement('ABBA'O,'baba'O);
 tspt_os_mod4c3 := complement('ABBA'O,'baba'O,'B120'O);
 //tspt_os_mod4r1 := ("A".."B"); //range not allowed
 //tspt_os_mod4r2 := ("a".."c"); //range not allowed
 tspt_os_mod4pa := 'abcd*1234'O
 tspt_os_mod4pq := 'abcd?1234'O

 tspt_os_mod4vifp := 'ABBA'O ifpresent;
 tspt_os_mod4oifp := omit ifpresent;
 tspt_os_mod4aifp := * ifpresent;
 tspt_os_mod4qifp := ? ifpresent;
 tspt_os_mod4al1ifp := * length(2) ifpresent; //length restriction
 tspt_os_mod4al2ifp := * length(2..4) ifpresent;
 tspt_os_mod4ql1ifp := ? length(2) ifpresent;
 tspt_os_mod4ql2ifp := ? length(2..4) ifpresent;
 //tspt_os_mod4vl1ifp := ('ABBA'O) ifpresent; //TODO for Adam: in line yy, at or before token `)': syntax error, unexpected ')', expecting ','
 tspt_os_mod4vl2ifp := ('ABBA'O,'baba'O) ifpresent;
 tspt_os_mod4vl3ifp := ('ABBA'O,'baba'O,'B120'O) ifpresent;
 tspt_os_mod4c1ifp := complement('ABBA'O) ifpresent
 tspt_os_mod4c2ifp := complement('ABBA'O,'baba'O) ifpresent;
 tspt_os_mod4c3ifp := complement('ABBA'O,'baba'O,'B120'O) ifpresent;
 //tspt_os_mod4r1ifp := ('A'O..'B'O) ifpresent; //range not allowed
 //tspt_os_mod4r2ifp := ('a'O..'c'O) ifpresent;//range not allowed
 tspt_os_mod4paifp := 'abcd*1234'O  ifpresent
 tspt_os_mod4pqifp := 'abcd?1234'O  ifpresent

#Type: hexstring

 tspt_hs_mod4v := 'ABBA'H;
 tspt_hs_mod4o := omit;
 tspt_hs_mod4a := *;
 tspt_hs_mod4q := ?;
 tspt_hs_mod4al1 := * length(2); //length restriction
 tspt_hs_mod4al2 := * length(2..4);
 tspt_hs_mod4ql1 := ? length(2);
 tspt_hs_mod4ql2 := ? length(2..4);
 //tspt_hs_mod4vl1 := ('ABBA'H);  //TODO for Adam: in line xx, at or before token `)': syntax error, unexpected ')', expecting ','
 tspt_hs_mod4vl2 := ('ABBA'H,'baba'H); 
 tspt_hs_mod4vl3 := ('ABBA'H,'baba'H,'B12'H);
 tspt_hs_mod4c1 := complement('ABBA'H)
 tspt_hs_mod4c2 := complement('ABBA'H,'baba'H);
 tspt_hs_mod4c3 := complement('ABBA'H,'baba'H,'B12'H);
 //tspt_hs_mod4r1 := ("A".."B"); //range not allowed
 //tspt_hs_mod4r2 := ("a".."c"); //range not allowed
 tspt_hs_mod4pa := 'abc*123'H
 tspt_hs_mod4pq := 'abc?123'H

 tspt_hs_mod4vifp := 'ABBA'H ifpresent;
 tspt_hs_mod4oifp := omit ifpresent;
 tspt_hs_mod4aifp := * ifpresent;
 tspt_hs_mod4qifp := ? ifpresent;
 tspt_hs_mod4al1ifp := * length(2) ifpresent; //length restriction
 tspt_hs_mod4al2ifp := * length(2..4) ifpresent;
 tspt_hs_mod4ql1ifp := ? length(2) ifpresent;
 tspt_hs_mod4ql2ifp := ? length(2..4) ifpresent;
 //tspt_hs_mod4vl1ifp := ('ABBA'H) ifpresent; //TODO for Adam: in line yy, at or before token `)': syntax error, unexpected ')', expecting ','
 tspt_hs_mod4vl2ifp := ('ABBA'H,'baba'H) ifpresent;
 tspt_hs_mod4vl3ifp := ('ABBA'H,'baba'H,'B12'H) ifpresent;
 tspt_hs_mod4c1ifp := complement('ABBA'H) ifpresent
 tspt_hs_mod4c2ifp := complement('ABBA'H,'baba'H) ifpresent;
 tspt_hs_mod4c3ifp := complement('ABBA'H,'baba'H,'B12'H) ifpresent;
 //tspt_hs_mod4r1ifp := ('A'H..'B'H) ifpresent; //range not allowed
 //tspt_hs_mod4r2ifp := ('a'H..'c'H) ifpresent;//range not allowed
 tspt_hs_mod4paifp := 'abc*123'H  ifpresent
 tspt_hs_mod4pqifp := 'abc?123'H  ifpresent
 
#Type: charstring
 tspt_cs_mod4v := "ABBA";
 tspt_cs_mod4o := omit;
 tspt_cs_mod4ol := omit length(2);
 tspt_cs_mod4a := *;
 tspt_cs_mod4q := ?;
 tspt_cs_mod4al1 := * length(2); //length restriction
 tspt_cs_mod4al2 := * length(2..4);
 tspt_cs_mod4ql1 := ? length(2);
 tspt_cs_mod4ql2 := ? length(2..4);
 //tspt_cs_mod4vl1 := ("ABBA");  //TODO for Adam: in line 67, at or before token `)': syntax error, unexpected ')', expecting ','
 tspt_cs_mod4vl2 := ("ABBA","baba"); 
 tspt_cs_mod4vl3 := ("ABBA","baba","Bye");
 tspt_cs_mod4c1 := complement("ABBA")
 tspt_cs_mod4c2 := complement("ABBA","baba");
 tspt_cs_mod4c3 := complement("ABBA","baba","Bye");
 tspt_cs_mod4r1 := ("A".."B"); //range
 tspt_cs_mod4r2 := ("a".."c");
 tspt_cs_mod4pa := pattern "abc*xyz"
 tspt_cs_mod4pq := pattern "abc?xyz"

 tspt_cs_mod4vifp := "ABBA" ifpresent;
 tspt_cs_mod4oifp := omit ifpresent;
 tspt_cs_mod4aifp := * ifpresent;
 tspt_cs_mod4qifp := ? ifpresent;
 tspt_cs_mod4al1ifp := * length(2) ifpresent; //length restriction
 tspt_cs_mod4al2ifp := * length(2..4) ifpresent;
 tspt_cs_mod4ql1ifp := ? length(2) ifpresent;
 tspt_cs_mod4ql2ifp := ? length(2..4) ifpresent;
 //tspt_cs_mod4vl1ifp := ("ABBA") ifpresent; //TODO for Adam: in line 86, at or before token `)': syntax error, unexpected ')', expecting ','
 tspt_cs_mod4vl2ifp := ("ABBA","baba") ifpresent;
 tspt_cs_mod4vl3ifp := ("ABBA","baba","Bye") ifpresent;
 tspt_cs_mod4c1ifp := complement("ABBA") ifpresent
 tspt_cs_mod4c2ifp := complement("ABBA","baba") ifpresent;
 tspt_cs_mod4c3ifp := complement("ABBA","baba","Bye") ifpresent;
 tspt_cs_mod4r1ifp := ("A".."B") ifpresent; //range
 tspt_cs_mod4r2ifp := ("a".."c") ifpresent;
 tspt_cs_mod4paifp := pattern "abc*xyz"  ifpresent
 tspt_cs_mod4pqifp := pattern "abc?xyz"  ifpresent  
 
#type: universal charstring
 tspt_ucs_mod4v := "ABBA";
 tspt_ucs_mod4o := omit;
 tspt_ucs_mod4ol := omit length(2);
 tspt_ucs_mod4a := *;
 tspt_ucs_mod4q := ?;
 tspt_ucs_mod4al1 := * length(2); //length restriction
 tspt_ucs_mod4al2 := * length(2..4);
 tspt_ucs_mod4ql1 := ? length(2);
 tspt_ucs_mod4ql2 := ? length(2..4);
 //tspt_ucs_mod4vl1 := ("ABBA");  //TODO for Adam: in line 67, at or before token `)': syntax error, unexpected ')', expecting ','
 tspt_ucs_mod4vl2 := ("Ádám","Éva"); 
 tspt_ucs_mod4vl3 := ("ABBA","baba","Bye");
 tspt_ucs_mod4c1 := complement("ABBA")
 tspt_ucs_mod4c2 := complement("ABBA","baba");
 tspt_ucs_mod4c3 := complement("ABBA","baba","Bye");
 tspt_ucs_mod4r1 := ("A".."B"); //range
 tspt_ucs_mod4r2 := ("a".."c");
 tspt_ucs_mod4pa := pattern "abc*xyz"
 tspt_ucs_mod4pq := pattern "abc?xyz"

 tspt_ucs_mod4vifp := "ABBA" ifpresent;
 tspt_ucs_mod4oifp := omit ifpresent;
 tspt_ucs_mod4aifp := * ifpresent;
 tspt_ucs_mod4qifp := ? ifpresent;
 tspt_ucs_mod4al1ifp := * length(2) ifpresent; //length restriction
 tspt_ucs_mod4al2ifp := * length(2..4) ifpresent;
 tspt_ucs_mod4ql1ifp := ? length(2) ifpresent;
 tspt_ucs_mod4ql2ifp := ? length(2..4) ifpresent;
 //tspt_ucs_mod4vl1ifp := ("ABBA") ifpresent; //TODO for Adam: in line 86, at or before token `)': syntax error, unexpected ')', expecting ','
 tspt_ucs_mod4vl2ifp := ("ABBA","baba") ifpresent;
 tspt_ucs_mod4vl3ifp := ("ABBA","baba","Bye") ifpresent;
 tspt_ucs_mod4c1ifp := complement("ABBA") ifpresent
 tspt_ucs_mod4c2ifp := complement("ABBA","baba") ifpresent;
 tspt_ucs_mod4c3ifp := complement("ABBA","baba","Bye") ifpresent;
 tspt_ucs_mod4r1ifp := ("A".."B") ifpresent; //range
 tspt_ucs_mod4r2ifp := ("a".."c") ifpresent;
 tspt_ucs_mod4paifp := pattern "abc*xyz"  ifpresent
 tspt_ucs_mod4pqifp := pattern "abc?xyz"  ifpresent  
 

############### Type:REC ####################################
tspt_rec_mod4empty := {}
tspt_rec_mod4v := {1,1.0,"ABBA",'0100'B}
tspt_rec_mod4a := *;
tspt_rec_mod4q := ?;
tspt_rec_mod4o := omit;
tspt_rec_mod4vr := { (1..2), ?, "ABBA", '0100'B } //not final value!
tspt_rec_mod4vl2x2 := { 1, 1.0, ("ABBA","baba"),('0100'B,'01001'B) }
tspt_rec_mod4omitx4 := { omit, omit, omit, omit }
tspt_rec_mod4r := ({1,1.0,"ABBA",'0100'B}, {2,2.0,"baba",'01001'B})
tspt_rec_mod4vr := {1,1.0,("ABBA","baba"),'0100'B}
tspt_rec_mod4c := complement( {1,1.0,("ABBA","baba"),'0100'B} )
tspt_rec_mod4vl := { 1, -,("ABBA","baba"), -}
tspt_rec_mod4vq := { ?, -,-, '0100'B}

tspt_rec_mod4cspattern := { *, -,pattern "abc*xyz", '0100'B}

tspt_rec_mod4cspatternbs := { cs := pattern "abc*xyz"}
tspt_rec_mod4cspatternbs := { bs := '0100'B}

tspt_rec_mod4cspatternbs2 := { i := -, f := -, cs := pattern "abc*xyz", bs:= '0100'B }

tspt_mod4pattern_mixed_order := {  f := -, cs := pattern "abc*xyz", bs:= '0100'B, i := - }
//== ifpresent
tspt_rec_mod4emptyifp := {} ifpresent
tspt_rrec_mod4emptyifp := { rec:= {} ifpresent }
tspt_rec_mod4vifp := {1 ifpresent,1.0 ifpresent,"ABBA" ifpresent,'0100'B ifpresent}
tspt_rec_mod4aifp := * ifpresent; //???? TR ???
tspt_rec_mod4qifp := ? ifpresent; //???? TR ???
tspt_rec_mod4oifp := omit ifpresent; //???? TR ???
tspt_rec_mod4vrifp := { (1..2) ifpresent, ? ifpresent, "ABBA" ifpresent, '0100'B ifpresent }
tspt_rec_mod4vl2x2ifp := { 1 ifpresent, 1.0 ifpresent, ("ABBA" ifpresent,"baba" ifpresent),('0100'B,'01001'B) ifpresent }
tspt_rec_mod4omitx4ifp := { omit, omit, omit, omit } ifpresent
tspt_rec_mod4rifp := ({1 ifpresent,1.0 ifpresent,"ABBA" ifpresent,'0100'B ifpresent}, {2,2.0,"baba",'01001'B})
tspt_rec_mod4cifp := complement( {1 ifpresent,1.0 ifpresent,("ABBA","baba") ifpresent,'0100'B ifpresent} )
tspt_rec_mod4vlifp := { 1 ifpresent, -,("ABBA","baba") ifpresent, -}
tspt_rec_mod4vqifp := { ?, -,-, '0100'B ifpresent}

tspt_rec_mod4cspatternifp := { * ifpresent, -,pattern "abc*xyz" ifpresent, '0100'B ifpresent}

tspt_rec_mod4cspatternbsifp := { cs := pattern "abc*xyz" ifpresent}
tspt_rec_mod4cspatternbsifp := { bs := '0100'B ifpresent}

tspt_rec_mod4cspatternbs2ifp := { i := -, f := -, cs := pattern "abc*xyz" ifpresent, bs:= '0100'B ifpresent}

tspt_mod4pattern_mixed_orderifp := {  f := -, cs := pattern "abc*xyz" ifpresent, bs:= '0100'B ifpresent, i := - }
//==
#Type: REC2
tspt_REC2_2 := {-,-}
tspt_REC2_3 := { *, -, 2 ifpresent }
tspt_REC2_4 := { b:=?,  cs:=-} //ugly spacing:)
tspt_REC2_5 := { b:=?, cs:= ? length(1), i := * }

#Type: record of
tspt_recof_i_mod4v0 := {};
tspt_recof_i_mod4v1 := {1};
tspt_recof_i_mod4v2 := {1,2};
tspt_recof_i_mod4v3 := {1,2,3};
tspt_recof_i_mod4v3a := {1,*,3};
tspt_recof_i_mod4v3q := {1,?,3};
tspt_recof_i_mod4vl3 := {(1,2),2,(3,4)}; //value list
tspt_recof_i_mod4vl  :=  ( {1,2,3}, {2,2,4} )
tspt_recof_i_mod4v10 := {1,2,3,4,5,6,7,8,9,10};
tspt_recof_i_mod4o := omit;
tspt_recof_i_mod4a := *;
tspt_recof_i_mod4q := ?;
tspt_recof_i_mod4r := {1,(1..3)}; //range
//tspt_recof_i_mod4cu :=  { 1, complement(1,2,3) } //3->2 elements --undefined behavior, result: { permutation(1, complement(1, 2, 3) }
tspt_recof_i_mod4cu :=  { 1, complement(1,2,3),3,4 } //3->2 elements --undefined behavior, result: { permutation(1, complement(1, 2, 3) }
tspt_recof_i_mod4c :=   { 1, complement(1,2,3),1,1 } //3->4 elements
tspt_recof_i_mod4cm1 := { 1, complement(1,2,3),1} //3->3 elements
tspt_recof_i_mod4cm2 := { 1, complement(1,2,3),1,1,1} //3->5 elements
tspt_recof_i_mod4lv := ? length(3)
tspt_recof_i_mod4lr := ? length(3..5)  //length range
tspt_recof_i_mod4p := { permutation( 1, 2, 3), 10 }
tspt_recof_i_mod4rifp := {1,(1..3)} ifpresent
tspt_recof_i_mod4vlifp  :=  ( {1,2,3}, {2,2,4} ) ifpresent

#type: array
tspt_array_i3_mod4a := *
tspt_array_i3_mod4q := ?
tspt_array_i3_mod4o := omit  
tspt_array_i3_mod4v0 := {-,-,-}
tspt_array_i3_mod4v1:= {1,-,-}
tspt_array_i3_mod4v2:= {1,2,-}
tspt_array_i3_mod4v3v := {0, 1, 2}
//tspt_array_i3_mod4v4 := {0, 1, 2, 3} 
tspt_array_i3_mod4v3a := {0, *, 2}
tspt_array_i3_mod4v3q := {?, 1, 2}
//tspt_array_i3_mod4v3o := {omit, 1, 2} //error
tspt_array_i3_mod4v3vl := {0, 1, (1,2)} //value list
tspt_array_i3_mod4vl := ( {0,1,2},{9,10,11})
tspt_array_i3_mod4v3r := {0, 1, (1..3)} //range
tspt_array_i3_mod4v3mix := {(0,1), 1, (1..3)}
tspt_array_i3_mod4v3c := {(0,1), 1, complement(2,3)}
tspt_array_i3_mod4field1 := {0, -, -}

tspt_array_i3_mod4aifp  := * ifpresent
tspt_array_i3_mod4qifp  := ? ifpresent
tspt_array_i3_mod4v0ifp := omit  ifpresent   //not error ?
tspt_array_i3_mod4v1ifp := {1} ifpresent   //not error
tspt_array_i3_mod4v2ifp := {1,2} ifpresent //noterror
tspt_array_i3_mod4v3vifp := {0, 1, 2} ifpresent
//tspt_array_i3_mod4v4 := {0, 1, 2, 3} ifpresent
tspt_array_i3_mod4v3aifp := {0, *, 2} ifpresent
tspt_array_i3_mod4v3qifp := {?, 1, 2} ifpresent
//tspt_array_i3_mod4v3o := {omit, 1, 2} //error
tspt_array_i3_mod4v3vlifp := {0, 1, (1,2)} ifpresent //value list
tspt_array_i3_mod4vlifp := ( {0,1,2},{9,10,11}) ifpresent
tspt_array_i3_mod4v3rifp := {0, 1, (1..3)} ifpresent //range
tspt_array_i3_mod4v3mixifp := {(0,1), 1, (1..3)} ifpresent 
tspt_array_i3_mod4v3cifp := {(0,1), 1, complement(2,3)} ifpresent 
tspt_array_i3_mod4field1ifp := {0, -, -} ifpresent

//=== SET===
tspt_set_mod4v1 :=  { b:=true };
tspt_set_mod4v2 := { b:=true, cs:= "sth" };
tspt_set_mod4v3 := { b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=99}
tspt_set_mod4a  := *;
tspt_set_mod4q  := ?;
tspt_set_mod4o  := omit;
tspt_set_mod4c1 := complement({ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=99})
tspt_set_mod4c2 := complement({ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=99}, omit)
tspt_set_mod4c0 := complement(omit)
tspt_set_mod4c3 := complement({ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=0},{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=1},{ b:=true,i:=2, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?})

tspt_setof_mod4v1 := { "a" }
tspt_setof_mod4v2 := { "a", "b"}
tspt_setof_mod4v3 := { "a","b","c"}
tspt_setof_mod4a := *
tspt_setof_mod4q := ?;
tspt_setof_mod4o := omit;
tspt_setof_mod4c0 := {complement(omit)};
tspt_setof_mod4c1 := {complement("a"),"b"};
tspt_setof_mod4c2 := {complement("a","b"),"c"};
tspt_setof_mod4c3 := complement({"a"}, {"a","b"},{"c"});
tspt_setof_mod4vl := { ("a","b"),("cica","macska","cat") }
tspt_setof_mod4superset := superset ("a", "b")
tspt_setof_mod4subset := subset ("a", "b")
tspt_setof_mod4supersetl3 := superset ("a", "b") length(3)
tspt_setof_mod4supersetl1_3 := superset ("a", "b") length(1..3)

tspt_setof_mod4v1ifp := { "a" } ifpresent
tspt_setof_mod4v2ifp := { "a", "b"} ifpresent
tspt_setof_mod4v3ifp := { "a","b","c"} ifpresent
tspt_setof_mod4aifp := * ifpresent
tspt_setof_mod4qifp := ? ifpresent
tspt_setof_mod4oifp := omit ifpresent
tspt_setof_mod4c0ifp := {complement(omit)} ifpresent
tspt_setof_mod4c1ifp := {complement("a"),"b"} ifpresent
tspt_setof_mod4c2ifp := {complement("a","b"),"c"} ifpresent
tspt_setof_mod4c3ifp := complement({"a"}, {"a","b"},{"c"}) ifpresent
tspt_setof_mod4vlifp := { ("a","b"),("cica","macska","cat") } ifpresent
tspt_setof_mod4supersetifp := superset ("a", "b") ifpresent
tspt_setof_mod4supersetl3ifp := superset ("a", "b") length(3) ifpresent
tspt_setof_mod4subsetifp := subset ("a", "b") ifpresent
//enum
tspt_enum_mod4v := first
tspt_enum_mod4a := *
tspt_enum_mod4q := ?
tspt_enum_mod4o := omit
tspt_enum_mod4c0:=complement(omit);
tspt_enum_mod4c1:=complement(first);
tspt_enum_mod4c2:=complement(first,second);
tspt_enum_mod4vl1 := first
tspt_enum_mod4vl2 := (first, second )

tspt_enum_mod4vifp := first ifpresent
tspt_enum_mod4aifp := * ifpresent
tspt_enum_mod4qifp := ? ifpresent
tspt_enum_mod4oifp := omit ifpresent
tspt_enum_mod4c0ifp := complement(omit) ifpresent
tspt_enum_mod4c1ifp := complement(first) ifpresent
tspt_enum_mod4c2ifp := complement(first,second) ifpresent
tspt_enum_mod4vl1ifp := first ifpresent
tspt_enum_mod4vl2ifp := (first, second ) ifpresent

//union
tspt_union_mod4v_b := { b := true }
tspt_union_mod4v_i := { i := 1 }
tspt_union_mod4v_f := { f := 1.0 }
tspt_union_mod4v_bs := { bs := '01101'B }
tspt_union_mod4v_os := { os := 'ABBA'O }
tspt_union_mod4v_hs := { hs := 'ABBA'H }
tspt_union_mod4v_cs := { cs := "ABBA" }
tspt_union_mod4v_r := { r := { 1, 1.0, "ABBA",'0100'B } }
tspt_union_mod4v_roi := { roi := { 1 } }
tspt_union_mod4v_s_uninit := { s := { b := true } }
tspt_union_mod4v_s := { s:= { b:=true, i:=1,f:=1.0,bs:='01101'B, os:='ABBA'O, hs:='ABBA'H, cs:="ABBA" } }
tspt_union_mod4v_socs := { socs := { "ABBA"} }
tspt_union_mod4v_e := { e := first }
tspt_union_mod4v_u := { u := { i := 1 } }

tspt_union_mod4a := *
tspt_union_mod4q := ?
tspt_union_mod4o := omit

tspt_union_mod4v_bifp := { b := true } ifpresent


tspt_union_mod4v_bifp := { b := true } ifpresent
tspt_union_mod4v_iifp := { i := 1 } ifpresent
tspt_union_mod4v_fifp := { f := 1.0 } ifpresent
tspt_union_mod4v_bsifp := { bs := '01101'B } ifpresent
tspt_union_mod4v_osifp := { os := 'ABBA'O } ifpresent
tspt_union_mod4v_hsifp := { hs := 'ABBA'H } ifpresent
tspt_union_mod4v_csifp := { cs := "ABBA" } ifpresent
tspt_union_mod4v_rifp := { r := { 1, 1.0, "ABBA",'0100'B } }  ifpresent
tspt_union_mod4v_roiifp := { roi := { 1 } } ifpresent
tspt_union_mod4v_s_uninitifp := { s := { b := true } } ifpresent
tspt_union_mod4v_sifp := { s:= { b:=true, i:=1,f:=1.0,bs:='01101'B, os:='ABBA'O, hs:='ABBA'H, cs:="ABBA" } }  ifpresent
tspt_union_mod4v_socsifp := { socs := { "ABBA"} } ifpresent
tspt_union_mod4v_eifp := { e := first } ifpresent
tspt_union_mod4v_uifp := { u := { i := 1 } } ifpresent

tspt_union_mod4aifp := * ifpresent
tspt_union_mod4qifp := ? ifpresent
tspt_union_mod4oifp := omit ifpresent
[EXECUTE]
array_test.control
boolean_test.control
integer_test.control
float_test.control
bitstring_test.control
octetstring_test.control
hexstring_test.control
charstring_test.control
record_test.control
recordof_test.control
set_test.control
setof_test.control
enum_test.control
ucharstring_test.control
union_test.control
objid_test.control


#To debug the faulty testcases:
#record_test.tc_REC_string2ttcn_empty
#record_test.tc_RREC_string2ttcn_oifp
