--- /dev/null
+.******************************************************************************
+.* Copyright (c) 2000-2016 Ericsson Telecom AB
+.* All rights reserved. This program and the accompanying materials
+.* are made available under the terms of the Eclipse Public License v1.0
+.* which accompanies this distribution, and is available at
+.* http://www.eclipse.org/legal/epl-v10.html
+.*
+.* Contributors:
+.* Adrien Kirjak – initial implementation
+.*
+.******************************************************************************/
+text.
+:lang eng.
+.*
+:docname.Test Description
+:docno.xz/152 91-CRL 113 200 Uen
+:rev.PA1
+:date.2016-04-04
+.*
+:prep.ETH/XZ EADRKIR
+:subresp.EADRKIR
+:appr.ETH/XZ (Elemer Lelik)
+:checked.
+.*
+:title.ETSI TTCN3 Negative Conformance Test
+:contents level=3.
+.*---------------------------------------------------------------------*
+:h1.PREREQUISITES AND PREPARATIONS
+.*---------------------------------------------------------------------*
+.*---------------------------------------------------------------------*
+:h2.Scope of the Test Object
+.*---------------------------------------------------------------------*
+:xmp tab=1 nokeep.
+This TD contains negative tests from ETSI TTCN3 Conformance Test's 05_basic_language_elements folder.
+
+:exmp.
+
+.*---------------------------------------------------------------------*
+:h2.Test Tools
+.*---------------------------------------------------------------------*
+:p.:us.Software Tools:eus.
+:xmp tab=2 nokeep.
+
+ SAtester.pl
+
+:exmp.
+:np.
+
+.*---------------------------------------------------------------------*
+:h1.REQUIREMENT-BASED TESTS
+.*---------------------------------------------------------------------*
+
+.*---------------------------------------------------------------------*
+:h2. 05_toplevel folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_05_TopLevel_001 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that when the IUT loads a module containing some definitions before the module declaration then the module is rejected. >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_05_TopLevel_001 NegSyn_05_TopLevel_001.ttcn >
+
+const integer wrongTopLevel := 1;
+
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5, Ensure that when the IUT loads a module containing some definitions before the module declaration then the module is rejected.
+ ** @verdict pass reject
+ *****************************************************************/
+module NegSyn_05_TopLevel_001 {
+
+}
+<END_MODULE>
+
+<RESULT COUNT>
+error: Cannot recognize file `NegSyn_05_TopLevel_001.ttcn' as an ASN.1 or TTCN-3 module.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h2. 0501_identifiers_and_keywords folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0501_Identifier_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that cannot pass a charstring value to an integer variable. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0501_Identifier_001 NegSem_0501_Identifier_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.1, Ensure that cannot pass a charstring value to an integer variable.
+ ** @verdict pass reject
+ *****************************************************************/
+module NegSem_0501_Identifier_001 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_0501_Identifier_001() runs on GeneralComp {
+ var integer v_i := "wrong_type";
+ }
+
+ control{
+ execute(TC_NegSem_0501_Identifier_001(), 1.0);
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: integer value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_0501_Identifier_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that when the IUT loads a module containing an identifier named with a keyword then the module is rejected. >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_0501_Identifier_001 NegSyn_0501_Identifier_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.1, Ensure that when the IUT loads a module containing an identifier named with a keyword then the module is rejected.
+ ** @verdict pass reject
+ *****************************************************************/
+module NegSyn_0501_Identifier_001 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSyn_0501_Identifier_001() runs on GeneralComp {
+ var integer component := 1;
+ }
+
+ control{
+ execute(TC_NegSyn_0501_Identifier_001(), 1.0);
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `component': syntax error, unexpected ComponentKeyword, expecting Identifier
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h2. 0502_scope_rules folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0502_Scope_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles definitions of local scope >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0502_Scope_001 NegSem_0502_Scope_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @desc Test cases for clause 5.2 Scope rules
+ ** @purpose 1:5.2, Ensure that the IUT correctly handles definitions of local scope
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_0502_Scope_001 {
+
+type component GeneralComp {
+ var integer vc_component := 0;
+}
+
+function f_funcScope() runs on GeneralComp {
+ var integer v_function := 0;
+}
+
+testcase TC_NegSem_0502_Scope_001() runs on GeneralComp {
+ f_funcScope();
+ if ( match(v_function, 0) ){
+ }
+}
+
+control{
+ var integer v_control := 0;
+ execute(TC_NegSem_0502_Scope_001());
+}
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: There is no local or imported definition with name `v_function'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0502_Scope_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles definitions of local scope >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0502_Scope_002 NegSem_0502_Scope_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @desc Test cases for clause 5.2 Scope rules
+ ** @purpose 1:5.2, Ensure that the IUT correctly handles definitions of local scope
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_0502_Scope_002 {
+
+type component GeneralComp {
+ var integer vc_component := 0;
+}
+
+function f_funcScope() runs on GeneralComp {
+ var integer v_function := 1;
+}
+
+testcase TC_NegSem_0502_Scope_002() runs on GeneralComp {
+ if ( match(v_control, 0) ){
+ }
+}
+
+control{
+ var integer v_control := 0;
+ execute(TC_NegSem_0502_Scope_002());
+}
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: There is no local or imported definition with name `v_control'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0502_Scope_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles definitions of local scope >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0502_Scope_003 NegSem_0502_Scope_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @desc Test cases for clause 5.2 Scope rules
+ ** @purpose 1:5.2, Ensure that the IUT correctly handles definitions of local scope
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_0502_Scope_003 {
+
+type component GeneralComp {
+ var integer vc_component := 0;
+}
+
+function f_funcScope() runs on GeneralComp {
+ var integer v_function := 0;
+}
+
+testcase TC_NegSem_0502_Scope_003() runs on GeneralComp {
+ if(true) {
+ var integer v_statement := 0;
+ }
+ if ( match(v_statement, 0) ) {
+ }
+}
+
+control{
+ var integer v_control := 0;
+ execute(TC_NegSem_0502_Scope_003());
+}
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: There is no local or imported definition with name `v_statement'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h2. 0503_ordering_of_declarations folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0503_Ordering_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that declarations are in the allowed ordering >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0503_Ordering_001 NegSem_0503_Ordering_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @desc Test cases for clause 5.2 Scope rules
+ ** @purpose 1:5.3, Ensure that declarations are in the allowed ordering
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_0503_Ordering_001 {
+
+ type component GeneralComp {
+ var integer vc_component := 0;
+ }
+
+ function f_function() runs on GeneralComp {
+ var integer v_function := 0;
+ }
+
+ testcase TC_NegSem_0503_Ordering_001() runs on GeneralComp {
+ if(true) {
+ var integer v_statement := 0;
+ if (v_nested_statement == 0) { // attempt to access a variable defined in the next scope
+ var integer v_nested_statement := 0;
+ }
+
+ }
+ }
+
+ control {
+ var integer v_control := 0;
+ execute(TC_NegSem_0503_Ordering_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: There is no local or imported definition with name `v_nested_statement'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h2. 0504_parametrization folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0504_parametrization_incompatibility_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles received testcase parametrization type incompatibility. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0504_parametrization_incompatibility_001 NegSem_0504_parametrization_incompatibility_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4, Ensure that the IUT correctly handles received testcase parametrization type incompatibility.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_0504_parametrization_incompatibility_001 {
+
+type enumerated MyEnumeratedType {e_black, e_white}
+type integer address;
+
+type record MyRecord {
+ integer field1,
+ boolean field2,
+ address field3,
+ MyEnumeratedType field4,
+ integer field5
+}
+
+
+type component GeneralComp {
+
+}
+
+
+testcase TC_NegSem_0504_parametrization_incompatibility_001 (
+ MyRecord ExpectedMatch,
+ integer p_integer := 0,
+ boolean p_boolean := true,
+ address p_address := null,
+ MyEnumeratedType p_enumerated := e_black,
+ template integer p_integerTemplate := ?
+ ) runs on GeneralComp {
+
+ // MyRecord cannot be built from the default p_integerTemplate parameter
+ var MyRecord ReceivedRecord := {p_integer, p_boolean, p_address, p_enumerated, p_integerTemplate};
+
+ if ( ReceivedRecord == ExpectedMatch ) {
+ setverdict(pass);
+ }
+ else {
+ setverdict(fail);
+ }
+
+}
+
+
+control{
+
+ var MyRecord DefaultValues := {
+ field1 := 0,
+ field2 := true,
+ field3 := null,
+ field4 := e_black,
+ field5 := 1 //any number can be used here to correspond with ? matching
+ }
+
+ execute(TC_NegSem_0504_parametrization_incompatibility_001(DefaultValues));
+}
+
+}
+<END_MODULE>
+
+<RESULT COUNT 2>
+error: integer value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_0504_forbidden_parametrization_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT rejects forbidden module parametrization types. >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_0504_forbidden_parametrization_002 NegSyn_0504_forbidden_parametrization_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4, Ensure that the IUT rejects forbidden module parametrization types.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_0504_forbidden_parametrization_002 {
+
+modulepar { timer TIMER_MODULE_PARAMETER }
+
+type component GeneralComp {
+}
+
+
+testcase TC_NegSyn_0504_forbidden_parametrization_002() runs on GeneralComp {
+}
+
+control{
+ execute(TC_NegSyn_0504_forbidden_parametrization_002());
+}
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `timer': syntax error, unexpected TimerKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050401_top_level_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that error is generated for incompatible actual value of in parameter >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050401_top_level_001 NegSem_050401_top_level_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1, verify that error is generated for incompatible actual value of in parameter
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// If parameters are passed by value (i.e. in case of in and out parameters), type compatibility
+// rules specified in 6.3 apply.
+
+module NegSem_050401_top_level_001 {
+
+ type component GeneralComp {
+ }
+
+ type record R1 {
+ integer field1,
+ integer field2
+ }
+
+ type record R2 {
+ integer option1,
+ integer option2 optional
+ }
+
+ function f(R2 p_rec) {
+ if (match(p_rec, {1, 2})) {
+ setverdict(pass);
+ } else {
+ setverdict(fail, "p_rec value not matching ", p_rec, {1, 2});
+ }
+ }
+
+ testcase TC_NegSem_050401_top_level_001() runs on GeneralComp {
+ var R1 v_rec := {field1 := 1, field2 := 2};
+ f(v_rec);
+ }
+
+ control{
+ execute(TC_NegSem_050401_top_level_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `@NegSem_050401_top_level_001.R2' was expected instead of `@NegSem_050401_top_level_001.R1'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050401_top_level_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that error is generated for incompatible actual value of out parameter >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050401_top_level_002 NegSem_050401_top_level_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1, verify that error is generated for incompatible actual value of out parameter
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// If parameters are passed by value (i.e. in case of in and out parameters), type compatibility
+// rules specified in 6.3 apply.
+
+module NegSem_050401_top_level_002 {
+
+ type component GeneralComp {
+ }
+
+ type record R1 {
+ integer field1,
+ integer field2
+ }
+
+ type record R2 {
+ integer option1,
+ integer option2 optional
+ }
+
+ function f(out R2 p_rec) {
+ p_rec.option1 := 1;
+ p_rec.option2 := 2;
+ }
+
+ testcase TC_NegSem_050401_top_level_002() runs on GeneralComp {
+ var R1 v_rec;
+ f(v_rec);
+ if ( match(v_rec, {1, 2})) { setverdict(pass); }
+ else { setverdict(fail, "p_rec value not matching ", v_rec, {1, 2}); }
+ }
+
+ control{
+ execute(TC_NegSem_050401_top_level_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: Reference to a variable or value parameter of type `@NegSem_050401_top_level_002.R2' was expected instead of `@NegSem_050401_top_level_002.R1'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050401_top_level_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that error is generated if actual inout parameter doesn't adhere to strong typing rules >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050401_top_level_003 NegSem_050401_top_level_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1, verify that error is generated if actual inout parameter doesn't adhere to strong typing rules
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// When parameters are passed by reference, strong typing is required. Both the actual and formal
+// parameter shall be of the same type.
+
+module NegSem_050401_top_level_003 {
+
+ type component GeneralComp {
+ }
+
+ type record R1 {
+ integer field1,
+ integer field2
+ }
+
+ type record R2 {
+ integer option1,
+ integer option2
+ }
+
+ function f(inout R2 p_rec) {
+ if (match(p_rec, {1, 2})) { setverdict(pass); }
+ else { setverdict(fail, "p_rec value not matching ", p_rec, {1, 2}); }
+ }
+
+ testcase TC_NegSem_050401_top_level_003() runs on GeneralComp {
+ var R1 v_rec := { field1 := 1, field2 := 2 };
+ f(v_rec); // R1 and R2 are compatible types, but not the same. Strong typing requires exactly the same types.
+ }
+
+ control{
+ execute(TC_NegSem_050401_top_level_003());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: Reference to a variable or value parameter of type `@NegSem_050401_top_level_003.R2' was expected instead of `@NegSem_050401_top_level_003.R1'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040101_parameters_of_kind_value_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that in value formal parameters of template cannot used dash as default value >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040101_parameters_of_kind_value_001 NegSem_05040101_parameters_of_kind_value_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that in value formal parameters of template cannot used dash as default value
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Formal parameters of modified templates may inherit the default values from the corresponding
+// parameters of their parent templates; this shall explicitly be denoted by using a dash (don't
+// change) symbol at the place of the modified template parameters' default value.
+
+module NegSem_05040101_parameters_of_kind_value_001 {
+
+ type component GeneralComp {
+ }
+
+ type record R
+ {
+ integer field1,
+ integer field2
+ }
+
+ template R m_t(integer p_int1 := 3, in integer p_int2 := -) := {
+ field1 := p_int1,
+ field2 := p_int2
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: integer value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040101_parameters_of_kind_value_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that modified template cannot used dash as default value when original value parameter had no default value >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040101_parameters_of_kind_value_002 NegSem_05040101_parameters_of_kind_value_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that modified template cannot used dash as default value when original value parameter had no default value
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Formal parameters of modified templates may inherit the default values from the corresponding
+// parameters of their parent templates; this shall explicitly be denoted by using a dash (don't
+// change) symbol at the place of the modified template parameters' default value.
+
+module NegSem_05040101_parameters_of_kind_value_002 {
+
+ type component GeneralComp {
+ }
+
+ type record R
+ {
+ integer field1,
+ integer field2
+ }
+
+ template R m_t(integer p_int1, in integer p_int2 := 4) := {
+ field1 := p_int1,
+ field2 := p_int2
+ }
+
+ template R m_tmod(integer p_int1 := -, in integer p_int2 := 6) modifies m_t := {
+ field1 := p_int1,
+ field2 := p_int2
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: integer value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040101_parameters_of_kind_value_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template definitions cannot contain out value formal parameters >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040101_parameters_of_kind_value_003 NegSem_05040101_parameters_of_kind_value_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that template definitions cannot contain out value formal parameters
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction b)
+// Formal value parameters of templates ... shall always be in parameters.
+
+module NegSem_05040101_parameters_of_kind_value_003 {
+ type component GeneralComp {
+ }
+
+ type record R
+ {
+ integer field1,
+ integer field2
+ }
+
+ function f(out integer p_int) return integer {
+ p_int := 2;
+ return p_int;
+ }
+
+ template R m_t(out integer p_int) := {
+ field1 := 0,
+ field2 := f(p_int)
+ }
+
+ testcase TC_NegSem_05040101_parameters_of_kind_value_003() runs on GeneralComp {
+ var integer v_int;
+ log(m_t(v_int));
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_05040101_parameters_of_kind_value_003());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A template cannot have `out' value parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040101_parameters_of_kind_value_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template definitions cannot contain inout value formal parameters >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040101_parameters_of_kind_value_004 NegSem_05040101_parameters_of_kind_value_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that template definitions cannot contain inout value formal parameters
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction b)
+// Formal value parameters of templates ... shall always be in parameters.
+
+module NegSem_05040101_parameters_of_kind_value_004 {
+ type component GeneralComp {
+ }
+
+ type record R
+ {
+ integer field1,
+ integer field2
+ }
+
+ function f(inout integer p_int) return integer {
+ p_int := p_int * 2;
+ return p_int;
+ }
+
+ template R m_t(inout integer p_int) := {
+ field1 := 0,
+ field2 := f(p_int)
+ }
+
+ testcase TC_NegSem_05040101_parameters_of_kind_value_004() runs on GeneralComp {
+ var integer v_int := 1;
+ log(m_t(v_int));
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_05040101_parameters_of_kind_value_004());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A template cannot have `inout' value parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040101_parameters_of_kind_value_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that out value formal parameters cannot have default values >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040101_parameters_of_kind_value_005 NegSem_05040101_parameters_of_kind_value_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that out value formal parameters cannot have default values
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction d)
+// Default values can be provided for in parameters only.
+
+module NegSem_05040101_parameters_of_kind_value_005 {
+ type component GeneralComp {
+ }
+
+ function f(out integer p_int := 5) {
+ }
+
+ testcase TC_NegSem_05040101_parameters_of_kind_value_005() runs on GeneralComp {
+ var integer v_int;
+ f(v_int);
+ log(v_int);
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_05040101_parameters_of_kind_value_005());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or value parameter was expected for an `out' value parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040101_parameters_of_kind_value_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that inout value formal parameters cannot have default values >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040101_parameters_of_kind_value_006 NegSem_05040101_parameters_of_kind_value_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that inout value formal parameters cannot have default values
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction d)
+// Default values can be provided for in parameters only.
+
+module NegSem_05040101_parameters_of_kind_value_006 {
+ type component GeneralComp {
+ }
+
+ function f(inout integer p_int := 5) {
+ }
+
+ testcase TC_NegSem_05040101_parameters_of_kind_value_006() runs on GeneralComp {
+ var integer v_int := 0;
+ f(v_int);
+ log(v_int);
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_05040101_parameters_of_kind_value_006());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or value parameter was expected for an `inout' value parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040101_parameters_of_kind_value_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that incompatible value in default value assignment of value formal parameters causes error >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040101_parameters_of_kind_value_007 NegSem_05040101_parameters_of_kind_value_007.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that incompatible value in default value assignment of value formal parameters causes error
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction e)
+// The expression of the formal parameters' default value has to be compatible with the type of the parameter.
+
+module NegSem_05040101_parameters_of_kind_value_007 {
+ type component GeneralComp {
+ }
+
+ function f(in integer p_int := 5.0) {
+ }
+
+ testcase TC_NegSem_05040101_parameters_of_kind_value_007() runs on GeneralComp {
+ f();
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_05040101_parameters_of_kind_value_007());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: integer value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040101_parameters_of_kind_value_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that default value of value formal parameters cannot reference component variables >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040101_parameters_of_kind_value_008 NegSem_05040101_parameters_of_kind_value_008.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that default value of value formal parameters cannot reference component variables
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction e)
+// The expression shall not refer to elements of the component type of the optional runs on clause.
+
+module NegSem_05040101_parameters_of_kind_value_008 {
+ type component GeneralComp {
+ var integer vc_int := 0;
+ }
+
+ function f(in integer p_int := vc_int) runs on GeneralComp {
+ }
+
+ testcase TC_NegSem_05040101_parameters_of_kind_value_008() runs on GeneralComp {
+ f();
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_05040101_parameters_of_kind_value_008());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a static value was expected instead of variable `@NegSem_05040101_parameters_of_kind_value_008.GeneralComp.vc_int'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040101_parameters_of_kind_value_009 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that default value of value formal parameters cannot reference other parameters >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040101_parameters_of_kind_value_009 NegSem_05040101_parameters_of_kind_value_009.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that default value of value formal parameters cannot reference other parameters
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction e)
+// The expression shall not refer to other parameters of the same parameter list.
+
+module NegSem_05040101_parameters_of_kind_value_009 {
+ type component GeneralComp {
+ }
+
+ function f(in integer p_int, in integer p_int2 := p_int) runs on GeneralComp {
+ }
+
+ testcase TC_NegSem_05040101_parameters_of_kind_value_009() runs on GeneralComp {
+ f(2);
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_05040101_parameters_of_kind_value_009());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: There is no local or imported definition with name `p_int'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040101_parameters_of_kind_value_010 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that default value of value formal parameters cannot invoke functions with runs on clause >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040101_parameters_of_kind_value_010 NegSem_05040101_parameters_of_kind_value_010.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that default value of value formal parameters cannot invoke functions with runs on clause
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction e)
+// The expression shall not contain the invocation of functions with a runs on clause.
+
+module NegSem_05040101_parameters_of_kind_value_010 {
+ type component GeneralComp {
+ var integer vc_int;
+ }
+
+ function fx() runs on GeneralComp return integer {
+ return vc_int + 1;
+ }
+
+ function f(in integer p_int := fx()) runs on GeneralComp {
+ log(p_int);
+ }
+
+ testcase TC_NegSem_05040101_parameters_of_kind_value_010() runs on GeneralComp {
+ f();
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_05040101_parameters_of_kind_value_010());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a static value was expected instead of the return value of function `@NegSem_05040101_parameters_of_kind_value_010.fx'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040101_parameters_of_kind_value_011 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that error is generated if formal value parameter of function contains dash >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040101_parameters_of_kind_value_011 NegSem_05040101_parameters_of_kind_value_011.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that error is generated if formal value parameter of function contains dash
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction h)
+// The dash (don't change) symbol shall be used with formal parameters of modified templates only
+
+module NegSem_05040101_parameters_of_kind_value_011 {
+
+ type component GeneralComp {
+ }
+
+ function f (integer p_int := -) {
+ log(p_int);
+ }
+
+ testcase TC_NegSem_05040102_parameters_of_kind_value_011() runs on GeneralComp {
+ f(1);
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_05040102_parameters_of_kind_value_011());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: integer value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040101_parameters_of_kind_value_012 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that error is generated if formal value parameter of altstep contains dash >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040101_parameters_of_kind_value_012 NegSem_05040101_parameters_of_kind_value_012.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that error is generated if formal value parameter of altstep contains dash
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction h)
+// The dash (don't change) symbol shall be used with formal parameters of modified templates only
+
+module NegSem_05040101_parameters_of_kind_value_012 {
+
+ type component GeneralComp {
+ }
+
+ altstep a(integer p_int := -) {
+ []any timer.timeout {}
+ [else] {}
+ }
+
+ testcase TC_NegSem_05040101_parameters_of_kind_value_012() runs on GeneralComp {
+ a(1);
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_05040101_parameters_of_kind_value_012());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: integer value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040101_parameters_of_kind_value_013 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that error is generated if formal value parameter of test case contains dash >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040101_parameters_of_kind_value_013 NegSem_05040101_parameters_of_kind_value_013.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that error is generated if formal value parameter of test case contains dash
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction h)
+// The dash (don't change) symbol shall be used with formal parameters of modified templates only
+
+module NegSem_05040101_parameters_of_kind_value_013 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_05040101_parameters_of_kind_value_013(integer p_int := -) runs on GeneralComp {
+ log(p_int);
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_05040101_parameters_of_kind_value_013(1));
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: integer value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040101_parameters_of_kind_value_014 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that out formal value parameters cannot have lazy modifier >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040101_parameters_of_kind_value_014 NegSem_05040101_parameters_of_kind_value_014.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that out formal value parameters cannot have lazy modifier
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction j)
+// Only in parameters can be declared lazy or fuzzy.
+
+module NegSem_05040101_parameters_of_kind_value_014 {
+
+ type component GeneralComp {
+ }
+
+ function f(out @lazy integer p_int) {
+ p_int := 6;
+ }
+ testcase TC_NegSem_05040101_parameters_of_kind_value_014() runs on GeneralComp {
+ var integer v_int;
+ f(v_int);
+ log(v_int);
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_05040101_parameters_of_kind_value_014());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `@lazy': syntax error, unexpected TitanSpecificLazyKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040101_parameters_of_kind_value_016 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that inout formal value parameters cannot have lazy modifier >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040101_parameters_of_kind_value_016 NegSem_05040101_parameters_of_kind_value_016.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that inout formal value parameters cannot have lazy modifier
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction j)
+// Only in parameters can be declared lazy or fuzzy.
+
+module NegSem_05040101_parameters_of_kind_value_016 {
+
+ type component GeneralComp {
+ }
+
+ function f(inout @lazy integer p_int) {
+ p_int := 6;
+ }
+ testcase TC_NegSem_05040101_parameters_of_kind_value_016() runs on GeneralComp {
+ var integer v_int := 0;
+ f(v_int);
+ log(v_int);
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_05040101_parameters_of_kind_value_016());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `@lazy': syntax error, unexpected TitanSpecificLazyKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_05040101_parameters_of_kind_value_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that const definition cannot be parameterized >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_05040101_parameters_of_kind_value_001 NegSyn_05040101_parameters_of_kind_value_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that const definition cannot be parameterized
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction a)
+// Language elements which cannot be parameterized are: const, var, timer, control, record of,
+// set of, enumerated, port, component and subtype definitions, group and import.
+
+module NegSyn_05040101_parameters_of_kind_value_001 {
+
+ const integer c_int(integer p_int) := p_int + 2;
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\(': syntax error, unexpected '\(', expecting := or '\['
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_05040101_parameters_of_kind_value_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that var definition cannot be parameterized >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_05040101_parameters_of_kind_value_002 NegSyn_05040101_parameters_of_kind_value_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that var definition cannot be parameterized
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction a)
+// Language elements which cannot be parameterized are: const, var, timer, control, record of,
+// set of, enumerated, port, component and subtype definitions, group and import.
+
+module NegSyn_05040101_parameters_of_kind_value_002 {
+
+ function f() {
+ var integer c_int(integer p_int) := p_int + 2;
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\(': syntax error, unexpected '\('
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_05040101_parameters_of_kind_value_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template variable definition cannot be parameterized >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_05040101_parameters_of_kind_value_003 NegSyn_05040101_parameters_of_kind_value_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that template variable definition cannot be parameterized
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction a)
+// Language elements which cannot be parameterized are: const, var, timer, control, record of,
+// set of, enumerated, port, component and subtype definitions, group and import.
+
+module NegSyn_05040101_parameters_of_kind_value_003 {
+
+ function f() {
+ var template integer c_int(integer p_int) := p_int + 2;
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\(': syntax error, unexpected '\('
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_05040101_parameters_of_kind_value_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that timer definition cannot be parameterized >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_05040101_parameters_of_kind_value_004 NegSyn_05040101_parameters_of_kind_value_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that timer definition cannot be parameterized
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction a)
+// Language elements which cannot be parameterized are: const, var, timer, control, record of,
+// set of, enumerated, port, component and subtype definitions, group and import.
+
+module NegSyn_05040101_parameters_of_kind_value_004 {
+
+ function f() {
+ timer t_timer(float p_float) := p_float * 2;
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\(': syntax error, unexpected '\('
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_05040101_parameters_of_kind_value_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that control definition cannot be parameterized >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_05040101_parameters_of_kind_value_005 NegSyn_05040101_parameters_of_kind_value_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that control definition cannot be parameterized
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction a)
+// Language elements which cannot be parameterized are: const, var, timer, control, record of,
+// set of, enumerated, port, component and subtype definitions, group and import.
+
+module NegSyn_05040101_parameters_of_kind_value_005 {
+
+ control(integer p_int) {
+ log(p_int);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\(': syntax error, unexpected '\('
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_05040101_parameters_of_kind_value_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that record of definition cannot be parameterized >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_05040101_parameters_of_kind_value_006 NegSyn_05040101_parameters_of_kind_value_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that record of definition cannot be parameterized
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction a)
+// Language elements which cannot be parameterized are: const, var, timer, control, record of,
+// set of, enumerated, port, component and subtype definitions, group and import.
+
+module NegSyn_05040101_parameters_of_kind_value_006 {
+
+ type record of integer RoI (integer p_int);
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `integer': syntax error, unexpected IntegerKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_05040101_parameters_of_kind_value_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that set of definition cannot be parameterized >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_05040101_parameters_of_kind_value_007 NegSyn_05040101_parameters_of_kind_value_007.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that set of definition cannot be parameterized
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction a)
+// Language elements which cannot be parameterized are: const, var, timer, control, record of,
+// set of, enumerated, port, component and subtype definitions, group and import.
+
+module NegSyn_05040101_parameters_of_kind_value_007 {
+
+ type set of integer SoI (integer p_int);
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `integer': syntax error, unexpected IntegerKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_05040101_parameters_of_kind_value_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that enumerated definition cannot be parameterized >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_05040101_parameters_of_kind_value_008 NegSyn_05040101_parameters_of_kind_value_008.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that enumerated definition cannot be parameterized
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction a)
+// Language elements which cannot be parameterized are: const, var, timer, control, record of,
+// set of, enumerated, port, component and subtype definitions, group and import.
+
+module NegSyn_05040101_parameters_of_kind_value_008 {
+
+ type enumerated EColour(integer p_int) { red, blue, green }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\(': syntax error, unexpected '\(', expecting '\{'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_05040101_parameters_of_kind_value_009 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that port definition cannot be parameterized >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_05040101_parameters_of_kind_value_009 NegSyn_05040101_parameters_of_kind_value_009.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that port definition cannot be parameterized
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction a)
+// Language elements which cannot be parameterized are: const, var, timer, control, record of,
+// set of, enumerated, port, component and subtype definitions, group and import.
+
+module NegSyn_05040101_parameters_of_kind_value_009 {
+
+ type port P(integer p_int) message {
+ inout integer;
+ map param(integer p_par := p_int);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `map': syntax error, unexpected MapKeyword, expecting InOutParKeyword or InParKeyword or OutParKeyword or '\}'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_05040101_parameters_of_kind_value_010 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that component definition cannot be parameterized >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_05040101_parameters_of_kind_value_010 NegSyn_05040101_parameters_of_kind_value_010.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that component definition cannot be parameterized
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction a)
+// Language elements which cannot be parameterized are: const, var, timer, control, record of,
+// set of, enumerated, port, component and subtype definitions, group and import.
+
+module NegSyn_05040101_parameters_of_kind_value_010 {
+
+ type component C (integer p_int) {
+ var integer v_int := p_int;
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\(': syntax error, unexpected '\(', expecting ExtendsKeyword or '\{'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_05040101_parameters_of_kind_value_011 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that subtype definition cannot be parameterized >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_05040101_parameters_of_kind_value_011 NegSyn_05040101_parameters_of_kind_value_011.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that subtype definition cannot be parameterized
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction a)
+// Language elements which cannot be parameterized are: const, var, timer, control, record of,
+// set of, enumerated, port, component and subtype definitions, group and import.
+
+module NegSyn_05040101_parameters_of_kind_value_011 {
+
+ type integer MyInt(integer p_int);
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `integer': syntax error, unexpected IntegerKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_05040101_parameters_of_kind_value_012 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that group definition cannot be parameterized >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_05040101_parameters_of_kind_value_012 NegSyn_05040101_parameters_of_kind_value_012.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that group definition cannot be parameterized
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction a)
+// Language elements which cannot be parameterized are: const, var, timer, control, record of,
+// set of, enumerated, port, component and subtype definitions, group and import.
+
+module NegSyn_05040101_parameters_of_kind_value_012 {
+
+ group Group1 (integer p_int) {
+ const integer c_int := 2 * p_int;
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\(': syntax error, unexpected '\(', expecting '\{'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_05040101_parameters_of_kind_value_013 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that import definition cannot be parameterized >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_05040101_parameters_of_kind_value_013 NegSyn_05040101_parameters_of_kind_value_013.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.1, verify that import definition cannot be parameterized
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction a)
+// Language elements which cannot be parameterized are: const, var, timer, control, record of,
+// set of, enumerated, port, component and subtype definitions, group and import.
+
+module NegSyn_05040101_parameters_of_kind_value_013 {
+
+ import from Sem_05040101_parameters_of_kind_value_001 (integer INTEGER_MODULE_PARAMETER) all;
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\(': syntax error, unexpected '\(', expecting AllKeyword or '\{'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040102_parameters_of_kind_template_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that in template formal parameters of template cannot used dash as default value >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040102_parameters_of_kind_template_001 NegSem_05040102_parameters_of_kind_template_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.2, verify that in template formal parameters of template cannot used dash as default value
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Formal template parameters of modified templates may inherit their default templates from the
+// corresponding parameters of their parent templates; this shall explicitly be denoted by using
+// a dash (don't change) symbol at the place of the modified template parameter's default template.
+
+module NegSem_05040102_parameters_of_kind_template_001 {
+
+ type component GeneralComp {
+ }
+
+ type record R
+ {
+ integer field1,
+ integer field2
+ }
+
+ template R mw_t(template integer p_int1 := ?, in template integer p_int2 := -) := {
+ field1 := p_int1,
+ field2 := p_int2
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Only modified templates are allowed to use the not used symbol \(`-'\) as the default parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040102_parameters_of_kind_template_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that modified template cannot used dash as default value when original template parameter had no default value >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040102_parameters_of_kind_template_002 NegSem_05040102_parameters_of_kind_template_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.2, verify that modified template cannot used dash as default value when original template parameter had no default value
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Formal template parameters of modified templates may inherit their default templates from the
+// corresponding parameters of their parent templates; this shall explicitly be denoted by using
+// a dash (don't change) symbol at the place of the modified template parameter's default template.
+
+module NegSem_05040102_parameters_of_kind_template_002 {
+
+ type component GeneralComp {
+ }
+
+ type record R
+ {
+ integer field1,
+ integer field2
+ }
+
+ template R m_t(template integer p_int1, in template integer p_int2 := 4) := {
+ field1 := p_int1,
+ field2 := p_int2
+ }
+
+ template R m_tmod(template integer p_int1 := -, in template integer p_int2 := ?) modifies m_t := {
+ field1 := p_int1,
+ field2 := p_int2
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Not used symbol \(`-'\) doesn't have the corresponding default parameter in the base template
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040102_parameters_of_kind_template_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template definitions cannot contain out template formal parameters >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040102_parameters_of_kind_template_003 NegSem_05040102_parameters_of_kind_template_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.2, verify that template definitions cannot contain out template formal parameters
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction b)
+// Formal template parameters of templates ... shall always be in parameters.
+
+module NegSem_05040101_parameters_of_kind_template_003 {
+ type component GeneralComp {
+ }
+
+ type record R
+ {
+ integer field1,
+ integer field2
+ }
+
+ function f(out template integer p_int) return template integer {
+ p_int := ?;
+ return p_int;
+ }
+
+ template R m_t(out template integer p_int) := {
+ field1 := 0,
+ field2 := f(p_int)
+ }
+
+ testcase TC_NegSem_05040101_parameters_of_kind_template_003() runs on GeneralComp {
+ var template integer v_int;
+ log(m_t(v_int));
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_05040101_parameters_of_kind_template_003());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A template cannot have `out' template parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040102_parameters_of_kind_template_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template definitions cannot contain inout template formal parameters >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040102_parameters_of_kind_template_004 NegSem_05040102_parameters_of_kind_template_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.2, verify that template definitions cannot contain inout template formal parameters
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction b)
+// Formal value parameters of templates ... shall always be in parameters.
+
+module NegSem_05040102_parameters_of_kind_template_004 {
+ type component GeneralComp {
+ }
+
+ type record R
+ {
+ integer field1,
+ integer field2
+ }
+
+ function f(inout template integer p_int) return template integer {
+ p_int := ?;
+ return p_int;
+ }
+
+ template R m_t(inout template integer p_int) := {
+ field1 := 0,
+ field2 := f(p_int)
+ }
+
+ testcase TC_NegSem_05040102_parameters_of_kind_template_004() runs on GeneralComp {
+ var template integer v_int := 1;
+ log(m_t(v_int));
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_05040102_parameters_of_kind_template_004());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A template cannot have `inout' template parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040102_parameters_of_kind_template_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that out template formal parameters cannot have default values >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040102_parameters_of_kind_template_005 NegSem_05040102_parameters_of_kind_template_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.2, verify that out template formal parameters cannot have default values
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction c)
+// Default templates can be provided for in parameters only.
+
+module NegSem_05040102_parameters_of_kind_template_005 {
+ type component GeneralComp {
+ }
+
+ function f(out template integer p_int := ?) {
+ }
+
+ testcase TC_NegSem_05040102_parameters_of_kind_template_005() runs on GeneralComp {
+ var template integer v_int;
+ f(v_int);
+ log(v_int);
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_05040102_parameters_of_kind_template_005());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a template variable or template parameter was expected for an `out' template parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040102_parameters_of_kind_template_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that inout template formal parameters cannot have default values >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040102_parameters_of_kind_template_006 NegSem_05040102_parameters_of_kind_template_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.2, verify that inout template formal parameters cannot have default values
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction c)
+// Default templates can be provided for in parameters only.
+
+module NegSem_05040102_parameters_of_kind_template_006 {
+ type component GeneralComp {
+ }
+
+ function f(inout template integer p_int := ?) {
+ }
+
+ testcase TC_NegSem_05040102_parameters_of_kind_template_006() runs on GeneralComp {
+ var template integer v_int := 0;
+ f(v_int);
+ log(v_int);
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_05040102_parameters_of_kind_template_006());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a template variable or template parameter was expected for an `inout' template parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040102_parameters_of_kind_template_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that incompatible template instance in default template assignment of template formal parameters causes error >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040102_parameters_of_kind_template_007 NegSem_05040102_parameters_of_kind_template_007.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.2, verify that incompatible template instance in default template assignment of template formal parameters causes error
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction d)
+// The default template instance has to be compatible with the type of the parameter.
+
+module NegSem_05040102_parameters_of_kind_template_007 {
+ type component GeneralComp {
+ }
+
+ function f(in template integer p_int := (-20.0..5.0)) { //-infinity causes segfault
+ }
+
+ testcase TC_NegSem_05040102_parameters_of_kind_template_007() runs on GeneralComp {
+ f();
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_05040102_parameters_of_kind_template_007());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 2>
+error: integer value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040102_parameters_of_kind_template_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that default template instance of template formal parameters cannot reference component elements >
+
+<COMPILE>
+
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_05040102_parameters_of_kind_template_008 NegSem_05040102_parameters_of_kind_template_008.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.2, verify that default template instance of template formal parameters cannot reference component elements
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction e)
+// The template instance shall not refer to elements of the component type in a runs on clause.
+
+module NegSem_05040102_parameters_of_kind_template_008 {
+ type component GeneralComp {
+ var template integer vc_int := ?;
+ }
+
+ function f(in template integer p_int := vc_int) runs on GeneralComp {
+ }
+
+ testcase TC_NegSem_05040102_parameters_of_kind_template_008() runs on GeneralComp {
+ f();
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_05040102_parameters_of_kind_template_008());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Copying an uninitialized/unsupported integer template.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040102_parameters_of_kind_template_009 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that default template instance of template formal parameters cannot reference component elements >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040102_parameters_of_kind_template_009 NegSem_05040102_parameters_of_kind_template_009.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.2, verify that default template instance of template formal parameters cannot reference other parameters
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction e)
+// The template instance shall not refer to other parameters in the same parameter list.
+
+module NegSem_05040102_parameters_of_kind_template_009 {
+ type component GeneralComp {
+ }
+
+ function f(in template integer p_int, in template integer p_int2 := p_int) runs on GeneralComp {
+ }
+
+ testcase TC_NegSem_05040102_parameters_of_kind_template_009() runs on GeneralComp {
+ f(?);
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_05040102_parameters_of_kind_template_009());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: There is no local or imported definition with name `p_int'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040102_parameters_of_kind_template_010 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that default template instance of template formal parameters cannot reference component elements >
+
+<COMPILE>
+
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_05040102_parameters_of_kind_template_010 NegSem_05040102_parameters_of_kind_template_010.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.2, verify that default template instance of template formal parameters cannot invoke functions with runs on clause
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction e)
+// The template instance shall not contain the invocation of functions with a runs on clause.
+
+module NegSem_05040102_parameters_of_kind_value_010 {
+ type component GeneralComp {
+ var integer vc_int;
+ }
+
+ function fx() runs on GeneralComp return integer {
+ return vc_int + 1;
+ }
+
+ function f(in template integer p_int := fx()) runs on GeneralComp {
+ log(p_int);
+ }
+
+ testcase TC_NegSem_05040101_parameters_of_kind_value_010() runs on GeneralComp {
+ f();
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_05040101_parameters_of_kind_value_010());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Unbound left operand of integer addition.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040102_parameters_of_kind_template_014 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that out formal template parameters cannot have lazy modifier >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040102_parameters_of_kind_template_014 NegSem_05040102_parameters_of_kind_template_014.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.2, verify that out formal template parameters cannot have lazy modifier
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction h)
+// Only in template parameters can be declared lazy or fuzzy.
+
+module NegSem_05040102_parameters_of_kind_template_014 {
+
+ type component GeneralComp {
+ }
+
+ function f(out template @lazy integer p_int) {
+ p_int := ?;
+ }
+ testcase TC_NegSem_05040102_parameters_of_kind_template_014() runs on GeneralComp {
+ var template integer v_int;
+ f(v_int);
+ log(v_int);
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_05040102_parameters_of_kind_template_014());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `@lazy': syntax error, unexpected TitanSpecificLazyKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_05040102_parameters_of_kind_template_016 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that inout formal template parameters cannot have lazy modifier >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_05040102_parameters_of_kind_template_016 NegSem_05040102_parameters_of_kind_template_016.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.1.2, verify that inout formal template parameters cannot have lazy modifier
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Restriction h)
+// Only in template parameters can be declared lazy or fuzzy.
+
+module NegSem_05040102_parameters_of_kind_template_016 {
+
+ type component GeneralComp {
+ }
+
+ function f(inout template @lazy integer p_int) {
+ p_int := ?;
+ }
+ testcase TC_NegSem_05040102_parameters_of_kind_template_016() runs on GeneralComp {
+ var template integer v_int := 0;
+ f(v_int);
+ log(v_int);
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_05040102_parameters_of_kind_template_016());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `@lazy': syntax error, unexpected TitanSpecificLazyKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template parameters cannot be used as in formal value parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_001 NegSem_050402_actual_parameters_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template parameters cannot be used as in formal value parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed by value to in formal value parameters shall be
+// variables, literal values, module parameters, constants, variables, value returning
+// (external) functions, formal value parameters (of in, inout or out parameterization)
+// of the current scope or expressions composed of the above.
+
+module NegSem_050402_actual_parameters_001 {
+
+ type component GeneralComp {
+ }
+
+ template integer m_msg := 1;
+
+ function f_test(in integer p_val) {
+ if (p_val == 1) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_001() runs on GeneralComp {
+ f_test(m_msg); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of template `@NegSem_050402_actual_parameters_001.m_msg'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template variables cannot be used as in formal value parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_002 NegSem_050402_actual_parameters_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template variables cannot be used as in formal value parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed by value to in formal value parameters shall be
+// variables, literal values, module parameters, constants, variables, value returning
+// (external) functions, formal value parameters (of in, inout or out parameterization)
+// of the current scope or expressions composed of the above.
+
+module NegSem_050402_actual_parameters_002 {
+
+ type component GeneralComp {
+ }
+
+ function f_test(in integer p_val) {
+ if (p_val == 2) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_002() runs on GeneralComp {
+ var template integer vm_msg := 2;
+ f_test(vm_msg); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of template variable `vm_msg'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template in parameters cannot be used as in formal value parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_003 NegSem_050402_actual_parameters_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template in parameters cannot be used as in formal value parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed by value to in formal value parameters shall be
+// variables, literal values, module parameters, constants, variables, value returning
+// (external) functions, formal value parameters (of in, inout or out parameterization)
+// of the current scope or expressions composed of the above.
+
+module NegSem_050402_actual_parameters_003 {
+
+ type component GeneralComp {
+ }
+
+ function f_test(in integer p_val) {
+ if (p_val == 3) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ function f_caller(in template integer p_val) {
+ f_test(p_val); // tested parameter passing
+ }
+
+
+ testcase TC_NegSem_050402_actual_parameters_003() runs on GeneralComp {
+ f_caller(3); // this parameter passing is not a subject of the test
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_003());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of template parameter `p_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template out parameters cannot be used as in formal value parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_004 NegSem_050402_actual_parameters_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template out parameters cannot be used as in formal value parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed by value to in formal value parameters shall be
+// variables, literal values, module parameters, constants, variables, value returning
+// (external) functions, formal value parameters (of in, inout or out parameterization)
+// of the current scope or expressions composed of the above.
+
+module NegSem_050402_actual_parameters_004 {
+
+ type component GeneralComp {
+ }
+
+ function f_test(in integer p_val) {
+ if (p_val == 4) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ function f_caller(out template integer p_val) {
+ p_val := 4; // out parameter shall have a value before we can pass it to a function
+ f_test(p_val); // tested parameter passing
+ }
+
+
+ testcase TC_NegSem_050402_actual_parameters_004() runs on GeneralComp {
+ var template integer v_val;
+ f_caller(v_val); // this parameter passing is not a subject of the test
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_004());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of `out' template parameter `p_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template inout parameters cannot be used as in formal value parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_005 NegSem_050402_actual_parameters_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template inout parameters cannot be used as in formal value parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed by value to in formal value parameters shall be
+// variables, literal values, module parameters, constants, variables, value returning
+// (external) functions, formal value parameters (of in, inout or out parameterization)
+// of the current scope or expressions composed of the above.
+
+module NegSem_050402_actual_parameters_005 {
+
+ type component GeneralComp {
+ }
+
+ function f_test(in integer p_val) {
+ if (p_val == 4) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ function f_caller(inout template integer p_val) {
+ f_test(p_val); // tested parameter passing
+ }
+
+
+ testcase TC_NegSem_050402_actual_parameters_005() runs on GeneralComp {
+ var template integer v_val := 5;
+ f_caller(v_val); // this parameter passing is not a subject of the test
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_005());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of `inout' template parameter `p_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template parameters cannot be used as in formal value parameters of templates >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_006 NegSem_050402_actual_parameters_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template parameters cannot be used as in formal value parameters of templates
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed by value to in formal value parameters shall be
+// variables, literal values, module parameters, constants, variables, value returning
+// (external) functions, formal value parameters (of in, inout or out parameterization)
+// of the current scope or expressions composed of the above.
+
+module NegSem_050402_actual_parameters_006 {
+
+ type component GeneralComp {
+ }
+
+ template integer m_msg := 1;
+
+ template integer m_test(in integer p_val) := 5 + p_val;
+
+ testcase TC_NegSem_050402_actual_parameters_006() runs on GeneralComp {
+ if (match(6, m_test(m_msg))) { // tested parameter passing
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_006());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of template `@NegSem_050402_actual_parameters_006.m_msg'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template variables cannot be used as in formal value parameters of templates >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_007 NegSem_050402_actual_parameters_007.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template variables cannot be used as in formal value parameters of templates
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed by value to in formal value parameters shall be
+// variables, literal values, module parameters, constants, variables, value returning
+// (external) functions, formal value parameters (of in, inout or out parameterization)
+// of the current scope or expressions composed of the above.
+
+module NegSem_050402_actual_parameters_007 {
+
+ type component GeneralComp {
+ }
+
+ template integer m_test(in integer p_val) := 5 + p_val;
+
+ testcase TC_NegSem_050402_actual_parameters_007() runs on GeneralComp {
+ var template integer vm_msg := 2;
+ if (match(7, m_test(vm_msg))) { // tested parameter passing
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_007());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of template variable `vm_msg'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template in parameters cannot be used as in formal value parameters of templates >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_008 NegSem_050402_actual_parameters_008.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template in parameters cannot be used as in formal value parameters of templates
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed by value to in formal value parameters shall be
+// variables, literal values, module parameters, constants, variables, value returning
+// (external) functions, formal value parameters (of in, inout or out parameterization)
+// of the current scope or expressions composed of the above.
+
+module NegSem_050402_actual_parameters_008 {
+
+ type component GeneralComp {
+ }
+
+ template integer m_test(in integer p_val) := 5 + p_val;
+
+ function f_caller(in template integer p_val) {
+ if (match(8, m_test(p_val))) { // tested parameter passing
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+
+ testcase TC_NegSem_050402_actual_parameters_008() runs on GeneralComp {
+ f_caller(3); // this parameter passing is not a subject of the test
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_008());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of template parameter `p_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_009 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template out parameters cannot be used as in formal value parameters of templates >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_009 NegSem_050402_actual_parameters_009.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template out parameters cannot be used as in formal value parameters of templates
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed by value to in formal value parameters shall be
+// variables, literal values, module parameters, constants, variables, value returning
+// (external) functions, formal value parameters (of in, inout or out parameterization)
+// of the current scope or expressions composed of the above.
+
+module NegSem_050402_actual_parameters_009 {
+
+ type component GeneralComp {
+ }
+
+ template integer m_test(in integer p_val) := 5 + p_val;
+
+ function f_caller(out template integer p_val) {
+ p_val := 4; // out parameter shall have a value before we can pass it to a function
+ if (match(9, m_test(p_val))) { // tested parameter passing
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+
+ testcase TC_NegSem_050402_actual_parameters_009() runs on GeneralComp {
+ var template integer v_val;
+ f_caller(v_val); // this parameter passing is not a subject of the test
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_009());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of `out' template parameter `p_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_010 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template out parameters cannot be used as in formal value parameters of templates >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_010 NegSem_050402_actual_parameters_010.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template inout parameters cannot be used as in formal value parameters of templates
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed by value to in formal value parameters shall be
+// variables, literal values, module parameters, constants, variables, value returning
+// (external) functions, formal value parameters (of in, inout or out parameterization)
+// of the current scope or expressions composed of the above.
+
+module NegSem_050402_actual_parameters_010 {
+
+ type component GeneralComp {
+ }
+
+ template integer m_test(in integer p_val) := 5 + p_val;
+
+ function f_caller(inout template integer p_val) {
+ if (match(10, m_test(p_val))) { // tested parameter passing
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+
+ testcase TC_NegSem_050402_actual_parameters_010() runs on GeneralComp {
+ var template integer v_val := 5;
+ f_caller(v_val); // this parameter passing is not a subject of the test
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_010());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of `inout' template parameter `p_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_011 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template parameters cannot be used as in formal value parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_011 NegSem_050402_actual_parameters_011.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template parameters cannot be used as in formal value parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed by value to in formal value parameters shall be
+// variables, literal values, module parameters, constants, variables, value returning
+// (external) functions, formal value parameters (of in, inout or out parameterization)
+// of the current scope or expressions composed of the above.
+
+module NegSem_050402_actual_parameters_011 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ template integer m_msg := 1;
+
+ altstep a_test(integer p_val) runs on GeneralComp {
+ []t.timeout {
+ if (p_val == 1) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_011() runs on GeneralComp {
+ t.start;
+ a_test(m_msg); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_011());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of template `@NegSem_050402_actual_parameters_011.m_msg'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_012 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template variables cannot be used as in formal value parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_012 NegSem_050402_actual_parameters_012.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template variables cannot be used as in formal value parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed by value to in formal value parameters shall be
+// variables, literal values, module parameters, constants, variables, value returning
+// (external) functions, formal value parameters (of in, inout or out parameterization)
+// of the current scope or expressions composed of the above.
+
+module NegSem_050402_actual_parameters_012 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ altstep a_test(integer p_val) runs on GeneralComp {
+ []t.timeout {
+ if (p_val == 2) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_012() runs on GeneralComp {
+ var template integer vm_msg := 2;
+ t.start;
+ a_test(vm_msg); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_012());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of template variable `vm_msg'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_014 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template out parameters cannot be used as in formal value parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_014 NegSem_050402_actual_parameters_014.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template out parameters cannot be used as in formal value parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed by value to in formal value parameters shall be
+// variables, literal values, module parameters, constants, variables, value returning
+// (external) functions, formal value parameters (of in, inout or out parameterization)
+// of the current scope or expressions composed of the above.
+
+module NegSem_050402_actual_parameters_014 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ altstep a_test(integer p_val) runs on GeneralComp {
+ []t.timeout {
+ if (p_val == 4) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+ }
+
+ function f_caller(out template integer p_val) runs on GeneralComp {
+ p_val := 4; // out parameter shall have a value before we can pass it to a function
+ a_test(p_val); // tested parameter passing
+ }
+
+
+ testcase TC_NegSem_050402_actual_parameters_014() runs on GeneralComp {
+ var template integer v_val;
+ t.start;
+ f_caller(v_val); // this parameter passing is not a subject of the test
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_014());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of `out' template parameter `p_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_015 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template inout parameters cannot be used as in formal value parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_015 NegSem_050402_actual_parameters_015.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template inout parameters cannot be used as in formal value parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed by value to in formal value parameters shall be
+// variables, literal values, module parameters, constants, variables, value returning
+// (external) functions, formal value parameters (of in, inout or out parameterization)
+// of the current scope or expressions composed of the above.
+
+module NegSem_050402_actual_parameters_015 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ altstep a_test(integer p_val) runs on GeneralComp {
+ []t.timeout {
+ if (p_val == 5) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+ }
+
+ function f_caller(inout template integer p_val) runs on GeneralComp {
+ a_test(p_val); // tested parameter passing
+ }
+
+
+ testcase TC_NegSem_050402_actual_parameters_015() runs on GeneralComp {
+ var template integer v_val := 5;
+ t.start;
+ f_caller(v_val); // this parameter passing is not a subject of the test
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_015());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of `inout' template parameter `p_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_016 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template inout parameters cannot be used as in formal value parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_016 NegSem_050402_actual_parameters_016.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template parameters cannot be used as in formal value parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed by value to in formal value parameters shall be
+// variables, literal values, module parameters, constants, variables, value returning
+// (external) functions, formal value parameters (of in, inout or out parameterization)
+// of the current scope or expressions composed of the above.
+
+module NegSem_050402_actual_parameters_016 {
+
+ type component GeneralComp {
+ }
+
+ template integer m_msg := 1;
+
+ testcase TC_NegSem_050402_actual_parameters_016(in integer p_val) runs on GeneralComp {
+ if (p_val == 1) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_016(m_msg)); // tested parameter passing
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of template `@NegSem_050402_actual_parameters_016.m_msg'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_017 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template variables cannot be used as in formal value parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_017 NegSem_050402_actual_parameters_017.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template variables cannot be used as in formal value parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed by value to in formal value parameters shall be
+// variables, literal values, module parameters, constants, variables, value returning
+// (external) functions, formal value parameters (of in, inout or out parameterization)
+// of the current scope or expressions composed of the above.
+
+module NegSem_050402_actual_parameters_017 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_017(in integer p_val) runs on GeneralComp {
+ if (p_val == 2) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control {
+ var template integer vm_msg := 2;
+ execute(TC_NegSem_050402_actual_parameters_017(vm_msg)); // tested parameter passing
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of template variable `vm_msg'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_018 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template in parameters cannot be used as in formal value parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_018 NegSem_050402_actual_parameters_018.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template in parameters cannot be used as in formal value parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed by value to in formal value parameters shall be
+// variables, literal values, module parameters, constants, variables, value returning
+// (external) functions, formal value parameters (of in, inout or out parameterization)
+// of the current scope or expressions composed of the above.
+
+module NegSem_050402_actual_parameters_018 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_018(in integer p_val) runs on GeneralComp {
+ if (p_val == 3) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ function f_caller(in template integer p_val) {
+ execute(TC_NegSem_050402_actual_parameters_018(p_val)); // tested parameter passing
+ }
+
+ control {
+ f_caller(3); // this parameter passing is not a subject of the test
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of template parameter `p_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_019 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template out parameters cannot be used as in formal value parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_019 NegSem_050402_actual_parameters_019.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template out parameters cannot be used as in formal value parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed by value to in formal value parameters shall be
+// variables, literal values, module parameters, constants, variables, value returning
+// (external) functions, formal value parameters (of in, inout or out parameterization)
+// of the current scope or expressions composed of the above.
+
+module NegSem_050402_actual_parameters_019 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_019(in integer p_val) runs on GeneralComp {
+ if (p_val == 4) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ function f_caller(out template integer p_val) {
+ p_val := 4; // out parameter shall have a value before we can pass it to a function
+ execute(TC_NegSem_050402_actual_parameters_019(p_val)); // tested parameter passing
+ }
+
+ control {
+ var template integer vm_val;
+ f_caller(vm_val);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of `out' template parameter `p_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_020 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template inout parameters cannot be used as in formal value parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_020 NegSem_050402_actual_parameters_020.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template inout parameters cannot be used as in formal value parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed by value to in formal value parameters shall be
+// variables, literal values, module parameters, constants, variables, value returning
+// (external) functions, formal value parameters (of in, inout or out parameterization)
+// of the current scope or expressions composed of the above.
+
+module NegSem_050402_actual_parameters_020 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_020(in integer p_val) runs on GeneralComp {
+ if (p_val == 5) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ function f_caller(inout template integer p_val) {
+ execute(TC_NegSem_050402_actual_parameters_020(p_val)); // tested parameter passing
+ }
+
+ control {
+ var template integer vm_val := 5;
+ f_caller(vm_val);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of `inout' template parameter `p_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_021 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that literals cannot be used as inout formal value parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_021 NegSem_050402_actual_parameters_021.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that literals cannot be used as inout formal value parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_021 {
+
+ type component GeneralComp {
+ }
+
+ function f_test(inout integer p_val) {
+ if (p_val == 1) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_021() runs on GeneralComp {
+ f_test(1); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_021());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or value parameter was expected for an `inout' value parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_022 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that literals cannot be used as inout formal value parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_022 NegSem_050402_actual_parameters_022.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that module parameters cannot be used as inout formal value parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_022 {
+
+ type component GeneralComp {
+ }
+
+ modulepar integer PX_VAL := 2;
+
+ function f_test(inout integer p_val) {
+ if (p_val == 2) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_022() runs on GeneralComp {
+ f_test(PX_VAL); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_022());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of module parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_023 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that constants cannot be used as inout formal value parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_023 NegSem_050402_actual_parameters_023.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that constants cannot be used as inout formal value parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_023 {
+
+ type component GeneralComp {
+ }
+
+ const integer c_val := 3;
+
+ function f_test(inout integer p_val) {
+ if (p_val == 3) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_023() runs on GeneralComp {
+ f_test(c_val); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_023());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of constant
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_024 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that function calls cannot be used as inout formal value parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_024 NegSem_050402_actual_parameters_024.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that function calls cannot be used as inout formal value parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_024 {
+
+ type component GeneralComp {
+ }
+
+ function f_ret() return integer {
+ return 5;
+ }
+
+ function f_test(inout integer p_val) {
+ if (p_val == 5) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_024() runs on GeneralComp {
+ f_test(f_ret()); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_024());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of function
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_025 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that expressions cannot be used as inout formal value parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_025 NegSem_050402_actual_parameters_025.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that expressions cannot be used as inout formal value parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_025 {
+
+ type component GeneralComp {
+ }
+
+ function f_ret() return integer {
+ return 4;
+ }
+
+ function f_test(inout integer p_val) {
+ if (p_val == 9) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_025() runs on GeneralComp {
+ var integer v_val := 5;
+ f_test(10 + f_ret() - v_val); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_025());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or value parameter was expected for an `inout' value parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_026 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template parameters cannot be used as inout formal value parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_026 NegSem_050402_actual_parameters_026.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template parameters cannot be used as inout formal value parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_026 {
+
+ type component GeneralComp {
+ }
+
+ template integer m_msg := 1;
+
+ function f_test(inout integer p_val) {
+ if (p_val == 1) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_026() runs on GeneralComp {
+ f_test(m_msg); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_026());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of template
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_027 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template variables cannot be used as inout formal value parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_027 NegSem_050402_actual_parameters_027.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template variables cannot be used as inout formal value parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_027 {
+
+ type component GeneralComp {
+ }
+
+ function f_test(inout integer p_val) {
+ if (p_val == 2) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_027() runs on GeneralComp {
+ var template integer vm_msg := 2;
+ f_test(vm_msg); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_027());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of template variable `vm_msg'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_028 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template in parameters cannot be used as inout formal value parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_028 NegSem_050402_actual_parameters_028.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template in parameters cannot be used as inout formal value parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_028 {
+
+ type component GeneralComp {
+ }
+
+ function f_test(inout integer p_val) {
+ if (p_val == 3) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ function f_caller(in template integer p_val) {
+ f_test(p_val); // tested parameter passing
+ }
+
+
+ testcase TC_NegSem_050402_actual_parameters_028() runs on GeneralComp {
+ f_caller(3); // this parameter passing is not a subject of the test
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_028());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of template parameter `p_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_029 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template out parameters cannot be used as inout formal value parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_029 NegSem_050402_actual_parameters_029.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template out parameters cannot be used as inout formal value parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_029 {
+
+ type component GeneralComp {
+ }
+
+ function f_test(inout integer p_val) {
+ if (p_val == 4) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ function f_caller(out template integer p_val) {
+ p_val := 4; // out parameter shall have a value before we can pass it to a function
+ f_test(p_val); // tested parameter passing
+ }
+
+
+ testcase TC_NegSem_050402_actual_parameters_029() runs on GeneralComp {
+ var template integer v_val;
+ f_caller(v_val); // this parameter passing is not a subject of the test
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_029());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of `out' template parameter `p_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_030 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template inout parameters cannot be used as inout formal value parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_030 NegSem_050402_actual_parameters_030.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template inout parameters cannot be used as inout formal value parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_030 {
+
+ type component GeneralComp {
+ }
+
+ function f_test(in integer p_val) {
+ if (p_val == 4) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ function f_caller(inout template integer p_val) {
+ f_test(p_val); // tested parameter passing
+ }
+
+
+ testcase TC_NegSem_050402_actual_parameters_030() runs on GeneralComp {
+ var template integer v_val := 5;
+ f_caller(v_val); // this parameter passing is not a subject of the test
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_030());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of `inout' template parameter `p_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_031 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template variable element reference cannot be used as inout formal value parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_031 NegSem_050402_actual_parameters_031.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template variable element reference cannot be used as inout formal value parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_031 {
+
+ type component GeneralComp {
+ }
+
+ type record R {
+ integer field1
+ }
+
+ function f_test(inout integer p_val) {
+ if (p_val == 10) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_031() runs on GeneralComp {
+ var template R v_val := { field1 := 10 };
+ f_test(v_val.field1); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_031());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of template variable `v_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_032 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that reference to elements of formal value parameters cannot be used as inout formal value parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_032 NegSem_050402_actual_parameters_032.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that reference to elements of formal value parameters cannot be used as inout formal value parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_032 {
+
+ type component GeneralComp {
+ }
+
+ type record R {
+ integer field1
+ }
+
+ function f_test(inout integer p_val) {
+ if (p_val == 11) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ function f_caller(in template R p_param) {
+ f_test(p_param.field1); // tested parameter passing
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_032() runs on GeneralComp {
+ f_caller({field1 := 11 });
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_032());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of template parameter `p_param'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_033 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that literals cannot be used as inout formal value parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_033 NegSem_050402_actual_parameters_033.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that literals cannot be used as inout formal value parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_033 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ altstep a_test(inout integer p_val) runs on GeneralComp {
+ []t.timeout {
+ if (p_val == 1) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_033() runs on GeneralComp {
+ t.start;
+ a_test(1); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_033());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or value parameter was expected for an `inout' value parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_034 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that module parameters cannot be used as inout formal value parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_034 NegSem_050402_actual_parameters_034.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that module parameters cannot be used as inout formal value parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_034 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ modulepar integer PX_VAL := 2;
+
+ altstep a_test(inout integer p_val) runs on GeneralComp {
+ []t.timeout {
+ if (p_val == 2) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_034() runs on GeneralComp {
+ t.start;
+ a_test(PX_VAL); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_034());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of module parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_035 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that constants cannot be used as inout formal value parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_035 NegSem_050402_actual_parameters_035.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that constants cannot be used as inout formal value parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_035 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ const integer c_val := 3;
+
+ altstep a_test(inout integer p_val) runs on GeneralComp {
+ []t.timeout {
+ if (p_val == 3) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_035() runs on GeneralComp {
+ t.start;
+ a_test(c_val); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_035());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of constant `@NegSem_050402_actual_parameters_035.c_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_036 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that function calls cannot be used as inout formal value parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_036 NegSem_050402_actual_parameters_036.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that function calls cannot be used as inout formal value parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_036 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ function f_ret() return integer {
+ return 5;
+ }
+
+ altstep a_test(inout integer p_val) runs on GeneralComp {
+ []t.timeout {
+ if (p_val == 5) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_036() runs on GeneralComp {
+ t.start;
+ a_test(f_ret()); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_036());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of function `@NegSem_050402_actual_parameters_036.f_ret'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_037 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that expressions cannot be used as inout formal value parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_037 NegSem_050402_actual_parameters_037.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that expressions cannot be used as inout formal value parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_037 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ function f_ret() return integer {
+ return 4;
+ }
+
+ altstep a_test(inout integer p_val) runs on GeneralComp {
+ []t.timeout {
+ if (p_val == 9) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_037() runs on GeneralComp {
+ var integer v_val := 5;
+ t.start;
+ a_test(10 + f_ret() - v_val); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_037());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or value parameter was expected for an `inout' value parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_038 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template parameters cannot be used as inout formal value parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_038 NegSem_050402_actual_parameters_038.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template parameters cannot be used as inout formal value parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_038 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ template integer m_msg := 1;
+
+ altstep a_test(inout integer p_val) runs on GeneralComp {
+ []t.timeout {
+ if (p_val == 1) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_038() runs on GeneralComp {
+ t.start;
+ a_test(m_msg); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_038());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of template
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_039 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template variables cannot be used as inout formal value parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_039 NegSem_050402_actual_parameters_039.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template variables cannot be used as inout formal value parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_039 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ altstep a_test(inout integer p_val) runs on GeneralComp {
+ []t.timeout {
+ if (p_val == 1) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_039() runs on GeneralComp {
+ var template integer vm_msg := 2;
+ t.start;
+ a_test(vm_msg); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_039());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of template variable `vm_msg'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_040 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template in parameters cannot be used as inout formal value parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_040 NegSem_050402_actual_parameters_040.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template in parameters cannot be used as inout formal value parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types..
+
+module NegSem_050402_actual_parameters_040 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ altstep a_test(inout integer p_val) runs on GeneralComp {
+ []t.timeout {
+ if (p_val == 1) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+ }
+
+ function f_caller(in template integer p_val) runs on GeneralComp {
+ a_test(p_val); // tested parameter passing
+ }
+
+
+ testcase TC_NegSem_050402_actual_parameters_040() runs on GeneralComp {
+ t.start;
+ f_caller(3); // this parameter passing is not a subject of the test
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_040());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of template parameter `p_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_041 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template out parameters cannot be used as inout formal value parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_041 NegSem_050402_actual_parameters_041.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template out parameters cannot be used as inout formal value parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_041 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ altstep a_test(inout integer p_val) runs on GeneralComp {
+ []t.timeout {
+ if (p_val == 1) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+ }
+
+ function f_caller(out template integer p_val) runs on GeneralComp {
+ p_val := 4; // out parameter shall have a value before we can pass it to a function
+ a_test(p_val); // tested parameter passing
+ }
+
+
+ testcase TC_NegSem_050402_actual_parameters_041() runs on GeneralComp {
+ var template integer v_val;
+ t.start;
+ f_caller(v_val); // this parameter passing is not a subject of the test
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_041());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of `out' template parameter `p_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_042 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template inout parameters cannot be used as inout formal value parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_042 NegSem_050402_actual_parameters_042.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template inout parameters cannot be used as inout formal value parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_042 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ altstep a_test(inout integer p_val) runs on GeneralComp {
+ []t.timeout {
+ if (p_val == 1) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+ }
+
+ function f_caller(inout template integer p_val) runs on GeneralComp {
+ a_test(p_val); // tested parameter passing
+ }
+
+
+ testcase TC_NegSem_050402_actual_parameters_042() runs on GeneralComp {
+ var template integer v_val := 5;
+ t.start;
+ f_caller(v_val); // this parameter passing is not a subject of the test
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_042());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of `inout' template parameter `p_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_043 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template variable element reference cannot be used as inout formal value parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_043 NegSem_050402_actual_parameters_043.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template variable element reference cannot be used as inout formal value parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_043 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ type record R {
+ integer field1
+ }
+
+ altstep a_test(inout integer p_val) runs on GeneralComp {
+ []t.timeout {
+ if (p_val == 10) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_043() runs on GeneralComp {
+ var template R v_val := { field1 := 10 };
+ t.start;
+ a_test(v_val.field1); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_043());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of template variable `v_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_044 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that reference to elements of formal value parameters cannot be used as inout formal value parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_044 NegSem_050402_actual_parameters_044.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that reference to elements of formal value parameters cannot be used as inout formal value parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_044 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ type record R {
+ integer field1
+ }
+
+ altstep a_test(inout integer p_val) runs on GeneralComp {
+ []t.timeout {
+ if (p_val == 11) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+ }
+
+ function f_caller(in template R p_param) runs on GeneralComp {
+ a_test(p_param.field1); // tested parameter passing
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_044() runs on GeneralComp {
+ t.start;
+ f_caller({field1 := 11 });
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_044());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of template parameter `p_param'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_045 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that literals cannot be used as inout formal value parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_045 NegSem_050402_actual_parameters_045.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that literals cannot be used as inout formal value parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_045 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_045(inout integer p_val) runs on GeneralComp {
+ if (p_val == 1) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_045(1)); // tested parameter passing
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a variable or value parameter was expected for an `inout' value parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_046 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that module parameters cannot be used as inout formal value parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_046 NegSem_050402_actual_parameters_046.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that module parameters cannot be used as inout formal value parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_046 {
+
+ type component GeneralComp {
+ }
+
+ modulepar integer PX_VAL := 2;
+
+ testcase TC_NegSem_050402_actual_parameters_046(inout integer p_val) runs on GeneralComp {
+ if (p_val == 2) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_046(PX_VAL)); // tested parameter passing
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of module parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_047 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that constants cannot be used as inout formal value parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_047 NegSem_050402_actual_parameters_047.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that constants cannot be used as inout formal value parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_047 {
+
+ type component GeneralComp {
+ }
+
+ const integer c_val := 3;
+
+ testcase TC_NegSem_050402_actual_parameters_047(inout integer p_val) runs on GeneralComp {
+ if (p_val == 3) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_047(c_val)); // tested parameter passing
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of constant
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_048 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that function calls cannot be used as inout formal value parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_048 NegSem_050402_actual_parameters_048.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that function calls cannot be used as inout formal value parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_048 {
+
+ type component GeneralComp {
+ }
+
+ function f_ret() return integer {
+ return 5;
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_048(inout integer p_val) runs on GeneralComp {
+ if (p_val == 5) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_048(f_ret())); // tested parameter passing
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of function `@NegSem_050402_actual_parameters_048.f_ret'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_049 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that expressions cannot be used as inout formal value parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_049 NegSem_050402_actual_parameters_049.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that expressions cannot be used as inout formal value parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_049 {
+
+ type component GeneralComp {
+ }
+
+ function f_ret() return integer {
+ return 4;
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_049(inout integer p_val) runs on GeneralComp {
+ if (p_val == 9) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control {
+ var integer v_val := 5;
+ execute(TC_NegSem_050402_actual_parameters_049(10 + f_ret() - v_val)); // tested parameter passing
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a variable or value parameter was expected for an `inout' value parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_050 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template parameters cannot be used as inout formal value parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_050 NegSem_050402_actual_parameters_050.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template parameters cannot be used as inout formal value parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_050 {
+
+ type component GeneralComp {
+ }
+
+ template integer m_msg := 1;
+
+ testcase TC_NegSem_050402_actual_parameters_050(inout integer p_val) runs on GeneralComp {
+ if (p_val == 1) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_050(m_msg)); // tested parameter passing
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of template `@NegSem_050402_actual_parameters_050.m_msg'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_051 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template variables cannot be used as inout formal value parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_051 NegSem_050402_actual_parameters_051.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template variables cannot be used as inout formal value parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+module NegSem_050402_actual_parameters_051 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_051(inout integer p_val) runs on GeneralComp {
+ if (p_val == 2) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control {
+ var template integer vm_msg := 2;
+ execute(TC_NegSem_050402_actual_parameters_051(vm_msg)); // tested parameter passing
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of template variable `vm_msg'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_052 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template in parameters cannot be used as inout formal value parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_052 NegSem_050402_actual_parameters_052.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template in parameters cannot be used as inout formal value parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_052 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_052(inout integer p_val) runs on GeneralComp {
+ if (p_val == 3) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ function f_caller(in template integer p_val) {
+ execute(TC_NegSem_050402_actual_parameters_052(p_val)); // tested parameter passing
+ }
+
+ control {
+ f_caller(3); // this parameter passing is not a subject of the test
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of template parameter `p_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_053 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template in parameters cannot be used as inout formal value parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_053 NegSem_050402_actual_parameters_053.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template out parameters cannot be used as inout formal value parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_053 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_053(inout integer p_val) runs on GeneralComp {
+ if (p_val == 4) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ function f_caller(out template integer p_val) {
+ p_val := 4; // out parameter shall have a value before we can pass it to a function
+ execute(TC_NegSem_050402_actual_parameters_053(p_val)); // tested parameter passing
+ }
+
+ control {
+ var template integer vm_val;
+ f_caller(vm_val);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of `out' template parameter `p_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_054 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template inout parameters cannot be used as inout formal value parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_054 NegSem_050402_actual_parameters_054.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template inout parameters cannot be used as inout formal value parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_054 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_054(inout integer p_val) runs on GeneralComp {
+ if (p_val == 5) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ function f_caller(inout template integer p_val) {
+ execute(TC_NegSem_050402_actual_parameters_054(p_val)); // tested parameter passing
+ }
+
+ control {
+ var template integer vm_val := 5;
+ f_caller(vm_val);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of `inout' template parameter `p_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_055 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template variable element reference cannot be used as inout formal value parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_055 NegSem_050402_actual_parameters_055.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template variable element reference cannot be used as inout formal value parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_055 {
+
+ type component GeneralComp {
+ }
+
+ type record R {
+ integer field1
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_055(inout integer p_val) runs on GeneralComp {
+ if (p_val == 10) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control {
+ var template R v_val := { field1 := 10 };
+ execute(TC_NegSem_050402_actual_parameters_055(v_val.field1)); // tested parameter passing
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of template variable `v_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_056 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that reference to elements of formal value parameters cannot be used as inout formal value parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_056 NegSem_050402_actual_parameters_056.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that reference to elements of formal value parameters cannot be used as inout formal value parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+
+module NegSem_050402_actual_parameters_056 {
+
+ type component GeneralComp {
+ }
+
+ type record R {
+ integer field1
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_056(inout integer p_val) runs on GeneralComp {
+ if (p_val == 11) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ function f_caller(in template R p_param) {
+ execute(TC_NegSem_050402_actual_parameters_056(p_param.field1)); // tested parameter passing
+ }
+
+ control {
+ f_caller({field1 := 11 });
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a variable or value parameter was expected for an `inout' value parameter instead of template parameter `p_param'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_057 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that literals cannot be used as out formal template parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_057 NegSem_050402_actual_parameters_057.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that literals cannot be used as out formal template parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to out formal template parameters shall be variables,
+// template variables, formal value parameters, formal template parameters or references
+// to elements of variables, template variables, formal value parameters or formal template
+// parameters of structured types.
+
+module NegSem_050402_actual_parameters_057 {
+
+ type component GeneralComp {
+ }
+
+ function f_test(out template integer p_val) {
+ p_val := ?;
+ setverdict(pass);
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_057() runs on GeneralComp {
+ f_test(1); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_057());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `out' template parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_058 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that module parameters cannot be used as out formal template parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_058 NegSem_050402_actual_parameters_058.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that module parameters cannot be used as out formal template parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to out formal template parameters shall be variables,
+// template variables, formal value parameters, formal template parameters or references
+// to elements of variables, template variables, formal value parameters or formal template
+// parameters of structured types.
+
+module NegSem_050402_actual_parameters_058 {
+
+ type component GeneralComp {
+ }
+
+ modulepar integer PX_VAL := 2;
+
+ function f_test(out template integer p_val) {
+ p_val := ?;
+ setverdict(pass);
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_058() runs on GeneralComp {
+ f_test(PX_VAL); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_058());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `out' template parameter instead of module parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_059 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that constants cannot be used as out formal template parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_059 NegSem_050402_actual_parameters_059.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that constants cannot be used as out formal template parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to out formal template parameters shall be variables,
+// template variables, formal value parameters, formal template parameters or references
+// to elements of variables, template variables, formal value parameters or formal template
+// parameters of structured types.
+
+module NegSem_050402_actual_parameters_059 {
+
+ type component GeneralComp {
+ }
+
+ const integer c_val := 3;
+
+ function f_test(out template integer p_val) {
+ p_val := ?;
+ setverdict(pass);
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_059() runs on GeneralComp {
+ f_test(c_val); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_059());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `out' template parameter instead of constant
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_060 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that function calls cannot be used as out formal template parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_060 NegSem_050402_actual_parameters_060.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that function calls cannot be used as out formal template parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to out formal template parameters shall be variables,
+// template variables, formal value parameters, formal template parameters or references
+// to elements of variables, template variables, formal value parameters or formal template
+// parameters of structured types.
+
+module NegSem_050402_actual_parameters_060 {
+
+ type component GeneralComp {
+ }
+
+ function f_ret() return integer {
+ return 5;
+ }
+
+ function f_test(out template integer p_val) {
+ p_val := ?;
+ setverdict(pass);
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_060() runs on GeneralComp {
+ f_test(f_ret()); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_060());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `out' template parameter instead of function
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_061 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that expressions cannot be used as out formal template parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_061 NegSem_050402_actual_parameters_061.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that expressions cannot be used as out formal template parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to out formal template parameters shall be variables,
+// template variables, formal value parameters, formal template parameters or references
+// to elements of variables, template variables, formal value parameters or formal template
+// parameters of structured types.
+
+module NegSem_050402_actual_parameters_061 {
+
+ type component GeneralComp {
+ }
+
+ function f_ret() return integer {
+ return 4;
+ }
+
+ function f_test(out template integer p_val) {
+ p_val := ?;
+ setverdict(pass);
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_061() runs on GeneralComp {
+ var integer v_val := 5;
+ f_test(10 + f_ret() - v_val); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_061());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `out' template parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_062 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template parameters cannot be used as out formal template parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_062 NegSem_050402_actual_parameters_062.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template parameters cannot be used as out formal template parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to out formal template parameters shall be variables,
+// template variables, formal value parameters, formal template parameters or references
+// to elements of variables, template variables, formal value parameters or formal template
+// parameters of structured types.
+
+module NegSem_050402_actual_parameters_062 {
+
+ type component GeneralComp {
+ }
+
+ template integer m_msg := 1;
+
+ function f_test(out template integer p_val) {
+ p_val := ?;
+ setverdict(pass);
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_062() runs on GeneralComp {
+ f_test(m_msg); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_062());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `out' template parameter instead of template `@NegSem_050402_actual_parameters_062.m_msg'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_063 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that literals cannot be used as out formal template parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_063 NegSem_050402_actual_parameters_063.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that literals cannot be used as out formal template parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to out formal template parameters shall be variables,
+// template variables, formal value parameters, formal template parameters or references
+// to elements of variables, template variables, formal value parameters or formal template
+// parameters of structured types.
+
+module NegSem_050402_actual_parameters_063 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ altstep a_test(out template integer p_val) runs on GeneralComp {
+ []t.timeout {
+ p_val := ?;
+ setverdict(pass);
+ }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_063() runs on GeneralComp {
+ t.start;
+ a_test(1); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_063());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `out' template parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_064 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that module parameters cannot be used as out formal template parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_064 NegSem_050402_actual_parameters_064.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that module parameters cannot be used as out formal template parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to out formal template parameters shall be variables,
+// template variables, formal value parameters, formal template parameters or references
+// to elements of variables, template variables, formal value parameters or formal template
+// parameters of structured types.
+
+module NegSem_050402_actual_parameters_064 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ modulepar integer PX_VAL := 2;
+
+ altstep a_test(out template integer p_val) runs on GeneralComp {
+ []t.timeout {
+ p_val := ?;
+ setverdict(pass);
+ }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_064() runs on GeneralComp {
+ t.start;
+ a_test(PX_VAL); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_064());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `out' template parameter instead of module parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_065 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that constants cannot be used as out formal template parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_065 NegSem_050402_actual_parameters_065.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that constants cannot be used as out formal template parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to out formal template parameters shall be variables,
+// template variables, formal value parameters, formal template parameters or references
+// to elements of variables, template variables, formal value parameters or formal template
+// parameters of structured types.
+
+module NegSem_050402_actual_parameters_065 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ const integer c_val := 3;
+
+ altstep a_test(out template integer p_val) runs on GeneralComp {
+ []t.timeout {
+ p_val := ?;
+ setverdict(pass);
+ }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_065() runs on GeneralComp {
+ t.start;
+ a_test(c_val); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_065());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `out' template parameter instead of constant
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_066 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that function calls cannot be used as out formal template parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_066 NegSem_050402_actual_parameters_066.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that function calls cannot be used as out formal template parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to out formal template parameters shall be variables,
+// template variables, formal value parameters, formal template parameters or references
+// to elements of variables, template variables, formal value parameters or formal template
+// parameters of structured types.
+
+module NegSem_050402_actual_parameters_066 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ function f_ret() return integer {
+ return 5;
+ }
+
+ altstep a_test(out template integer p_val) runs on GeneralComp {
+ []t.timeout {
+ p_val := ?;
+ setverdict(pass);
+ }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_066() runs on GeneralComp {
+ t.start;
+ a_test(f_ret()); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_066());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `out' template parameter instead of function
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_067 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that expressions cannot be used as out formal template parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_067 NegSem_050402_actual_parameters_067.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that expressions cannot be used as out formal template parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to out formal template parameters shall be variables,
+// template variables, formal value parameters, formal template parameters or references
+// to elements of variables, template variables, formal value parameters or formal template
+// parameters of structured types.
+
+module NegSem_050402_actual_parameters_067 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ function f_ret() return integer {
+ return 4;
+ }
+
+ altstep a_test(out template integer p_val) runs on GeneralComp {
+ []t.timeout {
+ p_val := ?;
+ setverdict(pass);
+ }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_067() runs on GeneralComp {
+ var integer v_val := 5;
+ t.start;
+ a_test(10 + f_ret() - v_val); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_067());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `out' template parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_068 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template parameters cannot be used as out formal template parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_068 NegSem_050402_actual_parameters_068.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template parameters cannot be used as out formal template parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to out formal template parameters shall be variables,
+// template variables, formal value parameters, formal template parameters or references
+// to elements of variables, template variables, formal value parameters or formal template
+// parameters of structured types.
+
+module NegSem_050402_actual_parameters_068 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ template integer m_msg := 1;
+
+ altstep a_test(out template integer p_val) runs on GeneralComp {
+ []t.timeout {
+ p_val := ?;
+ setverdict(pass);
+ }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_068() runs on GeneralComp {
+ t.start;
+ a_test(m_msg); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_068());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `out' template parameter instead of template
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_069 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that literals cannot be used as out formal template parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_069 NegSem_050402_actual_parameters_069.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that literals cannot be used as out formal template parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to out formal template parameters shall be variables,
+// template variables, formal value parameters, formal template parameters or references
+// to elements of variables, template variables, formal value parameters or formal template
+// parameters of structured types.
+
+module NegSem_050402_actual_parameters_069 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_069(out template integer p_val) runs on GeneralComp {
+ p_val := ?;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_069(1)); // tested parameter passing
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `out' template parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_070 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that module parameters cannot be used as out formal template parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_070 NegSem_050402_actual_parameters_070.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that module parameters cannot be used as out formal template parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to out formal template parameters shall be variables,
+// template variables, formal value parameters, formal template parameters or references
+// to elements of variables, template variables, formal value parameters or formal template
+// parameters of structured types.
+
+module NegSem_050402_actual_parameters_070 {
+
+ type component GeneralComp {
+ }
+
+ modulepar integer PX_VAL := 2;
+
+ testcase TC_NegSem_050402_actual_parameters_070(out template integer p_val) runs on GeneralComp {
+ p_val := ?;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_070(PX_VAL)); // tested parameter passing
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `out' template parameter instead of module parameter `@NegSem_050402_actual_parameters_070.PX_VAL'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_071 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that constants cannot be used as out formal template parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_071 NegSem_050402_actual_parameters_071.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that constants cannot be used as out formal template parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to out formal template parameters shall be variables,
+// template variables, formal value parameters, formal template parameters or references
+// to elements of variables, template variables, formal value parameters or formal template
+// parameters of structured types.
+
+module NegSem_050402_actual_parameters_071 {
+
+ type component GeneralComp {
+ }
+
+ const integer c_val := 3;
+
+ testcase TC_NegSem_050402_actual_parameters_071(out template integer p_val) runs on GeneralComp {
+ p_val := ?;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_071(c_val)); // tested parameter passing
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `out' template parameter instead of constant
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_072 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that function calls cannot be used as out formal template parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_072 NegSem_050402_actual_parameters_072.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that function calls cannot be used as out formal template parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to out formal template parameters shall be variables,
+// template variables, formal value parameters, formal template parameters or references
+// to elements of variables, template variables, formal value parameters or formal template
+// parameters of structured types.
+
+module NegSem_050402_actual_parameters_072 {
+
+ type component GeneralComp {
+ }
+
+ function f_ret() return integer {
+ return 5;
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_072(out template integer p_val) runs on GeneralComp {
+ p_val := ?;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_072(f_ret())); // tested parameter passing
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `out' template parameter instead of function `@NegSem_050402_actual_parameters_072.f_ret'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_073 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that expressions cannot be used as out formal template parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_073 NegSem_050402_actual_parameters_073.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that expressions cannot be used as out formal template parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to out formal template parameters shall be variables,
+// template variables, formal value parameters, formal template parameters or references
+// to elements of variables, template variables, formal value parameters or formal template
+// parameters of structured types.
+
+module NegSem_050402_actual_parameters_073 {
+
+ type component GeneralComp {
+ }
+
+ function f_ret() return integer {
+ return 4;
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_073(out template integer p_val) runs on GeneralComp {
+ p_val := ?;
+ setverdict(pass);
+ }
+
+ control {
+ var integer v_val := 5;
+ execute(TC_NegSem_050402_actual_parameters_073(10 + f_ret() - v_val)); // tested parameter passing
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `out' template parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_074 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template parameters cannot be used as out formal template parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_074 NegSem_050402_actual_parameters_074.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template parameters cannot be used as out formal template parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to out formal template parameters shall be variables,
+// template variables, formal value parameters, formal template parameters or references
+// to elements of variables, template variables, formal value parameters or formal template
+// parameters of structured types.
+
+module NegSem_050402_actual_parameters_074 {
+
+ type component GeneralComp {
+ }
+
+ template integer m_msg := 1;
+
+ testcase TC_NegSem_050402_actual_parameters_074(out template integer p_val) runs on GeneralComp {
+ p_val := ?;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_074(m_msg)); // tested parameter passing
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `out' template parameter instead of template `@NegSem_050402_actual_parameters_074.m_msg'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_075 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that literals cannot be used as inout formal template parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_075 NegSem_050402_actual_parameters_075.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that literals cannot be used as inout formal template parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal template parameters shall be variables,
+// template variables, formal value or template parameters (of in, inout or out
+// parameterization) of the current scope or references to elements of (template) variables
+// or formal (template) parameters of structured types.
+
+module NegSem_050402_actual_parameters_075 {
+
+ type component GeneralComp {
+ }
+
+ function f_test(inout template integer p_val) {
+ if (match(1, p_val)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_075() runs on GeneralComp {
+ f_test(1); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_075());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `inout' template parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_076 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that module parameters cannot be used as inout formal template parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_076 NegSem_050402_actual_parameters_076.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that module parameters cannot be used as inout formal template parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal template parameters shall be variables,
+// template variables, formal value or template parameters (of in, inout or out
+// parameterization) of the current scope or references to elements of (template) variables
+// or formal (template) parameters of structured types.
+
+module NegSem_050402_actual_parameters_076 {
+
+ type component GeneralComp {
+ }
+
+ modulepar integer PX_VAL := 2;
+
+ function f_test(inout template integer p_val) {
+ if (match(2, p_val)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_076() runs on GeneralComp {
+ f_test(PX_VAL); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_076());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `inout' template parameter instead of module parameter `@NegSem_050402_actual_parameters_076.PX_VAL'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_077 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that constants cannot be used as inout formal template parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_077 NegSem_050402_actual_parameters_077.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that constants cannot be used as inout formal template parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal template parameters shall be variables,
+// template variables, formal value or template parameters (of in, inout or out
+// parameterization) of the current scope or references to elements of (template) variables
+// or formal (template) parameters of structured types.
+
+module NegSem_050402_actual_parameters_077 {
+
+ type component GeneralComp {
+ }
+
+ const integer c_val := 3;
+
+ function f_test(inout template integer p_val) {
+ if (match(3, p_val)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_077() runs on GeneralComp {
+ f_test(c_val); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_077());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `inout' template parameter instead of constant `@NegSem_050402_actual_parameters_077.c_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_078 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that constants cannot be used as inout formal template parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_078 NegSem_050402_actual_parameters_078.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that function calls cannot be used as inout formal template parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal template parameters shall be variables,
+// template variables, formal value or template parameters (of in, inout or out
+// parameterization) of the current scope or references to elements of (template) variables
+// or formal (template) parameters of structured types.
+
+module NegSem_050402_actual_parameters_078 {
+
+ type component GeneralComp {
+ }
+
+ function f_ret() return integer {
+ return 5;
+ }
+
+ function f_test(inout template integer p_val) {
+ if (match(5, p_val)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_078() runs on GeneralComp {
+ f_test(f_ret()); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_078());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `inout' template parameter instead of function `@NegSem_050402_actual_parameters_078.f_ret'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_079 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that expressions cannot be used as inout formal template parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_079 NegSem_050402_actual_parameters_079.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that expressions cannot be used as inout formal template parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal template parameters shall be variables,
+// template variables, formal value or template parameters (of in, inout or out
+// parameterization) of the current scope or references to elements of (template) variables
+// or formal (template) parameters of structured types.
+
+module NegSem_050402_actual_parameters_079 {
+
+ type component GeneralComp {
+ }
+
+ function f_ret() return integer {
+ return 4;
+ }
+
+ function f_test(inout template integer p_val) {
+ if (match(9, p_val)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_079() runs on GeneralComp {
+ var integer v_val := 5;
+ f_test(10 + f_ret() - v_val); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_079());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `inout' template parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_080 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template parameters cannot be used as inout formal template parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_080 NegSem_050402_actual_parameters_080.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template parameters cannot be used as inout formal template parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal template parameters shall be variables,
+// template variables, formal value or template parameters (of in, inout or out
+// parameterization) of the current scope or references to elements of (template) variables
+// or formal (template) parameters of structured types.
+
+module NegSem_050402_actual_parameters_080 {
+
+ type component GeneralComp {
+ }
+
+ template integer m_msg := 1;
+
+ function f_test(inout template integer p_val) {
+ if (match(1, p_val)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_080() runs on GeneralComp {
+ f_test(m_msg); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_080());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `inout' template parameter instead of template `@NegSem_050402_actual_parameters_080.m_msg'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_081 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that literals cannot be used as inout formal template parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_081 NegSem_050402_actual_parameters_081.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that literals cannot be used as inout formal template parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal template parameters shall be variables,
+// template variables, formal value or template parameters (of in, inout or out
+// parameterization) of the current scope or references to elements of (template) variables
+// or formal (template) parameters of structured types.
+module NegSem_050402_actual_parameters_081 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ altstep a_test(inout template integer p_val) runs on GeneralComp {
+ []t.timeout {
+ if (match(1, p_val)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_081() runs on GeneralComp {
+ t.start;
+ a_test(1); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_081());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `inout' template parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_082 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that module parameters cannot be used as inout formal template parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_082 NegSem_050402_actual_parameters_082.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that module parameters cannot be used as inout formal template parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal template parameters shall be variables,
+// template variables, formal value or template parameters (of in, inout or out
+// parameterization) of the current scope or references to elements of (template) variables
+// or formal (template) parameters of structured types.
+module NegSem_050402_actual_parameters_082 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ modulepar integer PX_VAL := 2;
+
+ altstep a_test(inout template integer p_val) runs on GeneralComp {
+ []t.timeout {
+ if (match(2, p_val)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_082() runs on GeneralComp {
+ t.start;
+ a_test(PX_VAL); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_082());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `inout' template parameter instead of module parameter `@NegSem_050402_actual_parameters_082.PX_VAL'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_083 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that module parameters cannot be used as inout formal template parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_083 NegSem_050402_actual_parameters_083.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that constants cannot be used as inout formal template parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal template parameters shall be variables,
+// template variables, formal value or template parameters (of in, inout or out
+// parameterization) of the current scope or references to elements of (template) variables
+// or formal (template) parameters of structured types.
+
+module NegSem_050402_actual_parameters_083 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ const integer c_val := 3;
+
+ altstep a_test(inout template integer p_val) runs on GeneralComp {
+ []t.timeout {
+ if (match(3, p_val)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_083() runs on GeneralComp {
+ t.start;
+ a_test(c_val); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_083());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `inout' template parameter instead of constant `@NegSem_050402_actual_parameters_083.c_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_084 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that function calls cannot be used as inout formal template parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_084 NegSem_050402_actual_parameters_084.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that function calls cannot be used as inout formal template parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal template parameters shall be variables,
+// template variables, formal value or template parameters (of in, inout or out
+// parameterization) of the current scope or references to elements of (template) variables
+// or formal (template) parameters of structured types.
+
+module NegSem_050402_actual_parameters_084 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ function f_ret() return integer {
+ return 5;
+ }
+
+ altstep a_test(inout template integer p_val) runs on GeneralComp {
+ []t.timeout {
+ if (match(5, p_val)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_084() runs on GeneralComp {
+ t.start;
+ a_test(f_ret()); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_084());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `inout' template parameter instead of function `@NegSem_050402_actual_parameters_084.f_ret'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_085 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that expressions cannot be used as inout formal template parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_085 NegSem_050402_actual_parameters_085.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that expressions cannot be used as inout formal template parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal template parameters shall be variables,
+// template variables, formal value or template parameters (of in, inout or out
+// parameterization) of the current scope or references to elements of (template) variables
+// or formal (template) parameters of structured types.
+
+module NegSem_050402_actual_parameters_085 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ function f_ret() return integer {
+ return 4;
+ }
+
+ altstep a_test(inout template integer p_val) runs on GeneralComp {
+ []t.timeout {
+ if (match(9, p_val)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_085() runs on GeneralComp {
+ var integer v_val := 5;
+ t.start;
+ a_test(10 + f_ret() - v_val); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_085());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `inout' template parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_086 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template parameters cannot be used as inout formal template parameters of altsteps >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_086 NegSem_050402_actual_parameters_086.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template parameters cannot be used as inout formal template parameters of altsteps
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal template parameters shall be variables,
+// template variables, formal value parameters, formal template parameters or references
+// to elements of variables, template variables, formal value parameters or formal template
+// parameters of structured types.
+
+module NegSem_050402_actual_parameters_086 {
+
+ type component GeneralComp {
+ timer t := 0.0;
+ }
+
+ template integer m_msg := 1;
+
+ altstep a_test(inout template integer p_val) runs on GeneralComp {
+ []t.timeout {
+ if (match(1, p_val)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_086() runs on GeneralComp {
+ t.start;
+ a_test(m_msg); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_086());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `inout' template parameter instead of template `@NegSem_050402_actual_parameters_086.m_msg'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_087 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that literals cannot be used as inout formal template parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_087 NegSem_050402_actual_parameters_087.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that literals cannot be used as inout formal template parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal template parameters shall be variables,
+// template variables, formal value or template parameters (of in, inout or out
+// parameterization) of the current scope or references to elements of (template) variables
+// or formal (template) parameters of structured types.
+
+module NegSem_050402_actual_parameters_087 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_087(inout template integer p_val) runs on GeneralComp {
+ if (match(1, p_val)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_087(1)); // tested parameter passing
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `inout' template parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_088 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that module parameters cannot be used as inout formal template parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_088 NegSem_050402_actual_parameters_088.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that module parameters cannot be used as inout formal template parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal template parameters shall be variables,
+// template variables, formal value or template parameters (of in, inout or out
+// parameterization) of the current scope or references to elements of (template) variables
+// or formal (template) parameters of structured types.
+
+module NegSem_050402_actual_parameters_088 {
+
+ type component GeneralComp {
+ }
+
+ modulepar integer PX_VAL := 2;
+
+ testcase TC_NegSem_050402_actual_parameters_088(inout template integer p_val) runs on GeneralComp {
+ if (match(2, p_val)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_088(PX_VAL)); // tested parameter passing
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `inout' template parameter instead of module parameter `@NegSem_050402_actual_parameters_088.PX_VAL'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_089 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that constants cannot be used as inout formal template parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_089 NegSem_050402_actual_parameters_089.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that constants cannot be used as inout formal template parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal template parameters shall be variables,
+// template variables, formal value or template parameters (of in, inout or out
+// parameterization) of the current scope or references to elements of (template) variables
+// or formal (template) parameters of structured types.
+
+module NegSem_050402_actual_parameters_089 {
+
+ type component GeneralComp {
+ }
+
+ const integer c_val := 3;
+
+ testcase TC_NegSem_050402_actual_parameters_089(inout template integer p_val) runs on GeneralComp {
+ if (match(3, p_val)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_089(c_val)); // tested parameter passing
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `inout' template parameter instead of constant `@NegSem_050402_actual_parameters_089.c_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_090 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that function calls cannot be used as inout formal template parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_090 NegSem_050402_actual_parameters_090.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that function calls cannot be used as inout formal template parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal template parameters shall be variables,
+// template variables, formal value or template parameters (of in, inout or out
+// parameterization) of the current scope or references to elements of (template) variables
+// or formal (template) parameters of structured types.
+
+module NegSem_050402_actual_parameters_090 {
+
+ type component GeneralComp {
+ }
+
+ function f_ret() return integer {
+ return 5;
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_090(inout template integer p_val) runs on GeneralComp {
+ if (match(5, p_val)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_090(f_ret())); // tested parameter passing
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `inout' template parameter instead of function `@NegSem_050402_actual_parameters_090.f_ret'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_091 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that expressions cannot be used as inout formal template parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_091 NegSem_050402_actual_parameters_091.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that expressions cannot be used as inout formal template parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal template parameters shall be variables,
+// template variables, formal value or template parameters (of in, inout or out
+// parameterization) of the current scope or references to elements of (template) variables
+// or formal (template) parameters of structured types.
+
+module NegSem_050402_actual_parameters_091 {
+
+ type component GeneralComp {
+ }
+
+ function f_ret() return integer {
+ return 4;
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_091(inout template integer p_val) runs on GeneralComp {
+ if (match(9, p_val)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control {
+ var integer v_val := 5;
+ execute(TC_NegSem_050402_actual_parameters_091(10 + f_ret() - v_val)); // tested parameter passing
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `inout' template parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_092 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that template parameters cannot be used as inout formal template parameters of test cases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_092 NegSem_050402_actual_parameters_092.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that template parameters cannot be used as inout formal template parameters of test cases
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal template parameters shall be variables,
+// template variables, formal value or template parameters (of in, inout or out
+// parameterization) of the current scope or references to elements of (template) variables
+// or formal (template) parameters of structured types.
+
+module NegSem_050402_actual_parameters_092 {
+
+ type component GeneralComp {
+ }
+
+ template integer m_msg := 1;
+
+ testcase TC_NegSem_050402_actual_parameters_092(inout template integer p_val) runs on GeneralComp {
+ if (match(1, p_val)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_092(m_msg)); // tested parameter passing
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: Reference to a template variable or template parameter was expected for an `inout' template parameter instead of template `@NegSem_050402_actual_parameters_092.m_msg'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_093 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that referencing errors are detected in actual parameters passed to in formal value parameters >
+
+<COMPILE>
+
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_050402_actual_parameters_093 NegSem_050402_actual_parameters_093.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that referencing errors are detected in actual parameters passed to in formal value parameters
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// When actual parameters that are passed to in formal value or template parameters
+// contain a value or template reference, rules for using references on the right hand
+// side of assignments apply.
+
+module NegSem_050402_actual_parameters_093 {
+
+ type component GeneralComp {
+ }
+
+ type record R {
+ integer field1,
+ record {
+ integer subfield1,
+ integer subfield2
+ } field2 optional
+ }
+
+ function f_test(in integer p_val) {
+ if (p_val == 2) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_093() runs on GeneralComp {
+ var R v_rec := {
+ field1 := 1,
+ field2 := omit
+ }
+ f_test(v_rec.field2.subfield1); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_093());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Using the value of an optional field containing omit
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_094 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that referencing errors are detected in actual parameters passed to in formal template parameters >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_094 NegSem_050402_actual_parameters_094.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that referencing errors are detected in actual parameters passed to in formal template parameters
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// When actual parameters that are passed to in formal value or template parameters
+// contain a value or template reference, rules for using references on the right hand
+// side of assignments apply.
+
+module NegSem_050402_actual_parameters_094 {
+
+ type component GeneralComp {
+ }
+
+ type record R {
+ integer field1,
+ record {
+ integer subfield1,
+ integer subfield2
+ } field2 optional
+ }
+
+ template R mw_rec := {
+ field1 := 1,
+ field2 := *
+ }
+
+ function f_test(in template integer p_val) {
+ if (match(255, p_val)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_094() runs on GeneralComp {
+ f_test(mw_rec.field2.subfield1); // tested parameter passing (using referencing rules specified at 15.6.2)
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_094());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to field `subfield1' of any or omit `@NegSem_050402_actual_parameters_094.mw_rec.field2'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_095 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that referencing errors are detected in actual parameters passed to in formal template parameters >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_050402_actual_parameters_095 NegSem_050402_actual_parameters_095.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that referencing errors are detected in actual parameters passed to out formal template parameters
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// When actual parameters that are passed to inout and out formal value or template
+// parameters contain a value or template reference, rules for using references on
+// the left hand side of assignments apply.
+
+module NegSem_050402_actual_parameters_095 {
+
+ type component GeneralComp {
+ }
+
+ type record R {
+ integer field1,
+ record {
+ integer subfield1,
+ integer subfield2
+ } field2 optional
+ }
+
+ function f_test(out template integer p_val) {
+ p_val := 10;
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_095() runs on GeneralComp {
+ var template R v_rec := {
+ field1 := 1,
+ field2 := ({ subfield1 := 0, subfield2 := 1}, { subfield1 := 2, subfield2 := 3 })
+ };
+ f_test(v_rec.field2.subfield1); // tested parameter passing (using referencing rules specified at 15.6.2)
+ if (valueof(v_rec.field2.subfield1) == 10 and match(0, v_rec.field2.subfield2)) { setverdict(pass); }
+ else { setverdict(fail); }
+
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_095());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Matching with an uninitialized/unsupported integer template.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_096 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that referencing rules are correctly applied to actual parameters of inout formal template parameters >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_050402_actual_parameters_096 NegSem_050402_actual_parameters_096.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that referencing rules are correctly applied to actual parameters of inout formal template parameters
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// When actual parameters that are passed to inout and out formal value or template
+// parameters contain a value or template reference, rules for using references on
+// the left hand side of assignments apply.
+
+module NegSem_050402_actual_parameters_096 {
+
+ type component GeneralComp {
+ }
+
+ type record R {
+ integer field1,
+ record {
+ integer subfield1,
+ integer subfield2
+ } field2 optional
+ }
+
+ function f_test(inout template integer p_val) {
+ p_val := 10;
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_096() runs on GeneralComp {
+ var template R v_rec := {
+ field1 := 1,
+ field2 := ({ subfield1 := 0, subfield2 := 1}, { subfield1 := 2, subfield2 := 3 })
+ };
+ // expected error since v_rec.field2.subfield1 not defined since v_rec.field2 is not *, ? or omit (see expansion rules)
+ f_test(v_rec.field2.subfield1); // tested parameter passing (using referencing rules specified at 15.6.2)
+ log(v_rec);
+ if (valueof(v_rec.field2.subfield1) == 10 and match(0, v_rec.field2.subfield2)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_096());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Matching with an uninitialized/unsupported integer template.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_097 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that string item references cannot be used as inout formal value parameters of functions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_097 NegSem_050402_actual_parameters_097.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that string item references cannot be used as inout formal value parameters of functions
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to inout formal value parameters shall be variables
+// or formal value parameters (of in, inout or out parameterization) or references to
+// elements of variables or formal value parameters of structured types.
+// (see also the NOTE from 5.4.2)
+
+module NegSem_050402_actual_parameters_097 {
+
+ type component GeneralComp {
+ }
+
+ function f_test(inout charstring p_val) {
+ if (p_val == "t") { setverdict(pass); }
+ else { setverdict(fail); }
+ p_val := "r";
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_097() runs on GeneralComp {
+ var charstring v_val := "test";
+ f_test(v_val[0]); // tested parameter passing
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_097());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a string element of type `charstring' cannot be used in this context
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_098 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that ordinary values cannot be passed to timer parameters >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_098 NegSem_050402_actual_parameters_098.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that ordinary values cannot be passed to timer parameters
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to formal timer parameters shall be component
+// timers, local timers or formal timer parameters of the current scope.
+
+module NegSem_050402_actual_parameters_098 {
+
+ type component GeneralComp {
+ }
+
+ function f_test(timer t_par) {
+ t_par.start;
+ if (t_par.running) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_098() runs on GeneralComp {
+ f_test(5.0); // tested parameter passing: it should not be possible to pass a float value to a timer parameter
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_098());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a timer or timer parameter was expected for a timer parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_099 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that values cannot be passed to port parameters >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_099 NegSem_050402_actual_parameters_099.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that values cannot be passed to port parameters
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters that are passed to formal port parameters shall be component
+// ports or formal port parameters of the current scope.
+
+module NegSem_050402_actual_parameters_099 {
+
+ type port IntPort message {
+ inout integer;
+ }
+
+ type component GeneralComp {
+ port IntPort p;
+ }
+
+ function f_test(IntPort p_port) {
+ p_port.stop;
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_099() runs on GeneralComp {
+ var integer v_val := 5;
+ f_test(v_val); // tested parameter passing
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_099());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a port or port parameter was expected for a port parameter instead of variable `v_val'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_100 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that list notation containing actual parameters in wrong order is not accepted >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_100 NegSem_050402_actual_parameters_100.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that list notation containing actual parameters in wrong order is not accepted
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// When using list notation, the order of elements in the actual parameter list shall
+// be the same as their order in the corresponding formal parameter list.
+
+module NegSem_050402_actual_parameters_100 {
+
+ type component GeneralComp {
+ }
+
+ function f_test (integer p_val1, charstring p_val2) {
+ if ( match(p_val1, 1) and match(p_val2, "test")) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_100() runs on GeneralComp {
+ f_test("test", 1);
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_100());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: integer value was expected
+<END_RESULT>
+<RESULT COUNT 1>
+error: character string value was expected
+<END_RESULT>
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_101 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that list notation containing less actual parameters than required is not accepted >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_101 NegSem_050402_actual_parameters_101.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that list notation containing less actual parameters than required is not accepted
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// For each formal parameter without a default there shall be an actual parameter.
+
+module NegSem_050402_actual_parameters_101 {
+
+ type component GeneralComp {
+ }
+
+ function f_test (integer p_val1, charstring p_val2) {
+ if (p_val1 == 1) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_101() runs on GeneralComp {
+ f_test(1);
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_101());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Too few parameters: 2 was expected instead of 1
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_102 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that parameter without default value cannot be skipped >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_102 NegSem_050402_actual_parameters_102.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that parameter without default value cannot be skipped
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// For each formal parameter without a default there shall be an actual parameter.
+
+module NegSem_050402_actual_parameters_102 {
+
+ type component GeneralComp {
+ }
+
+ function f_test (integer p_val1, charstring p_val2) {
+ if (p_val1 == 1) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_102() runs on GeneralComp {
+ f_test(1, -);
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_102());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Not used symbol \(`-'\) cannot be used for parameter that does not have default value
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_103 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that mixing list and assignment notation is not allowed in parameterized calls (value as actual parameter) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_103 NegSem_050402_actual_parameters_103.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that mixing list and assignment notation is not allowed in parameterized calls (value as actual parameter)
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Either list notation or assignment notation shall be used in a single parameter
+// list. They shall not be mixed.
+
+module NegSem_050402_actual_parameters_103 {
+
+ type component GeneralComp {
+ }
+
+ function f_test (integer p_val1, charstring p_val2) {
+ if ( match(p_val1, 1) and match(p_val2, "test")) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_103() runs on GeneralComp {
+ f_test(p_val1 := 1, "test");
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_103());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `"': syntax error, unexpected Cstring
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_104 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that mixing list and assignment notation is not allowed in parameterized calls (skipped actual parameter) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_104 NegSem_050402_actual_parameters_104.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that mixing list and assignment notation is not allowed in parameterized calls (skipped actual parameter)
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Either list notation or assignment notation shall be used in a single parameter
+// list. They shall not be mixed.
+
+module NegSem_050402_actual_parameters_104 {
+
+ type component GeneralComp {
+ }
+
+ function f_test (integer p_val1, charstring p_val2 := "test") {
+ if ( match(p_val1, 1) and match(p_val2, "test")) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_104() runs on GeneralComp {
+ f_test(p_val1 := 1, -);
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_104());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `-': syntax error, unexpected '-'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_105 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that parameters cannot be assigned more than once in assignment notation >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_105 NegSem_050402_actual_parameters_105.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that parameters cannot be assigned more than once in assignment notation
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// When using assignment notation, each formal parameter shall be assigned an actual
+// parameter at most once.
+
+module NegSem_050402_actual_parameters_105 {
+
+ type component GeneralComp {
+ }
+
+ function f_test (integer p_val1, charstring p_val2) {
+ if (match(p_val1 == 1 and p_val2 == "test") { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_105() runs on GeneralComp {
+ f_test(p_val1 := 1, p_val2 := "test", p_val1 := 1);
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_105());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\)': syntax error, unexpected '\)'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_106 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that assignment notation that doesn't contain all parameters is not accepted >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_106 NegSem_050402_actual_parameters_106.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that assignment notation that doesn't contain all parameters is not accepted
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// For each formal parameter without default value, there shall be an actual parameter.
+
+module NegSem_050402_actual_parameters_106 {
+
+ type component GeneralComp {
+ }
+
+ function f_test (integer p_val1, charstring p_val2, integer p_val3) {
+ if (match(p_val1, 1) and match(p_val2, "test") and match(p_val3, 3)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_106() runs on GeneralComp {
+ f_test(p_val2 := "test", p_val3 := 3);
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_106());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Parameter not specified
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_107 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that incompatible values cannot be passed to in formal parameters >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_107 NegSem_050402_actual_parameters_107.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that incompatible values cannot be passed to in formal parameters
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// The type of each actual parameter shall be compatible with the type of each
+// corresponding formal parameter.
+
+module NegSem_050402_actual_parameters_107 {
+
+ type component GeneralComp {
+ }
+
+ type record R1 {
+ integer field1,
+ integer field2
+ }
+
+ type record R2 {
+ integer elem1,
+ integer elem2 optional
+ }
+
+ function f_test (R1 p_val) {
+ if (p_val == { field1 := 1, field2 := 2 }) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_107() runs on GeneralComp {
+ var R2 v_rec := { 1, 2 };
+ f_test(v_rec);
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_107());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `@NegSem_050402_actual_parameters_107.R1' was expected instead of `@NegSem_050402_actual_parameters_107.R2'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_108 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that incompatible values cannot be passed from out formal parameters >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_108 NegSem_050402_actual_parameters_108.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that incompatible values cannot be passed from out formal parameters
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// The type of each actual parameter shall be compatible with the type of each
+// corresponding formal parameter.
+
+module NegSem_050402_actual_parameters_108 {
+
+ type component GeneralComp {
+ }
+
+ type record R1 {
+ integer field1,
+ integer field2 optional
+ }
+
+ type record R2 {
+ integer elem1,
+ integer elem2
+ }
+
+ function f_test (out R1 p_val) {
+ p_val.field1 := 1;
+ p_val.field2 := 2;
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_108() runs on GeneralComp {
+ var R2 v_rec;
+ f_test(v_rec);
+ if (v_rec == { elem1 := 1, elem2 := 2 }) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_108());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: Reference to a variable or value parameter of type `@NegSem_050402_actual_parameters_108.R1' was expected instead of `@NegSem_050402_actual_parameters_108.R2'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_109 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that incompatible values cannot be passed to inout formal parameters >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_109 NegSem_050402_actual_parameters_109.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that incompatible values cannot be passed to inout formal parameters
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Strong typing is required for parameters passed by reference.
+
+module NegSem_050402_actual_parameters_109 {
+
+ type component GeneralComp {
+ }
+
+ type record R1 {
+ integer field1,
+ integer field2 optional
+ }
+
+ type record R2 {
+ integer elem1,
+ integer elem2
+ }
+
+ function f_test (inout R1 p_val) {
+ if (p_val == { field1 := 1, field2 := 2 }) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_109() runs on GeneralComp {
+ var R2 v_rec := { 1, 2 };
+ f_test(v_rec);
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_109());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: Reference to a variable or value parameter of type `@NegSem_050402_actual_parameters_109.R1' was expected instead of `@NegSem_050402_actual_parameters_109.R2'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_111 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that incompatible templates cannot be passed to template parameters with omit restriction >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_111 NegSem_050402_actual_parameters_111.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that incompatible templates cannot be passed to template parameters with omit restriction
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters passed to restricted formal template parameters shall obey
+// the restrictions given in clause 15.8.
+
+module NegSem_050402_actual_parameters_111 {
+
+ type component GeneralComp {
+ }
+
+ function f_test (omit integer p_val) {
+ if (match(1, p_val)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_111() runs on GeneralComp {
+ f_test((0..10));
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_111());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template formal parameter does not allow usage of value range match
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_112 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that compatible templates can be passed to template parameters with value restriction >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_112 NegSem_050402_actual_parameters_112.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that compatible templates can be passed to template parameters with value restriction
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters passed to restricted formal template parameters shall obey
+// the restrictions given in clause 15.8.
+
+module NegSem_050402_actual_parameters_112 {
+
+ type component GeneralComp {
+ }
+
+ function f_test (template(value) integer p_val) {
+ if (match(1, p_val)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_112() runs on GeneralComp {
+ f_test((1, 2, 3));
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_112());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template formal parameter does not allow usage of value list match
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_113 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that compatible templates can be passed to template parameters with present restriction >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_113 NegSem_050402_actual_parameters_113.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that compatible templates can be passed to template parameters with present restriction
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Actual parameters passed to restricted formal template parameters shall obey
+// the restrictions given in clause 15.8.
+
+module NegSem_050402_actual_parameters_113 {
+
+ type component GeneralComp {
+ }
+
+ function f_test (template(present) integer p_val) {
+ if (match(1, p_val)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_113() runs on GeneralComp {
+ f_test(*);
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_113());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template formal parameter does not allow usage of any or omit
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_114 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that compatible templates can be passed to template parameters with present restriction >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_114 NegSem_050402_actual_parameters_114.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that parametrized entities used as actual parameter cannot be passed without parameter list
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// All parameterized entities specified as an actual parameter shall have their
+// own parameters resolved in the top-level actual parameter list.
+
+module NegSem_050402_actual_parameters_114 {
+
+ type component GeneralComp {
+ }
+
+ type record R {
+ integer field1,
+ integer field2 optional
+ }
+
+ template R mw_rec(template integer p_field2) := {
+ field1 := 1,
+ field2 := p_field2
+ }
+
+ function f_test (template R p_match) {
+ if (match({1, omit}, p_match)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_114() runs on GeneralComp {
+ f_test(mw_rec);
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_114());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to parameterized definition `mw_rec' without actual parameter list
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_115 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that error is generated when no actual parameter list is used for functions with no parameters >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_115 NegSem_050402_actual_parameters_115.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that error is generated when no actual parameter list is used for functions with no parameters
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// If the formal parameter list of TTCN-3 objects function, testcase, signature,
+// altstep or external function is empty, then the empty parentheses shall be
+// included both in the declaration and in the invocation of that object. In all
+// other cases the empty parentheses shall be omitted.
+
+module NegSem_050402_actual_parameters_115 {
+
+ type component GeneralComp {
+ }
+
+ function f_test () return integer {
+ setverdict(pass);
+ return 1;
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_115() runs on GeneralComp {
+ log(f_test);
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_115());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to parameterized definition `f_test' without actual parameter list
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_116 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that error is generated when no actual parameter list is used for test cases with no parameters >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_116 NegSem_050402_actual_parameters_116.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that error is generated when no actual parameter list is used for test cases with no parameters
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// If the formal parameter list of TTCN-3 objects function, testcase, signature,
+// altstep or external function is empty, then the empty parentheses shall be
+// included both in the declaration and in the invocation of that object. In all
+// other cases the empty parentheses shall be omitted.
+
+module NegSem_050402_actual_parameters_116 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_116() runs on GeneralComp {
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_116);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\)': syntax error, unexpected '\)', expecting '\('
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_117 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that error is generated when no actual parameter list is used for altsteps with no parameters >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_117 NegSem_050402_actual_parameters_117.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that error is generated when no actual parameter list is used for altsteps with no parameters
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// If the formal parameter list of TTCN-3 objects function, testcase, signature,
+// altstep or external function is empty, then the empty parentheses shall be
+// included both in the declaration and in the invocation of that object. In all
+// other cases the empty parentheses shall be omitted.
+
+module NegSem_050402_actual_parameters_117 {
+
+ type component GeneralComp {
+ }
+
+ altstep a_test () {
+ [] any timer.timeout { setverdict(pass); }
+ }
+
+ testcase TC_NegSem_050402_actual_parameters_117() runs on GeneralComp {
+ timer t_instant := 0.0;
+ t_instant.start;
+ alt {
+ [] a_test {
+ setverdict(pass);
+ }
+ }
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_117());
+ }
+}
+<END_MODULE>
+
+
+<RESULT COUNT 1>
+error: at or before token `\{': syntax error, unexpected '\{'
+<END_RESULT>
+<RESULT COUNT 1>
+error: at or before token `control': syntax error, unexpected ControlKeyword, expecting \$end
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_050402_actual_parameters_118 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that error is generated when empty actual parameter list is used for templates with no parameters >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_050402_actual_parameters_118 NegSem_050402_actual_parameters_118.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.4.2, verify that error is generated when empty actual parameter list is used for templates with no parameters
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// If the formal parameter list of TTCN-3 objects function, testcase, signature,
+// altstep or external function is empty, then the empty parentheses shall be
+// included both in the declaration and in the invocation of that object. In all
+// other cases the empty parentheses shall be omitted.
+
+module NegSem_050402_actual_parameters_118 {
+
+ type component GeneralComp {
+ }
+
+ template integer mw_allInt := ?;
+
+ testcase TC_NegSem_050402_actual_parameters_118() runs on GeneralComp {
+ if (match(1, mw_allInt())) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control {
+ execute(TC_NegSem_050402_actual_parameters_118());
+ }
+}
+<END_MODULE>
+
+
+<RESULT COUNT 1>
+error: The referenced template `@NegSem_050402_actual_parameters_118.mw_allInt' cannot have actual parameters
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h2. 0505_cyclic_definitions folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0505_cyclic_definitions_001 test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Verify that an error is detected when two constants reference each other >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0505_cyclic_definitions_001 NegSem_0505_cyclic_definitions_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.5, Verify that an error is detected when two constants reference each other
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// Direct and indirect cyclic definitions are not allowed with the exception of the
+// following cases:
+// a) for recursive type definitions (see clause 6.2);
+// b) function and altstep definitions (i.e. recursive function or altstep calls);
+// c) cyclic import definitions, if the imported definitions only form allowed cyclic
+// definitions.
+// The test is a copy of example 1 from the chapter 5.5
+module NegSem_0505_cyclic_definitions_001 {
+
+ type record ARecordType { integer a, integer b };
+ const ARecordType c_test1 := { 1 , c_test2.b}; // c_test1 refers to c_test2
+ const ARecordType c_test2 := { 1 , c_test1.b}; // c_test2 refers to c_test1
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Circular reference in constant definition `c_test1'
+<END_RESULT>
+<RESULT COUNT 1>
+error: Circular reference in constant definition `c_test2'
+<END_RESULT>
+<RESULT COUNT 1>
+error: While searching referenced value: Circular reference: `@NegSem_0505_cyclic_definitions_001.c_test2.b' -> `@NegSem_0505_cyclic_definitions_001.c_test1.b' -> `@NegSem_0505_cyclic_definitions_001.c_test2.b'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0505_cyclic_definitions_002 test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Verify that an error is detected when a forbidded cyclic reference occurs in cyclic import >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0505_cyclic_definitions_002 NegSem_0505_cyclic_definitions_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:5.5, Verify that an error is detected when a forbidded cyclic reference occurs in cyclic import
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// Direct and indirect cyclic definitions are not allowed with the exception of the
+// following cases:
+// a) for recursive type definitions (see clause 6.2);
+// b) function and altstep definitions (i.e. recursive function or altstep calls);
+// c) cyclic import definitions, if the imported definitions only form allowed cyclic
+// definitions.
+// The test is a modification of example 1 from the chapter 5.5 that defines both constants
+// in different modules.
+
+module NegSem_0505_cyclic_definitions_002 {
+ import from NegSem_0505_cyclic_definitions_002_import { const c_test1 }
+ type record ARecordType { integer a, integer b };
+ const ARecordType c_test2 := { 1 , c_test1.b}; // c_test2 refers to c_test1
+}
+<END_MODULE>
+
+<MODULE TTCN NegSem_0505_cyclic_definitions_002_import NegSem_0505_cyclic_definitions_002_import.ttcn >
+module NegSem_0505_cyclic_definitions_002_import {
+ import from NegSem_0505_cyclic_definitions_002 all;
+ const ARecordType c_test1 := { 1 , c_test2.b}; // c_test1 refers to c_test2
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Circular reference in constant definition `c_test1'
+<END_RESULT>
+<RESULT COUNT 1>
+error: Circular reference in constant definition `c_test2'
+<END_RESULT>
+<RESULT COUNT 1>
+error: While searching referenced value: Circular reference: `@NegSem_0505_cyclic_definitions_002.c_test2.b' -> `@NegSem_0505_cyclic_definitions_002_import.c_test1.b' -> `@NegSem_0505_cyclic_definitions_002.c_test2.b'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h1.References
+.*---------------------------------------------------------------------*
+:list.
+:li D='[1]'.1/174 02-CRL 113 200/5 Uen
+:nl.Statement of Compliance for TITAN project
+:li D='[2]'.ETSI ES 201 873-1, v4.7.1 Mockup v1 (2015-06):
+:nl.Testing and Test Control Notation version 3.,
+:nl.Part 1: TTCN-3 Core Language
+:elist.
--- /dev/null
+.******************************************************************************
+.* Copyright (c) 2000-2016 Ericsson Telecom AB
+.* All rights reserved. This program and the accompanying materials
+.* are made available under the terms of the Eclipse Public License v1.0
+.* which accompanies this distribution, and is available at
+.* http://www.eclipse.org/legal/epl-v10.html
+.*
+.* Contributors:
+.* Adrien Kirjak – initial implementation
+.*
+.******************************************************************************/
+text.
+:lang eng.
+.*
+:docname.Test Description
+:docno.xz/152 91-CRL 113 200 Uen
+:rev.PA1
+:date.2016-04-04
+.*
+:prep.ETH/XZ EADRKIR
+:subresp.EADRKIR
+:appr.ETH/XZ (Elemer Lelik)
+:checked.
+.*
+:title.ETSI TTCN3 Negative Conformance Test
+:contents level=3.
+.*---------------------------------------------------------------------*
+:h1.PREREQUISITES AND PREPARATIONS
+.*---------------------------------------------------------------------*
+.*---------------------------------------------------------------------*
+:h2.Scope of the Test Object
+.*---------------------------------------------------------------------*
+:xmp tab=1 nokeep.
+This TD contains negative tests from ETSI TTCN3 Conformance Test's 06_types_and_values folder.
+
+:exmp.
+
+.*---------------------------------------------------------------------*
+:h2.Test Tools
+.*---------------------------------------------------------------------*
+:p.:us.Software Tools:eus.
+:xmp tab=2 nokeep.
+
+ SAtester.pl
+
+:exmp.
+:np.
+
+.*---------------------------------------------------------------------*
+:h1.REQUIREMENT-BASED TESTS
+.*---------------------------------------------------------------------*
+.*---------------------------------------------------------------------*
+:h2. 0601_basic_types_and_values folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0501_Identifier_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign float to integer values >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0501_Identifier_001 NegSem_0501_Identifier_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.0, Assign float to integer values
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_060100_SimpleBasicTypes_001 {
+ const integer c_i1 := 0.0; // not an integer value
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: integer value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0501_Identifier_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign boolean to integer values >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0501_Identifier_002 NegSem_0501_Identifier_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.0, Assign boolean to integer values
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_060100_SimpleBasicTypes_002 {
+ const integer c_i1 := true; // not an integer value
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: integer value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0501_Identifier_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign integer to float values >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0501_Identifier_003 NegSem_0501_Identifier_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.0, Assign integer to float values
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_060100_SimpleBasicTypes_003 {
+ const float c_f1 := 0; // not a float value
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: float value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0501_Identifier_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign boolean to float values >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0501_Identifier_004 NegSem_0501_Identifier_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.0, Assign boolean to float values
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_060100_SimpleBasicTypes_004 {
+ const float c_f1 := true; // not a float value
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: float value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0501_Identifier_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign verdicttype to float values >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0501_Identifier_005 NegSem_0501_Identifier_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.0, Assign verdicttype to float values
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_060100_SimpleBasicTypes_005 {
+ const float c_f1 := pass; // not a float value
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: float value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0501_Identifier_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign integer to verdicttype values >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0501_Identifier_006 NegSem_0501_Identifier_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.0, Assign integer to verdicttype values
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_060100_SimpleBasicTypes_006 {
+ const verdicttype c_v1 := 1; // not a verdict
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: verdict value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060101_TopLevel_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid bitstring value >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060101_TopLevel_001 NegSyn_060101_TopLevel_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.1, Assign invalid bitstring value
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_060101_TopLevel_001 {
+ const bitstring c_b1 := '2'B; // not an bitstring value
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Bitstring value contains invalid character
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060101_TopLevel_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign string to bitstring values >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060101_TopLevel_002 NegSyn_060101_TopLevel_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.1, Assign string to bitstring values
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_060101_TopLevel_002 {
+ const bitstring c_b1 := "1"; // not an bitstring value
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: bitstring value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060101_TopLevel_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign octetstring to bitstring values >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060101_TopLevel_003 NegSyn_060101_TopLevel_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.1, Assign octetstring to bitstring values
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_060101_TopLevel_003 {
+ const bitstring c_b1 := '01'O; // not an bitstring value
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: bitstring value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060101_TopLevel_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid hexstring value >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060101_TopLevel_004 NegSyn_060101_TopLevel_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.1, Assign invalid hexstring value
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_060101_TopLevel_004 {
+ const hexstring c_b1 := '01H'O; // not an hexstring value
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Invalid character `H' \(0x48\) in binary string
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060101_TopLevel_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign string to hexstring values >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060101_TopLevel_005 NegSyn_060101_TopLevel_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.1, Assign string to hexstring values
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_060101_TopLevel_005 {
+ const hexstring c_b1 := "010"; // not an hexstring value
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: hexstring value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060101_TopLevel_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign octetstring to hexstring values >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060101_TopLevel_006 NegSyn_060101_TopLevel_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.1, Assign octetstring to hexstring values
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_060101_TopLevel_006 {
+ const hexstring c_b1 := '01'O; // not an hexstring value
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: hexstring value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060101_TopLevel_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid octetstring value >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060101_TopLevel_007 NegSyn_060101_TopLevel_007.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.1, Assign invalid octetstring value
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_060101_TopLevel_007 {
+ const octetstring c_b1 := '1FA'O; // not an octetstring value, odd number of nibbles
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Octetstring value contains odd number of hexadecimal digits
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060101_TopLevel_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign string to octetstring values >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060101_TopLevel_008 NegSyn_060101_TopLevel_008.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.1, Assign string to octetstring values
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_060101_TopLevel_008 {
+ const octetstring c_b1 := "F15A"; // not an octetstring value
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: octetstring value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060101_TopLevel_009 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign hexstring to octetstring values >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060101_TopLevel_009 NegSyn_060101_TopLevel_009.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.1, Assign hexstring to octetstring values
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_060101_TopLevel_009 {
+ const octetstring c_b1 := 'FA'H; // not an octetstring value
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: octetstring value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060101_TopLevel_010 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid hexstring value >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060101_TopLevel_010 NegSyn_060101_TopLevel_010.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.1, Assign invalid hexstring value
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_060101_TopLevel_010 {
+ const octetstring c_b1 := '1FAH'O; // not an octetstring value, H not valid
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Invalid character `H' \(0x48\) in binary string
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010201_ListOfValues_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign values to restricted bitstring. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010201_ListOfValues_001 NegSem_06010201_ListOfValues_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.1, Assign values to restricted bitstring.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010201_ListOfValues_001 {
+ type bitstring MyListOfBitStrings ('01'B, '10'B, '11'B);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010201_ListOfValues_001() runs on GeneralComp {
+ var MyListOfBitStrings v_b := '00'B; // value is not defined by the type
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010201_ListOfValues_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: '00'B is not a valid value for type `bitstring' which has subtype length\(2\) except \('00'B\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010201_ListOfValues_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign values to restricted hexstring. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010201_ListOfValues_002 NegSem_06010201_ListOfValues_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.1, Assign values to restricted hexstring.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010201_ListOfValues_002 {
+ type hexstring MyListOfHexStrings ('01'H, '10'H);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010201_ListOfValues_002() runs on GeneralComp {
+ var MyListOfHexStrings v_h := '00'H; // value is not defined by the type
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010201_ListOfValues_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: '00'H is not a valid value for type `hexstring' which has subtype \('01'H,'10'H\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010201_ListOfValues_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign values to restricted octetstring. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010201_ListOfValues_003 NegSem_06010201_ListOfValues_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.1, Assign values to restricted octetstring.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010201_ListOfValues_003 {
+ type octetstring MyListOfOctetStrings ('01'O, '10'O);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010201_ListOfValues_003() runs on GeneralComp {
+ var MyListOfOctetStrings v_h := '00'O; // value is not defined by the type
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010201_ListOfValues_003());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: '00'O is not a valid value for type `octetstring' which has subtype \('01'O,'10'O\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010201_ListOfValues_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign values to restricted charstring. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010201_ListOfValues_004 NegSem_06010201_ListOfValues_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.1, Assign values to restricted charstring.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010201_ListOfValues_004 {
+ type charstring MyCharstr ("a", "abc");
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010201_ListOfValues_004() runs on GeneralComp {
+ var MyCharstr v_b := "d"; // value is not defined by the type
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010201_ListOfValues_004());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: "d" is not a valid value for type `charstring' which has subtype \("a","abc"\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010201_ListOfValues_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign values to restricted integer. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010201_ListOfValues_005 NegSem_06010201_ListOfValues_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.1, Assign values to restricted integer.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010201_ListOfValues_005 {
+ type integer MyInt (1, 5);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010201_ListOfValues_005() runs on GeneralComp {
+ var MyInt v_i := 2; // value is not defined by the type
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010201_ListOfValues_005());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 2 is not a valid value for type `integer' which has subtype \(1,5\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010201_ListOfValues_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign values to restricted float. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010201_ListOfValues_006 NegSem_06010201_ListOfValues_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.1, Assign values to restricted float.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010201_ListOfValues_006 {
+ type float MyFloat (1.0, 5.0);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010201_ListOfValues_006() runs on GeneralComp {
+ var MyFloat v_f := 2.0; // value is not defined by the type
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010201_ListOfValues_006());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 2.0e0 is not a valid value for type `float' which has subtype \(1.0e0,5.0e0\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010202_ListOfTypes_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to list of types restricted bitstring. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010202_ListOfTypes_001 NegSem_06010202_ListOfTypes_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.2, Assign invalid values to list of types restricted bitstring.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010202_ListOfTypes_001 {
+ type bitstring BitStrings1 ('0'B, '1'B );
+ type bitstring BitStrings2 ('00'B, '01'B, '10'B, '10'B);
+ type bitstring BitStrings_1_2 (BitStrings1, BitStrings2);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010202_ListOfTypes_001() runs on GeneralComp {
+ var BitStrings_1_2 v_b := '11'B; // 11 is not defined by the type
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010202_ListOfTypes_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: '11'B is not a valid value for type `bitstring' which has subtype length\(1..2\) except \('11'B\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010202_ListOfTypes_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to list of types restricted hexstring. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010202_ListOfTypes_002 NegSem_06010202_ListOfTypes_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.2, Assign invalid values to list of types restricted hexstring.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010202_ListOfTypes_002 {
+ type hexstring HexStrings1 ('FE80'H, '01'H );
+ type hexstring HexStrings2 ('00'H, '7F'H, 'B8'H, 'A0'H);
+ type hexstring HexStrings_1_2 (HexStrings1, HexStrings2);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010202_ListOfTypes_002() runs on GeneralComp {
+ var HexStrings_1_2 v_b;
+ v_b := 'FE70'H; //FE70 value is not defined by any hexstrings
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010202_ListOfTypes_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 'FE70'H is not a valid value for type `hexstring' which has subtype \('00'H,'01'H,'7F'H,'A0'H,'B8'H,'FE80'H\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010202_ListOfTypes_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to list of types restricted octetstring. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010202_ListOfTypes_003 NegSem_06010202_ListOfTypes_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.2, Assign invalid values to list of types restricted octetstring.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010202_ListOfTypes_003 {
+ type octetstring Firstoctetstrings('0036'O,'0050'O); //30 and 40 in decimal
+ type octetstring Secondtoctetstrings ('0074'O,'0120'O); //50 and 60 in decimal
+ type octetstring octetStrings_1_2 (Firstoctetstrings, Secondtoctetstrings);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010202_ListOfTypes_003() runs on GeneralComp {
+ var octetStrings_1_2 v_b;
+ v_b := '0014'O; // '0014'O value is not defined
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010202_ListOfTypes_003());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: '0014'O is not a valid value for type `octetstring' which has subtype \('0036'O,'0050'O,'0074'O,'0120'O\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010202_ListOfTypes_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to list of types restricted charstring. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010202_ListOfTypes_004 NegSem_06010202_ListOfTypes_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.2, Assign invalid values to list of types restricted charstring.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010202_ListOfTypes_004 {
+ type charstring Firstcharstrings("abc", "def");
+ type charstring Secondcharstrings("ghi", "jkl");
+ type charstring charStrings_1_2 (Firstcharstrings,Secondcharstrings);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010202_ListOfTypes_004() runs on GeneralComp {
+ var charStrings_1_2 v_b;
+ v_b := "xyz"; // invalid charsting
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010202_ListOfTypes_004());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: "xyz" is not a valid value for type `charstring' which has subtype \("abc","def","ghi","jkl"\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010202_ListOfTypes_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to list of types restricted universal charstrings. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010202_ListOfTypes_005 NegSem_06010202_ListOfTypes_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.2, Assign invalid values to list of types restricted universal charstrings.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010202_ListOfTypes_005 {
+ type universal charstring unicharString1 ("0" .. "9","A".."Z"); // charstring between "0" and "9" and "A".."Z"
+ type universal charstring unicharString2 ("a".."z"); // charstring between "a" to "z"
+ type universal charstring unicharStrings_1_2 (unicharString1, unicharString2);
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010202_ListOfTypes_005() runs on GeneralComp {
+ var unicharStrings_1_2 v_b;
+ v_b:="?"; // invalid
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010202_ListOfTypes_005());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: "\?" is not a valid value for type `universal charstring' which has subtype \(from\("0".."9","A".."Z"\) union from\("a".."z"\)\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010202_ListOfTypes_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to list of types restricted integers. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010202_ListOfTypes_006 NegSem_06010202_ListOfTypes_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.2, Assign invalid values to list of types restricted integers.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010202_ListOfTypes_006 {
+ type integer Integer1 (0..9 );
+ type integer Integer2 (20..30);
+ type integer Integer_1_2 (Integer1, Integer2);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010202_ListOfTypes_006() runs on GeneralComp {
+ var Integer_1_2 v_b;
+ v_b := 15; //invalid
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010202_ListOfTypes_006());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 15 is not a valid value for type `integer' which has subtype \(0..9,20..30\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010202_ListOfTypes_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to list of types restricted floats. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010202_ListOfTypes_007 NegSem_06010202_ListOfTypes_007.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.2, Assign invalid values to list of types restricted floats.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010202_ListOfTypes_007 {
+ type float Float1 (1.0E0..9E0); //float values between 1 and 9
+ type float Float2 (2.0E1..3.0E1); //float values between 20 and 30
+ type float Float_1_2 (Float1, Float2);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010202_ListOfTypes_007() runs on GeneralComp {
+ var Float_1_2 v_b;
+ v_b := 15.5E0; //invalid
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010202_ListOfTypes_007());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 1.55e1 is not a valid value for type `float' which has subtype \(1.0e0..9.0e0,2.0e1..3.0e1\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010202_ListOfTypes_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to list of types restricted boolean value. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010202_ListOfTypes_008 NegSem_06010202_ListOfTypes_008.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.2, Assign invalid values to list of types restricted boolean value.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010202_ListOfTypes_008 {
+ type boolean MyBoolean1 (false); //only "false" is accepted
+ type boolean MyBoolean2 (false);
+ type boolean MyBoolean_1_2 (MyBoolean1, MyBoolean2);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010202_ListOfTypes_008() runs on GeneralComp {
+ var MyBoolean_1_2 v_b;
+ v_b := true; // invalid
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010202_ListOfTypes_008());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: true is not a valid value for type `boolean' which has subtype \(false\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010202_ListOfTypes_009 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to list of types restricted verdicttype. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010202_ListOfTypes_009 NegSem_06010202_ListOfTypes_009.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.2, Assign invalid values to list of types restricted verdicttype.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010202_ListOfTypes_009 {
+ type verdicttype Myverdict1 (pass, error); //only "pass" and "error" values are listed
+ type verdicttype Myverdict2 (inconc, none); //only "inconc" and "none" values are listed
+ type verdicttype Myverdict_1_2 (Myverdict1, Myverdict2);
+
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010202_ListOfTypes_009() runs on GeneralComp {
+ var Myverdict_1_2 v_b;
+ v_b := fail; //invalid
+ setverdict(pass);
+ }
+ control{
+ execute(TC_NegSem_06010202_ListOfTypes_009());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: fail is not a valid value for type `verdicttype' which has subtype \(none,pass,inconc,error\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010203_Ranges_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to restricted integer. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010203_Ranges_001 NegSem_06010203_Ranges_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.3, Assign invalid values to restricted integer.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010203_Ranges_001 {
+ type integer MyIntegerRange (0 .. 255);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010203_Ranges_001() runs on GeneralComp {
+ var MyIntegerRange v_i := -1; // -1 is outside range
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010203_Ranges_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: -1 is not a valid value for type `integer' which has subtype \(0..255\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010203_Ranges_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to restricted integer. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010203_Ranges_002 NegSem_06010203_Ranges_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.3, Assign invalid values to restricted integer.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010203_Ranges_002 {
+ type integer MyIntegerRange (-infinity .. 0);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010203_Ranges_002() runs on GeneralComp {
+ var MyIntegerRange v_i := 1; // 1 is outside range
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010203_Ranges_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 1 is not a valid value for type `integer' which has subtype \(-infinity..0\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010203_Ranges_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assure that not_a_number is not allowed in float range subtyping. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010203_Ranges_003 NegSem_06010203_Ranges_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.3, Assure that not_a_number is not allowed in float range subtyping.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010203_Ranges_003 {
+ // causes an error as not_a_number is not allowed in range subtyping
+ type float MyFloatRange (-infinity .. not_a_number);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010203_Ranges_003() runs on GeneralComp {
+ var MyFloatRange v_i;
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010203_Ranges_003());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: upper boundary cannot be not_a_number in float subtype range
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010203_Ranges_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to restricted integer with exclusive bounds. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010203_Ranges_004 NegSem_06010203_Ranges_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.3, Assign invalid values to restricted integer with exclusive bounds.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010203_Ranges_004 {
+ type integer MyIntegerRange (!-3 .. 0);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010203_Ranges_004() runs on GeneralComp {
+ var MyIntegerRange v_i := -3; // -3 is outside range
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010203_Ranges_004());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: -3 is not a valid value for type `integer' which has subtype \(-2..0\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010203_Ranges_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to restricted integer with exclusive bounds. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010203_Ranges_005 NegSem_06010203_Ranges_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.3, Assign invalid values to restricted integer with exclusive bounds.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010203_Ranges_005 {
+ type integer MyIntegerRange (-infinity .. !0);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010203_Ranges_005() runs on GeneralComp {
+ var MyIntegerRange v_i := 0; // 0 is outside range
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010203_Ranges_005());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 0 is not a valid value for type `integer' which has subtype \(-infinity..-1\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010203_Ranges_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign range to boolean not permitted. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010203_Ranges_006 NegSem_06010203_Ranges_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.3, Assign range to boolean not permitted.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010203_Ranges_006 {
+ // only restrictions for integer, float, charstring and universal charstring are allowed in ranges
+ type boolean MyBooleanRange (false .. true); // should be rejected
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010203_Ranges_006() runs on GeneralComp {
+ var MyBooleanRange v_b1;
+ v_b1 := true;
+ v_b1 := false;
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010203_Ranges_006());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Range subtyping is not allowed for type `boolean'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010203_Ranges_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid value to range constrained charstring. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010203_Ranges_007 NegSem_06010203_Ranges_007.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.3, Assign invalid value to range constrained charstring.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010203_Ranges_007 {
+ type charstring MyCharstringRange (!"a"..!"f");
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010203_Ranges_007() runs on GeneralComp {
+ var MyCharstringRange v_c1;
+ v_c1 := "a";
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010203_Ranges_007());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: "a" is not a valid value for type `charstring' which has subtype from\("b".."e"\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010203_Ranges_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid value to range constrained charstring. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010203_Ranges_008 NegSem_06010203_Ranges_008.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.3, Assign invalid value to range constrained charstring.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010203_Ranges_008 {
+ type charstring MyCharstringRange ("a"..!"f");
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010203_Ranges_008() runs on GeneralComp {
+ var MyCharstringRange v_c1;
+ v_c1 := "f";
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010203_Ranges_008());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: "f" is not a valid value for type `charstring' which has subtype from\("a".."e"\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010203_Ranges_009 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid value to range constrained charstring. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010203_Ranges_009 NegSem_06010203_Ranges_009.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.3, Assign invalid value to range constrained charstring.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010203_Ranges_009 {
+ type charstring MyCharstringRange ("a".."f");
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010203_Ranges_009() runs on GeneralComp {
+ var MyCharstringRange v_c1;
+ v_c1 := "g";
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010203_Ranges_009());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: "g" is not a valid value for type `charstring' which has subtype from\("a".."f"\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010203_Ranges_010 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to restricted float. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010203_Ranges_010 NegSem_06010203_Ranges_010.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.3, Assign invalid values to restricted float.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010203_Ranges_010 {
+ type float MyFloatRange (-infinity .. 0.0);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010203_Ranges_010() runs on GeneralComp {
+ var MyFloatRange v_f := 1.0; // 1.0 is outside range
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010203_Ranges_010());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 1.0e0 is not a valid value for type `float' which has subtype \(-INF..0.0e0\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010203_Ranges_011 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to restricted float. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010203_Ranges_011 NegSem_06010203_Ranges_011.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.3, Assign invalid values to range restricted float.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010203_Ranges_011 {
+ type float MyFloatRange (-5.0 .. 0.0);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010203_Ranges_011() runs on GeneralComp {
+ var MyFloatRange v_f := 10.0; // 10.0 is outside range
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010203_Ranges_011());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 1.0e1 is not a valid value for type `float' which has subtype \(-5.0e0..0.0e0\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010203_Ranges_012 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to range excluded restricted float. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010203_Ranges_012 NegSem_06010203_Ranges_012.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.3, Assign invalid values to range excluded restricted float.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010203_Ranges_012 {
+ type float MyFloatRange (-1.0 .. !10.0);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010203_Ranges_012() runs on GeneralComp {
+ var MyFloatRange v_f := 10.0; // 10.0 is outside range
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010203_Ranges_012());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 1.0e1 is not a valid value for type `float' which has subtype \(-1.0e0..!1.0e1\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010203_Ranges_013 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid value to range constrained universal charstring. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010203_Ranges_013 NegSem_06010203_Ranges_013.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.3, Assign invalid value to range constrained universal charstring.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010203_Ranges_013 {
+ type universal charstring MyUCharString (char(0, 0, 1, 111) .. !char(0, 0, 1, 113));
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010203_Ranges_013() runs on GeneralComp {
+ var MyUCharString v_uc1;
+ v_uc1 := char(0, 0, 1, 100); // out of range
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010203_Ranges_013());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: char\(0, 0, 1, 100\) is not a valid value for type `universal charstring' which has subtype from\(char\(0, 0, 1, 111\)..char\(0, 0, 1, 112\)\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010203_Ranges_014 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid value to range constrained universal charstring with mixed bounds. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010203_Ranges_014 NegSem_06010203_Ranges_014.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.3, Assign invalid value to range constrained universal charstring with mixed bounds.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010203_Ranges_014 {
+ type universal charstring MyUCharString (char(0, 0, 1, 111) .. !char(0, 0, 1, 113));
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010203_Ranges_014() runs on GeneralComp {
+ var MyUCharString v_uc1;
+ v_uc1 := char(0, 0, 1, 113); // 113 is excluded
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010203_Ranges_014());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: char\(0, 0, 1, 113\) is not a valid value for type `universal charstring' which has subtype from\(char\(0, 0, 1, 111\)..char\(0, 0, 1, 112\)\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010203_Ranges_015 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid value to range constrained charstring. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010203_Ranges_015 NegSem_06010203_Ranges_015.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.3, Assign invalid value to range constrained charstring.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010203_Ranges_015 {
+ type charstring MyCharstringRange ("a".."f");
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010203_Ranges_015() runs on GeneralComp {
+ var MyCharstringRange v_c1;
+ v_c1 := "abcgef"; // g not allowed
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010203_Ranges_015());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: "abcgef" is not a valid value for type `charstring' which has subtype from\("a".."f"\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010203_Ranges_016 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Invalid value infinity for range constrained charstring. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010203_Ranges_016 NegSem_06010203_Ranges_016.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.3, Invalid value infinity for range constrained charstring.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010203_Ranges_016 {
+ type charstring MyCharstringRange ("a"..infinity); // infinity not allowed for charstring
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010203_Ranges_016() runs on GeneralComp {
+ var MyCharstringRange v_c1;
+ v_c1 := "abcgef";
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010203_Ranges_016());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: upper boundary of a charstring subtype range cannot be infinity
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010203_Ranges_017 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Invalid value -infinity for range constrained charstring. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010203_Ranges_017 NegSem_06010203_Ranges_017.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.3, Invalid value -infinity for range constrained charstring.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010203_Ranges_017 {
+ type charstring MyCharstringRange (-infinity.."d"); // -infinity not allowed for charstring
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010203_Ranges_017() runs on GeneralComp {
+ var MyCharstringRange v_c1;
+ v_c1 := "abcgef";
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010203_Ranges_017());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: lower boundary of a charstring subtype range cannot be -infinity
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010204_StringLengthRestrict_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Invalid value -infinity for range constrained charstring. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010204_StringLengthRestrict_001 NegSem_06010204_StringLengthRestrict_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.4, Assign invalid values to length restricted bitstring.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010204_StringLengthRestrict_001 {
+ type bitstring BitStrings length(1 .. 2);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010204_StringLengthRestrict_001() runs on GeneralComp {
+ var BitStrings v_b := '111'B; // value length 3 != type length is 1 or 2
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010204_StringLengthRestrict_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: '111'B is not a valid value for type `bitstring' which has subtype length\(1..2\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010204_StringLengthRestrict_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to length restricted bitstring. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010204_StringLengthRestrict_002 NegSem_06010204_StringLengthRestrict_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.4, Assign invalid values to length restricted bitstring.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010204_StringLengthRestrict_002 {
+ type bitstring BitStrings length(2);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010204_StringLengthRestrict_002() runs on GeneralComp {
+ var BitStrings v_b := '111'B; // value length 3 != type length is 2
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010204_StringLengthRestrict_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: '111'B is not a valid value for type `bitstring' which has subtype length\(2\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010204_StringLengthRestrict_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to length restricted hexstring >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010204_StringLengthRestrict_003 NegSem_06010204_StringLengthRestrict_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.4, Assign invalid values to length restricted hexstring
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010204_StringLengthRestrict_003 {
+ type hexstring HexStrings1 length(3); //3 hexadecimal digits
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010204_StringLengthRestrict_003() runs on GeneralComp {
+ var HexStrings1 v_b1;
+ v_b1 := 'FE00'H; //invalid length 4
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010204_StringLengthRestrict_003());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 'FE00'H is not a valid value for type `hexstring' which has subtype length\(3\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010204_StringLengthRestrict_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to length restricted hexstring >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010204_StringLengthRestrict_004 NegSem_06010204_StringLengthRestrict_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.4, Assign invalid values to length restricted hexstring
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010204_StringLengthRestrict_004 {
+ type hexstring HexStrings1 length(2 .. infinity); //hexadecimal digits between 2 and 5
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010204_StringLengthRestrict_004() runs on GeneralComp {
+ var HexStrings1 v_b1;
+ v_b1 := 'A'H; //invalid length 1
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010204_StringLengthRestrict_004());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 'A'H is not a valid value for type `hexstring' which has subtype length\(2..infinity\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010204_StringLengthRestrict_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to length restricted octetstring >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010204_StringLengthRestrict_005 NegSem_06010204_StringLengthRestrict_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.4, Assign invalid values to length restricted octetstring
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010204_StringLengthRestrict_005 {
+ type octetstring ocStrings1 length(4);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010204_StringLengthRestrict_005() runs on GeneralComp {
+ var ocStrings1 v_b1;
+ v_b1 := 'FE8001'O; //3 octets invalid length
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010204_StringLengthRestrict_005());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 'FE8001'O is not a valid value for type `octetstring' which has subtype length\(4\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010204_StringLengthRestrict_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to length restricted octetstring >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010204_StringLengthRestrict_006 NegSem_06010204_StringLengthRestrict_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.4, Assign invalid values to length restricted octetstring
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010204_StringLengthRestrict_006 {
+ type octetstring ocStrings1 length(2..infinity);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010204_StringLengthRestrict_006() runs on GeneralComp {
+ var ocStrings1 v_b1;
+ v_b1 := 'FE'O; //1 octet invalid length
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010204_StringLengthRestrict_006());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 'FE'O is not a valid value for type `octetstring' which has subtype length\(2..infinity\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010204_StringLengthRestrict_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to length restricted charstring >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010204_StringLengthRestrict_007 NegSem_06010204_StringLengthRestrict_007.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.4, Assign invalid values to length restricted charstring
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010204_StringLengthRestrict_007{
+ type charstring myStrings1 length(2..infinity);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010204_StringLengthRestrict_007() runs on GeneralComp {
+ var myStrings1 v_b1;
+ v_b1 := "a"; //1 charc. length
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010204_StringLengthRestrict_007());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: "a" is not a valid value for type `charstring' which has subtype length\(2..infinity\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010204_StringLengthRestrict_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to length restricted charstring >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010204_StringLengthRestrict_008 NegSem_06010204_StringLengthRestrict_008.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.4, Assign invalid values to length restricted charstring
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010204_StringLengthRestrict_008{
+ type charstring myStrings1 length(2);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010204_StringLengthRestrict_008() runs on GeneralComp {
+ var myStrings1 v_b1;
+ v_b1 := "abc"; //2 characters length req.
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010204_StringLengthRestrict_008());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: "abc" is not a valid value for type `charstring' which has subtype length\(2\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_06010204_StringLengthRestrict_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - upper boundary should be greater than lower boundary in string length restictions >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_06010204_StringLengthRestrict_001 NegSyn_06010204_StringLengthRestrict_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.4, upper boundary should be greater than lower boundary in string length restictions
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_06010204_StringLengthRestrict_001 {
+ type hexstring HexStrings1 length(3 .. 1); // upper bound is smaller than lower bound
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The upper boundary of the length restriction \(1\) cannot be smaller than the lower boundary \(3\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_06010204_StringLengthRestrict_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - boundary integers should be non negative integers >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_06010204_StringLengthRestrict_002 NegSyn_06010204_StringLengthRestrict_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.4, boundary integers should be non negative integers
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_06010204_StringLengthRestrict_002 {
+ type hexstring HexStrings1 length(0 .. -5); // negative boundary for length
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The upper boundary of the length restriction must be a non-negative integer value instead of -5
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06010205_StringPattern_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to pattern restricted character strings. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06010205_StringPattern_001 NegSem_06010205_StringPattern_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.5, Assign invalid values to pattern restricted character strings.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06010205_StringPattern_001 {
+ type charstring MyString (pattern "?bc*xyz");
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_06010205_StringPattern_001() runs on GeneralComp {
+ var MyString v_c := "abcyz"; // value missing x
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_06010205_StringPattern_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: "abcyz" is not a valid value for type `charstring' which has subtype pattern\(\?bc\*xyz\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_06010205_StringPattern_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign quadruple values to pattern restricted character strings. >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_06010205_StringPattern_002 NegSyn_06010205_StringPattern_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.5, Assign quadruple values to pattern restricted character strings.
+ ** @verdict pass reject, noexecution
+ ***************************************************/
+
+module NegSyn_06010205_StringPattern_002 {
+ type charstring MyString (pattern "\q{0,0,1,116}abc"); //error: not a legal character for the TTCN 3 charstring type
+
+
+ type component GeneralComp {}
+
+ testcase TC_NegSyn_06010205_StringPattern_002() runs on GeneralComp {
+ var MyString v_c := "Å´abc"; //error: not a legal character of the TTCN 3 charstring type
+ }
+
+ control{
+ execute(TC_NegSyn_06010205_StringPattern_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: char\(0, 0, 0, 197\) & char\(0, 0, 0, 180\) \& "abc" is not a valid value for type `charstring' which has subtype pattern\(\\q\{0,0,1,116\}abc\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0601020601_MixingSubtype_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to mixed restricted floats. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0601020601_MixingSubtype_001 NegSem_0601020601_MixingSubtype_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.6.1, Assign invalid values to mixed restricted floats.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_0601020601_MixingSubtype_001 {
+ type float lessThanPiAndNaN (-infinity .. 3142E-3, not_a_number);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_0601020601_MixingSubtype_001() runs on GeneralComp {
+ var lessThanPiAndNaN v_f := 4.0; // value out of range
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_0601020601_MixingSubtype_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 4.0e0 is not a valid value for type `float' which has subtype \(-INF..3.142e0,NaN\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0601020601_MixingSubtype_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to mixed restricted integers. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0601020601_MixingSubtype_002 NegSem_0601020601_MixingSubtype_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.6.1, Assign invalid values to mixed restricted integers.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_0601020601_MixingSubtype_002 {
+ type integer MyInt (1, 5, 10, 100 .. infinity);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_0601020601_MixingSubtype_002() runs on GeneralComp {
+ var MyInt v_i := 6; // value out of range
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_0601020601_MixingSubtype_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 6 is not a valid value for type `integer' which has subtype \(1,5,10,100..infinity\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0601020602_StringMixing_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to mixed restricted character strings. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0601020602_StringMixing_001 NegSem_0601020602_StringMixing_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.6.2, Assign invalid values to mixed restricted character strings.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_0601020602_StringMixing_001 {
+ type charstring MyString (pattern "?bc*xyz") length (5 .. 8);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_0601020602_StringMixing_001() runs on GeneralComp {
+ var MyString v_c := "abcyz"; // value missing x
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_0601020602_StringMixing_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: "abcyz" is not a valid value for type `charstring' which has subtype \(pattern\(\?bc\*xyz\) intersection length\(5..8\)\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0601020602_StringMixing_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to mixed restricted character strings. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0601020602_StringMixing_002 NegSem_0601020602_StringMixing_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.6.2, Assign invalid values to mixed restricted character strings.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_0601020602_StringMixing_002 {
+ type charstring MyString (pattern "?bc*xyz") length (5 .. 8);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_0601020602_StringMixing_002() runs on GeneralComp {
+ var MyString v_c := "abc123xyz"; // value length 9 exceeds 8
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_0601020602_StringMixing_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: "abc123xyz" is not a valid value for type `charstring' which has subtype \(pattern\(\?bc\*xyz\) intersection length\(5..8\)\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0601020602_StringMixing_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to mixed restricted character strings. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0601020602_StringMixing_003 NegSem_0601020602_StringMixing_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.6.2, Assign invalid values to mixed restricted character strings.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_0601020602_StringMixing_003 {
+ type charstring MyString ("a".."z") length (3 .. 8);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_0601020602_StringMixing_003() runs on GeneralComp {
+ var MyString v_c := "abc1xyz"; // char 1 not allowed
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_0601020602_StringMixing_003());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: "abc1xyz" is not a valid value for type `charstring' which has subtype \(from\("a".."z"\) intersection length\(3..8\)\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0601020602_StringMixing_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to mixed restricted bit strings. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0601020602_StringMixing_004 NegSem_0601020602_StringMixing_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.6.2, Assign invalid values to mixed restricted bit strings.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_0601020602_StringMixing_004 {
+ type bitstring MyString ('111'B, '101010'B, '111111'B) length (4 .. 8);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_0601020602_StringMixing_004() runs on GeneralComp {
+ var MyString v_c := '111'B; // value lenght 3 not allowed
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_0601020602_StringMixing_004());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: '111'B is not a valid value for type `bitstring' which has subtype \('101010'B,'111111'B\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0601020602_StringMixing_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign invalid values to mixed restricted hex strings. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0601020602_StringMixing_005 NegSem_0601020602_StringMixing_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.6.2, Assign invalid values to mixed restricted hex strings.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_0601020602_StringMixing_005 {
+ type hexstring MyString ('1F1'H, '103A10'H, '111111'H) length (4 .. 8);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_0601020602_StringMixing_005() runs on GeneralComp {
+ var MyString v_c := '1F1'H; // value length 3 not allowed
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_0601020602_StringMixing_005());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: '1F1'H is not a valid value for type `hexstring' which has subtype \('103A10'H,'111111'H\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0601020602_StringMixing_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC -Assign invalid values to mixed restricted octet strings. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0601020602_StringMixing_006 NegSem_0601020602_StringMixing_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.1.2.6.2, Assign invalid values to mixed restricted octet strings.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_0601020602_StringMixing_006 {
+ type octetstring MyString ('FF1111'O, '101010A3'O, 'FFFFFFFFFF'O) length (4);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_0601020602_StringMixing_006() runs on GeneralComp {
+ var MyString v_c := 'FF1111'O; // value length 3 not allowed
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_0601020602_StringMixing_006());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 'FF1111'O is not a valid value for type `octetstring' which has subtype \('101010A3'O\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h2. 0602_structured_types_and_values folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0602_TopLevel_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that value list notation can not be used for a union type. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0602_TopLevel_001 NegSem_0602_TopLevel_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2, Ensure that value list notation can not be used for a union type.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_0602_TopLevel_001 {
+
+ type component GeneralComp {
+ }
+
+ type union MyUnion {
+ integer field1,
+ charstring field2,
+ float field3
+ }
+
+ testcase TC_NegSem_0602_TopLevel_001() runs on GeneralComp {
+
+ var MyUnion v_myUnion := {5}; //value list notation can not be used for a union type
+
+ }
+
+ control {
+ execute(TC_NegSem_0602_TopLevel_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: union value was expected for type `@NegSem_0602_TopLevel_001.MyUnion'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0602_TopLevel_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that indexed notation can not be used for a record type. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0602_TopLevel_002 NegSem_0602_TopLevel_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2, Ensure that indexed notation can not be used for a record type.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_0602_TopLevel_002 {
+
+ type component GeneralComp {
+ }
+
+ type record MyRecord {
+ integer field1,
+ charstring field2,
+ float field3
+ }
+
+ testcase TC_NegSem_0602_TopLevel_002() runs on GeneralComp {
+
+ var MyRecord v_myRecord := {
+ field1 := 5,
+ field2 := "hi",
+ field3 := 3.14
+ };
+
+ var integer Integer1 :=3;
+ v_myRecord[0] := Integer1;//not possible to use index notation on a record type
+
+ }
+
+ control {
+ execute(TC_NegSem_0602_TopLevel_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type `@NegSem_0602_TopLevel_002.MyRecord' cannot be indexed
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0602_TopLevel_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that indexed notation can not be used for a set type. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0602_TopLevel_003 NegSem_0602_TopLevel_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2, Ensure that indexed notation can not be used for a set type.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_0602_TopLevel_003 {
+
+ type component GeneralComp {
+ }
+
+ type set MySet {
+ integer field1,
+ charstring field2,
+ float field3
+ }
+
+ testcase TC_NegSem_0602_TopLevel_003() runs on GeneralComp {
+
+ var MySet v_mySet := {
+ field1 := 5,
+ field2 := "hi",
+ field3 := 3.14
+ };
+
+ var integer Integer1 :=3;
+ v_mySet[0] := Integer1;//not possible to use index notation on a set type
+
+ }
+
+ control {
+ execute(TC_NegSem_0602_TopLevel_003());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type `@NegSem_0602_TopLevel_003.MySet' cannot be indexed
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0602_TopLevel_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that indexed notation can not be used for a union type. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0602_TopLevel_004 NegSem_0602_TopLevel_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2, Ensure that indexed notation can not be used for a union type.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_0602_TopLevel_004 {
+
+ type component GeneralComp {
+ }
+
+ type union MyUnion {
+ integer field1,
+ charstring field2,
+ float field3
+ }
+
+ testcase TC_NegSem_0602_TopLevel_004() runs on GeneralComp {
+
+ var MyUnion v_myUnion := {
+ field1 := 5
+ };
+
+ var integer Integer1 :=3;
+ v_myUnion[0] := Integer1;//not possible to use index notation on a union type
+
+ }
+
+ control {
+ execute(TC_NegSem_0602_TopLevel_004());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type `@NegSem_0602_TopLevel_004.MyUnion' cannot be indexed
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_0602_TopLevel_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Invalid recursive union type definition causing an error >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_0602_TopLevel_001 NegSyn_0602_TopLevel_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2, Invalid recursive union type definition causing an error
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_0602_TopLevel_001 {
+ // In case of union types, to avoid infinite recursion, at least one of the alternatives shall not reference its own type.
+ type union MyUnion {
+ MyUnion choice1,
+ MyUnion choice2
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: While checking embedded recursions: Circular reference: `@NegSyn_0602_TopLevel_001.MyUnion' -> `@NegSyn_0602_TopLevel_001.MyUnion.choice1' -> `@NegSyn_0602_TopLevel_001.MyUnion'
+<END_RESULT>
+<RESULT COUNT 1>
+error: While checking embedded recursions: Circular reference: `@NegSyn_0602_TopLevel_001.MyUnion' -> `@NegSyn_0602_TopLevel_001.MyUnion.choice2' -> `@NegSyn_0602_TopLevel_001.MyUnion'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_0602_TopLevel_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Invalid recursive record type definition causing an error >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_0602_TopLevel_002 NegSyn_0602_TopLevel_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2, Invalid recursive record type definition causing an error
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_0602_TopLevel_002 {
+ // In case of record and set types, to avoid infinite recursion, fields referencing to its own type, shall be optional.
+ type record MyRecord {
+ integer field1,
+ MyRecord field2,
+ integer field3
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: While checking embedded recursions: Circular reference: `@NegSyn_0602_TopLevel_002.MyRecord' -> `@NegSyn_0602_TopLevel_002.MyRecord.field2' -> `@NegSyn_0602_TopLevel_002.MyRecord'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_0602_TopLevel_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Combined value list and assignment notation not allowed in the same (immediate) context. >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_0602_TopLevel_003 NegSyn_0602_TopLevel_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2, Combined value list and assignment notation not allowed in the same (immediate) context.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_0602_TopLevel_003 {
+ type record MyRecord {
+ integer field1,
+ charstring field2 optional,
+ float field3
+ }
+ const MyRecord c_rec := {
+ field1 := 5,
+ "hi", // combined value list and assignment notation not allowed in the same (immediate) context.
+ field3 := 3.14
+ };
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `"': syntax error, unexpected Cstring
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060201_RecordTypeValues_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - The omit keyword shall not be used for mandatory fields. >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060201_RecordTypeValues_001 NegSyn_060201_RecordTypeValues_001.ttcn >
+/***************************************************
+ ** @author STF 409, re-numbering done by STF470
+ ** @version 0.0.1
+ ** @purpose 1:6.2, The omit keyword shall not be used for mandatory fields.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_060201_RecordTypeValues_001 {
+ type record MyRecord {
+ integer field1,
+ MyRecord field2 optional,
+ integer field3
+ }
+ const MyRecord c_rec := {
+ field1 := 5,
+ field2 := omit,
+ field3 := omit // not optional
+ };
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: `omit' value is not allowed in this context
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060201_RecordTypeValues_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - The omit keyword shall not be used for mandatory fields. >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060201_RecordTypeValues_002 NegSyn_060201_RecordTypeValues_002.ttcn >
+/***************************************************
+ ** @author STF 409, re-numbering done by STF470
+ ** @version 0.0.1
+ ** @purpose 1:6.2, The omit keyword shall not be used for mandatory fields.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_060201_RecordTypeValues_002 {
+ type record MyRecord {
+ integer field1,
+ MyRecord field2 optional,
+ integer field3
+ }
+ const MyRecord c_rec := {
+ field1 := 5,
+ field2 := -,
+ field3 := omit // not optional
+ };
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: `omit' value is not allowed in this context
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06020101_ReferencingRecordFields_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - The omit keyword shall not be used for mandatory fields. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06020101_ReferencingRecordFields_001 NegSem_06020101_ReferencingRecordFields_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.1.1, The dot notation used in record type definitions is correctly handled
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06020101_ReferencingRecordFields_001 {
+
+ type component GeneralComp {
+ }
+
+ type record R {
+ integer field1 (1 .. 10),
+ charstring field2 optional
+ }
+
+ type R ConstrainedRecord ({1, omit}, {2, "xyz"}, {3, "zyx"}) ;
+
+ type ConstrainedRecord.field1 MyInteger;
+
+ testcase TC_NegSem_06020101_ReferencingRecordFields_001() runs on GeneralComp {
+
+ var MyInteger v_int := 11;
+ // assignment from outside of the carried over (1 .. 10) range constraint
+
+ }
+
+ control {
+ execute(TC_NegSem_06020101_ReferencingRecordFields_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 11 is not a valid value for type `integer' which has subtype \(1..10\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06020101_ReferencingRecordFields_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - The omit keyword shall not be used for mandatory fields. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06020101_ReferencingRecordFields_002 NegSem_06020101_ReferencingRecordFields_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.1.1, verify that record fields cannot reference themselves
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Fields of record type definitions shall not reference themselves.
+
+module NegSem_06020101_ReferencingRecordFields_002 {
+
+ type component GeneralComp {
+ }
+
+ type record R {
+ integer field1,
+ R.field2 field2 optional, // this circular reference is NOT ALLOWED
+ boolean field3
+ }
+
+ testcase TC_NegSem_06020101_ReferencingRecordFields_002() runs on GeneralComp {
+ var R v_rec := { field1 := 1, field2 := omit, field3 := true };
+ if (v_rec.field1 == 1) {
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+ control {
+ execute(TC_NegSem_06020101_ReferencingRecordFields_002());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: While checking referenced type: Circular reference: `@NegSem_06020101_ReferencingRecordFields_002.R.field2' -> `@NegSem_06020101_ReferencingRecordFields_002.R.field2'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06020101_ReferencingRecordFields_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - The omit keyword shall not be used for mandatory fields. >
+
+<COMPILE>
+
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_06020101_ReferencingRecordFields_003 NegSem_06020101_ReferencingRecordFields_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.1.1, verify that referencing uninitialized record on the right hand of an assignment is not allowed
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Referencing a subfield of an uninitialized or omitted record field or value on the right
+// hand side of an assignment shall cause an error.
+
+module NegSem_06020101_ReferencingRecordFields_003 {
+
+ type component GeneralComp {
+ }
+
+ type record R {
+ record {
+ integer subfield1
+ } field1,
+ charstring field2 optional
+ }
+
+ testcase TC_NegSem_06020101_ReferencingRecordFields_003() runs on GeneralComp {
+ var R v_rec;
+ v_rec.field2 := "abc";
+ if (v_rec.field1.subfield1 == 5) {
+ setverdict(fail);
+ } else {
+ setverdict(pass);
+ }
+ }
+
+ control {
+ execute(TC_NegSem_06020101_ReferencingRecordFields_003());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Unbound left operand of integer comparison.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06020101_ReferencingRecordFields_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - The omit keyword shall not be used for mandatory fields. >
+
+<COMPILE>
+
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_06020101_ReferencingRecordFields_004 NegSem_06020101_ReferencingRecordFields_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.1.1, verify that referencing omitted record on the right hand of an assignment is not allowed
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Referencing a subfield of an uninitialized or omitted record field or value on the right
+// hand side of an assignment shall cause an error.
+
+module NegSem_06020101_ReferencingRecordFields_004 {
+
+ type component GeneralComp {
+ }
+
+ type record R {
+ record {
+ integer subfield1
+ } field1 optional,
+ charstring field2 optional
+ }
+
+ testcase TC_NegSem_06020101_ReferencingRecordFields_004() runs on GeneralComp {
+ var R v_rec;
+ v_rec.field1 := omit;
+ v_rec.field2 := "abc";
+ if (v_rec.field1.subfield1 == 5) {
+ setverdict(fail);
+ } else {
+ setverdict(pass);
+ }
+ }
+
+ control {
+ execute(TC_NegSem_06020101_ReferencingRecordFields_004());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Using the value of an optional field containing omit.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060202_SetTypeValues_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - The omit keyword shall not be used for mandatory fields. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060202_SetTypeValues_001 NegSem_060202_SetTypeValues_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.2, The dot notation used in set type definitions is correctly handled
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_060202_SetTypeValues_001 {
+
+ type component GeneralComp {
+ }
+
+ type set S {
+ integer field1 (1 .. 10),
+ charstring field2 optional
+ }
+
+ //type S ConstrainedSet ({1, omit}, {2, "xyz"}, {3, "zyx"}) ; // value list doesn't work
+ type S ConstrainedSet ({field1 := 1, field2 := omit}, {field1 := 2, field2 := "xyz"}, {field1 := 3, field2 := "zyx"}) ;
+
+ type ConstrainedSet.field1 MyInteger;
+
+ testcase TC_NegSem_060202_SetTypeValues_001() runs on GeneralComp {
+
+ var MyInteger v_int := 11;
+ // assignment from outside of the carried over (1 .. 10) range constraint
+
+ }
+
+ control {
+ execute(TC_NegSem_060202_SetTypeValues_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 11 is not a valid value for type `integer' which has subtype \(1..10\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060202_SetTypeValues_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - The omit keyword shall not be used for mandatory fields. >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060202_SetTypeValues_001 NegSyn_060202_SetTypeValues_001.ttcn >
+/***************************************************
+ ** @author STF470
+ ** @version 0.0.1
+ ** @purpose 1:6.2, The omit keyword shall not be used for mandatory fields.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_060202_SetTypeValues_001 {
+ type set MySet {
+ integer field1,
+ MySet field2 optional,
+ integer field3
+ }
+ const MySet c_set := {
+ field1 := 5,
+ field2 := omit,
+ field3 := omit // not optional
+ };
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: `omit' value is not allowed in this context
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060202_SetTypeValues_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - The omit keyword shall not be used for mandatory fields. >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060202_SetTypeValues_002 NegSyn_060202_SetTypeValues_002.ttcn >
+/***************************************************
+ ** @author STF470
+ ** @version 0.0.1
+ ** @purpose 1:6.2, The omit keyword shall not be used for mandatory fields.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_060202_SetTypeValues_002 {
+ type record MySet {
+ integer field1,
+ MySet field2 optional,
+ integer field3
+ }
+ const MySet c_set := {
+ field1 := 5,
+ field2 := -,
+ field3 :=omit // not optional
+ };
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: `omit' value is not allowed in this context
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060203_records_and_sets_of_single_types_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - ensure that the inner type referencing is correctly handled >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060203_records_and_sets_of_single_types_001 NegSem_060203_records_and_sets_of_single_types_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.3.2, ensure that the inner type referencing is correctly handled
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_060203_records_and_sets_of_single_types_001 {
+
+ type component GeneralComp {
+ }
+
+ type record length (5) of record of integer ConstrainedStructure (1 .. 10);
+ type ConstrainedStructure[-] RecordOfInt;
+
+ testcase TC_NegSem_060203_records_and_sets_of_single_types_001() runs on GeneralComp {
+
+ var RecordOfInt v_rec := { 8, 11, 2, 3, 4, 5, 6, 7 }; // a value is outside the restricted range
+
+ }
+
+ control {
+ execute(TC_NegSem_060203_records_and_sets_of_single_types_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 11 is not a valid value for type `integer' which has subtype \(1..10\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060203_records_and_sets_of_single_types_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - ensure that the inner type referencing is correctly handled >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060203_records_and_sets_of_single_types_002 NegSem_060203_records_and_sets_of_single_types_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.3.2, ensure that the inner type referencing is correctly handled
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_060203_records_and_sets_of_single_types_002 {
+
+ type component GeneralComp {
+ }
+
+ type record of record length (5) of integer ConstrainedStructure (1 .. 10);
+ type ConstrainedStructure[-] RecordOfInt;
+
+ testcase TC_NegSem_060203_records_and_sets_of_single_types_002() runs on GeneralComp {
+
+ var RecordOfInt v_rec := { 8, 1, 2, 3, 4, 5, 6, 7 };
+ // a record is longer than the restricted length
+
+ }
+
+ control {
+ execute(TC_NegSem_060203_records_and_sets_of_single_types_002());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: \{ 8, 1, 2, 3, 4, 5, 6, 7 \} is not a valid value for type `@NegSem_060203_records_and_sets_of_single_types_002.ConstrainedStructure.SEQUENCE_OF' which has subtype length\(5\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060203_records_and_sets_of_single_types_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - negative index applied to a record of value on the right hand side of an assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060203_records_and_sets_of_single_types_003 NegSem_060203_records_and_sets_of_single_types_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.3, negative index applied to a record of value on the right hand side of an assignment
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Implicit rule, formal requirement requested in CR 6646 (resolution expected
+// in TTCN-3:2014)
+module NegSem_060203_records_and_sets_of_single_types_003 {
+
+ type component GeneralComp {
+ }
+
+ type record of integer RoI;
+
+ testcase TC_NegSem_060203_records_and_sets_of_single_types_003() runs on GeneralComp {
+
+ var RoI v_rec := { 0, 1, 2 };
+ var integer i := v_rec[-1]; // error expected
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060203_records_and_sets_of_single_types_003());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A non-negative integer value was expected for indexing type `@NegSem_060203_records_and_sets_of_single_types_003.RoI' instead of `-1'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060203_records_and_sets_of_single_types_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - negative index applied to a set of value on the right hand side of an assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060203_records_and_sets_of_single_types_004 NegSem_060203_records_and_sets_of_single_types_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.3, negative index applied to a set of value on the right hand side of an assignment
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Implicit rule, formal requirement requested in CR 6646 (resolution expected
+// in TTCN-3:2014)
+module NegSem_060203_records_and_sets_of_single_types_004 {
+
+ type component GeneralComp {
+ }
+
+ type set of integer SoI;
+
+ testcase TC_NegSem_060203_records_and_sets_of_single_types_004() runs on GeneralComp {
+
+ var SoI v_set := { 0, 1, 2 };
+ var integer i := v_set[-1]; // error expected
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060203_records_and_sets_of_single_types_004());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A non-negative integer value was expected for indexing type `@NegSem_060203_records_and_sets_of_single_types_004.SoI' instead of `-1'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060203_records_and_sets_of_single_types_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC -negative index applied to a record of value on the left hand side of an assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060203_records_and_sets_of_single_types_005 NegSem_060203_records_and_sets_of_single_types_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.3, negative index applied to a record of value on the left hand side of an assignment
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Implicit rule, formal requirement requested in CR 6646 (resolution expected
+// in TTCN-3:2014)
+module NegSem_060203_records_and_sets_of_single_types_005 {
+
+ type component GeneralComp {
+ }
+
+ type record of integer RoI;
+
+ testcase TC_NegSem_060203_records_and_sets_of_single_types_005() runs on GeneralComp {
+
+ var RoI v_rec := { 0, 1, 2 };
+ v_rec[-1] := 10; // error expected
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060203_records_and_sets_of_single_types_005());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A non-negative integer value was expected for indexing type `@NegSem_060203_records_and_sets_of_single_types_005.RoI' instead of `-1'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060203_records_and_sets_of_single_types_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC -negative index applied to a set of value on the left hand side of an assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060203_records_and_sets_of_single_types_006 NegSem_060203_records_and_sets_of_single_types_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.3, negative index applied to a set of value on the left hand side of an assignment
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Implicit rule, formal requirement requested in CR 6646 (resolution expected
+// in TTCN-3:2014)
+module NegSem_060203_records_and_sets_of_single_types_006 {
+
+ type component GeneralComp {
+ }
+
+ type set of integer SoI;
+
+ testcase TC_NegSem_060203_records_and_sets_of_single_types_006() runs on GeneralComp {
+
+ var SoI v_set := { 0, 1, 2 };
+ v_set[-1] := 10; // error expected
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060203_records_and_sets_of_single_types_006());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A non-negative integer value was expected for indexing type `@NegSem_060203_records_and_sets_of_single_types_006.SoI' instead of `-1'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060203_records_and_sets_of_single_types_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC -wrong index type applied to a record of value on the right hand side of an assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060203_records_and_sets_of_single_types_007 NegSem_060203_records_and_sets_of_single_types_007.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.3, wrong index type applied to a record of value on the right hand side of an assignment
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Implicit rule, formal requirement requested in CR 6646 (resolution expected
+// in TTCN-3:2014)
+module NegSem_060203_records_and_sets_of_single_types_007 {
+
+ type component GeneralComp {
+ }
+
+ type record of integer RoI;
+
+ testcase TC_NegSem_060203_records_and_sets_of_single_types_007() runs on GeneralComp {
+
+ var RoI v_rec := { 0, 1, 2 };
+ var integer i := v_rec["0"]; // error expected
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060203_records_and_sets_of_single_types_007());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A value or expression of type integer was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060203_records_and_sets_of_single_types_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - wrong index type applied to a set of value on the right hand side of an assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060203_records_and_sets_of_single_types_008 NegSem_060203_records_and_sets_of_single_types_008.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.3, wrong index type applied to a set of value on the right hand side of an assignment
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Implicit rule, formal requirement requested in CR 6646 (resolution expected
+// in TTCN-3:2014)
+module NegSem_060203_records_and_sets_of_single_types_008 {
+
+ type component GeneralComp {
+ }
+
+ type set of integer SoI;
+
+ testcase TC_NegSem_060203_records_and_sets_of_single_types_008() runs on GeneralComp {
+
+ var SoI v_set := { 0, 1, 2 };
+ var integer i := v_set["0"]; // error expected
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060203_records_and_sets_of_single_types_008());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A value or expression of type integer was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060203_records_and_sets_of_single_types_009 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - wrong index type applied to a record of value on the left hand side of an assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060203_records_and_sets_of_single_types_009 NegSem_060203_records_and_sets_of_single_types_009.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.3, wrong index type applied to a record of value on the left hand side of an assignment
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Implicit rule, formal requirement requested in CR 6646 (resolution expected
+// in TTCN-3:2014)
+module NegSem_060203_records_and_sets_of_single_types_009 {
+
+ type component GeneralComp {
+ }
+
+ type record of integer RoI;
+
+ testcase TC_NegSem_060203_records_and_sets_of_single_types_009() runs on GeneralComp {
+
+ var RoI v_rec := { 0, 1, 2 };
+ v_rec["0"] := 10; // error expected
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060203_records_and_sets_of_single_types_009());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A value or expression of type integer was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060203_records_and_sets_of_single_types_010 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - wrong index type applied to a set of value on the left hand side of an assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060203_records_and_sets_of_single_types_010 NegSem_060203_records_and_sets_of_single_types_010.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.3.2, wrong index type applied to a set of value on the left hand side of an assignment
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Implicit rule, formal requirement requested in CR 6646 (resolution expected
+// in TTCN-3:2014)
+module NegSem_060203_records_and_sets_of_single_types_010 {
+
+ type component GeneralComp {
+ }
+
+ type set of integer SoI;
+
+ testcase TC_NegSem_060203_records_and_sets_of_single_types_010() runs on GeneralComp {
+
+ var SoI v_set := { 0, 1, 2 };
+ v_set["0"] := 10; // error expected
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060203_records_and_sets_of_single_types_010());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A value or expression of type integer was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060203_records_and_sets_of_single_types_013 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - wrong index type applied to a record of value on the right hand side of an assignment >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_060203_records_and_sets_of_single_types_013 NegSem_060203_records_and_sets_of_single_types_013.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.3.2, wrong index type applied to a record of value on the right hand side of an assignment
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// If the value of the element indicated by the index at the right-hand of an
+// assignment is undefined (uninitialized), this shall cause a semantic or
+// run-time error.)
+module NegSem_060203_records_and_sets_of_single_types_013 {
+
+ type component GeneralComp {
+ }
+
+ type record of integer RoI;
+
+ testcase TC_NegSem_060203_records_and_sets_of_single_types_013() runs on GeneralComp {
+
+ var RoI v_rec := { 0, 1, 2 };
+ var integer i := v_rec[3]; // error expected
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060203_records_and_sets_of_single_types_013());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Index overflow in a value of type @PreGenRecordOf.PREGEN_RECORD_OF_INTEGER: The index is 3, but the value has only 3 elements.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060203_records_and_sets_of_single_types_014 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - wrong index type applied to a record of value on the right hand side of an assignment >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_060203_records_and_sets_of_single_types_014 NegSem_060203_records_and_sets_of_single_types_014.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.3.2, wrong index type applied to a record of value on the right hand side of an assignment
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// If the value of the element indicated by the index at the right-hand of an
+// assignment is undefined (uninitialized), this shall cause a semantic or
+// run-time error.)
+module NegSem_060203_records_and_sets_of_single_types_014 {
+
+ type component GeneralComp {
+ }
+
+ type set of integer SoI;
+
+ testcase TC_NegSem_060203_records_and_sets_of_single_types_014() runs on GeneralComp {
+
+ var SoI v_set := { 0, 1, 2 };
+ var integer i := v_set[3]; // error expected
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060203_records_and_sets_of_single_types_014());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Index overflow in a value of type @PreGenRecordOf.PREGEN_SET_OF_INTEGER: The index is 3, but the value has only 3 elements.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060203_records_and_sets_of_single_types_015 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify than an error is generated when sending a partially initialized record of value >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_060203_records_and_sets_of_single_types_015 NegSem_060203_records_and_sets_of_single_types_015.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.3.2, verify than an error is generated when sending a partially initialized record of value
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Undefined elements are permitted only in transient states (while the value
+// remains invisible). Sending a record of value with undefined elements shall
+// cause a test case error.
+
+module NegSem_060203_records_and_sets_of_single_types_015 {
+
+ type record of integer RoI;
+
+ type port P message {
+ inout RoI
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p
+ }
+
+ testcase TC_NegSem_060203_records_and_sets_of_single_types_015() runs on GeneralComp {
+ var template RoI mw_sendingTemplate := {0, -, 2};
+ connect(self:p,self:p);
+ p.send(mw_sendingTemplate); // error expected
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_060203_records_and_sets_of_single_types_015());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Text encoder: Encoding an unbound integer value.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060203_records_and_sets_of_single_types_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - ensure that value list cannot contain an empty assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060203_records_and_sets_of_single_types_001 NegSyn_060203_records_and_sets_of_single_types_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.3.2, ensure that value list cannot contain an empty assignment
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// No empty assignment is allowed (e.g. two commas, the second immediately
+// following the first or only with white space between them).
+module NegSyn_060203_records_and_sets_of_single_types_001 {
+
+ type component GeneralComp {
+ }
+
+ type record of integer RoI;
+
+ testcase TC_NegSyn_060203_records_and_sets_of_single_types_001() runs on GeneralComp {
+
+ var RecordOfInt v_rec := { 0, , 2 }; // syntax error expected
+
+ }
+
+ control {
+ execute(TC_NegSyn_060203_records_and_sets_of_single_types_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `,': syntax error, unexpected ','
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060204_enumerated_type_and_values_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - not unique identifiers in enumerated type declaration >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060204_enumerated_type_and_values_001 NegSem_060204_enumerated_type_and_values_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, not unique identifiers in enumerated type declaration
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// The identifiers of enumerated values shall be unique within the enumerated type
+// (but do not have to be globally unique) and are consequently visible in the
+// context of the given type only.
+
+module NegSem_060204_enumerated_type_and_values_001 {
+
+ type enumerated MyFirstEnumType {
+ Monday, Tuesday, Wednesday, Thursday, Friday, Monday
+ };
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Duplicate enumeration identifier `Monday'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060204_enumerated_type_and_values_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - two equal user-assigned enumerated values >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060204_enumerated_type_and_values_002 NegSem_060204_enumerated_type_and_values_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.4, two equal user-assigned enumerated values
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Each user-assigned integer number shall be distinct within a single enumerated
+// type.
+
+module NegSem_060204_enumerated_type_and_values_002 {
+
+ type enumerated MyFirstEnumType {
+ Monday, Tuesday(2), Wednesday(2), Thursday, Friday
+ };
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Duplicate numeric value 2 for enumeration `Wednesday'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060204_enumerated_type_and_values_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - using enumerated value number directly (left hand side of assignments) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060204_enumerated_type_and_values_003 NegSem_060204_enumerated_type_and_values_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.4, using enumerated value number directly (left hand side of assignments)
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// For each enumerated value without an assigned integer value, the system
+// successively associates an integer number in the textual order of the
+// enumerated values, starting at the left-hand side, beginning with zero, by
+// step 1 and skipping any number occupied by any of the enumerated values with
+// a manually assigned value. These values are only used by the system to allow
+// the use of relational operators. The user shall not directly use associated
+// integer values but can access them and convert integer values into enumerated
+// values by using the predefined functions enum2int and int2enum (see clauses
+// 16.1.2, C.1.29 C.1.30 and C.1.4 C.1.4).
+
+module NegSem_060204_enumerated_type_and_values_003 {
+
+ type component GeneralComp {
+ }
+
+ type enumerated EDays {
+ Monday, Tuesday, Wednesday, Thursday, Friday
+ };
+
+ testcase TC_NegSem_060204_enumerated_type_and_values_003() runs on GeneralComp {
+ var EDays v_day0 := 0; // ordinal value shall not be accepted
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060204_enumerated_type_and_values_003());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: enumerated value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060204_enumerated_type_and_values_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - using enumerated value number directly (right hand side of assignments) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060204_enumerated_type_and_values_004 NegSem_060204_enumerated_type_and_values_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.4, using enumerated value number directly (right hand side of assignments)
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// For each enumerated value without an assigned integer value, the system
+// successively associates an integer number in the textual order of the
+// enumerated values, starting at the left-hand side, beginning with zero, by
+// step 1 and skipping any number occupied by any of the enumerated values with
+// a manually assigned value. These values are only used by the system to allow
+// the use of relational operators. The user shall not directly use associated
+// integer values but can access them and convert integer values into enumerated
+// values by using the predefined functions enum2int and int2enum (see clauses
+// 16.1.2, C.1.29 C.1.30 and C.1.4 C.1.4).
+
+module NegSem_060204_enumerated_type_and_values_004 {
+
+ type component GeneralComp {
+ }
+
+ type enumerated EDays {
+ Monday, Tuesday, Wednesday, Thursday, Friday
+ };
+
+ testcase TC_NegSem_060204_enumerated_type_and_values_004() runs on GeneralComp {
+ var EDays v_day0 := Monday;
+ var integer v_int := v_day0;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060204_enumerated_type_and_values_004());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `integer' was expected instead of `@NegSem_060204_enumerated_type_and_values_004.EDays'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060204_enumerated_type_and_values_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - using enumerated value without implicit or explicit type reference >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060204_enumerated_type_and_values_005 NegSem_060204_enumerated_type_and_values_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.4, using enumerated value without implicit or explicit type reference
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// For any instantiation or value reference of an enumerated type, the given
+// type shall be implicitly or explicitly referenced.
+
+module NegSem_060204_enumerated_type_and_values_005 {
+
+ type component GeneralComp {
+ }
+
+ type enumerated EDays {
+ Monday, Tuesday, Wednesday, Thursday, Friday
+ };
+
+ testcase TC_NegSem_060204_enumerated_type_and_values_005() runs on GeneralComp {
+ if (Tuesday != Wednesday) { // no implicit or explicit reference to enumeration
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+ control {
+ execute(TC_NegSem_060204_enumerated_type_and_values_005());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Cannot determine the type of the operands in operation `!='
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060204_enumerated_type_and_values_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - constant as user-assigned enumerated values >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060204_enumerated_type_and_values_001 NegSyn_060204_enumerated_type_and_values_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.4, constant as user-assigned enumerated values
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Each enumerated value may optionally have a user-assigned integer value, which
+// is defined after the name of the enumerated value in parenthesis.
+
+module NegSyn_060204_enumerated_type_and_values_001 {
+
+ const integer c_int := 5;
+ type enumerated MyFirstEnumType {
+ Monday, Tuesday(c_int), Wednesday, Thursday, Friday
+ };
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `c_int': syntax error, unexpected Identifier, expecting Number or '-'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060204_enumerated_type_and_values_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - expression as user-assigned enumerated value >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060204_enumerated_type_and_values_002 NegSyn_060204_enumerated_type_and_values_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.4, expression as user-assigned enumerated value
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Each enumerated value may optionally have a user-assigned integer value, which
+// is defined after the name of the enumerated value in parenthesis.
+
+module NegSyn_060204_enumerated_type_and_values_002 {
+
+ type enumerated MyFirstEnumType {
+ Monday, Tuesday(2+3), Thursday, Friday
+ };
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\+': syntax error, unexpected '\+', expecting '\)'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060205_top_level_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - assignment notation for union values with two items >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060205_top_level_001 NegSem_060205_top_level_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.5, assignment notation for union values with two items
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// The assignment notation shall be used for union-s, and the notation shall assign
+// a value to one field only. This field becomes the chosen field.
+
+module NegSem_060205_top_level_001 {
+ type component GeneralComp {
+ }
+
+ type union U {
+ integer option1,
+ charstring option2
+ }
+
+ testcase TC_NegSem_060205_top_level_001() runs on GeneralComp {
+ var U v_choice := { option1 := 1, option2 := "abc" };
+ if (ischosen(v_choice.option1) or ischosen(v_choice.option2)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control{
+ execute(TC_NegSem_060205_top_level_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Only one field was expected in union value instead of 2
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060205_top_level_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - assignment notation for union values with unknown alternative >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060205_top_level_002 NegSem_060205_top_level_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.5, assignment notation for union values with unknown alternative
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// The assignment notation shall be used for union-s, and the notation shall assign
+// a value to one field only. This field becomes the chosen field.
+
+module NegSem_060205_top_level_002 {
+ type component GeneralComp {
+ }
+
+ type union U {
+ integer option1,
+ charstring option2
+ }
+
+ testcase TC_NegSem_060205_top_level_002() runs on GeneralComp {
+ var U v_choice := { option1 := 10 };
+ v_choice := { option3 := true };
+ if (ischosen(v_choice.option1)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control{
+ execute(TC_NegSem_060205_top_level_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to non-existent field `option3' in union value for type `@NegSem_060205_top_level_002.U'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060205_top_level_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - "not used" symbol in union value notations >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060205_top_level_003 NegSem_060205_top_level_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.5, "not used" symbol in union value notations
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Neither the not used symbol "-" nor omit is allowed in union value notations.
+
+module NegSem_060205_top_level_003 {
+ type component GeneralComp {
+ }
+
+ type union U {
+ integer option1,
+ charstring option2
+ }
+
+ testcase TC_NegSem_060205_top_level_003() runs on GeneralComp {
+ var U v_choice := { option1 := - };
+ if (ischosen(v_choice.option1)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control{
+ execute(TC_NegSem_060205_top_level_003());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: integer value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060205_top_level_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - omit symbol in union value notations >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060205_top_level_004 NegSem_060205_top_level_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.5, omit symbol in union value notations
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Neither the not used symbol "-" nor omit is allowed in union value notations.
+
+module NegSem_060205_top_level_004 {
+ type component GeneralComp {
+ }
+
+ type union U {
+ integer option1,
+ charstring option2
+ }
+
+ testcase TC_NegSem_060205_top_level_004() runs on GeneralComp {
+ var U v_choice := { option1 := omit };
+ if (ischosen(v_choice.option1) or ischosen(v_choice.option2)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control{
+ execute(TC_NegSem_060205_top_level_004());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: `omit' value is not allowed in this context
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060205_top_level_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - value list notation used for union value definition >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060205_top_level_005 NegSem_060205_top_level_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.5, value list notation used for union value definition
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// The value list notation shall not be used for setting values of union types.
+
+module NegSem_060205_top_level_005 {
+ type component GeneralComp {
+ }
+
+ type union U {
+ integer option1
+ }
+
+ testcase TC_NegSem_060205_top_level_005() runs on GeneralComp {
+ var U v_choice := { 1 };
+ if (ischosen(v_choice.option1)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control{
+ execute(TC_NegSem_060205_top_level_005());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: union value was expected for type `@NegSem_060205_top_level_005.U'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060205_top_level_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - union type declaration with two equal identifiers >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060205_top_level_001 NegSyn_060205_top_level_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.5, union type declaration with two equal identifiers
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// TTCN-3 supports the union type. The union type is a collection of alternatives,
+// each one identified by an identifier. Only one of the specified alternatives
+// will ever be present in an actual union value. Union types are useful to model
+// data which can take one of a finite number of known types.
+
+module NegSyn_060205_top_level_001 {
+ type union U {
+ integer option1,
+ charstring option2,
+ boolean option1 // error expected
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Duplicate union field name `option1'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06020501_referencing_fields_of_union_type_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - unknown union alternative in value dot notation >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06020501_referencing_fields_of_union_type_001 NegSem_06020501_referencing_fields_of_union_type_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.5.1, unknown union alternative in value dot notation
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Alternatives of a union type shall be referenced by the dot notation
+// TypeIdOrExpression.AlternativeId, where TypeIdOrExpression resolves to the name
+// of a union type or an expression of a union type such as variable, formal
+// parameter, module parameter, constant, template, or function invocation.
+// AlternativeId shall resolve to the name of an alternative in the union type.
+
+module NegSem_06020501_referencing_fields_of_union_type_001 {
+ type component GeneralComp {
+ }
+
+ type union U {
+ integer option1,
+ charstring option2
+ }
+
+ testcase TC_NegSem_06020501_referencing_fields_of_union_type_001() runs on GeneralComp {
+ var U v_union;
+ v_union.option3 := 1;
+ if (ischosen(v_union.option1) or ischosen(v_union.option2)) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control{
+ execute(TC_NegSem_06020501_referencing_fields_of_union_type_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to non-existent field `option3' in type `@NegSem_06020501_referencing_fields_of_union_type_001.U'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06020501_referencing_fields_of_union_type_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - unknown union alternative in extended type reference >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06020501_referencing_fields_of_union_type_002 NegSem_06020501_referencing_fields_of_union_type_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.5.1, unknown union alternative in extended type reference
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Alternatives of a union type shall be referenced by the dot notation
+// TypeIdOrExpression.AlternativeId, where TypeIdOrExpression resolves to the name
+// of a union type or an expression of a union type such as variable, formal
+// parameter, module parameter, constant, template, or function invocation.
+// AlternativeId shall resolve to the name of an alternative in the union type.
+
+module NegSem_06020501_referencing_fields_of_union_type_002 {
+ type component GeneralComp {
+ }
+
+ type union U {
+ integer option1,
+ charstring option2
+ }
+
+ type U.option3 UnionItem;
+
+ testcase TC_NegSem_06020501_referencing_fields_of_union_type_002() runs on GeneralComp {
+ var UnionItem v_val := 1;
+ if (v_val == 1) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control{
+ execute(TC_NegSem_06020501_referencing_fields_of_union_type_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to non-existent field `option3' in type `@NegSem_06020501_referencing_fields_of_union_type_002.U'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06020501_referencing_fields_of_union_type_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - union alternative referencing itself >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06020501_referencing_fields_of_union_type_003 NegSem_06020501_referencing_fields_of_union_type_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.5.1, union alternative referencing itself
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Alternatives of union type definitions shall not reference themselves.
+
+module NegSem_06020501_referencing_fields_of_union_type_003 {
+ type component GeneralComp {
+ }
+
+ type union U {
+ integer option1,
+ U.option2 option2
+ }
+
+ testcase TC_NegSem_06020501_referencing_fields_of_union_type_003() runs on GeneralComp {
+ var U v_union := { option1 := 1 };
+ if (v_union == { option1 := 1}) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control{
+ execute(TC_NegSem_06020501_referencing_fields_of_union_type_003());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: While checking referenced type: Circular reference: `@NegSem_06020501_referencing_fields_of_union_type_003.U.option2' -> `@NegSem_06020501_referencing_fields_of_union_type_003.U.option2'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06020501_referencing_fields_of_union_type_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - union alternative referencing indirectly itself >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06020501_referencing_fields_of_union_type_004 NegSem_06020501_referencing_fields_of_union_type_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.5.1, union alternative referencing indirectly itself
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Alternatives of union type definitions shall not reference themselves.
+
+module NegSem_06020501_referencing_fields_of_union_type_004 {
+ type component GeneralComp {
+ }
+
+ type union U {
+ integer option1,
+ U.option3 option2,
+ U.option2 option3
+ }
+
+ testcase TC_NegSem_06020501_referencing_fields_of_union_type_004() runs on GeneralComp {
+ var U v_union := { option1 := 1 };
+ if (v_union == { option1 := 1}) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control{
+ execute(TC_NegSem_06020501_referencing_fields_of_union_type_004());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: While checking referenced type: Circular reference: `@NegSem_06020501_referencing_fields_of_union_type_004.U.option2' -> `@NegSem_06020501_referencing_fields_of_union_type_004.U.option3' -> `@NegSem_06020501_referencing_fields_of_union_type_004.U.option2'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06020501_referencing_fields_of_union_type_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - union alternative costraint passed through extended type reference >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06020501_referencing_fields_of_union_type_005 NegSem_06020501_referencing_fields_of_union_type_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.5.1, union alternative costraint passed through extended type reference
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// If an alternative in a union type or a subtype of a union type is referenced by
+// the dot notation, the resulting type is the set of values allowed for that
+// alternative imposed by the constraints of the alternative declaration itself
+// (i.e. any constraints applied to the union type itself are ignored).
+
+module NegSem_06020501_referencing_fields_of_union_type_005 {
+ type component GeneralComp {
+ }
+
+ type union U {
+ integer option1 (1..10),
+ charstring option2
+ }
+
+ type U.option1 UnionItem;
+
+ testcase TC_NegSem_06020501_referencing_fields_of_union_type_005() runs on GeneralComp {
+ var UnionItem v_val := 100;
+ if (v_val == 100) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control{
+ execute(TC_NegSem_06020501_referencing_fields_of_union_type_005());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 100 is not a valid value for type `integer' which has subtype \(1..10\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06020501_referencing_fields_of_union_type_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - referencing not chosen alternative on right hand side of assignment >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_06020501_referencing_fields_of_union_type_006 NegSem_06020501_referencing_fields_of_union_type_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.5.1, referencing not chosen alternative on right hand side of assignment
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// When an alternative of a union type is referenced on the right hand side of
+// an assignment an error shall occur if the referenced alternative is not the
+// currently chosen alternative or if the referenced union field or value is omitted
+// or uninitialized.
+
+module NegSem_06020501_referencing_fields_of_union_type_006 {
+ type component GeneralComp {
+ }
+
+ type union U {
+ integer option1,
+ charstring option2
+ }
+
+ testcase TC_NegSem_06020501_referencing_fields_of_union_type_006() runs on GeneralComp {
+ var U v_union := { option1 := 1 };
+ if (v_union.option2 != "test") { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control{
+ execute(TC_NegSem_06020501_referencing_fields_of_union_type_006());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Using non-selected field option2 in a value of union type @NegSem_06020501_referencing_fields_of_union_type_006.U.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06020501_referencing_fields_of_union_type_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - referencing not chosen alternative on right hand side of assignment >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_06020501_referencing_fields_of_union_type_007 NegSem_06020501_referencing_fields_of_union_type_007.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.5.1, referencing alternative of uninitialized union on right hand side of assignment
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// When an alternative of a union type is referenced on the right hand side of
+// an assignment an error shall occur if the referenced alternative is not the
+// currently chosen alternative or if the referenced union field or value is omitted
+// or uninitialized.
+
+module NegSem_06020501_referencing_fields_of_union_type_007 {
+ type component GeneralComp {
+ }
+
+ type union U {
+ integer option1,
+ charstring option2
+ }
+
+ type record R {
+ integer field1,
+ U field2
+ }
+
+ testcase TC_NegSem_06020501_referencing_fields_of_union_type_007() runs on GeneralComp {
+ var R v_rec;
+ v_rec.field1 := 5;
+ if (v_rec.field2.option1 != 100) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control{
+ execute(TC_NegSem_06020501_referencing_fields_of_union_type_007());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Using non-selected field option1 in a value of union type @NegSem_06020501_referencing_fields_of_union_type_007.U.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06020501_referencing_fields_of_union_type_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - referencing alternative of omitted union on right hand side of assignment >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_06020501_referencing_fields_of_union_type_008 NegSem_06020501_referencing_fields_of_union_type_008.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.5.1, referencing alternative of omitted union on right hand side of assignment
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// When an alternative of a union type is referenced on the right hand side of
+// an assignment an error shall occur if the referenced alternative is not the
+// currently chosen alternative or if the referenced union field or value is omitted
+// or uninitialized.
+
+module NegSem_06020501_referencing_fields_of_union_type_008 {
+ type component GeneralComp {
+ }
+
+ type union U {
+ integer option1,
+ charstring option2
+ }
+
+ type record R {
+ integer field1,
+ U field2 optional
+ }
+
+ testcase TC_NegSem_06020501_referencing_fields_of_union_type_008() runs on GeneralComp {
+ var R v_rec;
+ v_rec.field1 := 5;
+ v_rec.field2 := omit;
+ if (v_rec.field2.option1 != 100) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control{
+ execute(TC_NegSem_06020501_referencing_fields_of_union_type_008());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Using the value of an optional field containing omit.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_06020502_option_and_union_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - referencing alternative of omitted union on right hand side of assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_06020502_option_and_union_001 NegSyn_06020502_option_and_union_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.5.2, referencing alternative on left hand side of assignment
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Optional fields are not allowed for the union type, which means that the optional
+// keyword shall not be used with union types.
+
+module NegSyn_06020502_option_and_union_001 {
+ type union U {
+ integer option1,
+ charstring option2 optional
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `optional': syntax error, unexpected OptionalKeyword, expecting '\}' or ','
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060206_anytype_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - ensure that after redeclaration of an anytype value the old type and value are lost >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_060206_anytype_001 NegSem_060206_anytype_001.ttcn >
+/****************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.0.6, ensure that after redeclaration of an anytype value the old type and value are lost
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_060206_anytype_001 {
+
+ type component GeneralComp {
+ var anytype Var1, Var2;
+ }
+
+ testcase TC_NegSem_060206_anytype_001() runs on GeneralComp {
+
+ Var1.integer := 10;
+ Var2.float := 3.0E0;
+
+ Var1.float := 5.5E0;
+ Var2.charstring := "abc"; // the new type of Var2 is charstring instead of float
+
+ if ( match(Var1.integer, 10) and match(Var2.float, 3.0E0)) {
+ setverdict(pass);
+ }
+ else {
+ setverdict(fail);
+ }
+
+ }
+
+ control {
+ execute(TC_NegSem_060206_anytype_001());
+ }
+
+}
+with {
+ extension "anytype integer, float, charstring"
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Using non-selected field integer in a value of union type @NegSem_060206_anytype_001.anytype
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060206_anytype_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that anytype can not be address type if not explicitly declareted in the module >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060206_anytype_002 NegSem_060206_anytype_002.ttcn >
+/****************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.0.6, Ensure that anytype can not be address type if not explicitly declareted in the module
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_060206_anytype_002 {
+
+ type component GeneralComp {
+
+ var anytype x;
+ }
+
+ testcase TC_NegSem_060206_anytype_002() runs on GeneralComp {
+
+ x.address:=10; // error: address type is not declarated in the module explicitly
+
+
+ if (x.address==10) {
+ setverdict(pass);
+ }
+ else {
+ setverdict(fail);
+ }
+
+ }
+
+ control {
+ execute(TC_NegSem_060206_anytype_002());
+ }
+
+}
+with {
+ extension "anytype address"
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type `address' is not defined in this module
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060206_anytype_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - ensure that anytype cannot be port type >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060206_anytype_002 NegSem_060206_anytype_002.ttcn >
+/****************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.0.6, ensure that anytype cannot be port type
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSyn_060206_anytype_002 {
+
+ type port MyPort message{
+ //address integer;
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ var anytype x;
+ port MyPort PCO1;
+ }
+
+ testcase TC_NegSyn_060206_anytype_002() runs on GeneralComp {
+
+ x.MyPort:= PCO1; // port type is not allowed with anytype
+
+ }
+
+ control {
+ execute(TC_NegSyn_060206_anytype_002());
+ }
+
+}
+with {
+ extension "anytype MyPort"
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Port type `@NegSyn_060206_anytype_002.MyPort' cannot be embedded into another type
+<END_RESULT>
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of port `@NegSyn_060206_anytype_002.GeneralComp.PCO1'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - ensure that the value limitation is correctly handled within array >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060207_arrays_001 NegSem_060207_arrays_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, ensure that the value limitation is correctly handled within array
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_060207_arrays_001 {
+
+ type component GeneralComp {
+ }
+
+ type integer MyArrayType1[5] (1 .. 10);
+
+ testcase TC_NegSem_060207_arrays_001() runs on GeneralComp {
+
+ var MyArrayType1 v_array1 := { 8, 11, 2, 3, 4};
+ // syntax error expected, value shall be between 1..10
+
+ }
+
+ control {
+ execute(TC_NegSem_060207_arrays_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 11 is not a valid value for type `integer' which has subtype \(1..10\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - ensure that the inner type referencing is correctly handled >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060207_arrays_002 NegSem_060207_arrays_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, ensure that the inner type referencing is correctly handled
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_060207_arrays_002 {
+
+ type component GeneralComp {
+ }
+
+ type integer MyArrayType1[5] (1 .. 10);
+
+ testcase TC_NegSem_060207_arrays_002() runs on GeneralComp {
+
+ var MyArrayType1 v_array1 := { 8, 9, 2, 3, 4, 5, 6};
+ // array is longer than the restricted length
+
+ }
+
+ control {
+ execute(TC_NegSem_060207_arrays_002());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Too many elements in the array value: 5 was expected instead of 7
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - negative index applied to an array on the right hand side of an assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060207_arrays_003 NegSem_060207_arrays_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, negative index applied to an array on the right hand side of an assignment
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Indexed value notation can be used on both the right-hand side and left-hand
+// side of assignments. The index of the first element shall be zero or the lower
+// bound if an index range has been given.
+
+module NegSem_060207_arrays_003 {
+
+ type component GeneralComp {
+ }
+
+ type integer MyArrayType1[5] (1 .. 10);
+
+ testcase TC_NegSem_060207_arrays_003() runs on GeneralComp {
+
+ var MyArrayType1 v_array1 := { 8, 9, 2, 3, 4};
+ var integer i := v_array1[-1]; // error expected
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060207_arrays_003());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Array index underflow: the index value must be at least `0' instead of `-1'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - negative index applied to an array on the left hand side of an assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060207_arrays_004 NegSem_060207_arrays_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, negative index applied to an array on the left hand side of an assignment
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Indexed value notation can be used on both the right-hand side and left-hand
+// side of assignments. The index of the first element shall be zero or the lower
+// bound if an index range has been given.
+
+module NegSem_060207_arrays_004 {
+
+ type component GeneralComp {
+ }
+
+ type integer MyArrayType1[5] (1 .. 10);
+
+ testcase TC_NegSem_060207_arrays_004() runs on GeneralComp {
+
+ var MyArrayType1 v_array1 := { 8, 9, 2, 3, 4};
+ v_array1[-1] := 10; // error expected
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060207_arrays_004());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Array index underflow: the index value must be at least `0' instead of `-1'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - wrong index type applied to an array on the right hand side of an assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060207_arrays_005 NegSem_060207_arrays_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, wrong index type applied to an array on the right hand side of an assignment
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Indexed value notation can be used on both the right-hand side and left-hand
+// side of assignments. The index of the first element shall be zero or the lower
+// bound if an index range has been given.
+// [from 3.1] index notation: notation to access individual elements of record of,
+// set of, array and string values or templates, where the element to be accessed
+// is identified explicitly by an index value enclosed in square brackets ("[" and
+// "]") which specifies the position of that element within the referenced value
+// or template and the index value is either an integer value, array of integers
+// or record of integers.
+
+module NegSem_060207_arrays_005 {
+
+ type component GeneralComp {
+ }
+
+ type integer MyArrayType1[5] (1 .. 10);
+
+ testcase TC_NegSem_060207_arrays_005() runs on GeneralComp {
+
+ var MyArrayType1 v_array1 := { 8, 9, 2, 3, 4};
+ var integer i := v_array1["0"]; // error expected
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060207_arrays_005());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A value or expression of type integer was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - wrong index type applied to an array on the left hand side of an assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060207_arrays_006 NegSem_060207_arrays_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, wrong index type applied to an array on the left hand side of an assignment
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Indexed value notation can be used on both the right-hand side and left-hand
+// side of assignments. The index of the first element shall be zero or the lower
+// bound if an index range has been given.
+// [from 3.1] index notation: notation to access individual elements of record of,
+// set of, array and string values or templates, where the element to be accessed
+// is identified explicitly by an index value enclosed in square brackets ("[" and
+// "]") which specifies the position of that element within the referenced value
+// or template and the index value is either an integer value, array of integers
+// or record of integers.
+
+module NegSem_060207_arrays_006 {
+
+ type component GeneralComp {
+ }
+
+ type integer MyArrayType1[5] (1 .. 10);
+
+ testcase TC_NegSem_060207_arrays_006() runs on GeneralComp {
+
+ var MyArrayType1 v_array1 := { 8, 9, 2, 3, 4};
+ v_array1["0"] := 10; // error expected
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060207_arrays_006());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A value or expression of type integer was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - array index greater than the upper bound (left-hand side) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060207_arrays_007 NegSem_060207_arrays_007.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, array index greater than the upper bound (left-hand side)
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// The index shall not exceed the limitations given by either the length or the
+// upper bound of the index.
+
+module NegSem_060207_arrays_007 {
+
+ type component GeneralComp {
+ }
+
+ type integer MyArrayType1[5] (1 .. 10);
+
+ testcase TC_NegSem_060207_arrays_007() runs on GeneralComp {
+
+ var MyArrayType1 v_array1 := { 8, 9, 2, 3, 4};
+ v_array1[5] := 3; // error expected
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060207_arrays_007());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Array index overflow: the index value must be at most `4' instead of `5'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - wrong index type applied to an array on the right hand side of an assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060207_arrays_008 NegSem_060207_arrays_008.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, wrong index type applied to an array on the right hand side of an assignment
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// The index shall not exceed the limitations given by either the length or the
+// upper bound of the index.
+
+module NegSem_060207_arrays_008 {
+
+ type component GeneralComp {
+ }
+
+ type integer MyArrayType1[5] (1 .. 10);
+
+ testcase TC_NegSem_060207_arrays_008() runs on GeneralComp {
+
+ var MyArrayType1 v_array1 := { 8, 9, 2, 3, 4};
+ var integer i := v_array1[5]; // error expected
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060207_arrays_008());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Array index overflow: the index value must be at most `4' instead of `5'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_009 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify than an error is generated when sending a partially initialized array >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_060207_arrays_009 NegSem_060207_arrays_009.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, verify than an error is generated when sending a partially initialized array
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Sending an array value with undefined elements shall cause an error.
+
+module NegSem_060207_arrays_009 {
+
+ type integer MyArrayType1[5] (1 .. 10);
+
+ type port P message {
+ inout MyArrayType1
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p
+ }
+
+ testcase TC_NegSem_060207_arrays_009() runs on GeneralComp {
+ var template MyArrayType1 m_array1 := { 8, 9, -, 3, 4};
+ p.send(m_array1); // error expected
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_060207_arrays_009());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Performing a valueof or send operation on a non-specific integer template.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_010 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - ensure that the value limitation is correctly handled within array >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060207_arrays_010 NegSem_060207_arrays_010.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, ensure that the value limitation is correctly handled within array
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// The values of array elements shall be compatible with the corresponding
+// variable or type declaration.
+
+module NegSem_060207_arrays_010 {
+
+ type component GeneralComp {
+ }
+
+ type integer MyArrayType1[5] (1 .. 10);
+
+ testcase TC_NegSem_060207_arrays_010() runs on GeneralComp {
+
+ var MyArrayType1 v_array1 := {
+ [0] := 8,
+ [1] := 0,// error expected, value shall be between 1..10
+ [2] := 2,
+ [3] := 3,
+ [4] := 4
+ };
+
+ }
+
+ control {
+ execute(TC_NegSem_060207_arrays_010());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 0 is not a valid value for type `integer' which has subtype \(1..10\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_011 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - runtime resolved constant in array type declaration >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060207_arrays_011 NegSem_060207_arrays_011.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, runtime resolved constant in array type declaration
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Array dimensions shall be specified using constant expressions, which shall
+// evaluate to a positive integer values. Constants used in the constant
+// expressions shall meet with the restrictions in clause 10.
+
+module NegSem_060207_arrays_011 {
+
+ type component GeneralComp {
+ }
+
+ function f() return integer {
+ if (rnd() < 0.5) { return 5; }
+ else { return 10; }
+ }
+
+ const integer c_dimension := f();
+ type integer Arr[c_dimension];
+
+ testcase TC_NegSem_060207_arrays_011() runs on GeneralComp {
+ var Arr v_arr;
+ v_arr[0] := 1;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060207_arrays_011());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a constant value was expected instead of the return value of function `@NegSem_060207_arrays_011.f'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_012 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - runtime resolved constant in array variable declaration >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060207_arrays_012 NegSem_060207_arrays_012.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, runtime resolved constant in array variable declaration
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Array dimensions shall be specified using constant expressions, which shall
+// evaluate to a positive integer values. Constants used in the constant
+// expressions shall meet with the restrictions in clause 10.
+
+module NegSem_060207_arrays_012 {
+
+ type component GeneralComp {
+ }
+
+ function f() return integer {
+ if (rnd() < 0.5) { return 5; }
+ else { return 10; }
+ }
+
+ const integer c_dimension := f();
+
+ testcase TC_NegSem_060207_arrays_012() runs on GeneralComp {
+ var integer v_arr[c_dimension];
+ v_arr[0] := 1;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060207_arrays_012());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a constant value was expected instead of the return value of function `@NegSem_060207_arrays_012.f'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_013 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - variable in array variable declaration >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060207_arrays_013 NegSem_060207_arrays_013.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, variable in array variable declaration
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Array dimensions shall be specified using constant expressions, which shall
+// evaluate to a positive integer values. Constants used in the constant
+// expressions shall meet with the restrictions in clause 10.
+
+module NegSem_060207_arrays_013 {
+
+ type component GeneralComp {
+ }
+
+ function f() return integer {
+ if (rnd() < 0.5) { return 5; }
+ else { return 10; }
+ }
+
+ testcase TC_NegSem_060207_arrays_013() runs on GeneralComp {
+ var integer v_dimension := f();
+ var integer v_arr[v_dimension];
+ v_arr[0] := 1;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060207_arrays_013());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a constant value was expected instead of variable `v_dimension'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_014 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - modulepar in array variable declaration >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060207_arrays_014 NegSem_060207_arrays_014.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, modulepar in array variable declaration
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Array dimensions shall be specified using constant expressions, which shall
+// evaluate to a positive integer values. Constants used in the constant
+// expressions shall meet with the restrictions in clause 10.
+
+module NegSem_060207_arrays_014 {
+
+ type component GeneralComp {
+ }
+
+ function f() return integer {
+ if (rnd() < 0.5) { return 5; }
+ else { return 10; }
+ }
+
+ modulepar integer PX_DIMENSION := 5;
+
+ testcase TC_NegSem_060207_arrays_014() runs on GeneralComp {
+ var integer v_arr[PX_DIMENSION];
+ v_arr[0] := 1;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060207_arrays_014());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to an \(evaluatable\) constant value was expected instead of module parameter `@NegSem_060207_arrays_014.PX_DIMENSION'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_015 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - zero dimension array >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060207_arrays_015 NegSem_060207_arrays_015.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, zero dimension array
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Array dimensions shall be specified using constant expressions, which shall
+// evaluate to a positive integer values. Constants used in the constant
+// expressions shall meet with the restrictions in clause 10.
+
+module NegSem_060207_arrays_015 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060207_arrays_015() runs on GeneralComp {
+ var integer v_arr[0] := {};
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060207_arrays_015());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A positive integer value was expected as array size instead of `0'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_016 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - array with negative dimension >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060207_arrays_016 NegSem_060207_arrays_016.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, array with negative dimension
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Array dimensions shall be specified using constant expressions, which shall
+// evaluate to a positive integer values. Constants used in the constant
+// expressions shall meet with the restrictions in clause 10.
+
+module NegSem_060207_arrays_016 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060207_arrays_016() runs on GeneralComp {
+ var integer v_arr[3][-1];
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060207_arrays_016());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A positive integer value was expected as array size instead of `-1'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_019 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - float instead of integer in array dimension >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060207_arrays_019 NegSem_060207_arrays_019.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, float instead of integer in array dimension
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Array dimensions shall be specified using constant expressions, which shall
+// evaluate to a positive integer values. Constants used in the constant
+// expressions shall meet with the restrictions in clause 10.
+
+module NegSem_060207_arrays_019 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060207_arrays_019() runs on GeneralComp {
+ var integer v_arr[2.0];
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060207_arrays_019());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A value or expression of type integer was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_022 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - using lower than allowed custom array index on the right hand side of assignments >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060207_arrays_022 NegSem_060207_arrays_022.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, using lower than allowed custom array index on the right hand side of assignments
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Indexed value notation can be used on both the right-hand side and left-hand
+// side of assignments. The index of the first element shall be zero or the lower
+// bound if an index range has been given.
+
+module NegSem_060207_arrays_022 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060207_arrays_022() runs on GeneralComp {
+ var integer v_arr[2..5] := { 2, 3, 4, 5 };
+ var boolean v_bool := v_arr[0] == 0;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060207_arrays_022());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Array index underflow: the index value must be at least `2' instead of `0'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_023 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - using lower than allowed custom array index on the left hand side of assignments >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060207_arrays_023 NegSem_060207_arrays_023.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, using lower than allowed custom array index on the left hand side of assignments
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Indexed value notation can be used on both the right-hand side and left-hand
+// side of assignments. The index of the first element shall be zero or the lower
+// bound if an index range has been given.
+
+module NegSem_060207_arrays_023 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060207_arrays_023() runs on GeneralComp {
+ var integer v_arr[2..5] := { 2, 3, 4, 5 };
+ v_arr[0] := 0;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060207_arrays_023());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Array index underflow: the index value must be at least `2' instead of `0'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_024 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - using greater than allowed custom array index on the right hand side of assignments >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060207_arrays_024 NegSem_060207_arrays_024.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, using greater than allowed custom array index on the right hand side of assignments
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// The index shall not exceed the limitations given by either the length or the
+// upper bound of the index.
+
+module NegSem_060207_arrays_024 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060207_arrays_024() runs on GeneralComp {
+ var integer v_arr[2..5] := { 2, 3, 4, 5 };
+ var boolean v_bool := v_arr[6] == 6;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060207_arrays_024());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Array index overflow: the index value must be at most `5' instead of `6'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_025 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - using greater than allowed custom array index on the left hand side of assignments >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060207_arrays_025 NegSem_060207_arrays_025.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, using greater than allowed custom array index on the left hand side of assignments
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// The index shall not exceed the limitations given by either the length or the
+// upper bound of the index.
+
+module NegSem_060207_arrays_025 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060207_arrays_025() runs on GeneralComp {
+ var integer v_arr[2..5] := { 2, 3, 4, 5 };
+ v_arr[6] := 6;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060207_arrays_025());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Array index overflow: the index value must be at most `5' instead of `6'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_026 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - using greater than allowed custom array index on the left hand side of assignments >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_060207_arrays_026 NegSem_060207_arrays_026.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, referencing uninitialized array element on the right hand side of assignments
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// : If the value of the element indicated by the index at the right hand of
+// an assignment is undefined or if the index notation is applied to an uninitialized
+// or omitted array value on the right hand side of an assignment, error shall be
+// caused.
+
+module NegSem_060207_arrays_026 {
+
+ type component GeneralComp {
+ }
+
+ type record R {
+ integer field1[3],
+ boolean field2
+ }
+
+ testcase TC_NegSem_060207_arrays_026() runs on GeneralComp {
+ var integer v_arr[3], v_int;
+ v_arr[2] := 1;
+ v_int := v_arr[0];
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060207_arrays_026());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Assignment of an unbound integer value.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_027 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - using greater than allowed custom array index on the left hand side of assignments >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_060207_arrays_027 NegSem_060207_arrays_027.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, referencing element of uninitialized arrays on the right hand side of assignments
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// : If the value of the element indicated by the index at the right hand of
+// an assignment is undefined or if the index notation is applied to an uninitialized
+// or omitted array value on the right hand side of an assignment, error shall be
+// caused.
+
+module NegSem_060207_arrays_027 {
+
+ type component GeneralComp {
+ }
+
+ type record R {
+ integer field1[3],
+ boolean field2
+ }
+
+ testcase TC_NegSem_060207_arrays_027() runs on GeneralComp {
+ var R v_rec := { -, true }
+ var integer v_int := v_rec.field1[0];
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060207_arrays_027());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Copying an unbound integer value.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060207_arrays_028 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - using greater than allowed custom array index on the left hand side of assignments >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_060207_arrays_028 NegSem_060207_arrays_028.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, referencing element of omitted arrays on the right hand side of assignments
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// : If the value of the element indicated by the index at the right hand of
+// an assignment is undefined or if the index notation is applied to an uninitialized
+// or omitted array value on the right hand side of an assignment, error shall be
+// caused.
+
+module NegSem_060207_arrays_028 {
+
+ type component GeneralComp {
+ }
+
+ type record R {
+ integer field1[3] optional,
+ boolean field2
+ }
+
+ testcase TC_NegSem_060207_arrays_028() runs on GeneralComp {
+ var R v_rec := { omit, true }
+ var integer v_int := v_rec.field1[0];
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_060207_arrays_028());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Using the value of an optional field containing omit
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060207_arrays_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - ensure that array cannot contain an empty assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060207_arrays_001 NegSyn_060207_arrays_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, ensure that array cannot contain an empty assignment
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSyn_060207_arrays_001 {
+
+ type component GeneralComp {
+ }
+
+ type integer MyArrayType1[5] (1 .. 10);
+
+ testcase TC_NegSyn_060207_arrays_001() runs on GeneralComp {
+
+ var MyArrayType1 v_array1 := { 8, , 2, 3, 4}; // syntax error expected
+
+ }
+
+ control {
+ execute(TC_NegSyn_060207_arrays_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `,': syntax error, unexpected ','
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060207_arrays_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - ensure that array field cannot contain an empty index >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060207_arrays_002 NegSyn_060207_arrays_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, ensure that array field cannot contain an empty index
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_060207_arrays_002 {
+
+ type component GeneralComp {
+ }
+
+
+ type integer MyArrayType1[5] (1 .. 10);
+
+ testcase TC_NegSyn_060207_arrays_002() runs on GeneralComp {
+
+ var MyArrayType1 v_array1 := { 8, 10, 2, 3, 4};
+ v_array1[] := 10; // error expected - missing index
+ }
+
+ control {
+ execute(TC_NegSyn_060207_arrays_002());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\]': syntax error, unexpected '\]'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060207_arrays_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - ensure that array field cannot contain an empty index >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060207_arrays_003 NegSyn_060207_arrays_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, ensure that array field cannot contain an empty index
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_060207_arrays_003 {
+
+ type component GeneralComp {
+ }
+
+
+ type integer MyArrayType1[5] (1 .. 10);
+
+
+ testcase TC_NegSyn_060207_arrays_003() runs on GeneralComp {
+
+ var MyArrayType1 v_array1 := { 8, 10, 2, 3, 4};
+ var integer i :=v_array1[];// error expected - missing index
+ }
+
+ control {
+ execute(TC_NegSyn_060207_arrays_003());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\]': syntax error, unexpected '\]'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060207_arrays_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - infinity in array variable dimension >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060207_arrays_004 NegSyn_060207_arrays_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.7, infinity in array variable dimension
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Array dimensions may also be specified using ranges (with inclusive
+// boundaries only). In such cases, the lower and upper values of the range
+// define the lower and upper index values. Such an array is corresponding to
+// a record of with a fixed length restriction computed as the difference
+// between upper and lower index bound plus 1 and indexing starting from the
+// lower bound of the array definition.
+
+module NegSyn_060207_arrays_004 {
+
+ control {
+ var integer v_arr[1..infinity];
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A value or expression of type integer was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060209_CommunicationPortTypes_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Verify that an error is generated when a message port type definition contains no message typess >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060209_CommunicationPortTypes_004 NegSem_060209_CommunicationPortTypes_004.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.9, Verify that an error is generated when a message port type definition contains no message types
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// Each port type definition shall have one or more lists indicating the allowed collection of
+// (message) types ... with the allowed communication direction.
+
+module NegSem_060209_CommunicationPortTypes_004 {
+
+ type record MyType1 {
+ integer f1,
+ charstring f2
+ }
+
+ type record MyType2 {
+ integer g1,
+ charstring g2
+ }
+
+ type record MyType3 {
+ boolean h1,
+ MyType3 h2 optional
+ }
+
+ type port MyMessagePortTypeOne message {
+ // address MyType1;
+ // map param (in integer p1, inout MyType2 p2);
+ // unmap param (in MyType3 p1, out integer p2);
+ } with {extension "internal"}
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\}': syntax error, unexpected '\}', expecting InOutParKeyword or InParKeyword or OutParKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060209_CommunicationPortTypes_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Verify that an error is generated when a procedure port type definition contains no signatures >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060209_CommunicationPortTypes_005 NegSem_060209_CommunicationPortTypes_005.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.9, Verify that an error is generated when a procedure port type definition contains no signatures
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// Each port type definition shall have one or more lists indicating the allowed collection of
+// ... procedure signatures with the allowed communication direction.
+
+module NegSem_060209_CommunicationPortTypes_005 {
+
+ type record MyType1 {
+ integer f1,
+ charstring f2
+ }
+
+ type record MyType2 {
+ integer g1,
+ charstring g2
+ }
+
+ type record MyType3 {
+ boolean h1,
+ MyType3 h2 optional
+ }
+
+ type port MyMessagePortTypeOne procedure {
+ // address MyType1;
+ // map param (in integer p1, inout MyType2 p2);
+ // unmap param (in MyType3 p1, out integer p2);
+ } with {extension "internal"}
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\}': syntax error, unexpected '\}', expecting InOutParKeyword or InParKeyword or OutParKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060210_ReuseofComponentTypes_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that cyclic extension is not allowed >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060210_ReuseofComponentTypes_001 NegSyn_060210_ReuseofComponentTypes_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.10, Ensure that cyclic extension is not allowed
+ ** @verdict pass reject, noexecution
+ *****************************************************************/
+
+/* The following requirements are tested:
+ * Restriction c.: It is allowed to extend component types that are defined by means of extension,
+ * as long as no cyclic chain of definition is created.
+ */
+
+module NegSyn_060210_ReuseofComponentTypes_001 {
+
+ type port loopbackPort message {
+ inout integer;
+ inout float;
+ } with {extension "internal"}
+
+ type component MyCompA extends GeneralComp {
+ port loopbackPort pt_myPortA;
+ }
+
+
+ type component MyCompB extends MyCompA {
+ var integer MyInt;
+ }
+
+
+ type component GeneralComp extends MyCompB { //error: cyclic extension
+ port loopbackPort pt_myPortB;
+ }
+
+ testcase TC_NegSyn_060210_ReuseofComponentTypes_001() runs on GeneralComp {
+
+ pt_myPortB.send(2);
+ }
+
+ control{
+ execute(TC_NegSyn_060210_ReuseofComponentTypes_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: While checking component type extensions: Circular reference: `@NegSyn_060210_ReuseofComponentTypes_001.MyCompA' -> `@NegSyn_060210_ReuseofComponentTypes_001.GeneralComp' -> `@NegSyn_060210_ReuseofComponentTypes_001.MyCompB' -> `@NegSyn_060210_ReuseofComponentTypes_001.MyCompA'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060210_ReuseofComponentTypes_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that cyclic extension is not allowed >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060210_ReuseofComponentTypes_002 NegSyn_060210_ReuseofComponentTypes_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.10, Ensure that extending a component that occurs name clash is not allowed
+ ** @verdict pass reject, noexecution
+ *****************************************************************/
+
+/* The following requirements are tested:
+ * Restriction b.: When defining component types by extending more than one parent type,
+ * there shall be no name clash between the definitions of the different parent types
+ */
+
+module NegSyn_060210_ReuseofComponentTypes_002 {
+
+ type port loopbackPort message {
+ inout integer;
+ inout float;
+ } with {extension "internal"}
+
+ type component MyCompA {
+ port loopbackPort pt_myPortA;
+ }
+
+
+ type component MyCompB {
+ var integer MyInt;
+ }
+
+ type component GeneralComp extends MyCompA, MyCompB {
+ port loopbackPort pt_myPortB;
+ var integer MyInt; //error: name clash
+ }
+
+ testcase TC_NegSyn_060210_ReuseofComponentTypes_002() runs on GeneralComp {
+
+ pt_myPortA.send(2);
+ pt_myPortB.send(2.0);
+ }
+
+ control{
+ execute(TC_NegSyn_060210_ReuseofComponentTypes_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Local definition `MyInt' collides with definition inherited from component type `@NegSyn_060210_ReuseofComponentTypes_002.MyCompB
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_060210_ReuseofComponentTypes_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that cyclic extension is not allowed >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_060210_ReuseofComponentTypes_003 NegSyn_060210_ReuseofComponentTypes_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.10, Ensure that extending a component that occurs name clash is not allowed
+ ** @verdict pass reject, noexecution
+ *****************************************************************/
+
+/* The following requirements are tested:
+ * When defining component types by extension, there shall be
+ * no name clash between the definitions being taken from the parent type
+ * and the definitions being added in the extended type
+ */
+
+module NegSyn_060210_ReuseofComponentTypes_003 {
+
+ type port loopbackPort message {
+ inout integer;
+ inout float;
+ } with {extension "internal"}
+
+ type component MyCompA {
+ port loopbackPort pt_myPortA;
+ var integer MyInt;
+ }
+
+
+ type component GeneralComp extends MyCompA {
+ port loopbackPort pt_myPortB;
+ var integer MyInt; //error: name clash from parent type
+ }
+
+ testcase TC_NegSyn_060210_ReuseofComponentTypes_003() runs on GeneralComp {
+
+ pt_myPortA.send(2);
+ pt_myPortB.send(2.0);
+ }
+
+ control{
+ execute(TC_NegSyn_060210_ReuseofComponentTypes_003());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Local definition `MyInt' collides with definition inherited from component type `@NegSyn_060210_ReuseofComponentTypes_003.MyCompA
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06021301_LengthSubtyping_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - The length subtyping check for 'record of' or 'set of' types >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06021301_LengthSubtyping_001 NegSem_06021301_LengthSubtyping_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.13.1, The length subtyping check for 'record of' or 'set of' types
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06021301_LengthSubtyping_001 {
+ type record length(0..10) of integer RecordOfLengthLessThan10;
+
+ type RecordOfLengthLessThan10 RecordOfLength4To5 length(4..5);
+ type RecordOfLength4To5 RecordOfLength6 length(6); //length out of parent type range
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The subtype restriction is not a subset of the restriction on the parent type. Subtype length\(6\) is not subset of subtype length\(4..5\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06021301_LengthSubtyping_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - The length subtyping check for 'record of' or 'set of' types >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06021301_LengthSubtyping_002 NegSem_06021301_LengthSubtyping_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.13.1, The length subtyping check for 'record of' or 'set of' types
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06021301_LengthSubtyping_002 {
+ type set length(0..10) of integer SetOfLengthLessThan10;
+
+ type SetOfLengthLessThan10 SetOfLength4To5 length(4..5);
+ type SetOfLength4To5 SetOfLength6 length(6); //length out of parent type range
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The subtype restriction is not a subset of the restriction on the parent type. Subtype length\(6\) is not subset of subtype length\(4..5\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06021301_LengthSubtyping_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - The length subtyping check for 'record of' or 'set of' types >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06021301_LengthSubtyping_003 NegSem_06021301_LengthSubtyping_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.13.1, The length subtyping check for 'record of' or 'set of' types
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06021301_LengthSubtyping_003 {
+ type record length(0..!10) of integer RecordOfLengthLessThan10; //only inclusive boundary is allowed
+
+ type RecordOfLengthLessThan10 RecordOfLength4To5 length(4..5);
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `!': syntax error, unexpected '!'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06021301_LengthSubtyping_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - The length subtyping check for 'record of' or 'set of' types >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06021301_LengthSubtyping_004 NegSem_06021301_LengthSubtyping_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.13.1, The length subtyping check for 'record of' or 'set of' types
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06021301_LengthSubtyping_004 {
+ type set length(0..10) of integer SetOfLengthLessThan10;
+
+ type SetOfLengthLessThan10 SetOfLength5 length(!4..5); //only inclusive boundary is allowed
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `!': syntax error, unexpected '!'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06021302_ListSubtyping_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - ensure that list subtyping check for record types is properly handled >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06021302_ListSubtyping_001 NegSem_06021302_ListSubtyping_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.13.2, ensure that list subtyping check for record types is properly handled
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06021302_ListSubtyping_001 {
+ type record MyRecord {
+ integer f1 optional,
+ charstring f2,
+ charstring f3
+ }
+
+ type MyRecord MyRecordSub1 (
+ { f1 := omit, f2 := "user", f3 := "password" },
+ { f1 := 1, f2 := "User", f3 := "Password" }
+ ); // a valid subtype of MyRecord containing 2 values
+
+ type MyRecordSub1 MyRecordSub2 (
+ { f1 := 1, f2 := "user", f3 := "password" },
+ { f1 := 1, f2 := "User", f3 := "Password" }
+ ); //invalid subtype, the omitted element cannot be overwritten
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The subtype restriction is not a subset of the restriction on the parent type. Subtype \(\{ f1 := 1, f2 := "user", f3 := "password" \},\{ f1 := 1, f2 := "User", f3 := "Password" \}\) is not subset of subtype \(\{ f1 := omit, f2 := "user", f3 := "password" \},\{ f1 := 1, f2 := "User", f3 := "Password" \}\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_06021302_ListSubtyping_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - ensure that list subtyping check for record types is properly handled >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_06021302_ListSubtyping_002 NegSem_06021302_ListSubtyping_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.2.13.2, ensure that list subtyping check for record types is properly handled
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_06021302_ListSubtyping_002 {
+ type record MyRecord {
+ integer f1 optional,
+ charstring f2,
+ charstring f3
+ }
+
+ type MyRecord MyRecordSub1 (
+ { f1 := -, f2 := "user", f3 := "password" },
+ { f1 := -, f2 := "User", f3 := "Password" }
+ ); // a valid subtype of MyRecord containing 2 values
+
+ type MyRecordSub1 MyRecordSub2 (
+ { f1 := 1, f2 := "user", f3 := "password" },
+ { f1 := 2, f2 := "user", f3 := "Password" }
+ ); //invalid subtype, contains wrong combination of f2 and f3
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The subtype restriction is not a subset of the restriction on the parent type. Subtype \(\{ f1 := 1, f2 := "user", f3 := "password" \},\{ f1 := 2, f2 := "user", f3 := "Password" \}\) is not subset of subtype \(\{ f1 := -, f2 := "user", f3 := "password" \},\{ f1 := -, f2 := "User", f3 := "Password" \}\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h2. 0603_type_compatibility folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060301_non_structured_types_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles assignments from compatible size restrictions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060301_non_structured_types_007 NegSem_060301_non_structured_types_007.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.3.1, Ensure that the IUT correctly handles assignments from compatible size restrictions
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_060301_non_structured_types_007 {
+ type integer ConstrainedInt[1];
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060301_non_structured_types_007() runs on GeneralComp {
+
+ var integer v_int[2]:={5,4};
+ var ConstrainedInt v_constrainedInt;
+
+
+ v_constrainedInt:=v_int; // length 2 array assigned to length 1 array type
+ }
+
+ control{
+ execute(TC_NegSem_060301_non_structured_types_007());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `integer\[1\]' was expected instead of `integer\[2\]'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060301_non_structured_types_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles assignments from compatible size restrictions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060301_non_structured_types_008 NegSem_060301_non_structured_types_008.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.3.1, Ensure that the IUT correctly handles assignments from compatible size restrictions
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_060301_non_structured_types_008 {
+ type float ConstrainedFloat[1];
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060301_non_structured_types_008() runs on GeneralComp {
+
+ var float v_float[2]:={5.0,4.0};
+ var ConstrainedFloat v_constrainedFloat;
+
+
+ v_constrainedFloat:=v_float; // length 2 array assigned to length 1 array type
+ }
+
+ control{
+ execute(TC_NegSem_060301_non_structured_types_008());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `float\[1\]' was expected instead of `float\[2\]'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060302_structured_types_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Reject assignment of other enumerated types since they are only compatible to synonym types >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060302_structured_types_001 NegSem_060302_structured_types_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.3.2.1, Reject assignment of other enumerated types since they are only compatible to synonym types
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_060302_structured_types_001 {
+
+ type enumerated EnumeratedType {e_black, e_white};
+ type enumerated EnumeratedRedefinition {e_black, e_white};
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060302_structured_types_001() runs on GeneralComp {
+
+ var EnumeratedType v_enum1:=e_black;
+ var EnumeratedRedefinition v_enum2;
+
+ v_enum2:=v_enum1; // not a synonym type
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_060302_structured_types_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `@NegSem_060302_structured_types_001.EnumeratedRedefinition' was expected instead of `@NegSem_060302_structured_types_001.EnumeratedType'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060302_structured_types_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT rejects assignments from incompatible types or type ranges >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060302_structured_types_002 NegSem_060302_structured_types_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.3.2, Ensure that the IUT rejects assignments from incompatible types or type ranges
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_060302_structured_types_002 {
+
+ type record RecordType1 {
+ integer a(0..10) optional,
+ integer b(0..5) optional,
+ boolean c
+ }
+ type record RecordType2 {
+ integer e optional,
+ integer f(0..10) ,
+ boolean g
+ }
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060302_structured_types_002() runs on GeneralComp {
+
+ var RecordType1 v_rec1:={a:=4,b:=omit,c:=false};
+ var RecordType2 v_rec2;
+
+ v_rec2:=v_rec1; // optionality mismatch (e.g. b is optional where f is mandatory)
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_060302_structured_types_002());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `@NegSem_060302_structured_types_002.RecordType2' was expected instead of `@NegSem_060302_structured_types_002.RecordType1'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060302_structured_types_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT rejects assignments from incompatible types or type ranges >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060302_structured_types_003 NegSem_060302_structured_types_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.3.2, Ensure that the IUT rejects assignments from incompatible types or type ranges
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_060302_structured_types_003 {
+
+ type record RecordType {
+ integer a(0..10) optional,
+ integer b(0..10) optional,
+ boolean c
+ }
+ type record ModifiedRecord {
+ integer e optional,
+ integer f(0..5) optional,
+ boolean g
+ }
+
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060302_structured_types_003() runs on GeneralComp {
+
+ var ModifiedRecord v_rec1:={e:=15,f:=4,g:=false};
+ var RecordType v_rec2;
+
+ v_rec2:=v_rec1; //subtyping range mismatch
+ setverdict(pass);
+
+ }
+
+ control{
+ execute(TC_NegSem_060302_structured_types_003());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `@NegSem_060302_structured_types_003.RecordType' was expected instead of `@NegSem_060302_structured_types_003.ModifiedRecord'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060302_structured_types_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT rejects assignments from incompatible types or type ranges >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060302_structured_types_004 NegSem_060302_structured_types_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.3.2, Ensure that the IUT rejects assignments from incompatible types or type ranges
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_060302_structured_types_004 {
+
+ type set SetType {
+ integer a(0..10) optional,
+ integer b(0..10) optional,
+ boolean c
+ }
+ type set ModifiedSet {
+ integer e optional,
+ integer f(0..5) ,
+ boolean g
+ }
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060302_structured_types_004() runs on GeneralComp {
+
+ var ModifiedSet v_set1:={f:=4,e:=8,g:=false};
+ var SetType v_set2;
+
+ v_set2:=v_set1; //optionality mismatch
+ setverdict(pass);
+
+ }
+
+ control{
+ execute(TC_NegSem_060302_structured_types_004());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `@NegSem_060302_structured_types_004.SetType' was expected instead of `@NegSem_060302_structured_types_004.ModifiedSet'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060302_structured_types_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT rejects assignments from incompatible types or type ranges >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060302_structured_types_005 NegSem_060302_structured_types_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.3.2, Ensure that the IUT rejects assignments from incompatible types or type ranges
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_060302_structured_types_005 {
+
+ type set SetType {
+ integer a(0..10) optional,
+ integer b(0..10) optional,
+ boolean c
+ }
+ type set ModifiedSet {
+ integer e optional,
+ integer f(0..5) optional,
+ boolean g
+ }
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060302_structured_types_005() runs on GeneralComp {
+
+ var ModifiedSet v_set1:={f:=4,e:=15,g:=false};
+ var SetType v_set2;
+
+ v_set2:=v_set1; //subtyping range mismatch
+ setverdict(pass);
+
+ }
+
+ control{
+ execute(TC_NegSem_060302_structured_types_005());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `@NegSem_060302_structured_types_005.SetType' was expected instead of `@NegSem_060302_structured_types_005.ModifiedSet'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060302_structured_types_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT rejects assignments from incompatible types or type ranges >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060302_structured_types_008 NegSem_060302_structured_types_008.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.3.2, Ensure that the IUT rejects assignments from incompatible types or type ranges
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_060302_structured_types_008 {
+
+ type enumerated EnumeratedType {e_black, e_white};
+ type EnumeratedType EnumeratedSynonym;
+
+ type union UnionType {
+ integer a(0..10),
+ EnumeratedType b,
+ boolean c
+ }
+
+ type union ModifiedUnion {
+ integer a,
+ boolean c,
+ EnumeratedSynonym b
+ }
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060302_structured_types_008() runs on GeneralComp {
+
+ var ModifiedUnion v_union1:={a:=12};
+ var UnionType v_union2;
+
+ v_union2:=v_union1; //subtyping range mismatch
+ setverdict(pass);
+
+ }
+
+ control{
+ execute(TC_NegSem_060302_structured_types_008());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `@NegSem_060302_structured_types_008.UnionType' was expected instead of `@NegSem_060302_structured_types_008.ModifiedUnion'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060302_structured_types_009 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT rejects assignments from incompatible types or type ranges >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060302_structured_types_009 NegSem_060302_structured_types_009.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.3.2, Ensure that the IUT rejects assignments from incompatible types or type ranges
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_060302_structured_types_009 {
+
+ type enumerated EnumeratedType {e_black, e_white};
+ type enumerated EnumeratedRedefinition {e_black, e_white};
+
+ type union UnionType {
+ integer a(0..10),
+ EnumeratedType b,
+ boolean c
+ }
+ type union ModifiedUnion {
+ integer a,
+ boolean c,
+ EnumeratedRedefinition b
+ }
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060302_structured_types_009() runs on GeneralComp {
+
+ var ModifiedUnion v_union1:={b:=e_black};
+ var UnionType v_union2;
+
+ v_union2:=v_union1; //enumerated type mismatch
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_060302_structured_types_009());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `@NegSem_060302_structured_types_009.UnionType' was expected instead of `@NegSem_060302_structured_types_009.ModifiedUnion'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060302_structured_types_010 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT rejects assignments from incompatible types or type ranges >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060302_structured_types_010 NegSem_060302_structured_types_010.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.3.2, Ensure that the IUT rejects assignments from incompatible types or type ranges
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_060302_structured_types_010 {
+
+ type enumerated EnumeratedType {e_black, e_white};
+ type EnumeratedType EnumeratedSynonym;
+
+ type union UnionType {
+ integer a,
+ EnumeratedType b,
+ boolean c
+ }
+ type union ModifiedUnion {
+ integer aa,
+ boolean cc,
+ EnumeratedSynonym bb
+ }
+
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060302_structured_types_010() runs on GeneralComp {
+
+ var ModifiedUnion v_union1:={aa:=1};
+ var UnionType v_union2;
+
+ v_union2:=v_union1; //element naming mismatch
+ setverdict(pass);
+
+ }
+
+control{
+ execute(TC_NegSem_060302_structured_types_010());
+}
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `@NegSem_060302_structured_types_010.UnionType' was expected instead of `@NegSem_060302_structured_types_010.ModifiedUnion'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060302_structured_types_011 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT rejects assignments from structures having incompatible anytypes >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060302_structured_types_011 NegSem_060302_structured_types_011.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.3.2, Ensure that the IUT rejects assignments from structures having incompatible anytypes
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_060302_structured_types_011 {
+
+ import from NegSem_060302_structured_types_011_importA all;
+ import from NegSem_060302_structured_types_011_importB all;
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060302_structured_types_011() runs on GeneralComp {
+
+ var NegSem_060302_structured_types_011_importA.Atype v_a;
+ var NegSem_060302_structured_types_011_importB.Atype v_b := { F := 1 }
+
+ v_a:=v_b; //v_a's type does not contain the selected alternative
+
+ if ( v_a==1 ) {
+ setverdict(pass);
+ }
+ else {
+ setverdict(fail);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_060302_structured_types_011());
+ }
+
+}
+<END_MODULE>
+
+<MODULE TTCN NegSem_060302_structured_types_011_importA NegSem_060302_structured_types_011_importA.ttcn >
+module NegSem_060302_structured_types_011_importA {
+ type integer I (0..2);
+ type anytype Atype;
+ }
+<END_MODULE>
+
+<MODULE TTCN NegSem_060302_structured_types_011_importB NegSem_060302_structured_types_011_importB.ttcn >
+module NegSem_060302_structured_types_011_importB {
+ type integer I (0..2);
+ type integer F;
+ type anytype Atype;
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `@NegSem_060302_structured_types_011_importA.anytype' was expected instead of `@NegSem_060302_structured_types_011_importB.anytype'
+<END_RESULT>
+<RESULT COUNT 1>
+error: The operands of operation `==' should be of compatible types
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060302_structured_types_012 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT rejects assignments having mismatch between undefined and omitted elements >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060302_structured_types_012 NegSem_060302_structured_types_012.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.3.2, Ensure that the IUT rejects assignments having mismatch between undefined and omitted elements
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_060302_structured_types_012 {
+
+ type record RecordType {
+ integer a,
+ integer b optional
+ }
+
+ type set SetType {
+ integer a,
+ integer b optional
+ }
+
+ type record length (1..2) of integer ShortIntegerList;
+ type record of integer IntegerList;
+
+ type set length (1..2) of integer ShortUnorderedIntegerList;
+ type set of integer UnorderedIntegerList;
+
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060302_structured_types_012() runs on GeneralComp {
+
+
+ var IntegerList v_list1:={1,-};
+ var ShortIntegerList v_list2;
+ var RecordType v_rec1;
+ var UnorderedIntegerList v_ulist1:={1,-};
+ var ShortUnorderedIntegerList v_ulist2;
+ var SetType v_set1;
+
+ var integer v_matcher[2] := {1,-};
+
+ var boolean v_check1;
+
+ v_list2:=v_list1;
+ v_rec1:=v_list2;
+ v_ulist2:=v_ulist1;
+ v_set1:=v_ulist2;
+
+ v_check1 := match(v_rec1, v_matcher); //mismatch between undefined and omitted elements
+
+ }
+
+ control{
+ execute(TC_NegSem_060302_structured_types_012());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `@NegSem_060302_structured_types_012.RecordType' was expected instead of `@NegSem_060302_structured_types_012.ShortIntegerList'
+<END_RESULT>
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `@NegSem_060302_structured_types_012.SetType' was expected instead of `@NegSem_060302_structured_types_012.ShortUnorderedIntegerList'
+<END_RESULT>
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `integer\[2\]' was expected instead of `@NegSem_060302_structured_types_012.RecordType'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060302_structured_types_013 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT rejects assignments having mismatch between undefined and omitted elements >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060302_structured_types_013 NegSem_060302_structured_types_013.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.3.2, Ensure that the IUT rejects assignments having mismatch between undefined and omitted elements
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_060302_structured_types_013 {
+
+ type record RecordType {
+ integer a,
+ integer b optional
+ }
+
+ type set SetType {
+ integer a,
+ integer b optional
+ }
+
+ type record length (1..2) of integer ShortIntegerList;
+ type record of integer IntegerList;
+
+ type set length (1..2) of integer ShortUnorderedIntegerList;
+ type set of integer UnorderedIntegerList;
+
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060302_structured_types_013() runs on GeneralComp {
+
+ var IntegerList v_list1:={1,-};
+ var ShortIntegerList v_list2;
+ var RecordType v_rec1;
+ var UnorderedIntegerList v_ulist1:={1,-};
+ var ShortUnorderedIntegerList v_ulist2;
+ var SetType v_set1;
+
+ var integer v_matcher[2] := {1,-};
+
+ var boolean v_check1;
+
+ v_list2:=v_list1;
+ v_rec1:=v_list2;
+ v_ulist2:=v_ulist1;
+ v_set1:=v_ulist2;
+
+ v_check1 := match(v_set1,{ a:= 1, b:= -}); //mismatch between undefined and omitted elements
+
+ }
+
+ control{
+ execute(TC_NegSem_060302_structured_types_013());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `@NegSem_060302_structured_types_013.RecordType' was expected instead of `@NegSem_060302_structured_types_013.ShortIntegerList'
+<END_RESULT>
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `@NegSem_060302_structured_types_013.SetType' was expected instead of `@NegSem_060302_structured_types_013.ShortUnorderedIntegerList'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060302_structured_types_014 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT rejects assignments between incompatible structures >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060302_structured_types_014 NegSem_060302_structured_types_014.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.3.2, Ensure that the IUT rejects assignments between incompatible structures
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_060302_structured_types_014 {
+
+ type record RecordType {
+ integer a,
+ integer b optional,
+ integer c
+ }
+
+ type record of integer IntegerList;
+
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060302_structured_types_014() runs on GeneralComp {
+
+ var RecordType v_record := { 1, omit, 2};
+ var IntegerList v_IntList;
+ var integer v_array[2];
+
+ v_array:=v_record; //assignment between incompatible types
+
+ }
+
+ control{
+ execute(TC_NegSem_060302_structured_types_014());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `integer\[2\]' was expected instead of `@NegSem_060302_structured_types_014.RecordType'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060302_structured_types_015 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT rejects assignments between incompatible structures >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060302_structured_types_015 NegSem_060302_structured_types_015.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.3.2, Ensure that the IUT rejects assignments between incompatible structures
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_060302_structured_types_015 {
+
+ type record RecordType {
+ integer a,
+ integer b optional,
+ integer c
+ }
+
+ type record of integer IntegerList;
+
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060302_structured_types_015() runs on GeneralComp {
+
+ var RecordType v_record := { 1, omit, 2};
+ var IntegerList v_IntList;
+ var integer v_array[2];
+
+ v_IntList:=v_record; //assignment between incompatible types
+
+ }
+
+ control{
+ execute(TC_NegSem_060302_structured_types_015());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `@NegSem_060302_structured_types_015.IntegerList' was expected instead of `@NegSem_060302_structured_types_015.RecordType'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060302_structured_types_016 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT rejects assignments between incompatible structures >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060302_structured_types_016 NegSem_060302_structured_types_016.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.3.2, Ensure that the IUT rejects assignments between incompatible structures
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_060302_structured_types_016 {
+
+ type set SetType {
+ integer a,
+ integer b optional,
+ integer c
+ }
+
+ type set of integer IntegerList;
+
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060302_structured_types_016() runs on GeneralComp {
+
+ var SetType v_set := { a:= 1, b:= omit, c:= 2}; // value list not work with sets
+ var IntegerList v_IntList;
+ var integer v_array[2];
+
+ v_array:=v_set; //assignment between incompatible types
+
+ }
+
+ control{
+ execute(TC_NegSem_060302_structured_types_016());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `integer\[2\]' was expected instead of `@NegSem_060302_structured_types_016.SetType'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060302_structured_types_017 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT rejects assignments between incompatible structures >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060302_structured_types_017 NegSem_060302_structured_types_017.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.3.2, Ensure that the IUT rejects assignments between incompatible structures
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_060302_structured_types_017 {
+
+ type set SetType {
+ integer a,
+ integer b optional,
+ integer c
+ }
+
+ type set of integer IntegerList;
+
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060302_structured_types_017() runs on GeneralComp {
+
+ var SetType v_set := { a:= 1, b:= omit, c:= 2}; // value list not work with sets
+ var IntegerList v_IntList;
+ var integer v_array[2];
+
+ v_IntList:=v_set; //assignment between incompatible types
+
+ }
+
+ control{
+ execute(TC_NegSem_060302_structured_types_017());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `@NegSem_060302_structured_types_017.IntegerList' was expected instead of `@NegSem_060302_structured_types_017.SetType'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060302_structured_types_018 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT rejects assignments between incompatible structures >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060302_structured_types_018 NegSem_060302_structured_types_018.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.3.2, Ensure that the IUT rejects assignments between incompatible structures
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_060302_structured_types_018 {
+
+ type set SetType {
+ integer a,
+ integer b,
+ integer c
+ }
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060302_structured_types_018() runs on GeneralComp {
+
+ var SetType v_set := { a:= 1, b:= 2, c:= 3};
+ var integer v_array[3];
+
+ v_array:=v_set; //assignment between incompatible types, see clause G.9 compatibility rules
+
+ }
+
+ control{
+ execute(TC_NegSem_060302_structured_types_018());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `integer\[3\]' was expected instead of `@NegSem_060302_structured_types_018.SetType'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060302_structured_types_019 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT rejects assignments between incompatible structures >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060302_structured_types_019 NegSem_060302_structured_types_019.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.3.2, Ensure that the IUT correctly handles assignments from structures having compatible types and lengths
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_060302_structured_types_019 {
+
+ type record RecordType {
+ integer a,
+ integer b optional
+ }
+
+ type set SetType {
+ integer a,
+ integer b optional
+ }
+
+ type record length (1..2) of integer ShortIntegerList;
+ type record of integer IntegerList;
+
+ type set length (1..2) of integer ShortUnorderedIntegerList;
+ type set of integer UnorderedIntegerList;
+
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_060302_structured_types_019() runs on GeneralComp {
+
+ var IntegerList v_list1:={1,-};
+ var ShortIntegerList v_list2;
+ var RecordType v_rec1;
+ var UnorderedIntegerList v_ulist1:={1,-};
+ var ShortUnorderedIntegerList v_ulist2;
+ var SetType v_set1;
+
+ var integer v_matcher[2] := {1,-};
+
+ var boolean v_check1;
+
+ v_list2:=v_list1;
+ v_rec1:=v_list2; //incompatible assignment according to TTCN-3:2012
+ v_ulist2:=v_ulist1;
+ v_set1:=v_ulist2; //incompatible assignment according to TTCN-3:2012
+
+ v_check1 := (v_list2[0]==1);
+
+
+ if ( v_check1 )
+ {
+ setverdict(pass);
+ }
+ else {
+ setverdict(fail);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_060302_structured_types_019());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `@NegSem_060302_structured_types_019.RecordType' was expected instead of `@NegSem_060302_structured_types_019.ShortIntegerList'
+<END_RESULT>
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `@NegSem_060302_structured_types_019.SetType' was expected instead of `@NegSem_060302_structured_types_019.ShortUnorderedIntegerList'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060303_component_types_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles component incompatibility due to differing list of constant definitions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060303_component_types_001 NegSem_060303_component_types_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.3.3, Ensure that the IUT correctly handles component incompatibility due to differing list of constant definitions
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_060303_component_types_001 {
+
+ type integer ConstrainedInteger(0..10);
+
+ type component TestCaseComp {
+ const integer c_integer:=2;
+ }
+
+ type component FunctionComp {
+ const integer c_integer:=2;
+ const ConstrainedInteger c_constrained:=2;
+ }
+
+ function f_testFunction(integer p_arg) runs on FunctionComp return integer {
+
+ var integer v_result;
+ v_result:=p_arg*c_integer;
+ return v_result;
+ }
+
+ testcase TC_NegSem_060303_component_types_001() runs on TestCaseComp {
+
+ var integer v_int:=1;
+
+ v_int := f_testFunction(v_int);
+ // runs on mtc with type TestCaseComp
+ // f_testFunction needs to run on FunctionComp
+ // which has 2 variables not 1 as TestCaseComp
+ setverdict (fail, "ERROR expected: function runs on mtc with type TestCaseComp f_testFunction needs to run on FunctionComp which has 2 variables not 1 as TestCaseComp");
+ }
+
+ control {
+ execute(TC_NegSem_060303_component_types_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Runs on clause mismatch: A definition that runs on component type `@NegSem_060303_component_types_001.TestCaseComp' cannot call function `@NegSem_060303_component_types_001.f_testFunction', which runs on `@NegSem_060303_component_types_001.FunctionComp'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_060303_component_types_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles component incompatibility due to differing list of constant definitions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_060303_component_types_002 NegSem_060303_component_types_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:6.3.3, Ensure that the IUT correctly handles component incompatibility due to differing constant types having same name
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_060303_component_types_002 {
+
+ type integer ConstrainedInteger(0..10);
+
+ type component TestCaseComp {
+ const integer c_integer:=2;
+ const integer c_constrained:=2;
+ }
+
+ type component FunctionComp {
+ const integer c_integer:=2;
+ const ConstrainedInteger c_constrained:=2;
+ }
+
+ function f_testFunction(integer p_arg) runs on FunctionComp return integer {
+
+ var integer v_result;
+ v_result:=p_arg*c_integer;
+ return v_result;
+ }
+
+ testcase TC_NegSem_060303_component_types_002() runs on TestCaseComp {
+
+ var integer v_int:=1;
+
+ f_testFunction(v_int);
+
+ setverdict(fail, "Error expected: as component types are not compatible since their definitions are not identical.");
+ }
+
+ control {
+ execute(TC_NegSem_060303_component_types_002());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Runs on clause mismatch: A definition that runs on component type `@NegSem_060303_component_types_002.TestCaseComp' cannot call function `@NegSem_060303_component_types_002.f_testFunction', which runs on `@NegSem_060303_component_types_002.FunctionComp'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h1.References
+.*---------------------------------------------------------------------*
+:list.
+:li D='[1]'.1/174 02-CRL 113 200/5 Uen
+:nl.Statement of Compliance for TITAN project
+:li D='[2]'.ETSI ES 201 873-1, v4.7.1 Mockup v1 (2015-06):
+:nl.Testing and Test Control Notation version 3.,
+:nl.Part 1: TTCN-3 Core Language
+:elist.
--- /dev/null
+.******************************************************************************
+.* Copyright (c) 2000-2016 Ericsson Telecom AB
+.* All rights reserved. This program and the accompanying materials
+.* are made available under the terms of the Eclipse Public License v1.0
+.* which accompanies this distribution, and is available at
+.* http://www.eclipse.org/legal/epl-v10.html
+.*
+.* Contributors:
+.* Adrien Kirjak – initial implementation
+.*
+.******************************************************************************/
+text.
+:lang eng.
+.*
+:docname.Test Description
+:docno.xz/152 91-CRL 113 200 Uen
+:rev.PA1
+:date.2016-04-04
+.*
+:prep.ETH/XZ EADRKIR
+:subresp.EADRKIR
+:appr.ETH/XZ (Elemer Lelik)
+:checked.
+.*
+:title.ETSI TTCN3 Negative Conformance Test
+:contents level=3.
+.*---------------------------------------------------------------------*
+:h1.PREREQUISITES AND PREPARATIONS
+.*---------------------------------------------------------------------*
+.*---------------------------------------------------------------------*
+:h2.Scope of the Test Object
+.*---------------------------------------------------------------------*
+:xmp tab=1 nokeep.
+This TD contains negative tests from ETSI TTCN3 Conformance Test's 07_expressions, 08_modules, 09_test_configurations, 10_constants, 11_variables, 12_timers and 14_procedure_signatures folders.
+
+:exmp.
+
+.*---------------------------------------------------------------------*
+:h2.Test Tools
+.*---------------------------------------------------------------------*
+:p.:us.Software Tools:eus.
+:xmp tab=2 nokeep.
+
+ SAtester.pl
+
+:exmp.
+:np.
+
+.*---------------------------------------------------------------------*
+:h1.REQUIREMENT-BASED TESTS
+.*---------------------------------------------------------------------*
+.*---------------------------------------------------------------------*
+:h2. 07_expressions folder
+.*---------------------------------------------------------------------*
+*---------------------------------------------------------------------*
+:h3. NegSem_07_toplevel_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - function without return clause in expression >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_07_toplevel_001 NegSem_07_toplevel_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:7, function without return clause in expression
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Functions used in expressions shall have a return clause.
+
+module NegSem_07_toplevel_001
+{
+ type component GeneralComp {
+ }
+
+ function f()
+ {
+ var integer v_num := 1;
+ }
+
+ testcase TC_NegSem_07_toplevel_001() runs on GeneralComp {
+ var integer v_num := 3 * f();
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_07_toplevel_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of a call of function `@NegSem_07_toplevel_001.f', which does not have return type
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_07_toplevel_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - template used as expression operand >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_07_toplevel_002 NegSem_07_toplevel_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:7, template used as expression operand
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// The operands of the operators used in an expression shall be values and their root
+// types shall be the types specified for the appropriate operator in the subsequent
+// clauses.
+
+module NegSem_07_toplevel_002
+{
+ type component GeneralComp {
+ }
+
+ function f()
+ {
+ var integer p_num := 1;
+ }
+
+ testcase TC_NegSem_07_toplevel_002() runs on GeneralComp {
+ var template(value) integer vm_num := 3;
+ var integer p_num := 3 * vm_num;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_07_toplevel_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of template variable `vm_num'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_07_toplevel_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - uninitialized value in an expression >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_07_toplevel_003 NegSem_07_toplevel_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:7, uninitialized value in an expression
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// At the point, when an expression is evaluated, the evaluated values of the
+// operands used in expressions shall be completely initialized except where
+// explicitly stated otherwise in the specific clause of the operator.
+
+module NegSem_07_toplevel_003
+{
+ type component GeneralComp {
+ }
+
+ type record R {
+ integer field1,
+ integer field2 optional
+ }
+
+ testcase TC_NegSem_07_toplevel_003() runs on GeneralComp {
+ var R v_rec;
+ v_rec.field1 := 1;
+ if (10 + v_rec.field2 != -1) { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control {
+ execute(TC_NegSem_07_toplevel_003());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Using the value of an optional field containing omit.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_070101_ArithmeticOperators_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that Arithmetic operators are for integer and float values >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_070101_ArithmeticOperators_001 NegSem_070101_ArithmeticOperators_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:7.1.1, Ensure that Arithmetic operators are for integer and float values
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_070101_ArithmeticOperators_001 {
+
+type component GeneralComp {
+}
+
+testcase TC_NegSem_070101_ArithmeticOperators_001() runs on GeneralComp {
+ var integer v_i := 20;
+ var boolean v_k :=true;
+
+ var integer v_result := v_i*v_k; // not allowed int*boolean
+
+ setverdict(pass);
+
+
+}
+control{
+ execute(TC_NegSem_070101_ArithmeticOperators_001());
+}
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Second operand of operation `\*' should be integer or float value
+<END_RESULT>
+<RESULT COUNT 1>
+error: The operands of operation `\*' should be of same type
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+
+*---------------------------------------------------------------------*
+:h3. NegSem_070101_ArithmeticOperators_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that arithmetic operators can handle same type of variables >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_070101_ArithmeticOperators_002 NegSem_070101_ArithmeticOperators_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:7.1.1, Ensure that arithmetic operators can handle same type of variables
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_070101_ArithmeticOperators_002 {
+
+type component GeneralComp {
+}
+
+testcase TC_NegSem_070101_ArithmeticOperators_002() runs on GeneralComp {
+ var integer v_i := 20;
+ var float v_k :=2.0E0;
+
+ var integer v_result := v_i*v_k; // not allowed int*float
+
+ setverdict(pass);
+
+}
+control{
+ execute(TC_NegSem_070101_ArithmeticOperators_002());
+}
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The operands of operation `\*' should be of same type
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_070101_ArithmeticOperators_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that mod arithmetic operator can handle integer variables >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_070101_ArithmeticOperators_003 NegSem_070101_ArithmeticOperators_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:7.1.1, Ensure that mod arithmetic operator can handle integer variables
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_070101_ArithmeticOperators_003 {
+
+type component GeneralComp {
+}
+
+testcase TC_NegSem_070101_ArithmeticOperators_003() runs on GeneralComp {
+ var float v_i := 2.0E1;
+ var float v_k :=2.0E0;
+
+ var integer v_result := v_i mod v_k; // mod operator is only for integer type
+
+ setverdict(pass);
+}
+control{
+ execute(TC_NegSem_070101_ArithmeticOperators_003());
+}
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Left operand of operation `mod' should be integer value
+<END_RESULT>
+<RESULT COUNT 1>
+error: Right operand of operation `mod' should be integer value
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_070101_ArithmeticOperators_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that rem arithmetic operator can handle integer variables >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_070101_ArithmeticOperators_004 NegSem_070101_ArithmeticOperators_004.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:7.1.1, Ensure that rem arithmetic operator can handle integer variables
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_070101_ArithmeticOperators_004 {
+
+type component GeneralComp {
+}
+
+testcase TC_NegSem_070101_ArithmeticOperators_004() runs on GeneralComp {
+ var float v_i := 2.0E1;
+ var float v_k :=2.0E0;
+
+ var integer v_result := v_i rem v_k; // rem operator is only for integer type
+
+ setverdict(pass);
+}
+control{
+ execute(TC_NegSem_070101_ArithmeticOperators_004());
+}
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Left operand of operation `rem' should be integer value
+<END_RESULT>
+<RESULT COUNT 1>
+error: Right operand of operation `rem' should be integer value
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_070101_ArithmeticOperators_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that in x mod y arithmetic operator y is non-zero positive number >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_070101_ArithmeticOperators_008 NegSem_070101_ArithmeticOperators_008.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:7.1.1, Ensure that in x mod y arithmetic operator y is non-zero positive number
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_070101_ArithmeticOperators_008 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_070101_ArithmeticOperators_008() runs on GeneralComp {
+ var integer v_i := 20;
+ var integer v_k :=0;
+
+ var integer v_result := v_i mod v_k; // arithmetic operator mod with 0 is not allowed
+
+ setverdict(pass);
+
+ }
+ control{
+ execute(TC_NegSem_070101_ArithmeticOperators_008());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: The right operand of mod operator is zero.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_070101_ArithmeticOperators_009 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that in x rem y arithmetic operator y is non-zero positive number >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_070101_ArithmeticOperators_009 NegSem_070101_ArithmeticOperators_009.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:7.1.1, Ensure that in x rem y arithmetic operator y is non-zero positive number
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_070101_ArithmeticOperators_009 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_070101_ArithmeticOperators_009() runs on GeneralComp {
+ var integer v_i := 20;
+ var integer v_k :=0;
+
+ var integer v_result := v_i rem v_k; // arithmetic operator rem with 0 is not allowed
+
+ setverdict(pass);
+
+ }
+ control{
+ execute(TC_NegSem_070101_ArithmeticOperators_009());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Integer division by zero.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_070101_ArithmeticOperators_010 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that in x rem y arithmetic operator y is non-zero positive number >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_070101_ArithmeticOperators_010 NegSem_070101_ArithmeticOperators_010.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:7.1.1, Ensure that in x rem y arithmetic operator y is non-zero positive number
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_070101_ArithmeticOperators_010 {
+
+type component GeneralComp {
+}
+
+testcase TC_NegSem_070101_ArithmeticOperators_010() runs on GeneralComp {
+ var integer v_i := 20;
+ var integer v_k :=4;
+ var integer v_l :=2;
+
+ var integer v_result := v_i rem (v_k mod v_l); // arithmetic operator rem with 0 is not allowed
+
+ setverdict(pass);
+
+}
+control{
+ execute(TC_NegSem_070101_ArithmeticOperators_010());
+}
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Integer division by zero.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_070103_RelationalOperators_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the equals operator on records is evaluated correctly. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_070103_RelationalOperators_002 NegSem_070103_RelationalOperators_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:7.1.3, Ensure that the equals operator on records is evaluated correctly.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_070103_RelationalOperators_002 {
+
+type component GeneralComp {
+}
+
+ type set IntegerSet1 {
+ integer a1 optional,
+ integer a2 optional,
+ integer a3 optional
+ };
+
+ type set IntegerSet2 {
+ integer a4 optional,
+ integer a5 optional,
+ integer a6 optional
+ };
+
+ type set LargeSet {
+ integer a1 optional,
+ integer a2 optional,
+ integer a3 optional,
+ integer a4 optional,
+ integer a5 optional,
+ integer a6 optional
+ };
+
+
+testcase TC_NegSem_070103_RelationalOperators_002() runs on GeneralComp {
+ const IntegerSet1 c_set1 := {a1:=0,a2:=omit,a3:=2};
+ const IntegerSet2 c_set2 := {a4:=3,a5:=5,a6:=omit};
+ const LargeSet c_large := {a1:=0,a2:=omit,a3:=2,a4:=3,a5:=5,a6:=omit};
+
+ if ( c_set1 & c_set2 == c_large ) { //It is intentionally forbidden to concatenate record and set values
+ setverdict(pass);
+ }
+
+}
+
+control{
+ execute(TC_NegSem_070103_RelationalOperators_002());
+}
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Left operand of operation `&' should be a string, `record of' or `set of' value
+<END_RESULT>
+<RESULT COUNT 1>
+error: Right operand of operation `&' should be a string, `record of' or `set of' value
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_070103_RelationalOperators_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the equals operator on records is evaluated correctly. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_070103_RelationalOperators_003 NegSem_070103_RelationalOperators_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:7.1.3, Ensure that the equals operator on records is evaluated correctly.
+ ** @verdict pass reject
+ *****************************************************************/
+//on hold till resolution of CR6707
+
+module NegSem_070103_RelationalOperators_003 {
+
+type component GeneralComp {
+}
+
+ type set IntegerSet1 {
+ integer a1 optional,
+ integer a2 optional,
+ integer a3 optional
+ };
+
+ type set IntegerSet2 {
+ integer a4 optional,
+ integer a5 optional,
+ integer a6 optional
+ };
+
+ type set LargeSet {
+ integer a1 optional,
+ integer a2 optional,
+ integer a3 optional,
+ integer a4 optional,
+ integer a5 optional,
+ integer a6 optional
+ };
+
+
+testcase TC_NegSem_070103_RelationalOperators_003() runs on GeneralComp {
+ const IntegerSet1 c_set1 := {a1:=0,a2:=omit,a3:=2};
+ const IntegerSet2 c_set2 := {a4:=3,a5:=5,a6:=omit};
+ const LargeSet c_large := {a1:=0,a2:=omit,a3:=2,a4:=3,a5:=5,a6:=6};
+
+ if ( c_set1 & c_set2 != c_large ) { //It is intentionally forbidden to concatenate record and set values
+ setverdict(pass);
+ }
+
+}
+
+control{
+ execute(TC_NegSem_070103_RelationalOperators_003());
+}
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Left operand of operation `&' should be a string, `record of' or `set of' value
+<END_RESULT>
+<RESULT COUNT 1>
+error: Right operand of operation `&' should be a string, `record of' or `set of' value
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_070103_RelationalOperators_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the equals operator on records is evaluated correctly. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_070103_RelationalOperators_004 NegSem_070103_RelationalOperators_004.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:7.1.3, Ensure that the equals operator on records is evaluated correctly.
+ ** @verdict pass reject
+ *****************************************************************/
+//on hold till resolution of CR6707
+
+module NegSem_070103_RelationalOperators_004 {
+
+type component GeneralComp {
+}
+
+ type set IntegerSet1 {
+ integer a1 optional,
+ integer a2 optional,
+ integer a3 optional
+ };
+
+ type set IntegerSet2 {
+ integer a4 optional,
+ integer a5 optional,
+ integer a6 optional
+ };
+
+ type set LargeSet {
+ integer a1 optional,
+ integer a2 optional,
+ integer a3 optional,
+ integer a4 optional,
+ integer a5 optional
+ };
+
+
+testcase TC_NegSem_070103_RelationalOperators_004() runs on GeneralComp {
+ const IntegerSet1 c_set1 := {a1:=0,a2:=omit,a3:=2};
+ const IntegerSet2 c_set2 := {a4:=3,a5:=5,a6:=omit};
+ const LargeSet c_large := {a1:=0,a2:=omit,a3:=2,a4:=3,a5:=5};
+
+ if ( c_set1 & c_set2 != c_large ) { //It is intentionally forbidden to concatenate record and set values
+ setverdict(pass);
+ }
+
+}
+
+control{
+ execute(TC_NegSem_070103_RelationalOperators_004());
+}
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Left operand of operation `&' should be a string, `record of' or `set of' value
+<END_RESULT>
+<RESULT COUNT 1>
+error: Right operand of operation `&' should be a string, `record of' or `set of' value
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h2. 08_modules folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_0801_DefinitionOfAModule_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that a module definition with multiple language specifications is rejected. >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_0801_DefinitionOfAModule_001 NegSyn_0801_DefinitionOfAModule_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.1, Ensure that a module definition with multiple language specifications is rejected.
+ ** @verdict pass reject
+ *****************************************************************/
+// list of languages is not allowed
+module NegSyn_0801_DefinitionOfAModule_001 language "TTCN-3:2005", "TTCN-3:2009", "TTCN-3:2010" {
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `,': syntax error, unexpected ',', expecting '\{'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_08020301_GeneralFormatOfImport_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that name handling of imported enumerations is properly handled >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_08020301_GeneralFormatOfImport_002 NegSem_08020301_GeneralFormatOfImport_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.2.3.1, Ensure that name handling of imported enumerations is properly handled
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_08020301_GeneralFormatOfImport_002 {
+ import from NegSem_08020301_GeneralFormatOfImport_002_import all;
+
+ const EnumType2 c_enum := enumX;
+
+ modulepar EnumType px_ModulePar := NegSem_08020301_GeneralFormatOfImport_002.c_enum; //type mismatch
+}
+<END_MODULE>
+
+<MODULE TTCN NegSem_08020301_GeneralFormatOfImport_002_import NegSem_08020301_GeneralFormatOfImport_002_import.ttcn >
+module NegSem_08020301_GeneralFormatOfImport_002_import {
+ type enumerated EnumType {enumX, enumY, enumZ};
+ type enumerated EnumType2 {enumX, enumY, enumZ};
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: a value of type `@NegSem_08020301_GeneralFormatOfImport_002_import.EnumType' was expected instead of `@NegSem_08020301_GeneralFormatOfImport_002_import.EnumType2'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_08020301_GeneralFormatOfImport_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that name handling of imported enumerations is properly handled >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_08020301_GeneralFormatOfImport_003 NegSem_08020301_GeneralFormatOfImport_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.2.3.4, Ensure that transitive import rules are properly handled
+ ** @verdict pass reject
+ *****************************************************************/
+
+
+module NegSem_08020301_GeneralFormatOfImport_003 {
+
+import from NegSem_08020301_GeneralFormatOfImport_003_import {
+ const all;
+};
+
+type component GeneralComp {}
+
+testcase TC_NegSem_08020301_GeneralFormatOfImport_003() runs on GeneralComp {
+ if (c_myconst == 43532) {
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+}
+
+control{
+ execute(TC_NegSem_08020301_GeneralFormatOfImport_003());
+}
+}
+<END_MODULE>
+
+<MODULE TTCN NegSem_08020301_GeneralFormatOfImport_003_import NegSem_08020301_GeneralFormatOfImport_003_import.ttcn >
+
+module NegSem_08020301_GeneralFormatOfImport_003_import {
+ public import from NegSem_08020301_GeneralFormatOfImport_003_import_2 all;
+}
+<END_MODULE>
+
+<MODULE TTCN NegSem_08020301_GeneralFormatOfImport_003_import_2 NegSem_08020301_GeneralFormatOfImport_003_import_2.ttcn >
+
+module NegSem_08020301_GeneralFormatOfImport_003_import_2 {
+ const integer c_myconst := 43532;
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: There is no local or imported definition with name `c_myconst'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+
+*---------------------------------------------------------------------*
+:h3. NegSem_08020301_GeneralFormatOfImport_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that transitive import rules are properly handled >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_08020301_GeneralFormatOfImport_004 NegSem_08020301_GeneralFormatOfImport_004.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.2.3.4, Ensure that transitive import rules are properly handled
+ ** @verdict pass reject
+ *****************************************************************/
+
+
+module NegSem_08020301_GeneralFormatOfImport_004 {
+
+import from NegSem_08020301_GeneralFormatOfImport_004_import all;
+
+type component GeneralComp {}
+
+testcase TC_NegSem_08020301_GeneralFormatOfImport_004() runs on GeneralComp {
+ if (c_myconst == 43532) {
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+}
+
+control{
+ execute(TC_NegSem_08020301_GeneralFormatOfImport_004());
+}
+}
+<END_MODULE>
+
+<MODULE TTCN NegSem_08020301_GeneralFormatOfImport_004_import NegSem_08020301_GeneralFormatOfImport_004_import.ttcn >
+
+module NegSem_08020301_GeneralFormatOfImport_004_import {
+ import from NegSem_08020301_GeneralFormatOfImport_004_import_2 all;
+}
+<END_MODULE>
+
+<MODULE TTCN NegSem_08020301_GeneralFormatOfImport_004_import_2 NegSem_08020301_GeneralFormatOfImport_004_import_2.ttcn >
+
+module NegSem_08020301_GeneralFormatOfImport_004_import_2 {
+ const integer c_myconst := 43532;
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: There is no local or imported definition with name `c_myconst'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+
+*---------------------------------------------------------------------*
+:h3. NegSem_08020301_GeneralFormatOfImport_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Make sure that the identifier of the current module cannot be used for prefixing imported entities >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_08020301_GeneralFormatOfImport_005 NegSem_08020301_GeneralFormatOfImport_005.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.2.3.1, Make sure that the identifier of the current module cannot be used for prefixing imported entities
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// Name clashes shall be resolved using qualified name(s) for the imported definition(s),
+// i.e. prefixing the imported definition by the identifier of the module in which it has
+// been defined; the prefix and the identifier shall be separated by a dot (".").
+// In cases where there are no ambiguities the prefixing need not (but may) be present
+// when the imported definitions are used.
+
+module NegSem_08020301_GeneralFormatOfImport_005 {
+
+import from NegSem_08020301_GeneralFormatOfImport_005_import all;
+
+type component GeneralComp {}
+
+testcase TC_NegSem_08020301_GeneralFormatOfImport_005() runs on GeneralComp {
+ log(NegSem_08020301_GeneralFormatOfImport_005.c_test);
+ setverdict(pass);
+}
+
+control{
+ execute(TC_NegSem_08020301_GeneralFormatOfImport_005());
+}
+}
+
+<END_MODULE>
+
+<MODULE TTCN NegSem_08020301_GeneralFormatOfImport_005_import NegSem_08020301_GeneralFormatOfImport_005_import.ttcn >
+
+module NegSem_08020301_GeneralFormatOfImport_005_import {
+ const integer c_test := 5;
+}
+<END_MODULE>
+
+
+<RESULT COUNT 1>
+error: There is no definition with name `c_test' in module `NegSem_08020301_GeneralFormatOfImport_005'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_08020301_GeneralFormatOfImport_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the only top-level visible definitions of a module may be imported. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_08020301_GeneralFormatOfImport_006 NegSem_08020301_GeneralFormatOfImport_006.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.2.3.1, Ensure that the only top-level visible definitions of a module may be imported.
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// Restriction b:
+// Only top-level visible definitions of a module may be imported. Definitions which
+// are top-level but invisible to the importing module or which occur at a lower scope
+// (e.g. local constants defined in a function) shall not be imported.
+
+module NegSem_08020301_GeneralFormatOfImport_006 {
+import from NegSem_08020301_GeneralFormatOfImport_006_import { const c_test };
+
+type component GeneralComp {}
+
+testcase TC_NegSem_08020301_GeneralFormatOfImport_006() runs on GeneralComp {
+ log(c_test);
+ setverdict(pass);
+}
+
+control{
+ execute(TC_NegSem_08020301_GeneralFormatOfImport_006());
+}
+}
+<END_MODULE>
+
+<MODULE TTCN NegSem_08020301_GeneralFormatOfImport_006_import NegSem_08020301_GeneralFormatOfImport_006_import.ttcn >
+
+module NegSem_08020301_GeneralFormatOfImport_006_import {
+ control {
+ const integer c_test := 5;
+ }
+}
+
+<END_MODULE>
+
+
+<RESULT COUNT 1>
+error: There is no local or imported definition with name `c_test'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_08020301_GeneralFormatOfImport_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Verify that information about message types is imported together with port type >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_08020301_GeneralFormatOfImport_007 NegSem_08020301_GeneralFormatOfImport_007.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.2.3.1, Verify that information about message types is imported together with port type
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// Restriction d:
+// A definition is imported together with all information of referenced definitions that
+// are necessary for the usage of the imported definition, independent of the visibility
+// of the referenced definitions.
+// Table 8:
+// User defined type, port type
+
+module NegSem_08020301_GeneralFormatOfImport_007 {
+import from NegSem_08020301_GeneralFormatOfImport_007_import { type P };
+
+type component GeneralComp {
+ port P p1;
+} with {extension "internal"}
+
+testcase TC_NegSem_08020301_GeneralFormatOfImport_007() runs on GeneralComp {
+ // Since the type of the sent message is not compatible with the allowed types of the imported
+ // port type, a type compatibility error shall be generated. This proves that the type information
+ // has been properly imported.
+ p1.send(charstring:"abc");
+ setverdict(pass);
+}
+
+control{
+ execute(TC_NegSem_08020301_GeneralFormatOfImport_007());
+}
+}
+<END_MODULE>
+
+<MODULE TTCN NegSem_08020301_GeneralFormatOfImport_007_import NegSem_08020301_GeneralFormatOfImport_007_import.ttcn >
+
+module NegSem_08020301_GeneralFormatOfImport_007_import {
+ type port P message {
+ inout integer;
+ }
+}
+
+<END_MODULE>
+
+
+<RESULT COUNT 1>
+error: Incompatible explicit type specification: `integer' was expected instead of `charstring'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_08020301_GeneralFormatOfImport_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that import statement cannot be used in test case blocks >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_08020301_GeneralFormatOfImport_001 NegSyn_08020301_GeneralFormatOfImport_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.2.3.1, Ensure that import statement cannot be used in test case blocks
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// Restriction a:
+// An import statement shall only be used in the module definitions part and not be used
+// within a control part, function definition, and alike.
+
+module NegSyn_08020301_GeneralFormatOfImport_001 {
+
+ type component GeneralComp {}
+
+ testcase TC_NegSyn_08020301_GeneralFormatOfImport_001() runs on GeneralComp {
+ import from NegSyn_08020301_GeneralFormatOfImport_001_import all;
+ log(c_test);
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSyn_08020301_GeneralFormatOfImport_001());
+ }
+}
+
+<END_MODULE>
+
+<MODULE TTCN NegSyn_08020301_GeneralFormatOfImport_001_import NegSyn_08020301_GeneralFormatOfImport_001_import.ttcn >
+
+module NegSyn_08020301_GeneralFormatOfImport_001_import {
+ const integer c_test := 5;
+}
+<END_MODULE>
+
+
+<RESULT COUNT 1>
+error: at or before token `import': syntax error, unexpected ImportKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_08020301_GeneralFormatOfImport_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that import statement cannot be used in module control part >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_08020301_GeneralFormatOfImport_002 NegSyn_08020301_GeneralFormatOfImport_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.2.3.1, Ensure that import statement cannot be used in module control part
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// Restriction a:
+// An import statement shall only be used in the module definitions part and not be used
+// within a control part, function definition, and alike.
+
+module NegSyn_08020301_GeneralFormatOfImport_002 {
+
+ type component GeneralComp {}
+
+ testcase TC_NegSyn_08020301_GeneralFormatOfImport_002() runs on GeneralComp {
+ setverdict(pass);
+ }
+
+ control{
+ import from NegSyn_08020301_GeneralFormatOfImport_002_import all;
+ log(c_test);
+ execute(TC_NegSyn_08020301_GeneralFormatOfImport_002());
+ }
+
+}
+<END_MODULE>
+
+<MODULE TTCN NegSyn_08020301_GeneralFormatOfImport_002_import NegSyn_08020301_GeneralFormatOfImport_002_import.ttcn >
+
+module NegSyn_08020301_GeneralFormatOfImport_002_import {
+ const integer c_test := 5;
+}
+<END_MODULE>
+
+
+<RESULT COUNT 1>
+error: at or before token `import': syntax error, unexpected ImportKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_08020307_ImportingOfImportStatementsFromT3Modules_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the import of import statements works for import all. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_08020307_ImportingOfImportStatementsFromT3Modules_001 NegSem_08020307_ImportingOfImportStatementsFromT3Modules_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.2.3.7, Ensure that the import of import statements works for import all.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_08020307_ImportingOfImportStatementsFromT3Modules_001 {
+
+ import from NegSem_08020307_ImportingOfImportStatementsFromT3Modules_001_importA {
+ import all;
+ };
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_08020307_ImportingOfImportStatementsFromT3Modules_001() runs on GeneralComp {
+ if (c_myconst == 43532) { // c_myconst shall not be accessible as the import in the importA module is private.
+ setverdict(fail);
+ } else {
+ setverdict(pass);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_08020307_ImportingOfImportStatementsFromT3Modules_001());
+ }
+}
+<END_MODULE>
+
+<MODULE TTCN NegSem_08020307_ImportingOfImportStatementsFromT3Modules_001_importA NegSem_08020307_ImportingOfImportStatementsFromT3Modules_001_importA.ttcn >
+
+module NegSem_08020307_ImportingOfImportStatementsFromT3Modules_001_importA {
+ private import from NegSem_08020307_ImportingOfImportStatementsFromT3Modules_001_importB all;
+}
+
+<END_MODULE>
+
+<MODULE TTCN NegSem_08020307_ImportingOfImportStatementsFromT3Modules_001_importB NegSem_08020307_ImportingOfImportStatementsFromT3Modules_001_importB.ttcn >
+
+module NegSem_08020307_ImportingOfImportStatementsFromT3Modules_001_importB {
+ const integer c_myconst := 43532;
+}
+
+<END_MODULE>
+
+
+<RESULT COUNT 1>
+error: There is no local or imported definition with name `c_myconst'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_08020307_ImportingOfImportStatementsFromT3Modules_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the import of import statements works for import all. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_08020307_ImportingOfImportStatementsFromT3Modules_002 NegSem_08020307_ImportingOfImportStatementsFromT3Modules_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.2.3.7, Ensure that the import of import statements works for import all.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_08020307_ImportingOfImportStatementsFromT3Modules_002 {
+
+ import from Sem_08020307_ImportingOfImportStatementsFromT3Modules_002_importA {
+ import all;
+ };
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_08020307_ImportingOfImportStatementsFromT3Modules_002() runs on GeneralComp {
+ if (c_myconst == 43532) { // c_myconst shall not be accessible as the import in the importA module is private.
+ setverdict(fail);
+ } else {
+ setverdict(pass);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_08020307_ImportingOfImportStatementsFromT3Modules_002());
+ }
+}
+
+<END_MODULE>
+
+<MODULE TTCN NegSem_08020307_ImportingOfImportStatementsFromT3Modules_002_importA NegSem_08020307_ImportingOfImportStatementsFromT3Modules_002_importA.ttcn >
+
+module Sem_08020307_ImportingOfImportStatementsFromT3Modules_002_importA {
+ // imports are private by default
+ import from NegSem_08020307_ImportingOfImportStatementsFromT3Modules_002_importB all;
+}
+
+<END_MODULE>
+
+<MODULE TTCN NegSem_08020307_ImportingOfImportStatementsFromT3Modules_002_importB NegSem_08020307_ImportingOfImportStatementsFromT3Modules_002_importB.ttcn >
+
+module NegSem_08020307_ImportingOfImportStatementsFromT3Modules_002_importB {
+ const integer c_myconst := 43532;
+}
+
+<END_MODULE>
+
+
+<RESULT COUNT 1>
+error: There is no local or imported definition with name `c_myconst'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_080204_DefinitionOfFriendModules_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the import of import statements works for import all. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_080204_DefinitionOfFriendModules_001 NegSem_080204_DefinitionOfFriendModules_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.2.4, Ensure that friend visibility works for a sample constant.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_080204_DefinitionOfFriendModules_001 {
+
+ import from NegSem_080204_DefinitionOfFriendModules_001_import all;
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_080204_DefinitionOfFriendModules_001() runs on GeneralComp {
+ if (c_myconst == 32532) { // c_myconst shall not be visible. A friend module statement is missing in NegSem_080204_DefinitionOfFriendModules_001_import.
+ setverdict(fail);
+ } else {
+ setverdict(pass);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_080204_DefinitionOfFriendModules_001());
+ }
+}
+<END_MODULE>
+
+<MODULE TTCN NegSem_080204_DefinitionOfFriendModules_001_import NegSem_080204_DefinitionOfFriendModules_001_import.ttcn >
+
+module NegSem_080204_DefinitionOfFriendModules_001_import {
+ friend const integer c_myconst := 32532;
+}
+
+<END_MODULE>
+
+
+<RESULT COUNT 1>
+error: There is no local or imported definition with name `c_myconst'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_080204_DefinitionOfFriendModules_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that private definitions are not made visible by friend declarations (for a constant sample definition). >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_080204_DefinitionOfFriendModules_002 NegSem_080204_DefinitionOfFriendModules_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.2.4, Ensure that private definitions are not made visible by friend declarations (for a constant sample definition).
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_080204_DefinitionOfFriendModules_002 {
+
+ import from NegSem_080204_DefinitionOfFriendModules_002_import all;
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_080204_DefinitionOfFriendModules_002() runs on GeneralComp {
+ if (c_myconst == 32532) { // c_myconst shall not be visible. The definition is private even though the module is a friend.
+ setverdict(fail);
+ } else {
+ setverdict(pass);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_080204_DefinitionOfFriendModules_002());
+ }
+}
+<END_MODULE>
+
+<MODULE TTCN NegSem_080204_DefinitionOfFriendModules_002_import NegSem_080204_DefinitionOfFriendModules_002_import.ttcn >
+
+module NegSem_080204_DefinitionOfFriendModules_002_import {
+ friend module NegSem_080204_DefinitionOfFriendModules_001;
+
+ private const integer c_myconst := 32532;
+}
+<END_MODULE>
+
+
+<RESULT COUNT 1>
+error: There is no local or imported definition with name `c_myconst'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_080205_VisibilityOfDefinitions_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that private definition (in this case a sample constant) is not visible using a normal import. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_080205_VisibilityOfDefinitions_001 NegSem_080205_VisibilityOfDefinitions_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.2.5, Ensure that private definition (in this case a sample constant) is not visible using a normal import.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_080205_VisibilityOfDefinitions_001 {
+
+ import from NegSem_080205_VisibilityOfDefinitions_001_import all;
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_080205_VisibilityOfDefinitions_001() runs on GeneralComp {
+ if (c_myconst == 32532) { // c_myconst shall not be visible on import as the definition is private.
+ setverdict(fail);
+ } else {
+ setverdict(pass);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_080205_VisibilityOfDefinitions_001());
+ }
+}
+
+<END_MODULE>
+
+<MODULE TTCN NegSem_080205_VisibilityOfDefinitions_001_import NegSem_080205_VisibilityOfDefinitions_001_import.ttcn >
+
+module NegSem_080205_VisibilityOfDefinitions_001_import {
+ private const integer c_myconst := 32532;
+}
+<END_MODULE>
+
+
+<RESULT COUNT 1>
+error: There is no local or imported definition with name `c_myconst'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_080205_VisibilityOfDefinitions_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that private definition (in this case a sample constant) is not visible using an import of a friend module. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_080205_VisibilityOfDefinitions_002 NegSem_080205_VisibilityOfDefinitions_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.2.5, Ensure that private definition (in this case a sample constant) is not visible using an import of a friend module.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_080205_VisibilityOfDefinitions_002 {
+
+ import from NegSem_080205_VisibilityOfDefinitions_002_import all;
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_080205_VisibilityOfDefinitions_002() runs on GeneralComp {
+ if (c_myconst == 32532) { // c_myconst shall not be visible on import as the definition is private.
+ setverdict(fail);
+ } else {
+ setverdict(pass);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_080205_VisibilityOfDefinitions_002());
+ }
+}
+
+
+<END_MODULE>
+
+<MODULE TTCN NegSem_080205_VisibilityOfDefinitions_002_import NegSem_080205_VisibilityOfDefinitions_002_import.ttcn >
+
+module NegSem_080205_VisibilityOfDefinitions_002_import {
+ friend module NegSem_080205_VisibilityOfDefinitions_002;
+
+ private const integer c_myconst := 32532;
+}
+<END_MODULE>
+
+
+<RESULT COUNT 1>
+error: There is no local or imported definition with name `c_myconst'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_080205_VisibilityOfDefinitions_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that friend definition (in this case a sample constant) is not visible using a group import of a non-friend module. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_080205_VisibilityOfDefinitions_003 NegSem_080205_VisibilityOfDefinitions_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.2.5, Ensure that friend definition (in this case a sample constant) is not visible using a group import of a non-friend module.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_080205_VisibilityOfDefinitions_003 {
+
+ import from NegSem_080205_VisibilityOfDefinitions_003_import {
+ group CONST_GROUP;
+ }
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_080205_VisibilityOfDefinitions_003() runs on GeneralComp {
+ if (c_myconst == 32532) { // c_myconst shall not be visible on import as the definition is private.
+ setverdict(fail);
+ } else {
+ setverdict(pass);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_080205_VisibilityOfDefinitions_003());
+ }
+}
+<END_MODULE>
+
+<MODULE TTCN NegSem_080205_VisibilityOfDefinitions_003_import NegSem_080205_VisibilityOfDefinitions_003_import.ttcn >
+
+module NegSem_080205_VisibilityOfDefinitions_003_import {
+ group CONST_GROUP {
+ friend const integer c_myconst := 32532;
+ }
+}
+<END_MODULE>
+
+
+<RESULT COUNT 1>
+error: There is no local or imported definition with name `c_myconst'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_080205_VisibilityOfDefinitions_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that friend definition (in this case a sample constant) is not visible using a group import of a non-friend module. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_080205_VisibilityOfDefinitions_004 NegSem_080205_VisibilityOfDefinitions_004.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.2.5, Ensure that private definition (in this case a sample constant) is not visible using a group import of a non-friend module.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_080205_VisibilityOfDefinitions_004 {
+
+ import from NegSem_080205_VisibilityOfDefinitions_004_import {
+ group CONST_GROUP;
+ }
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_080205_VisibilityOfDefinitions_004() runs on GeneralComp {
+ if (c_myconst == 32532) { // c_myconst shall not be visible on import as the definition is private.
+ setverdict(fail);
+ } else {
+ setverdict(pass);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_080205_VisibilityOfDefinitions_004());
+ }
+}
+<END_MODULE>
+
+<MODULE TTCN NegSem_080205_VisibilityOfDefinitions_004_import NegSem_080205_VisibilityOfDefinitions_004_import.ttcn >
+
+module NegSem_080205_VisibilityOfDefinitions_004_import {
+ group CONST_GROUP {
+ private const integer c_myconst := 32532;
+ }
+}
+<END_MODULE>
+
+
+<RESULT COUNT 1>
+error: There is no local or imported definition with name `c_myconst'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_080205_VisibilityOfDefinitions_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that private definition (in this case a sample constant) is not visible using a group import of a friend module. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_080205_VisibilityOfDefinitions_005 NegSem_080205_VisibilityOfDefinitions_005.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.2.5, Ensure that private definition (in this case a sample constant) is not visible using a group import of a friend module.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_080205_VisibilityOfDefinitions_005 {
+
+ import from NegSem_080205_VisibilityOfDefinitions_005_import {
+ group CONST_GROUP;
+ }
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_080205_VisibilityOfDefinitions_005() runs on GeneralComp {
+ if (c_myconst == 32532) { // c_myconst shall not be visible on import as the definition is private.
+ setverdict(fail);
+ } else {
+ setverdict(pass);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_080205_VisibilityOfDefinitions_005());
+ }
+}
+<END_MODULE>
+
+<MODULE TTCN NegSem_080205_VisibilityOfDefinitions_005_import NegSem_080205_VisibilityOfDefinitions_005_import.ttcn >
+
+module NegSem_080205_VisibilityOfDefinitions_005_import {
+ friend module NegSem_080205_VisibilityOfDefinitions_005;
+
+ group CONST_GROUP {
+ private const integer c_myconst := 32532;
+ }
+}
+<END_MODULE>
+
+
+<RESULT COUNT 1>
+error: There is no local or imported definition with name `c_myconst'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_080205_VisibilityOfDefinitions_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that there is not more than one control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_080205_VisibilityOfDefinitions_005 NegSem_080205_VisibilityOfDefinitions_005.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.3, Ensure that there is not more than one control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSyn_0803_ModuleControlPart_001 {
+
+ control {
+ var integer count := 0;
+ }
+
+ control {
+ var integer count := 0;
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `control': syntax error, unexpected ControlKeyword, expecting '\{' or '\}'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h2. 09_test_configurations folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0901_Communication_ports_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Verify that a two TSI port cannot be connected >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_0901_Communication_ports_007 NegSem_0901_Communication_ports_007.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:9.1, Verify that a two TSI port cannot be connected
+ ** @verdict pass reject
+ ***************************************************/
+
+/*NOTE: see Figure 7(f): Two TSI port cannot be connected
+ * */
+
+module NegSem_0901_Communication_ports_007 {
+
+ type port P message {
+ inout integer
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p1, p2;
+ }
+
+ testcase TC_NegSem_0901_Communication_ports_007() runs on GeneralComp system GeneralComp {
+ var GeneralComp s := system;
+ map(s:p2, system:p1); // error: p1 and p2 cannot be connected
+
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_0901_Communication_ports_007());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Both arguments of map operation refer to system ports.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0901_Communication_ports_009 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Verify that connections within the test system interface are not allowed >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0901_Communication_ports_009 NegSem_0901_Communication_ports_009.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:9.1, Verify that connections within the test system interface are not allowed
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// Restriction a): Connections within the test system interface are not allowed.
+
+module NegSem_0901_Communication_ports_009 {
+
+ type port P message {
+ inout integer
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p1, p2;
+ }
+
+ testcase TC_NegSem_0901_Communication_ports_009() runs on GeneralComp system GeneralComp {
+ map(system:p1, system:p1); // mapping system port to itself: error expected
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_0901_Communication_ports_009());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Both endpoints of the mapping are system ports
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_0901_Communication_ports_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Verify that a two TSI port cannot be connected >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_0901_Communication_ports_001 NegSem_0901_Communication_ports_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:9.1, Verify that a two TSI port cannot be connected
+ ** @verdict pass reject, noexecution
+ ***************************************************/
+
+/*NOTE: see Figure 7(f): Two TSI port cannot be connected
+ * */
+
+module NegSyn_0901_Communication_ports_001 {
+
+ type port P message {
+ inout integer
+ }
+
+ type component GeneralComp
+ {
+ port P p1, p2;
+ }
+
+ type component General_System_Comp
+ {
+ port P p_system_1, p_system_2;
+ }
+
+ testcase TC_NegSyn_0901_Communication_ports_001() runs on GeneralComp system General_System_Comp {
+
+ connect(system:p_system_1, system:p_system_2); // error: p_system_1 and p_system_2 cannot be connected
+
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSyn_0901_Communication_ports_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 2>
+error: The `system' component reference shall not be used in `connect' operation
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_0902_Communication_ports_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the two system interf. port cannot connect >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_0902_Communication_ports_003 NegSem_0902_Communication_ports_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:9, Ensure that the two system interf. port cannot connect
+ ** @verdict pass reject
+ ***************************************************/
+
+//Two system interface ports are not allowed to connect
+module NegSem_0902_Communication_ports_003{
+
+ type port loopbackPort message {
+ inout integer
+ } with {extension "internal"}
+
+ type component MyTestSystemInterface
+ {
+ port loopbackPort messagePortA,messagePortB
+ }
+ // MyTestSystemInterface is the test system interface
+
+ testcase TC_NegSem_0902_Communication_ports_003() runs on MyTestSystemInterface {
+ // establishing the port connections
+ map(system:messagePortA, system:messagePortB); // not allowed
+
+ setverdict(fail);
+
+ }
+ control{
+ execute(TC_NegSem_0902_Communication_ports_003());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Both endpoints of the mapping are system ports
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h2. 10_constants folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_10_Constants_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Assign rnd to constant used in type, not allowed since constant expressions used in types have to be known at compile-time. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_10_Constants_001 NegSem_10_Constants_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:10, Assign rnd to constant used in type, not allowed since constant expressions used in types have to be known at compile-time.
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_10_Constants_001 {
+
+ const float c_i := rnd(314E-2); // not allowed by standard
+ type float MyFloat (c_i);
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_10_Constants_001() runs on GeneralComp {
+ var MyFloat v_f := c_i;
+ log(v_f);
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_10_Constants_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: An evaluatable constant value was expected instead of operation `rnd \(seed\)'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_10_Constants_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - A value is assigned only once to a constant. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_10_Constants_002 NegSem_10_Constants_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:10, A value is assigned only once to a constant
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_10_Constants_002 {
+
+ const float c_i := 3.14;
+
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_10_Constants_002() runs on GeneralComp {
+ c_i := 3.15; //error because value is assigned only once to the constant
+ }
+
+ control{
+ execute(TC_NegSem_10_Constants_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or template variable was expected instead of constant `@NegSem_10_Constants_002.c_i'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_10_Constants_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Constant shall not be of port type >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_10_Constants_003 NegSem_10_Constants_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:10, Constant shall not be of port type
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_10_Constants_003 {
+
+ //only for negSyn constant shall not be of port type
+ type port MyMessagePortType message
+ {
+ inout integer
+ } with {extension "internal"}
+
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_10_Constants_003() runs on GeneralComp {
+ const MyMessagePortType c_port:= 5;//error - constant shall not be of port type
+ }//end testcase
+
+ control{
+ execute(TC_NegSem_10_Constants_003());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Constant cannot be defined for port type `@NegSem_10_Constants_003.MyMessagePortType'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h2. 11_variables folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1101_ValueVars_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Variables should be assigned only by values >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1101_ValueVars_001 NegSem_1101_ValueVars_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:11.1, Variables should be assigned only by values
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_1101_ValueVars_001 {
+ type component GeneralComp {}
+
+ testcase TC_NegSem_1101_ValueVars_001() runs on GeneralComp {
+ var integer v_i := ?; // ? is not a value
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_1101_ValueVars_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\?': syntax error, unexpected '\?'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1101_ValueVars_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that partially initialized variables are evaluated correctly. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_1101_ValueVars_002 NegSem_1101_ValueVars_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:11.1, Ensure that partially initialized variables are evaluated correctly.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1101_ValueVars_002 {
+
+ type component GeneralComp {
+ }
+
+ type set IntegerSet {
+ integer a1 optional,
+ integer a2 optional,
+ integer a3 optional
+ };
+
+ testcase TC_NegSem_1101_ValueVars_002() runs on GeneralComp {
+ var IntegerSet v_set := {a1:=1,a2:=omit};
+
+ if ( v_set == {a1:=1,a2:=omit,a3:=3} ) { //attempted use of partially initialized variable
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_1101_ValueVars_002());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: The left operand of comparison is an unbound optional value.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_1101_ValueVars_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Define variables in module scope >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_1101_ValueVars_001 NegSyn_1101_ValueVars_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:11.1, Define variables in module scope
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_1101_ValueVars_001 {
+ var integer v_i1 := 5;
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `var': syntax error, unexpected VarKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1102_TemplateVars_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Template variables should be assigned with unitialized variables >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_1102_TemplateVars_001 NegSem_1102_TemplateVars_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:11.2, Template variables should be assigned with unitialized variables
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_1102_TemplateVars_001 {
+ type component GeneralComp {}
+
+ testcase TC_NegSem_1102_TemplateVars_001() runs on GeneralComp {
+ var template integer v_i1;
+ var template integer v_i2 := v_i1; // v_i1 is not initialized
+
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_1102_TemplateVars_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Copying an uninitialized/unsupported integer template.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_1102_TemplateVars_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Define template variables in module scope >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_1102_TemplateVars_001 NegSyn_1102_TemplateVars_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:11.2, Define template variables in module scope
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_1102_TemplateVars_001 {
+ var template integer v_i1 := 5;
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `var': syntax error, unexpected VarKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h2. 12_timers folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_12_toplevel_timer_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer can not be initialized with negative duration >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_12_toplevel_timer_001 NegSem_12_toplevel_timer_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:12, Ensure timer can not be initialized with negative duration
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/12 Declaring timers/Timer value is non-neg float
+ **/
+
+
+module NegSem_12_toplevel_timer_001 {
+ type component TComp{
+ timer t_timer := -1.0; // not allowed
+ }
+ testcase TC_NegSem_12_toplevel_timer_001() runs on TComp{
+ t_timer.start;
+ }
+ control{
+
+ execute(TC_NegSem_12_toplevel_timer_001())
+
+
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A non-negative float value was expected as timer duration instead of `-1.0e0'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_12_toplevel_timer_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer in array can not be initialized with negative duration >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_12_toplevel_timer_002 NegSem_12_toplevel_timer_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:12, Ensure timer in array can not be initialized with negative duration
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/12 Declaring timers/Timer value is non-neg float
+ **/
+
+
+module NegSem_12_toplevel_timer_002 {
+
+ type component TComp{
+ timer t_timer[2] := {-1.0, 1.0};
+ }
+
+ testcase TC_NegSem_12_toplevel_timer_002() runs on TComp{
+ t_timer[0].start;
+ }
+
+ control{
+ execute(TC_NegSem_12_toplevel_timer_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A non-negative float value was expected as timer duration instead of `-1.0e0'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_12_toplevel_timer_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure uninitialized timer can't be started >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_12_toplevel_timer_003 NegSem_12_toplevel_timer_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:12, Ensure uninitialized timer can't be started
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/12 Declaring timers/Timer declaration syntax
+ **/
+
+
+module NegSem_12_toplevel_timer_003 {
+
+ type component TComp{
+ timer t_timer;
+ }
+
+ testcase TC_NegSem_12_toplevel_timer_003() runs on TComp{
+ t_timer.start;
+ }
+
+ control{
+ execute(TC_NegSem_12_toplevel_timer_003())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Missing duration: timer `@NegSem_12_toplevel_timer_003.TComp.t_timer' does not have default duration
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_12_toplevel_timer_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure uninitialized timer in array can't be started >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_12_toplevel_timer_004 NegSem_12_toplevel_timer_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:12, Ensure uninitialized timer in array can't be started
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/12 Declaring timers/Timer declaration syntax
+ **/
+
+
+module NegSem_12_toplevel_timer_004 {
+ type component TComp{
+ timer t_timer[2] := {-, 1.0};
+ }
+
+ testcase TC_NegSem_12_toplevel_timer_004() runs on TComp{
+ t_timer[0].start;
+ }
+
+ control{
+ execute(TC_NegSem_12_toplevel_timer_004());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Missing duration: timer `@NegSem_12_toplevel_timer_004.TComp.t_timer' does not have default duration
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_12_toplevel_timer_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure uninitialized timer in array can't be started >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_12_toplevel_timer_005 NegSem_12_toplevel_timer_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:12, Ensure uninitialized timer in array can't be started
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/12 Declaring timers/Timer declaration syntax
+ **/
+
+
+module NegSem_12_toplevel_timer_005 {
+
+ type component TComp{
+ timer t_timer[2];
+ }
+
+ testcase TC_NegSem_12_toplevel_timer_005() runs on TComp{
+ t_timer[0].start;
+ }
+
+ control{
+ execute(TC_NegSem_12_toplevel_timer_005())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Missing duration: timer `@NegSem_12_toplevel_timer_005.TComp.t_timer' does not have default duration
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_12_toplevel_timer_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer declaration syntax - reject single timer instance initialized with array >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_12_toplevel_timer_006 NegSem_12_toplevel_timer_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:12, Ensure timer declaration syntax - reject single timer instance initialized with array
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/12 Declaring timers/Timer declaration syntax
+ **/
+
+
+module NegSem_12_toplevel_timer_006 {
+
+ type component TComp{
+ timer t_timer := {1.0, 1.0, 1.0};
+ }
+
+ testcase TC_NegSem_12_toplevel_timer_006() runs on TComp{
+ t_timer[0].start;
+ }
+
+ control{
+ execute(TC_NegSem_12_toplevel_timer_006())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A value or expression of type float was expected
+<END_RESULT>
+<RESULT COUNT 1>
+error: Reference to single timer `@NegSem_12_toplevel_timer_006.TComp.t_timer' cannot have field or array sub-references
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_12_toplevel_timer_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer declaration syntax -- reject array initialization with wrong number of initializers >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_12_toplevel_timer_007 NegSem_12_toplevel_timer_007.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:12, Ensure timer declaration syntax -- reject array initialization with wrong number of initializers
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/12 Declaring timers/Timer declaration syntax
+ **/
+
+
+module NegSem_12_toplevel_timer_007 {
+ type component TComp{
+ timer t_timer[4] := {1.0, 1.0, 1.0};
+ }
+
+ testcase TC_NegSem_12_toplevel_timer_007() runs on TComp{
+ t_timer[0].start;
+ }
+
+ control{
+ execute(TC_NegSem_12_toplevel_timer_007())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Too few elements in the default duration of timer array: 4 was expected instead of 3
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_12_toplevel_timer_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer declaration syntax -- reject array of timers initizlized with a single float value >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_12_toplevel_timer_008 NegSem_12_toplevel_timer_008.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:12, Ensure timer declaration syntax -- reject array of timers initizlized with a single float value
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/12 Declaring timers/Timer declaration syntax
+ **/
+
+
+module NegSyn_12_toplevel_timer_008 {
+
+ type component TComp{
+ timer t_timer[4] := 1.0;
+ }
+
+ testcase TC_NegSyn_12_toplevel_timer_008() runs on TComp{
+ t_timer[0].start;
+ }
+
+ control{
+ execute(TC_NegSyn_12_toplevel_timer_008())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: An array value \(with 4 elements\) was expected as default duration of timer array
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_12_toplevel_timer_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer can`t be used in module control parts when declared in components >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_12_toplevel_timer_001 NegSyn_12_toplevel_timer_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:12, Ensure timer can`t be used in module control parts when declared in components
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/12 Declaring timers/Timers can be declared in component and used in test cases, functions, altsteps on this component
+ **/
+
+
+module NegSyn_12_toplevel_timer_001 {
+
+ type component TComp{
+ timer t_timer:= 1.0;
+ }
+
+ testcase TC_NegSyn_12_toplevel_timer_001(integer f) runs on TComp{
+ if (f==0){
+ setverdict(fail);
+ }
+ else{
+ setverdict(pass);
+ }
+ }
+
+ control{
+
+ t_timer.start;
+ if (t_timer.running){
+ execute(TC_NegSyn_12_toplevel_timer_001(0))
+ }
+ else{
+ execute(TC_NegSyn_12_toplevel_timer_001(1))
+ }
+
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 2>
+error: There is no local or imported definition with name `t_timer'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_12_toplevel_timer_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer declaration syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_12_toplevel_timer_002 NegSyn_12_toplevel_timer_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:12, Ensure timer declaration syntax
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/12 Declaring timers/Timer declaration syntax
+ **/
+
+
+module NegSyn_12_toplevel_timer_002 {
+
+ type component TComp{
+ timer := 10.0;
+ }
+
+ testcase TC_NegSyn_12_toplevel_timer_002() runs on TComp{
+
+ }
+ control{
+ execute(TC_NegSyn_12_toplevel_timer_002())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `:=': syntax error, unexpected :=, expecting Identifier
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_12_toplevel_timer_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer declaration syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_12_toplevel_timer_003 NegSyn_12_toplevel_timer_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:12, Ensure timer declaration syntax
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/12 Declaring timers/Timer declaration syntax
+ **/
+
+
+module NegSyn_12_toplevel_timer_003 {
+
+ type component TComp{
+ timer t_timer :=;
+ }
+
+ testcase TC_NegSyn_12_toplevel_timer_003() runs on TComp{
+
+ }
+ control{
+ execute(TC_NegSyn_12_toplevel_timer_003())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `;': syntax error, unexpected ';'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_12_toplevel_timer_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer declaration syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_12_toplevel_timer_004 NegSyn_12_toplevel_timer_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:04, Ensure timer declaration syntax
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/12 Declaring timers/Timer declaration syntax
+ **/
+
+
+module NegSyn_04_toplevel_timer_004 {
+
+ type component TComp{
+ timer t_timer 0.0;
+ }
+
+ testcase TC_NegSyn_04_toplevel_timer_004() runs on TComp{
+
+ }
+
+ control{
+ execute(TC_NegSyn_04_toplevel_timer_004())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `0.0': syntax error, unexpected FloatValue
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_12_toplevel_timer_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer declaration syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_12_toplevel_timer_005 NegSyn_12_toplevel_timer_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:12, Ensure timer declaration syntax
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/12 Declaring timers/Timer declaration syntax
+ **/
+
+
+module NegSyn_12_toplevel_timer_005 {
+
+ type component TComp{
+ timer t_timer := 1;
+ }
+
+ testcase TC_NegSyn_12_toplevel_timer_005() runs on TComp{
+
+ }
+
+ control{
+ execute(TC_NegSyn_12_toplevel_timer_005())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A value or expression of type float was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_12_toplevel_timer_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer array declaration syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_12_toplevel_timer_006 NegSyn_12_toplevel_timer_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:12, Ensure timer array declaration syntax
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/12 Declaring timers/Timer declaration syntax
+ **/
+
+
+module NegSyn_12_toplevel_timer_006 {
+
+ type component TComp{
+ timer t_timer[5] := 1.0, 1.0, 1.0, 1.0, 1.0};
+ }
+
+ testcase TC_NegSyn_12_toplevel_timer_006() runs on TComp{
+
+ }
+
+ control{
+ execute(TC_NegSyn_12_toplevel_timer_006())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `1.0': syntax error, unexpected FloatValue, expecting Identifier
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_12_toplevel_timer_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer array declaration syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_12_toplevel_timer_007 NegSyn_12_toplevel_timer_007.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:12, Ensure timer array declaration syntax
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/12 Declaring timers/Timer declaration syntax
+ **/
+
+
+module NegSyn_12_toplevel_timer_007 {
+
+ type component TComp{
+ timer t_timer[5] := {1.0 1.0, 1.0, 1.0, 1.0};
+ }
+
+ testcase TC_NegSyn_12_toplevel_timer_007() runs on TComp{
+
+ }
+
+ control{
+ execute(TC_NegSyn_12_toplevel_timer_007())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `1.0': syntax error, unexpected FloatValue, expecting '\}' or ','
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h2. 14_procedure_signatures folder
+.*---------------------------------------------------------------------*
+*---------------------------------------------------------------------*
+:h3. egSem_1400_procedure_signatures_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that nonblocking signature contains in parameter >
+
+<COMPILE>
+
+<MODULE TTCN egSem_1400_procedure_signatures_001 egSem_1400_procedure_signatures_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.1, Ensure that nonblocking signature contains in parameter
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1400_procedure_signatures_001 {
+
+ signature p_procedure_signatures_001(out integer p_par1) noblock; // noblock keyword, shall only have in parameters
+
+ template p_procedure_signatures_001 s_returnTemplate := {
+ p_par1 := - }
+
+ type port remotePort procedure {
+ inout p_procedure_signatures_001;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port remotePort PCO;
+ }
+
+ function f_ClientQuery() runs on GeneralComp { }
+
+ testcase TC_NegSem_1400_procedure_signatures_001() runs on GeneralComp system GeneralComp {
+ var GeneralComp server := GeneralComp.create("RemoteProcedure Service");
+ var GeneralComp client := GeneralComp.create("RemoteProcedure Client");
+
+ // map the PTCs to the system port
+ connect(server:PCO, client:PCO);
+
+
+ client.start(f_ClientQuery());
+
+ alt {
+ [] client.done {
+ server.stop;
+ }
+ }
+
+ alt {
+ [] all component.done {}
+ }
+
+ disconnect(server:PCO, client:PCO);
+ }
+
+ control{
+ execute(TC_NegSem_1400_procedure_signatures_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A non-blocking signature cannot have `out' parameter
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. egSem_1400_procedure_signatures_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that blocking calls needs response or exception handling >
+
+<COMPILE>
+
+<MODULE TTCN egSem_1400_procedure_signatures_002 egSem_1400_procedure_signatures_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:14, Ensure that blocking calls needs response or exception handling
+ ** @verdict pass reject
+ *****************************************************************/
+// Multiple calls requires response or exception handling if the signature is blocking
+
+module NegSem_1400_procedure_signatures_002 {
+
+ signature p_Sig1_001( in charstring key ); // noblock needed for multiple calls without response or exections
+
+ type port remotePort procedure {
+ inout p_Sig1_001;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port remotePort PCO;
+ var integer MyComp;
+ }
+
+
+ function f_Server() runs on GeneralComp {
+ timer t_guard;
+
+ const charstring key[3] := {"My String1", "hello", "Probe string"};
+
+ t_guard.start( 5.0 );
+
+ for ( var integer i := 0; i < 3; i := i + 1 ) {
+ PCO.call( p_Sig1_001:{key[i]});}
+ setverdict(pass);
+
+ t_guard.timeout;
+ setverdict(fail);
+ }
+
+ function f_client() runs on GeneralComp {
+
+ }
+
+ testcase TC_NegSem_1400_procedure_signatures_002() runs on GeneralComp system GeneralComp {
+
+ var GeneralComp server := GeneralComp.create("RemoteProcedure Service");
+ var GeneralComp client := GeneralComp.create("RemoteProcedure Client");
+
+
+ connect(server:PCO, client:PCO);
+
+ server.start(f_Server());
+ client.start(f_client());
+
+ alt {
+ [] client.done {
+ server.stop;
+ }
+ }
+
+ alt {
+ [] all component.done {}
+ }
+
+ disconnect(server:PCO, client:PCO);
+ }
+
+ control{
+ execute(TC_NegSem_1400_procedure_signatures_002());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Response and exception handling part is missing from blocking call operation
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h1.References
+.*---------------------------------------------------------------------*
+:list.
+:li D='[1]'.1/174 02-CRL 113 200/5 Uen
+:nl.Statement of Compliance for TITAN project
+:li D='[2]'.ETSI ES 201 873-1, v4.7.1 Mockup v1 (2015-06):
+:nl.Testing and Test Control Notation version 3.,
+:nl.Part 1: TTCN-3 Core Language
+:elist.
--- /dev/null
+.******************************************************************************
+.* Copyright (c) 2000-2016 Ericsson Telecom AB
+.* All rights reserved. This program and the accompanying materials
+.* are made available under the terms of the Eclipse Public License v1.0
+.* which accompanies this distribution, and is available at
+.* http://www.eclipse.org/legal/epl-v10.html
+.*
+.* Contributors:
+.* Adrien Kirjak – initial implementation
+.*
+.******************************************************************************/
+text.
+:lang eng.
+.*
+:docname.Test Description
+:docno.xz/152 91-CRL 113 200 Uen
+:rev.PA1
+:date.2016-04-04
+.*
+:prep.ETH/XZ EADRKIR
+:subresp.EADRKIR
+:appr.ETH/XZ (Elemer Lelik)
+:checked.
+.*
+:title.ETSI TTCN3 Negative Conformance Test
+:contents level=3.
+.*---------------------------------------------------------------------*
+:h1.PREREQUISITES AND PREPARATIONS
+.*---------------------------------------------------------------------*
+.*---------------------------------------------------------------------*
+:h2.Scope of the Test Object
+.*---------------------------------------------------------------------*
+:xmp tab=1 nokeep.
+This TD contains syntactic tests with empty modules from ETSI TTCN3 Conformance Test's 08_modules folders.
+
+:exmp.
+
+.*---------------------------------------------------------------------*
+:h2.Test Tools
+.*---------------------------------------------------------------------*
+:p.:us.Software Tools:eus.
+:xmp tab=2 nokeep.
+
+ SAtester.pl
+
+:exmp.
+:np.
+
+.*---------------------------------------------------------------------*
+:h1.REQUIREMENT-BASED TESTS
+.*---------------------------------------------------------------------*
+.*---------------------------------------------------------------------*
+:h2. 0801_definition_of_a_module folder
+.*---------------------------------------------------------------------*
+*---------------------------------------------------------------------*
+:h3. Syn_0801_DefinitionOfAModule_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that a "plain" module definition is accepted. >
+
+<COMPILE>
+
+<MODULE TTCN Syn_0801_DefinitionOfAModule_001 Syn_0801_DefinitionOfAModule_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.1, Ensure that a "plain" module definition is accepted.
+ ** @verdict pass accept, noexecution
+ *****************************************************************/
+
+module Syn_0801_DefinitionOfAModule_001 {
+
+}
+<END_MODULE>
+
+<RESULT IF_PASS NEGATIVE>
+error
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Syn_0801_DefinitionOfAModule_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that a module definition with language specification is accepted. >
+
+<COMPILE>
+
+<MODULE TTCN Syn_0801_DefinitionOfAModule_002 Syn_0801_DefinitionOfAModule_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.1, Ensure that a module definition with language specification is accepted.
+ ** @verdict pass accept, noexecution
+ *****************************************************************/
+
+module Syn_0801_DefinitionOfAModule_002 language "TTCN-3:2005" {
+
+}
+<END_MODULE>
+
+<RESULT IF_PASS NEGATIVE>
+error
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Syn_0801_DefinitionOfAModule_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that a module definition with package and without language is accepted. >
+
+<COMPILE>
+
+<MODULE TTCN Syn_0801_DefinitionOfAModule_004 Syn_0801_DefinitionOfAModule_004.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.1, Ensure that a module definition with package and without language is accepted.
+ ** @verdict pass accept, noexecution
+ *****************************************************************/
+
+module Syn_0801_DefinitionOfAModule_004 language "TTCN-3:2010 Advanced Parameterization" {
+
+}
+<END_MODULE>
+
+<RESULT IF_PASS NEGATIVE>
+error
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Syn_0801_DefinitionOfAModule_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that a module definition with ed4.3.1 language and package is accepted. >
+
+<COMPILE>
+
+<MODULE TTCN Syn_0801_DefinitionOfAModule_005 Syn_0801_DefinitionOfAModule_005.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.1, Ensure that a module definition with ed4.3.1 language and package is accepted.
+ ** @verdict pass accept, noexecution
+ *****************************************************************/
+
+module Syn_0801_DefinitionOfAModule_005 language "TTCN-3:2011" {
+
+}
+<END_MODULE>
+
+<RESULT IF_PASS NEGATIVE>
+error
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Syn_0801_DefinitionOfAModule_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that a module definition with ed4.4.1 language and package is accepted. >
+
+<COMPILE>
+
+<MODULE TTCN Syn_0801_DefinitionOfAModule_006 Syn_0801_DefinitionOfAModule_006.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.1, Ensure that a module definition with ed4.4.1 language and package is accepted.
+ ** @verdict pass accept, noexecution
+ *****************************************************************/
+
+module Syn_0801_DefinitionOfAModule_006 language "TTCN-3:2012" {
+
+}
+<END_MODULE>
+
+<RESULT IF_PASS NEGATIVE>
+error
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Syn_0801_DefinitionOfAModule_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that a module definition with ed4.5.1 language and package is accepted. >
+
+<COMPILE>
+
+<MODULE TTCN Syn_0801_DefinitionOfAModule_007 Syn_0801_DefinitionOfAModule_007.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.1, Ensure that a module definition with ed4.5.1 language and package is accepted.
+ ** @verdict pass accept, noexecution
+ *****************************************************************/
+
+module Syn_0801_DefinitionOfAModule_007 language "TTCN-3:2013" {
+
+}
+<END_MODULE>
+
+<RESULT IF_PASS NEGATIVE>
+error
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Syn_0801_DefinitionOfAModule_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that a module definition with ed4.6.1 language and package is accepted. >
+
+<COMPILE>
+
+<MODULE TTCN Syn_0801_DefinitionOfAModule_008 Syn_0801_DefinitionOfAModule_008.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.1, Ensure that a module definition with ed4.6.1 language and package is accepted.
+ ** @verdict pass accept, noexecution
+ *****************************************************************/
+
+module Syn_0801_DefinitionOfAModule_008 language "TTCN-3:2014" {
+
+}
+<END_MODULE>
+
+<RESULT IF_PASS NEGATIVE>
+error
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Syn_0801_DefinitionOfAModule_009 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that a module definition with ed4.7.1 language and package is accepted. >
+
+<COMPILE>
+
+<MODULE TTCN Syn_0801_DefinitionOfAModule_009 Syn_0801_DefinitionOfAModule_009.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:8.1, Ensure that a module definition with ed4.7.1 language and package is accepted.
+ ** @verdict pass accept, noexecution
+ *****************************************************************/
+
+module Syn_0801_DefinitionOfAModule_009 language "TTCN-3:2015" {
+
+}
+<END_MODULE>
+
+<RESULT IF_PASS NEGATIVE>
+error
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h1.References
+.*---------------------------------------------------------------------*
+:list.
+:li D='[1]'.1/1/174 02-CRL 113 200/5 Uen
+:nl.Statement of Compliance for TITAN project
+:li D='[2]'.ETSI ES 201 873-1, v4.7.1 Mockup v1 (2015-06):
+:nl.Testing and Test Control Notation version 3.,
+:nl.Part 1: TTCN-3 Core Language
+:elist.
--- /dev/null
+.******************************************************************************
+.* Copyright (c) 2000-2016 Ericsson Telecom AB
+.* All rights reserved. This program and the accompanying materials
+.* are made available under the terms of the Eclipse Public License v1.0
+.* which accompanies this distribution, and is available at
+.* http://www.eclipse.org/legal/epl-v10.html
+.*
+.* Contributors:
+.* Adrien Kirjak – initial implementation
+.*
+.******************************************************************************/
+text.
+:lang eng.
+.*
+:docname.Test Description
+:docno.xz/152 91-CRL 113 200 Uen
+:rev.PA1
+:date.2016-04-04
+.*
+:prep.ETH/XZ EADRKIR
+:subresp.EADRKIR
+:appr.ETH/XZ (Elemer Lelik)
+:checked.
+.*
+:title.ETSI TTCN3 Negative Conformance Test
+:contents level=3.
+.*---------------------------------------------------------------------*
+:h1.PREREQUISITES AND PREPARATIONS
+.*---------------------------------------------------------------------*
+.*---------------------------------------------------------------------*
+:h2.Scope of the Test Object
+.*---------------------------------------------------------------------*
+:xmp tab=1 nokeep.
+This TD contains negative tests from ETSI TTCN3 Conformance Test's 15_templates folder.
+
+:exmp.
+
+.*---------------------------------------------------------------------*
+:h2.Test Tools
+.*---------------------------------------------------------------------*
+:p.:us.Software Tools:eus.
+:xmp tab=2 nokeep.
+
+ SAtester.pl
+
+:exmp.
+:np.
+
+.*---------------------------------------------------------------------*
+:h1.REQUIREMENT-BASED TESTS
+.*---------------------------------------------------------------------*
+.*---------------------------------------------------------------------*
+:h2. 1503_global_and_local_templates folder
+.*---------------------------------------------------------------------*
+*---------------------------------------------------------------------*
+:h3. NegSem_1503_GlobalAndLocalTemplates_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that there's an error for re-assignment of a global non-parameterized template >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1503_GlobalAndLocalTemplates_001 NegSem_1503_GlobalAndLocalTemplates_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.3, Ensure that there's an error for re-assignment of a global non-parameterized template
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirement is tested:
+// Both global and local templates are initialized at the place of their
+// declaration. This means, all template fields which are not affected by
+// parameterization shall receive a value or matching mechanism. Template
+// fields affected by parameterization are initialized at the time of
+// template use.
+module NegSem_1503_GlobalAndLocalTemplates_001
+{
+ template integer t := ?;
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_1503_GlobalAndLocalTemplates_001() runs on GeneralComp {
+ t := 2; // error expected
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or template variable was expected instead of template `@NegSem_1503_GlobalAndLocalTemplates_001.t'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1503_GlobalAndLocalTemplates_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that there's an error for re-assignment of a global non-parameterized template >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1503_GlobalAndLocalTemplates_002 NegSem_1503_GlobalAndLocalTemplates_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.3, Ensure that there's an error for re-assignment of a global non-parameterized template
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirement is tested:
+// Both global and local templates are initialized at the place of their
+// declaration. This means, all template fields which are not affected by
+// parameterization shall receive a value or matching mechanism. Template
+// fields affected by parameterization are initialized at the time of
+// template use.
+module NegSem_1503_GlobalAndLocalTemplates_002
+{
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_1503_GlobalAndLocalTemplates_002() runs on GeneralComp {
+ template integer t := ?;
+ t := 2; // error expected
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or template variable was expected instead of template `t'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1503_GlobalAndLocalTemplates_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that there's an error for re-assignment of a global parameterized template >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1503_GlobalAndLocalTemplates_003 NegSem_1503_GlobalAndLocalTemplates_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.3, Ensure that there's an error for re-assignment of a global parameterized template
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirement is tested:
+// Both global and local templates are initialized at the place of their
+// declaration. This means, all template fields which are not affected by
+// parameterization shall receive a value or matching mechanism. Template
+// fields affected by parameterization are initialized at the time of
+// template use.
+module NegSem_1503_GlobalAndLocalTemplates_003
+{
+ template integer t(in integer p) := (0..p);
+ type component GeneralComp {
+ }
+ testcase TC_NegSem_1503_GlobalAndLocalTemplates_003() runs on GeneralComp {
+ t := 2; // error expected
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or template variable was expected instead of template `@NegSem_1503_GlobalAndLocalTemplates_003.t'
+<END_RESULT>
+<RESULT COUNT 1>
+error: Reference to parameterized definition `t' without actual parameter list
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1503_GlobalAndLocalTemplates_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that there's an error for re-assignment of a local parameterized template >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1503_GlobalAndLocalTemplates_004 NegSem_1503_GlobalAndLocalTemplates_004.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.3, Ensure that there's an error for re-assignment of a local parameterized template
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirement is tested:
+// Both global and local templates are initialized at the place of their
+// declaration. This means, all template fields which are not affected by
+// parameterization shall receive a value or matching mechanism. Template
+// fields affected by parameterization are initialized at the time of
+// template use.
+module NegSem_1503_GlobalAndLocalTemplates_004
+{
+ type component GeneralComp {
+ }
+ testcase TC_NegSem_1503_GlobalAndLocalTemplates_004() runs on GeneralComp {
+ template integer t(in integer p) := (0..p);
+ t := 2; // error expected
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a variable or template variable was expected instead of template `t'
+<END_RESULT>
+<RESULT COUNT 1>
+error: Reference to parameterized definition `t' without actual parameter list
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_1503_GlobalAndLocalTemplates_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that there's an error if no value is assigned in a global non-parameterized template declaration >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_1503_GlobalAndLocalTemplates_001 NegSyn_1503_GlobalAndLocalTemplates_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.3, Ensure that there's an error if no value is assigned in a global non-parameterized template declaration
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirement is tested:
+// Both global and local templates are initialized at the place of their
+// declaration. This means, all template fields which are not affected by
+// parameterization shall receive a value or matching mechanism. Template
+// fields affected by parameterization are initialized at the time of
+// template use.
+module NegSyn_1503_GlobalAndLocalTemplates_001
+{
+ template integer t;
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `;': syntax error, unexpected ';', expecting ModifiesKeyword or := or '\('
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_1503_GlobalAndLocalTemplates_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that there's an error if no value is assigned in a local non-parameterized template declaration >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_1503_GlobalAndLocalTemplates_002 NegSyn_1503_GlobalAndLocalTemplates_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.3, Ensure that there's an error if no value is assigned in a local non-parameterized template declaration
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirement is tested:
+// Both global and local templates are initialized at the place of their
+// declaration. This means, all template fields which are not affected by
+// parameterization shall receive a value or matching mechanism. Template
+// fields affected by parameterization are initialized at the time of
+// template use.
+module NegSyn_1503_GlobalAndLocalTemplates_002
+{
+ type component GeneralComp {
+ }
+ testcase TC_NegSyn_1503_GlobalAndLocalTemplates_002() runs on GeneralComp {
+ template integer t;
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `;': syntax error, unexpected ';', expecting ModifiesKeyword or := or '\('
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_1503_GlobalAndLocalTemplates_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that there's an error if no value is assigned in a global parameterized template declaration >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_1503_GlobalAndLocalTemplates_003 NegSyn_1503_GlobalAndLocalTemplates_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.3, Ensure that there's an error if no value is assigned in a global parameterized template declaration
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirement is tested:
+// Both global and local templates are initialized at the place of their
+// declaration. This means, all template fields which are not affected by
+// parameterization shall receive a value or matching mechanism. Template
+// fields affected by parameterization are initialized at the time of
+// template use.
+module NegSyn_1503_GlobalAndLocalTemplates_003
+{
+ template integer t(in integer p);
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `;': syntax error, unexpected ';', expecting :=
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_1503_GlobalAndLocalTemplates_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that there's an error if no value is assigned in a local parameterized template declaration >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_1503_GlobalAndLocalTemplates_004 NegSyn_1503_GlobalAndLocalTemplates_004.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.3, Ensure that there's an error if no value is assigned in a local parameterized template declaration
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirement is tested:
+// Both global and local templates are initialized at the place of their
+// declaration. This means, all template fields which are not affected by
+// parameterization shall receive a value or matching mechanism. Template
+// fields affected by parameterization are initialized at the time of
+// template use.
+module NegSyn_1503_GlobalAndLocalTemplates_004
+{
+ type component GeneralComp {
+ }
+ testcase TC_NegSyn_1503_GlobalAndLocalTemplates_004() runs on GeneralComp {
+ template integer t(in integer p);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `;': syntax error, unexpected ';', expecting :=
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h2. 1505_modified_templates folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1505_ModifiedTemplates_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that a modified template does not refer to itself. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1505_ModifiedTemplates_001 NegSem_1505_ModifiedTemplates_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.5, Ensure that a modified template does not refer to itself.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1505_ModifiedTemplates_001 {
+
+ type record of integer MyMessageType;
+
+ template MyMessageType m_myBaseTemplate := { 0, 1, 2, 3, 4 };
+
+ template MyMessageType m_myOtherTemplate modifies m_myOtherTemplate := {
+ [2]:=3, // switch the positions of 2 and 3
+ [3]:=2
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: While checking the chain of base templates: Circular reference: `@NegSem_1505_ModifiedTemplates_001.m_myOtherTemplate' -> `@NegSem_1505_ModifiedTemplates_001.m_myOtherTemplate'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1505_ModifiedTemplates_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that a modified template does not omit possible parameters of the base >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1505_ModifiedTemplates_002 NegSem_1505_ModifiedTemplates_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.5, Ensure that a modified template does not omit possible parameters of the base template.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1505_ModifiedTemplates_002 {
+
+ type record MyMessageType {
+ integer field1,
+ charstring field2,
+ boolean field3
+ }
+
+ template MyMessageType m_templateOne(integer p_value) := {
+ field1 := p_value,
+ field2 := "Hello World",
+ field3 := true
+ }
+
+ // illegal definition as the (integer p_value) formal parameter is missing and must
+ // not be omitted.
+ template MyMessageType m_templateTwo modifies m_templateOne := {
+ field3 := false
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The modified template has fewer formal parameters than base template `@NegSem_1505_ModifiedTemplates_002.m_templateOne': at least 1 parameter was expected instead of 0
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1505_ModifiedTemplates_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that a modified template does not omit possible parameters introduced in any modification step. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1505_ModifiedTemplates_003 NegSem_1505_ModifiedTemplates_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.5, Ensure that a modified template does not omit possible parameters introduced in any modification step.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1505_ModifiedTemplates_003 {
+
+ type record MyMessageType {
+ integer field1,
+ charstring field2,
+ boolean field3
+ }
+
+ template MyMessageType m_templateOne(integer p_intValue) := {
+ field1 := p_intValue,
+ field2 := "Hello World",
+ field3 := true
+ }
+
+ template MyMessageType m_templateTwo(integer p_intValue, boolean p_boolValue) modifies m_templateOne := {
+ field1 := p_intValue,
+ field3 := p_boolValue
+ }
+
+ // illegal as it is missing the (boolean p_boolValue) formal parameter introduced in the previous
+ // modification step.
+ template MyMessageType m_templateThree(integer p_intValue) modifies m_templateTwo := {
+ field2 := "foobar"
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The modified template has fewer formal parameters than base template `@NegSem_1505_ModifiedTemplates_003.m_templateTwo': at least 2 parameters were expected instead of 1
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1505_ModifiedTemplates_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that parameter names in modified templates are the same. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1505_ModifiedTemplates_004 NegSem_1505_ModifiedTemplates_004.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.5, Ensure that parameter names in modified templates are the same.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1505_ModifiedTemplates_004 {
+
+ type component GeneralComp { }
+
+ type record MyMessageType {
+ integer field1,
+ charstring field2,
+ boolean field3
+ }
+
+ template MyMessageType m_templateOne(integer p_value) := {
+ field1 := p_value,
+ field2 := "Hello World",
+ field3 := true
+ }
+
+ // illegal as p_intValue is a different parameter name than p_value
+ template MyMessageType m_templateTwo(integer p_intValue) modifies m_templateOne := {
+ field3 := false
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The name of parameter is not the same as in base template `@NegSem_1505_ModifiedTemplates_004.m_templateOne': `p_value' was expected instead of `p_intValue'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1505_ModifiedTemplates_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the dash in default parameter values of a modified templates is only accepted when the base template actually has a default value. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1505_ModifiedTemplates_005 NegSem_1505_ModifiedTemplates_005.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.5, Ensure that the dash in default parameter values of a modified templates is only accepted when the base template actually has a default value.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1505_ModifiedTemplates_005 {
+
+ type component GeneralComp { }
+
+ type record MyMessageType {
+ integer field1,
+ charstring field2,
+ boolean field3
+ }
+
+ template MyMessageType m_templateOne(integer p_intValue) := {
+ field1 := p_intValue,
+ field2 := "Hello World",
+ field3 := true
+ }
+
+ // illegal as p_intValue does not have a default value that can be referred to with the "-".
+ template MyMessageType m_templateTwo(integer p_intValue := -) modifies m_templateOne := {
+ field1 := p_intValue
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Not used symbol \(`-'\) doesn't have the corresponding default parameter in the base template
+<END_RESULT>
+<RESULT COUNT 1>
+error: integer value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1505_ModifiedTemplates_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the same parameter name is used when modifying the base template. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1505_ModifiedTemplates_006 NegSem_1505_ModifiedTemplates_006.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.5, Ensure that the same parameter name is used when modifying the base template.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1505_ModifiedTemplates_006 {
+
+ type component GeneralComp { }
+
+ type record MyMessageType {
+ integer field1,
+ charstring field2,
+ boolean field3
+ }
+
+ template MyMessageType m_templateOne(integer p_intValue) := {
+ field1 := p_intValue,
+ field2 := "Hello World",
+ field3 := true
+ }
+
+ // illegal as parameter name mismatch p_intValue defined in m_templateOne
+ template MyMessageType m_templateTwo(integer p_value := -) modifies m_templateOne := {
+ field1 := p_value
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The name of parameter is not the same as in base template `@NegSem_1505_ModifiedTemplates_006.m_templateOne': `p_intValue' was expected instead of `p_value'
+<END_RESULT>
+<RESULT COUNT 1>
+error: integer value was expected
+<END_RESULT>
+<RESULT COUNT 1>
+error: Not used symbol \(`-'\) doesn't have the corresponding default parameter in the base template
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1505_ModifiedTemplates_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the same parameter type is used when modifying the base template. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1505_ModifiedTemplates_007 NegSem_1505_ModifiedTemplates_007.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.5, Ensure that the same parameter type is used when modifying the base template.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1505_ModifiedTemplates_007 {
+
+ type component GeneralComp { }
+
+ type record MyMessageType {
+ integer field1,
+ charstring field2,
+ boolean field3
+ }
+
+ template MyMessageType m_templateOne(integer p_intValue) := {
+ field1 := p_intValue,
+ field2 := "Hello World",
+ field3 := true
+ }
+
+ // illegal as parameter type mismatch boolean defined in m_templateOne
+ template MyMessageType m_templateTwo(boolean p_intValue) modifies m_templateOne := {
+ field1 := 5
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The type of parameter is not the same as in base template `@NegSem_1505_ModifiedTemplates_007.m_templateOne': `integer' was expected instead of `boolean
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_1505_ModifiedTemplates_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the base template and modified template cannot be the same >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_1505_ModifiedTemplates_001 NegSyn_1505_ModifiedTemplates_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.5, Ensure that the base template and modified template cannot be the same
+ ** @verdict pass reject, noexecution
+ *****************************************************************/
+//Restriction a)
+/*A modified template shall not refer to itself, either directly or indirectly, i.e. recursive derivation is not
+allowed.*/
+
+module NegSyn_1505_ModifiedTemplates_001{
+
+ type component GeneralComp { }
+
+ type record MyMessageType {
+ integer field1,
+ charstring field2,
+ boolean field3
+ }
+
+ template MyMessageType m_templateOne(integer p_intValue) := {
+ field1 := p_intValue,
+ field2 := "Hello World",
+ field3 := true
+ }
+
+ template MyMessageType m_templateTwo(integer p_intValue) modifies m_templateOne := {
+ field1 := 5
+ }
+
+ //error: not allowed to modify itself
+ template MyMessageType m_templateTwo(integer p_intValue) modifies m_templateTwo := {
+ field1 := 10
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Duplicate definition with name `m_templateTwo'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h2. 1506_referencing_elements_of_templates_or_template_fields folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_150601_ReferencingIndividualStringElements_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the referencing of individual string elements inside templates or template fields is forbidden. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_150601_ReferencingIndividualStringElements_001 NegSem_150601_ReferencingIndividualStringElements_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.6.1, Ensure that the referencing of individual string elements inside templates or template fields is forbidden.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_150601_ReferencingIndividualStringElements_001 {
+
+ type component GeneralComp { }
+
+ testcase TC_NegSem_150601_ReferencingIndividualStringElements_001() runs on GeneralComp {
+ var template charstring m_char1 := "MYCHAR1";
+ var template charstring m_char2;
+
+ // illegal acchess. Instead, substr should be used.
+ m_char2 := m_char1[1];
+
+ if (valueof(m_char2) == "Y") {
+ setverdict(fail);
+ } else {
+ setverdict(pass);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_150601_ReferencingIndividualStringElements_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to template variable `m_char1' can not be indexed
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+
+*---------------------------------------------------------------------*
+:h3. NegSem_150602_ReferencingRecordAndSetFields_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that fields with omit values on the right-hand side of an assignment are rejected. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_150602_ReferencingRecordAndSetFields_001 NegSem_150602_ReferencingRecordAndSetFields_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.6.2, Ensure that fields with omit values on the right-hand side of an assignment are rejected.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_150602_ReferencingRecordAndSetFields_001 {
+
+ type component GeneralComp { }
+
+ type record MyRecordTwo {
+ integer g1,
+ MyRecordTwo g2 optional
+ }
+
+ type record MyRecordOne {
+ integer f1 optional,
+ MyRecordTwo f2 optional
+ }
+
+ testcase TC_NegSem_150602_ReferencingRecordAndSetFields_001() runs on GeneralComp {
+ var template MyRecordOne m_R1 := {
+ f1 := 5,
+ f2 := omit
+ }
+
+ // shall cause an error as omit is assigned to m_R1.f2
+ var template MyRecordTwo m_R2 := m_R1.f2.g2;
+ // if we get here, something must be wrong
+ setverdict(fail);
+ }
+
+ control{
+ execute(TC_NegSem_150602_ReferencingRecordAndSetFields_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Copying an uninitialized/unsupported template of type @NegSem_150602_ReferencingRecordAndSetFields_001.MyRecordTwo.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_150602_ReferencingRecordAndSetFields_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that fields with omit values on the right-hand side of an assignment are rejected. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_150602_ReferencingRecordAndSetFields_003 NegSem_150602_ReferencingRecordAndSetFields_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.6.2, Ensure that value lists on the right-hand side of an assignment are not acceped.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_150602_ReferencingRecordAndSetFields_003 {
+
+ type component GeneralComp { }
+
+ type record MyRecordTwo {
+ integer g1,
+ MyRecordTwo g2 optional
+ }
+
+ type record MyRecordOne {
+ integer f1 optional,
+ MyRecordTwo f2 optional
+ }
+
+ testcase TC_NegSem_150602_ReferencingRecordAndSetFields_003() runs on GeneralComp {
+ var template MyRecordOne m_R1 := (
+ {
+ f1 := omit,
+ f2 :=
+ {
+ g1 := 0,
+ g2 := omit
+ }
+ },
+ {
+ f1 := 5,
+ f2 :=
+ {
+ g1 := 1,
+ g2 :=
+ {
+ g1 := 2,
+ g2 := omit
+ }
+ }
+ }
+ );
+
+ // shall cause an error as value list is assigned to m_R1
+ var template MyRecordTwo m_R2 := m_R1.f2;
+ m_R2 := m_R1.f2.g2;
+ m_R2 := m_R1.f2.g2.g2;
+ // if we get here, something must be wrong
+ setverdict(fail);
+ }
+
+ control{
+ execute(TC_NegSem_150602_ReferencingRecordAndSetFields_003());
+ }
+
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Copying an uninitialized/unsupported template of type @NegSem_150602_ReferencingRecordAndSetFields_003.MyRecordTwo.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_150602_ReferencingRecordAndSetFields_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that complement lists on the right-hand side of an assignment are not acceped. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_150602_ReferencingRecordAndSetFields_004 NegSem_150602_ReferencingRecordAndSetFields_004.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.6.2, Ensure that complement lists on the right-hand side of an assignment are not acceped.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_150602_ReferencingRecordAndSetFields_004 {
+
+ type component GeneralComp { }
+
+ type record MyRecordTwo {
+ integer g1,
+ MyRecordTwo g2 optional
+ }
+
+ type record MyRecordOne {
+ integer f1 optional,
+ MyRecordTwo f2 optional
+ }
+
+ testcase TC_NegSem_150602_ReferencingRecordAndSetFields_004() runs on GeneralComp {
+ var template MyRecordOne m_R1 := complement(
+ {
+ f1 := omit,
+ f2 :=
+ {
+ g1 := 0,
+ g2 := omit
+ }
+ },
+ {
+ f1 := 5,
+ f2 :=
+ {
+ g1 := 1,
+ g2 :=
+ {
+ g1 := 2,
+ g2 := omit
+ }
+ }
+ }
+ );
+
+ // shall cause an error as a complement list is assigned to m_R1
+ var template MyRecordTwo m_R2 := m_R1.f2;
+ m_R2 := m_R1.f2.g2;
+ m_R2 := m_R1.f2.g2.g2;
+ // if we get here, something must be wrong
+ setverdict(fail);
+ }
+
+ control{
+ execute(TC_NegSem_150602_ReferencingRecordAndSetFields_004());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Copying an uninitialized/unsupported template of type @NegSem_150602_ReferencingRecordAndSetFields_004.MyRecordTwo.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_150602_ReferencingRecordAndSetFields_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that referencing a template field with the ifpresent attribute causes a rejection. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_150602_ReferencingRecordAndSetFields_005 NegSem_150602_ReferencingRecordAndSetFields_005.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.6.2, Ensure that referencing a template field with the ifpresent attribute causes a rejection.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_150602_ReferencingRecordAndSetFields_005 {
+
+ type component GeneralComp { }
+
+ type record MyRecordOne {
+ MyRecordOne f1 optional
+ }
+
+ testcase TC_NegSem_150602_ReferencingRecordAndSetFields_005() runs on GeneralComp {
+ var template MyRecordOne m_R1 := {
+ f1 := * ifpresent
+ }
+ var template MyRecordOne m_R2 := {
+ f1 := m_R1.f1.f1 // access to a field with ifpresent shall cause an error!
+ }
+ setverdict(fail);
+ }
+
+ control{
+ execute(TC_NegSem_150602_ReferencingRecordAndSetFields_005());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Accessing field f1 of a non-specific template of type @NegSem_150602_ReferencingRecordAndSetFields_005.MyRecordOne.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_150602_ReferencingRecordAndSetFields_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that referencing a field of an address type, which actual value is null shall cause rejection. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_150602_ReferencingRecordAndSetFields_006 NegSem_150602_ReferencingRecordAndSetFields_006.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.6.2, Ensure that referencing a field of an address type, which actual value is null shall cause rejection.
+ ** @verdict pass reject
+ *****************************************************************/
+
+//Restriction d)
+/*Special value null: referencing a field of an address type, which actual value is null shall cause an error.*/
+
+module NegSem_150602_ReferencingRecordAndSetFields_006 {
+
+ type component GeneralComp { }
+
+ type integer address;
+
+ type record MyRecordOne {
+ address f1
+ }
+
+ testcase TC_NegSem_150602_ReferencingRecordAndSetFields_006() runs on GeneralComp {
+ var template MyRecordOne m_R1 := {
+ f1 := null
+ }
+ var template MyRecordOne m_R2 := {
+ f1 := m_R1.f1 // access to a field with null shall cause an error!
+ }
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_150602_ReferencingRecordAndSetFields_006());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: integer value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_150602_ReferencingRecordAndSetFields_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that referencing an element within a value list causes an error in the context of record of. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_150603_ReferencingRecordOfAndSetElements_001 NegSem_150603_ReferencingRecordOfAndSetElements_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.6.3, Ensure that referencing an element within a value list causes an error in the context of record of.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_150603_ReferencingRecordOfAndSetElements_001 {
+
+ type component GeneralComp { }
+
+ type record of integer RoI;
+ type record of RoI RoRoI;
+
+ testcase TC_NegSem_150603_ReferencingRecordOfAndSetElements_001() runs on GeneralComp {
+ var template RoI m_one;
+ var template RoRoI m_two;
+ template RoRoI constraint_value := {{},{0},{0,0},{0,0,0}};
+
+ m_two := ( constraint_value, constraint_value ); // value list
+ m_one := m_two[0]; // shall cause an error as we access a value list
+
+ setverdict(fail);
+ }
+
+ control{
+ execute(TC_NegSem_150603_ReferencingRecordOfAndSetElements_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Accessing an element of a non-specific template for type @NegSem_150603_ReferencingRecordOfAndSetElements_001.RoRoI.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_150602_ReferencingRecordAndSetFields_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that access to unitialized fields in the context of record of is rejected. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_150603_ReferencingRecordOfAndSetElements_002 NegSem_150603_ReferencingRecordOfAndSetElements_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.6.3, Ensure that access to unitialized fields in the context of record of is rejected.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_150603_ReferencingRecordOfAndSetElements_002 {
+
+ type component GeneralComp { }
+
+ type record of integer RoI;
+
+ testcase TC_NegSem_150603_ReferencingRecordOfAndSetElements_002() runs on GeneralComp {
+ var template RoI m_one;
+ var integer v_test;
+
+ m_one[0] := 0;
+ m_one[2] := 1;
+ v_test := valueof(m_one[1]); // shall cause an error as element one is an unitialized field
+
+ setverdict(fail);
+ }
+
+ control{
+ execute(TC_NegSem_150603_ReferencingRecordOfAndSetElements_002());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Performing a valueof or send operation on a non-specific integer template.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_150602_ReferencingRecordAndSetFields_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that anyvalueornone fields in the context of record of is rejected. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_150603_ReferencingRecordOfAndSetElements_003 NegSem_150603_ReferencingRecordOfAndSetElements_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.6.3, Ensure that anyvalueornone fields in the context of record of is rejected.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_150603_ReferencingRecordOfAndSetElements_003 {
+
+ type component GeneralComp { }
+
+ type record of integer RoI;
+
+ testcase TC_NegSem_150603_ReferencingRecordOfAndSetElements_003() runs on GeneralComp {
+ var template RoI m_one;
+ var integer v_test;
+
+ m_one := {0,*,1,2};
+ v_test := valueof(m_one[1]); // shall cause an error as element one is an "any value or none" field
+
+ setverdict(fail);
+ }
+
+ control{
+ execute(TC_NegSem_150603_ReferencingRecordOfAndSetElements_003());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Performing a valueof or send operation on a non-specific integer template.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_150602_ReferencingRecordAndSetFields_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that complement value lists in the context of record of are rejected. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_150603_ReferencingRecordOfAndSetElements_004 NegSem_150603_ReferencingRecordOfAndSetElements_004.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.6.3, Ensure that complement value lists in the context of record of are rejected.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_150603_ReferencingRecordOfAndSetElements_004 {
+
+ type component GeneralComp { }
+
+ type record of integer RoI;
+
+ testcase TC_NegSem_150603_ReferencingRecordOfAndSetElements_004() runs on GeneralComp {
+ var template RoI m_one;
+ var integer v_test;
+
+ m_one := {0,complement(1,3,5),1,2};
+ v_test := valueof(m_one[1]); // shall cause an error as element one is a complement list
+
+ setverdict(fail);
+ }
+
+ control{
+ execute(TC_NegSem_150603_ReferencingRecordOfAndSetElements_004());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Performing a valueof or send operation on a non-specific integer template.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_150602_ReferencingRecordAndSetFields_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that subset in the context of record of are rejected. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_150603_ReferencingRecordOfAndSetElements_005 NegSem_150603_ReferencingRecordOfAndSetElements_005.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.6.3, Ensure that subset in the context of record of are rejected.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_150603_ReferencingRecordOfAndSetElements_005 {
+
+ type component GeneralComp { }
+
+ //type record of integer RoI;
+
+ type set of integer SoI;
+ type record of SoI RoS;
+
+ testcase TC_NegSem_150603_ReferencingRecordOfAndSetElements_005() runs on GeneralComp {
+ //var template RoI m_one;
+ var template RoS m_one;
+
+ //var integer v_test;
+ var SoI v_test;
+
+ //m_one := {0,subset(1,3,5),1,2};
+ m_one := {{0},subset(1,3,5), {1,2}};
+
+ v_test := valueof(m_one[1]); // shall cause an error as element one is a subset
+
+ setverdict(fail);
+ }
+
+ control{
+ execute(TC_NegSem_150603_ReferencingRecordOfAndSetElements_005());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Performing a valueof or send operation on a non-specific template of type @PreGenRecordOf.PREGEN_SET_OF_INTEGER.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_150602_ReferencingRecordAndSetFields_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that superset in the context of record of are rejected. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_150603_ReferencingRecordOfAndSetElements_006 NegSem_150603_ReferencingRecordOfAndSetElements_006.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.6.3, Ensure that superset in the context of record of are rejected.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_150603_ReferencingRecordOfAndSetElements_006 {
+
+ type component GeneralComp { }
+
+ //type record of integer RoI;
+ type set of integer SoI;
+ type record of SoI RoS;
+
+ testcase TC_NegSem_150603_ReferencingRecordOfAndSetElements_006() runs on GeneralComp {
+ //var template RoI m_one;
+ var template RoS m_one;
+
+ //var integer v_test;
+ var SoI v_test;
+
+ //m_one := {0,superset(1,3,5),1,2};
+ m_one := {{0},subset(1,3,5), {1,2}};
+ v_test := valueof(m_one[1]); // shall cause an error as element one is a superset
+
+ setverdict(fail);
+ }
+
+ control{
+ execute(TC_NegSem_150603_ReferencingRecordOfAndSetElements_006());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Performing a valueof or send operation on a non-specific template of type @PreGenRecordOf.PREGEN_SET_OF_INTEGER.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_150602_ReferencingRecordAndSetFields_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that access to record of indexes is forbidden when a previous index entry is a permutation with a *. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_150603_ReferencingRecordOfAndSetElements_008 NegSem_150603_ReferencingRecordOfAndSetElements_008.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.6.3, Ensure that access to record of indexes is forbidden when a previous index entry is a permutation with a *.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_150603_ReferencingRecordOfAndSetElements_008 {
+
+ type component GeneralComp { }
+
+ type record of integer RoI;
+
+ testcase TC_NegSem_150603_ReferencingRecordOfAndSetElements_008() runs on GeneralComp {
+ var template RoI m_one;
+ var integer v_test;
+
+ m_one := {permutation(0,1,3,*),2,?};
+ v_test := valueof(m_one[5]); // shall cause an error as the permutation contains a * that is able to cover any record of indexes
+
+ setverdict(fail);
+ }
+
+ control{
+ execute(TC_NegSem_150603_ReferencingRecordOfAndSetElements_008());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Performing a valueof or send operation on a non-specific integer template.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_150602_ReferencingRecordAndSetFields_009 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that access to ifpresent fields is not allowed. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_150603_ReferencingRecordOfAndSetElements_009 NegSem_150603_ReferencingRecordOfAndSetElements_009.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.6.3, Ensure that access to ifpresent fields is not allowed.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_150603_ReferencingRecordOfAndSetElements_009 {
+
+ type component GeneralComp { }
+
+ template integer If := 1 ifpresent; // simple integer can't have ifpresent attribute
+
+ type record of integer RoI;
+
+ testcase TC_NegSem_150603_ReferencingRecordOfAndSetElements_009() runs on GeneralComp {
+ var template RoI m_one;
+ var integer v_test;
+
+ m_one := {If,2,?};
+ v_test := valueof(m_one[0]); // shall cause an error due to the presence of ifpresent
+
+ setverdict(fail);
+ }
+
+ control{
+ execute(TC_NegSem_150603_ReferencingRecordOfAndSetElements_009());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Performing a valueof or send operation on a non-specific integer template.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_150602_ReferencingRecordAndSetFields_010 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that referencing AnyValueOrNone fields is not allowed. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_150603_ReferencingRecordOfAndSetElements_010 NegSem_150603_ReferencingRecordOfAndSetElements_010.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.6.3, Ensure that referencing AnyValueOrNone fields is not allowed.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_150603_ReferencingRecordOfAndSetElements_010 {
+
+ type component GeneralComp { }
+
+ type record of integer RoI;
+
+ testcase TC_NegSem_150603_ReferencingRecordOfAndSetElements_010() runs on GeneralComp {
+ var template RoI m_one;
+
+ m_one := ?;
+ m_one[2] := 2;
+ // assignment should yield {?,?,2,*}
+
+ if (not match(5,m_one[0])) {
+ setverdict(fail);
+ }
+ if (not match(5,m_one[1])) {
+ setverdict(fail);
+ }
+ if (not match(2,m_one[2])) {
+ setverdict(fail);
+ }
+ if (not match(5,m_one[3])) { // shall cause an error due to the presence of AnyValueOrNone
+ setverdict(fail);
+ }
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_150603_ReferencingRecordOfAndSetElements_010());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Matching with an uninitialized/unsupported integer template
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_150602_ReferencingRecordAndSetFields_011 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that referencing uninitialized fields is not allowed. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_150603_ReferencingRecordOfAndSetElements_011 NegSem_150603_ReferencingRecordOfAndSetElements_011.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.6.3, Ensure that referencing uninitialized fields is not allowed.
+ ** @verdict pass reject
+ *****************************************************************/
+
+ //Restriction a) Omit: referencing an element within a record of, set of or array field to which omit is assigned shall follow the rules specified in clause 6.2.3.
+
+ /*Clause 6.2.3: If the value of the element indicated by the index at the right-hand of an assignment is undefined (uninitialized), this
+shall cause a semantic or runtime error. Referencing an identified element of an uninitialized or omitted record of or set
+of field or value on the right hand side of an assignment shall cause an error.*/
+
+
+module NegSem_150603_ReferencingRecordOfAndSetElements_011 {
+
+ type component GeneralComp { }
+
+ type record of integer RoI;
+
+ testcase TC_NegSem_150603_ReferencingRecordOfAndSetElements_011() runs on GeneralComp {
+
+ var template RoI m_one;
+ var template RoI m_two;
+
+ m_one := {1,-}; // {1,-}
+ m_two := {m_one[1],4}; // {-,4} error not allowed referencing
+
+ if (not isvalue(m_two)) {
+ setverdict(pass);
+ }
+
+ }
+
+ control{
+ execute(TC_NegSem_150603_ReferencingRecordOfAndSetElements_011());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Copying an uninitialized/unsupported integer template.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_150602_ReferencingRecordAndSetFields_012 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that referencing uninitialized fields is not allowed. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_150603_ReferencingRecordOfAndSetElements_012 NegSem_150603_ReferencingRecordOfAndSetElements_012.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.6.3, Ensure that referencing uninitialized fields is not allowed.
+ ** @verdict pass reject
+ *****************************************************************/
+
+//Restriction a) Omit: referencing an element within a record of, set of or array field to which omit is assigned shall follow the rules specified in clause 6.2.3.
+
+/*Clause 6.2.3: If the value of the element indicated by the index at the right-hand of an assignment is undefined (uninitialized), this
+shall cause a semantic or runtime error. Referencing an identified element of an uninitialized or omitted record of or set
+of field or value on the right hand side of an assignment shall cause an error.*/
+
+
+module NegSem_150603_ReferencingRecordOfAndSetElements_012{
+
+ type component GeneralComp { }
+
+ type set of integer SoI;
+
+ testcase TC_NegSem_150603_ReferencingRecordOfAndSetElements_012() runs on GeneralComp {
+
+ var template SoI m_one;
+ var template SoI m_two;
+
+ m_one := {1,-}; // {1,-}
+ m_two := {m_one[1],2}; // {-,2} error not allowed referencing
+
+ if (not isvalue(m_two)) {
+ setverdict(pass);
+ }
+
+ }
+
+ control{
+ execute(TC_NegSem_150603_ReferencingRecordOfAndSetElements_012());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Copying an uninitialized/unsupported integer template.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_150602_ReferencingRecordAndSetFields_013 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that referencing uninitialized fields is not allowed. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_150603_ReferencingRecordOfAndSetElements_013 NegSem_150603_ReferencingRecordOfAndSetElements_013.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.6.3, Ensure that referencing uninitialized fields is not allowed.
+ ** @verdict pass reject
+ *****************************************************************/
+
+//Restriction a) Omit: referencing an element within a record of, set of or array field to which omit is assigned shall follow the rules specified in clause 6.2.3.
+
+/*Clause 6.2.3: If the value of the element indicated by the index at the right-hand of an assignment is undefined (uninitialized), this
+shall cause a semantic or runtime error. Referencing an identified element of an uninitialized or omitted record of or set
+of field or value on the right hand side of an assignment shall cause an error.*/
+
+
+module NegSem_150603_ReferencingRecordOfAndSetElements_013{
+
+ type component GeneralComp { }
+
+
+ testcase TC_NegSem_150603_ReferencingRecordOfAndSetElements_013() runs on GeneralComp {
+
+ var integer m_one[2];
+ var integer m_two[2];
+
+ m_one := {1,-}; // {1,-}
+ m_two := {m_one[1],2}; // {-,2} error not allowed referencing
+
+ if (not isvalue(m_two)) {
+ setverdict(pass);
+ }
+
+ }
+
+ control{
+ execute(TC_NegSem_150603_ReferencingRecordOfAndSetElements_013());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Assignment of an unbound integer value.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_150602_ReferencingRecordAndSetFields_014 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that referencing an element within a value list causes an error in the context of set of. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_150603_ReferencingRecordOfAndSetElements_014 NegSem_150603_ReferencingRecordOfAndSetElements_014.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.6.3, Ensure that referencing an element within a value list causes an error in the context of set of.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_150603_ReferencingRecordOfAndSetElements_014 {
+
+ type component GeneralComp { }
+
+ type set of integer SoI;
+ type set of SoI SoSoI;
+
+ testcase TC_NegSem_150603_ReferencingRecordOfAndSetElements_014() runs on GeneralComp {
+ var template SoI m_one;
+ var template SoSoI m_two;
+ template SoSoI constraint_value := {{},{0},{0,0},{0,0,0}};
+
+ m_two := ( constraint_value, constraint_value ); // value list
+ m_one := m_two[0]; // shall cause an error as we access a value list
+
+ setverdict(fail);
+ }
+
+ control{
+ execute(TC_NegSem_150603_ReferencingRecordOfAndSetElements_014());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Accessing an element of a non-specific template for type @NegSem_150603_ReferencingRecordOfAndSetElements_014.SoSoI.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_150602_ReferencingRecordAndSetFields_015 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that referencing an element of an address type, which actual value is null shall cause an error. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_150603_ReferencingRecordOfAndSetElements_015 NegSem_150603_ReferencingRecordOfAndSetElements_015.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.6.3, Ensure that referencing an element of an address type, which actual value is null shall cause an error.
+ ** @verdict pass reject
+ *****************************************************************/
+
+ //Restriction h)
+/*Special value null: referencing an element of an address type, which actual value is null shall cause an error.*/
+
+module NegSem_150603_ReferencingRecordOfAndSetElements_015 {
+
+ type component GeneralComp { }
+
+ type set of integer RoI;
+ type integer address;
+
+ testcase TC_NegSem_150603_ReferencingRecordOfAndSetElements_015() runs on GeneralComp {
+ var address v_add := null;
+ var template RoI m_one;
+
+
+ m_one := {v_add, 1}; // // shall cause an error as we access a value list
+
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_150603_ReferencingRecordOfAndSetElements_015());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: integer value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_150605_Referencing_union_alternatives_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template variables does not allow referencing alternatives inside an union with omit >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_150605_Referencing_union_alternatives_001 NegSem_150605_Referencing_union_alternatives_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.6.5, Ensure that template variables does not allow referencing alternatives inside an union with omit
+ ** @verdict pass reject
+ *****************************************************************/
+
+ //Restriction a)
+ /*referencing an alternative of a union template or template field to which Omit, AnyValueOrNone,
+ * a template list or a complemented list is assigned, at the right hand side of an assignment, shall cause an error.*/
+
+
+
+module NegSem_150605_Referencing_union_alternatives_001 {
+
+ type union My_Union {
+ integer u1,
+ float u2
+ }
+
+ type record ExampleType { // Exampletype record with union
+ integer a,
+ My_Union b optional
+ }
+
+
+ type component GeneralComp { }
+
+
+ testcase TC_NegSem_150605_Referencing_union_alternatives_001() runs on GeneralComp {
+
+ var template ExampleType m_template;
+ var template integer m_template_2;
+
+ //assign values to template:
+
+ m_template.a:=10;
+ m_template.b:= omit;
+
+ m_template_2 := m_template.b.u1; //error: omit
+
+ setverdict(pass);
+
+ }
+
+ control{
+ execute(TC_NegSem_150605_Referencing_union_alternatives_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Accessing field u1 in a non-specific template of union type @NegSem_150605_Referencing_union_alternatives_001.My_Union
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_150605_Referencing_union_alternatives_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template variables does not allow referencing alternatives inside an union with AnyValueOrNone >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_150605_Referencing_union_alternatives_002 NegSem_150605_Referencing_union_alternatives_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.6.5, Ensure that template variables does not allow referencing alternatives inside an union with AnyValueOrNone
+ ** @verdict pass reject
+ *****************************************************************/
+//Restriction a)
+/*referencing an alternative of a union template
+or template field to which Omit, AnyValueOrNone, a template list or a complemented list is assigned, at the right hand side of an assignment, shall cause an error.*/
+
+
+module NegSem_150605_Referencing_union_alternatives_002 {
+
+ type union My_Union {
+ integer u1,
+ float u2
+ }
+
+ type record ExampleType { // Exampletype record with union
+ integer a,
+ My_Union b optional
+ }
+
+ type component GeneralComp { }
+
+
+ testcase TC_NegSem_150605_Referencing_union_alternatives_002() runs on GeneralComp {
+
+ var template ExampleType m_template;
+ var template integer m_template_2;
+
+ //assign values to template:
+
+ m_template.a:=10;
+ m_template.b:= *;
+
+ m_template_2 := m_template.b.u1; //error: AnyValueOrNone
+
+ setverdict(pass);
+
+ }
+
+ control{
+ execute(TC_NegSem_150605_Referencing_union_alternatives_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Accessing field u1 in a non-specific template of union type @NegSem_150605_Referencing_union_alternatives_002.My_Union.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h2. 1508_template_restrictions folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(omit) is rejected with anyvalue(?). >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_001 NegSem_1508_TemplateRestrictions_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(omit) is rejected with anyvalue(?).
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_001 {
+
+ type record ExampleType {
+ integer a,
+ boolean b optional
+ }
+
+ template(omit) ExampleType exampleOmitAny := ?;
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of any value
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(omit) is rejected with setof template. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_002 NegSem_1508_TemplateRestrictions_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(omit) is rejected with setof template.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_002 {
+
+ type record ExampleType {
+ integer a,
+ boolean b optional
+ }
+
+ template(omit) ExampleType exampleOmitAny := ({1,true},{2,false});
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of value list match
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(omit) is rejected with anyvalueornone(*). >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_003 NegSem_1508_TemplateRestrictions_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(omit) is rejected with anyvalueornone(*).
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_003 {
+
+ type record ExampleType {
+ integer a,
+ boolean b optional
+ }
+
+ template(omit) ExampleType exampleOmitAny := *;
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of any or omit
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(omit) is rejected with value ranges. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_004 NegSem_1508_TemplateRestrictions_004.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(omit) is rejected with value ranges.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_004 {
+
+ type record ExampleType {
+ integer a,
+ boolean b optional
+ }
+
+ template(omit) ExampleType exampleOmitAny := {(1..6), true};
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of value range match
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(omit) is rejected with supersets. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_005 NegSem_1508_TemplateRestrictions_005.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(omit) is rejected with supersets.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_005 {
+
+ type record ExampleType {
+ set of integer a,
+ boolean b optional
+ }
+
+ template(omit) ExampleType exampleOmitAny := {superset(1,2,3), true};
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of superset match
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(omit) is rejected with supersets. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_006 NegSem_1508_TemplateRestrictions_006.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(omit) is rejected with subsets.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_006 {
+
+ type record ExampleType {
+ set of integer a,
+ boolean b optional
+ }
+
+ template(omit) ExampleType exampleOmitAny := {subset(1,2,3), true};
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of subset match
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(omit) is rejected with patterns. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_007 NegSem_1508_TemplateRestrictions_007.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(omit) is rejected with patterns.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_007 {
+
+ type record ExampleType {
+ integer a,
+ charstring b
+ }
+
+ template(omit) ExampleType exampleOmitAny := {1, pattern "ab*c"};
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of character string pattern
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(omit) is rejected with anyelement inside values. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_008 NegSem_1508_TemplateRestrictions_008.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(omit) is rejected with anyelement inside values.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_008 {
+
+ type record ExampleType {
+ integer a,
+ charstring b
+ }
+
+ template(omit) ExampleType exampleOmitAny := {2, ?};
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of any value
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_009 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(omit) is rejected with anyelementornone inside values. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_009 NegSem_1508_TemplateRestrictions_009.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(omit) is rejected with anyelementornone inside values.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_009 {
+
+ type record ExampleType {
+ integer a,
+ charstring b
+ }
+
+ template(omit) ExampleType exampleOmitAny := {2, *};
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of any or omit
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_010 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(omit) is rejected with permutation inside values. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_010 NegSem_1508_TemplateRestrictions_010.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(omit) is rejected with permutation inside values.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_010 {
+
+ type record ExampleType {
+ set of integer a,
+ charstring b
+ }
+
+ template(omit) ExampleType exampleOmitAny := {permutation(2,4,6),"abcde"};
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of permutation match
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_011 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(omit) is rejected with length restrictions. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_011 NegSem_1508_TemplateRestrictions_011.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(omit) is rejected with length restrictions.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_011 {
+
+ type record ExampleType {
+ charstring b
+ }
+
+ template(omit) ExampleType exampleOmitAny := {"abcde" length(1..3)};
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of length restriction
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_012 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(omit) is rejected with length restrictions. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_012 NegSem_1508_TemplateRestrictions_012.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(omit) is rejected with length restrictions.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_012 {
+
+ type record ExampleType {
+ charstring b
+ }
+
+ template(omit) ExampleType exampleOmitAny := {"abcde" ifpresent};
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of `ifpresent'
+<END_RESULT>
+<RESULT COUNT 1>
+error: `ifpresent' is not allowed here
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_013 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(omit) is rejected with length restrictions. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_013 NegSem_1508_TemplateRestrictions_013.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(omit) is rejected with length restrictions.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_013 {
+
+ type record ExampleType {
+ integer f1
+ }
+
+ template(omit) ExampleType exampleOmitAny := {complement(2,3)};
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of complemented list match
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_014 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(value) is rejected with anyvalue(?). >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_014 NegSem_1508_TemplateRestrictions_014.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(value) is rejected with anyvalue(?).
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_014 {
+
+ type record ExampleType {
+ integer a,
+ boolean b optional
+ }
+
+ template(value) ExampleType exampleOmitAny := ?;
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of any value
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_015 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(value) is rejected with valuelist. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_015 NegSem_1508_TemplateRestrictions_015.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(value) is rejected with valuelist.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_015 {
+
+ type record ExampleType {
+ integer a,
+ boolean b optional
+ }
+
+ template(value) ExampleType exampleOmitAny := ({1,true},{2,false});
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of value list match
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_016 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(value) is rejected with anyvalueornone(*). >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_016 NegSem_1508_TemplateRestrictions_016.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(value) is rejected with anyvalueornone(*).
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_016 {
+
+ type record ExampleType {
+ integer a,
+ boolean b optional
+ }
+
+ template(value) ExampleType exampleOmitAny := *;
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of any or omit
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_017 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(value) is rejected with value ranges. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_017 NegSem_1508_TemplateRestrictions_017.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(value) is rejected with value ranges.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_017 {
+
+ type record ExampleType {
+ integer a,
+ boolean b optional
+ }
+
+ template(value) ExampleType exampleOmitAny := {(1..6), true};
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of value range match
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_018 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(value) is rejected with supersets. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_018 NegSem_1508_TemplateRestrictions_018.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(value) is rejected with supersets.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_018 {
+
+ type record ExampleType {
+ set of integer a,
+ boolean b optional
+ }
+
+ template(value) ExampleType exampleOmitAny := {superset(1,2,3), true};
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of superset match
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_019 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(value) is rejected with supersets. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_019 NegSem_1508_TemplateRestrictions_019.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(value) is rejected with supersets.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_019 {
+
+ type record ExampleType {
+ set of integer a,
+ boolean b optional
+ }
+
+ template(value) ExampleType exampleOmitAny := {subset(1,2,3), true};
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of subset match
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_020 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(value) is rejected with patterns. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_020 NegSem_1508_TemplateRestrictions_020.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(value) is rejected with patterns.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_020 {
+
+ type record ExampleType {
+ integer a,
+ charstring b
+ }
+
+ template(value) ExampleType exampleOmitAny := {1, pattern "ab*c"};
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of character string pattern
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_021 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(value) is rejected with anyelement inside values. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_021 NegSem_1508_TemplateRestrictions_021.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(value) is rejected with anyelement inside values.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_021 {
+
+ type record ExampleType {
+ integer a,
+ charstring b
+ }
+
+ template(value) ExampleType exampleOmitAny := {2, ?};
+
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of any value
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_022 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(value) is rejected with permutation inside values. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_022 NegSem_1508_TemplateRestrictions_022.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(value) is rejected with permutation inside values.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_022 {
+
+ type record ExampleType {
+ set of integer a,
+ charstring b
+ }
+
+ template(value) ExampleType exampleOmitAny := {permutation(2,4,6),"abcde"};
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of permutation match
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_023 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(value) is rejected with length restrictions. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_023 NegSem_1508_TemplateRestrictions_023.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(value) is rejected with length restrictions.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_023 {
+
+ type record ExampleType {
+ charstring b
+ }
+
+ template(value) ExampleType exampleOmitAny := {"abcde" length(1..3)};
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of length restriction
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_024 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(value) is rejected with length restrictions. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_024 NegSem_1508_TemplateRestrictions_024.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(value) is rejected with length restrictions.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_024 {
+
+ type record ExampleType {
+ charstring b
+ }
+
+ template(value) ExampleType exampleOmitAny := {"abcde" ifpresent};
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of `ifpresent'
+<END_RESULT>
+<RESULT COUNT 1>
+error: `ifpresent' is not allowed here
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_025 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(value) is rejected with length restrictions. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_025 NegSem_1508_TemplateRestrictions_025.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(present) refuses omitvalue as a whole.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_025 {
+
+ type record ExampleType {
+ integer a,
+ boolean b optional
+ }
+
+ template(present) ExampleType exampleOmit := omit;
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of omit value
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_026 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(value) refuses omit as a whole. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_026 NegSem_1508_TemplateRestrictions_026.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(value) refuses omit as a whole.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1508_TemplateRestrictions_026 {
+
+ type record ExampleType {
+ integer a,
+ boolean b optional
+ }
+
+ template(value) ExampleType exampleOmit := omit;
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template definition does not allow usage of omit value
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_029 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the template(present) with anyvalue(?) can't be assigned to an omit restricted variable template >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_029 NegSem_1508_TemplateRestrictions_029.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that the template(present) with anyvalue(?) can't be assigned to an omit restricted variable template
+ ** @verdict pass reject
+ *****************************************************************/
+
+
+module NegSem_1508_TemplateRestrictions_029 {
+
+ type record ExampleType { // Exampletype record contains a charstring and a boolean
+ charstring a,
+ boolean b
+ }
+
+ type component GeneralComp {
+ var template (omit) ExampleType v_omit; //omit restricted template variable
+ }
+
+ template (present) ExampleType MyintTemplate :={
+ //actual template with present restriction contains anytype (?)
+ a := ?,
+ b := false
+ }
+
+ testcase TC_NegSem_1508_TemplateRestrictions_029() runs on GeneralComp {
+
+ v_omit := MyintTemplate; //error: v_omit is omit restricted, hence can not contain anytype(?)
+
+ if (valueof(v_omit.b) == false) {
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_1508_TemplateRestrictions_029());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template does not allow usage of any value
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_030 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that unrestricted template with anyvalue(?) can't be assigned to an omit restricted variable template >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_030 NegSem_1508_TemplateRestrictions_030.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that unrestricted template with anyvalue(?) can't be assigned to an omit restricted variable template
+ ** @verdict pass reject
+ *****************************************************************/
+
+
+module NegSem_1508_TemplateRestrictions_030 {
+
+ type record ExampleType { // Exampletype record contains a charstring and a boolean
+ charstring a optional,
+ boolean b
+ }
+
+ type component GeneralComp {
+ var template (omit) ExampleType v_omit; //omit restricted template variable
+ }
+
+
+ template ExampleType MyintTemplate :={ //actual template without restriction contains anyvalue (?)
+ a := ?,
+ b := false
+ }
+
+
+ testcase TC_NegSem_1508_TemplateRestrictions_030() runs on GeneralComp {
+
+ v_omit := MyintTemplate; //error: v_omit is omit restricted, hence can not contain anyvalue(?)
+
+ if (valueof(v_omit.b) == false) {
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_1508_TemplateRestrictions_030());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template does not allow usage of any value
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_031 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(omit) can't be assigned to a variable template(value) if omit >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_031 NegSem_1508_TemplateRestrictions_031.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(omit) can't be assigned to a variable template(value) if omit
+ ** @verdict pass reject
+ *****************************************************************/
+
+
+module NegSem_1508_TemplateRestrictions_031 {
+
+ type record ExampleType {
+ // Exampletype record contains a charstring and a boolean
+ charstring a optional,
+ boolean b
+ }
+
+ type component GeneralComp {
+ var template (value) ExampleType v_value; //value restricted template variable
+ }
+
+ //actual template (with omit restriction) is omit
+ template (omit) ExampleType MyintTemplate := omit;
+
+ testcase TC_NegSem_1508_TemplateRestrictions_031() runs on GeneralComp {
+
+ v_value := MyintTemplate; //error: v_value is value restricted, hence can not be omit
+
+ if (valueof(v_value.b) == false) {
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_1508_TemplateRestrictions_031());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template does not allow usage of omit value
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_032 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that template(present) can't be assigned to a template(value) variable if contains anyvalueornone(*) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_032 NegSem_1508_TemplateRestrictions_032.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that template(present) can't be assigned to a template(value) variable if contains anyvalueornone(*)
+ ** @verdict pass reject
+ *****************************************************************/
+
+
+module NegSem_1508_TemplateRestrictions_032 {
+
+ type record ExampleType { // Exampletype record contains a charstring and a boolean
+ charstring a optional,
+ boolean b
+ }
+
+ type component GeneralComp {
+ var template (value) ExampleType v_value; //value restricted template variable
+ }
+
+ template (present) ExampleType MyintTemplate :={
+ //actual template (with present restriction) contains *
+ a := *,
+ b:= true
+ }
+
+ testcase TC_NegSem_1508_TemplateRestrictions_032() runs on GeneralComp {
+
+ v_value := MyintTemplate; //error: v_value is value restricted, hence can not contain *
+
+ if (valueof(v_value.b) == false) {
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_1508_TemplateRestrictions_032());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template does not allow usage of any or omit
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_033 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that an unrestricted template can't be assigned to a template(value) variable if contains anyvalueornone(*) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_033 NegSem_1508_TemplateRestrictions_033.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that an unrestricted template can't be assigned to a template(value) variable if contains anyvalueornone(*)
+ ** @verdict pass reject
+ *****************************************************************/
+
+
+module NegSem_1508_TemplateRestrictions_033 {
+
+ type record ExampleType { // Exampletype record contains a charstring and a boolean
+ charstring a optional,
+ boolean b
+ }
+
+ type component GeneralComp {
+ var template (value) ExampleType v_value; //value restricted template variable
+ }
+
+
+ template ExampleType MyintTemplate :={ //actual template (without restriction) contains *
+ a := *,
+ b:= true
+ }
+
+ testcase TC_NegSem_1508_TemplateRestrictions_033() runs on GeneralComp {
+
+ v_value := MyintTemplate; //error: v_value is value restricted, hence can not contain *
+
+ if (valueof(v_value.b) == false) {
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_1508_TemplateRestrictions_033());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template does not allow usage of any or omit
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_034 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that a template with omit restriction can't be assigned to a template(present)variable if omit >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_034 NegSem_1508_TemplateRestrictions_034.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that a template with omit restriction can't be assigned to a template(present)variable if omit
+ ** @verdict pass reject
+ *****************************************************************/
+
+
+module NegSem_1508_TemplateRestrictions_034 {
+
+ type record ExampleType { // Exampletype record contains a charstring and a boolean
+ charstring a ,
+ boolean b optional
+ }
+
+ type component GeneralComp {
+ var template (present) ExampleType v_present; //value restricted template variable
+ }
+
+ template (omit) ExampleType MyintTemplate := omit; //actual template (omit) is omit
+
+ testcase TC_NegSem_1508_TemplateRestrictions_034() runs on GeneralComp {
+
+ v_present := MyintTemplate; //error: v_present is present restricted, hence can not be omit
+
+ if (valueof(v_present.b) == false) {
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_1508_TemplateRestrictions_034());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template does not allow usage of omit value
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1508_TemplateRestrictions_035 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that an unrestricted template can't be assigned to a template(present)variable if omit >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1508_TemplateRestrictions_035 NegSem_1508_TemplateRestrictions_035.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.8, Ensure that an unrestricted template can't be assigned to a template(present)variable if omit
+ ** @verdict pass reject
+ *****************************************************************/
+
+
+module NegSem_1508_TemplateRestrictions_035 {
+
+ type record ExampleType { // Exampletype record contains a charstring and a boolean
+ charstring a ,
+ boolean b optional
+ }
+
+ type component GeneralComp {
+ var template (present) ExampleType v_present; //value restricted template variable
+ }
+
+ template ExampleType MyintTemplate := omit; //actual template is omit
+
+ testcase TC_NegSem_1508_TemplateRestrictions_035() runs on GeneralComp {
+
+ v_present := MyintTemplate; //error: v_present is present restricted, hence can not be omit
+
+ if (valueof(v_present.b) == false) {
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_1508_TemplateRestrictions_035());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Restriction on template does not allow usage of omit value
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h2. 1509_match_operation folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1509_MatchOperation_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the match operation refuses two templates as actual parameters. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1509_MatchOperation_001 NegSem_1509_MatchOperation_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.9, Ensure that the match operation refuses two templates as actual parameters.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1509_MatchOperation_001 {
+
+ type component GeneralComp { }
+
+ template integer m_lessThan10 := (-infinity..9);
+ template integer m_second := (-20,-40);
+
+ testcase TC_NegSem_1509_MatchOperation_001() runs on GeneralComp {
+ if (match(m_second, m_lessThan10)) { // shall fail as both actual parameters refer to templates
+ setverdict(fail);
+ } else {
+ setverdict(pass);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_1509_MatchOperation_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of template `@NegSem_1509_MatchOperation_001.m_second'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h2. 1510_valueof_operation folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1510_ValueOfOperation_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the valueof function works correctly on omit. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_1510_ValueOfOperation_001 NegSem_1510_ValueOfOperation_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.10, Ensure that the valueof function works correctly on omit.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1510_ValueOfOperation_001 {
+
+ type component GeneralComp { }
+
+ testcase TC_NegSem_1510_ValueOfOperation_001() runs on GeneralComp {
+ var template integer m_int := omit;
+ var integer v_int := valueof(m_int);
+
+ // if we get here, something must be wrong as valueof on m_int shall cause an error
+ // due to the omit.
+ setverdict(fail);
+ }
+
+ control{
+ execute(TC_NegSem_1510_ValueOfOperation_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Performing a valueof or send operation on a non-specific integer template.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1510_ValueOfOperation_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the valueof function works correctly on templates with wildcards. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1510_ValueOfOperation_002 NegSem_1510_ValueOfOperation_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.10, Ensure that the valueof function works correctly on templates with wildcards.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1510_ValueOfOperation_002 {
+
+ type component GeneralComp { }
+
+ type record ExampleType {
+ integer field1,
+ boolean field2
+ }
+
+ template ExampleType m_template := {
+ field1 := *,
+ field2 := ?
+ }
+
+ testcase TC_NegSem_1510_ValueOfOperation_002() runs on GeneralComp {
+ var ExampleType v_int := valueof(m_template);
+
+ // if we get here, something must be wrong as valueof on m_template shall cause an error
+ // due to the * and ? wildcards.
+ setverdict(fail);
+ }
+
+ control{
+ execute(TC_NegSem_1510_ValueOfOperation_002());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A specific value was expected instead of any value
+<END_RESULT>
+<RESULT COUNT 1>
+error: A specific value was expected instead of any or omit
+<END_RESULT>
+
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1510_ValueOfOperation_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the valueof function works correctly on regular value templates. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_1510_ValueOfOperation_003 NegSem_1510_ValueOfOperation_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.10, Ensure that the valueof function works correctly on regular value templates.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1510_ValueOfOperation_003 {
+
+ type component GeneralComp { }
+
+ type record ExampleType {
+ integer field1,
+ boolean field2
+ }
+
+ testcase TC_NegSem_1510_ValueOfOperation_003() runs on GeneralComp {
+ var template ExampleType f_first := {
+ field1 := (1, 2),
+ field2 := true
+ };
+
+ var ExampleType v_second := valueof(f_first);
+
+ // if we get here, something must be wrong as valueof on m_template shall cause an error
+ setverdict(fail);
+ }
+
+ control{
+ execute(TC_NegSem_1510_ValueOfOperation_003());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Performing a valueof or send operation on a non-specific integer template
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1510_ValueOfOperation_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the valueof function works correctly on range templates. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_1510_ValueOfOperation_004 NegSem_1510_ValueOfOperation_004.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.10, Ensure that the valueof function works correctly on range templates.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1510_ValueOfOperation_004 {
+
+ type component GeneralComp { }
+
+ testcase TC_NegSem_1510_ValueOfOperation_004() runs on GeneralComp {
+ var template integer v_test := (1..5);
+
+ var integer v_second := valueof(v_test);
+
+ // if we get here, something must be wrong as valueof on v_test shall cause an error
+ // as it is not a template.
+ setverdict(fail);
+ }
+
+ control{
+ execute(TC_NegSem_1510_ValueOfOperation_004());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Performing a valueof or send operation on a non-specific integer template
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1510_ValueOfOperation_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the valueof function works correctly on range templates. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_1510_ValueOfOperation_005 NegSem_1510_ValueOfOperation_005.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.10, Ensure that the valueof function works correctly on range templates.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1510_ValueOfOperation_004 {
+
+ type component GeneralComp { }
+
+ testcase TC_NegSem_1510_ValueOfOperation_004() runs on GeneralComp {
+ var template integer v_test := (1..5);
+
+ var integer v_second := valueof(v_test);
+
+ // if we get here, something must be wrong as valueof on v_test shall cause an error
+ // as it is not a template.
+ setverdict(fail);
+ }
+
+ control{
+ execute(TC_NegSem_1510_ValueOfOperation_004());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Performing a valueof or send operation on a non-specific integer template
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h2. 1511_concatenating_templates_of_string_and_list_types folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that concatenation of octetstring types yields an even number of digits. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_001 NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.11, Ensure that concatenation of octetstring types yields an even number of digits.
+ ** @verdict pass reject
+ *****************************************************************/
+//Note: see CR5805 regarding corresponding BNF update
+
+module NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_001 {
+
+ type component GeneralComp { }
+
+ testcase TC_NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_001() runs on GeneralComp {
+ var template octetstring v_str := 'ABCD'O & '?'O & '?E'O;
+
+ // shall cause an error as it would denote 9 (i.e., uneven) number of digits
+ setverdict(fail);
+ }
+
+ control{
+ execute(TC_NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Octetstring match contains half octet\(s\)
+<END_RESULT>
+<RESULT COUNT 1>
+error: at or before token `'O': syntax error, unexpected OctetStringMatch
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that a simple concatenation of non-wildcard octetstring must not yield in a non-even number of hexadecimals. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_003 NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.11, Ensure that a simple concatenation of non-wildcard octetstring must not yield in a non-even number of hexadecimals.
+ ** @verdict pass reject
+ *****************************************************************/
+//Note: see CR5805 regarding corresponding BNF update
+
+module NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_003 {
+
+ type component GeneralComp { }
+
+ testcase TC_NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_003() runs on GeneralComp {
+ var template octetstring v_str := 'AB'O & '0F'O & '2A'O & 'F'O;
+
+ // shall cause an error as the length of the concantenated octetstring is is uneven
+ setverdict(fail);
+ }
+
+ control{
+ execute(TC_NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_003());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Octetstring value contains odd number of hexadecimal digits
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the inline template definitions are correctly concatenated. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_004 NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_004.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.11, Ensure that the inline template definitions are correctly concatenated.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_004 {
+
+ type component GeneralComp { }
+
+ type record MyRecord {
+ charstring field1,
+ charstring field2
+ }
+
+ template MyRecord m_receiveTemplate := {
+ field1 := pattern "AB*DE",
+ field2 := "ABCC" & * & "EF" //only specific values allowed when there is no pattern keyword
+ }
+
+ testcase TC_NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_004() runs on GeneralComp {
+ var MyRecord v_value := {
+ field1 := "AB*DE",
+ field2 := "ABCCDE*EF"
+ }
+
+ if (match(v_value, m_receiveTemplate)) {
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_004());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\*': syntax error, unexpected '\*'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the inline template definitions are correctly concatenated. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_005 NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_005.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.11, Ensure that the inline template definitions are correctly concatenated.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_005 {
+
+ type component GeneralComp { }
+
+ type record MyRecord {
+ charstring field1,
+ charstring field2
+ }
+
+ template MyRecord m_receiveTemplate := {
+ field1 := pattern "AB*DE",
+ field2 := pattern "ABCC" & * length(2) & "EF"
+ //cannot use length(n) attribute on charstring pattern
+ }
+
+ testcase TC_NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_005() runs on GeneralComp {
+ var MyRecord v_value := {
+ field1 := "AB*DE",
+ field2 := "ABCCDE*EF"
+ }
+
+ if (match(v_value, m_receiveTemplate)) {
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_005());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\*': syntax error, unexpected '\*', expecting Identifier or Cstring or CharKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that concatenation of octetstring types and ? patterns works as expected. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_006 NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_006.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:15.11, Ensure that concatenation of octetstring types and ? patterns works as expected.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_006 {
+
+ type component GeneralComp { }
+
+ testcase TC_NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_006() runs on GeneralComp {
+ var template octetstring v_myString1 := 'ABCD'O & ? length(2) length (6); //missing parenthesis
+ if (match('ABCD12'O, v_myString1)) {
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_1511_ConcatenatingTemplatesOfStringAndListTypes_006());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\?': syntax error, unexpected '\?'
+<END_RESULT>
+<RESULT COUNT 1>
+error: at or before token `else': syntax error, unexpected ElseKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h1.References
+.*---------------------------------------------------------------------*
+:list.
+:li D='[1]'.1/174 02-CRL 113 200/5 Uen
+:nl.Statement of Compliance for TITAN project
+:li D='[2]'.ETSI ES 201 873-1, v4.7.1 Mockup v1 (2015-06):
+:nl.Testing and Test Control Notation version 3.,
+:nl.Part 1: TTCN-3 Core Language
+:elist.
--- /dev/null
+.******************************************************************************
+.* Copyright (c) 2000-2016 Ericsson Telecom AB
+.* All rights reserved. This program and the accompanying materials
+.* are made available under the terms of the Eclipse Public License v1.0
+.* which accompanies this distribution, and is available at
+.* http://www.eclipse.org/legal/epl-v10.html
+.*
+.* Contributors:
+.* Adrien Kirjak – initial implementation
+.*
+.******************************************************************************/
+text.
+:lang eng.
+.*
+:docname.Test Description
+:docno.xz/152 91-CRL 113 200 Uen
+:rev.PA1
+:date.2016-04-04
+.*
+:prep.ETH/XZ EADRKIR
+:subresp.EADRKIR
+:appr.ETH/XZ (Elemer Lelik)
+:checked.
+.*
+:title.ETSI TTCN3 Negative Conformance Test
+:contents level=3.
+.*---------------------------------------------------------------------*
+:h1.PREREQUISITES AND PREPARATIONS
+.*---------------------------------------------------------------------*
+.*---------------------------------------------------------------------*
+:h2.Scope of the Test Object
+.*---------------------------------------------------------------------*
+:xmp tab=1 nokeep.
+This TD contains negative tests from ETSI TTCN3 Conformance Test's 16_functions_altsteps_testcases, 19_basic_program_statements and 20_statement_and_operations_for_alt folders.
+
+:exmp.
+
+.*---------------------------------------------------------------------*
+:h2.Test Tools
+.*---------------------------------------------------------------------*
+:p.:us.Software Tools:eus.
+:xmp tab=2 nokeep.
+
+ SAtester.pl
+
+:exmp.
+:np.
+
+.*---------------------------------------------------------------------*
+:h1.REQUIREMENT-BASED TESTS
+.*---------------------------------------------------------------------*
+.*---------------------------------------------------------------------*
+:h2. 16_functions_altsteps_testcases folder
+.*---------------------------------------------------------------------*
+*---------------------------------------------------------------------*
+:h3. NegSem_1601_toplevel_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles function definitions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1601_toplevel_001 NegSem_1601_toplevel_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1, Ensure that the IUT correctly handles function definitions
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_1601_toplevel_001 {
+
+ type component GeneralComp {
+ }
+
+ function f_test ( integer p_integer := 0 ) return float {
+
+ return p_integer+1; // mismatch between return type and argument type
+ return p_integer+2;
+ }
+
+ testcase TC_NegSem_1601_toplevel_001 () runs on GeneralComp {
+
+ if(f_test(1)==2) {
+ setverdict(pass);
+ }
+ else {
+ setverdict(fail);
+ }
+
+ }
+
+ control{
+
+ execute(TC_NegSem_1601_toplevel_001());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The operands of operation `==' should be of compatible types
+<END_RESULT>
+<RESULT COUNT 2>
+error: Incompatible value: `float' value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1601_toplevel_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles function definitions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1601_toplevel_002 NegSem_1601_toplevel_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1, Ensure that the IUT correctly handles function definitions
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_1601_toplevel_002 {
+
+ type component GeneralComp {
+ }
+
+ function f_test ( template octetstring p_ostring ) return octetstring {
+ return p_ostring; // mismatch between return type and template argument
+ }
+
+ testcase TC_NegSem_1601_toplevel_002 () runs on GeneralComp {
+ if( match('FFFFFF'O, f_test('FF??'O)) ) {
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_1601_toplevel_002());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of template parameter `p_ostring'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1601_toplevel_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles function definitions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1601_toplevel_003 NegSem_1601_toplevel_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1, Ensure that the IUT correctly handles function definitions
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_1601_toplevel_003 {
+
+ type component GeneralComp {
+ var integer v_comp:=1;
+ }
+
+ function f_test ( integer p_integer := 0 ) return integer {
+
+ return f_two(p_integer); //against restriction 16.1 / a)
+ }
+
+ function f_two ( integer p_integer := 0 ) runs on GeneralComp return integer {
+
+ return p_integer+v_comp;
+ }
+
+ testcase TC_NegSem_1601_toplevel_003 () runs on GeneralComp {
+
+ if(f_test(1)==2) {
+ setverdict(pass);
+ }
+ else {
+ setverdict(fail);
+ }
+
+ }
+
+ control{
+
+ execute(TC_NegSem_1601_toplevel_003());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A definition without `runs on' clause cannot call function `@NegSem_1601_toplevel_003.f_two', which runs on component type `@NegSem_1601_toplevel_003.GeneralComp'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1601_toplevel_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles function definitions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1601_toplevel_004 NegSem_1601_toplevel_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1, Ensure that the IUT correctly handles function definitions
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_1601_toplevel_004 {
+
+ type component GeneralComp {
+ }
+
+ function f_test ( integer p_integer := 0 ) runs on GeneralComp return integer {
+
+ return p_integer+1;
+ }
+
+ testcase TC_NegSem_1601_toplevel_004 () runs on GeneralComp {
+
+ if(f_test(1)==2) {
+ setverdict(pass);
+ }
+ else {
+ setverdict(fail);
+ }
+
+ }
+
+ control{
+
+ f_test(1); //attempt to invoke a function with runs on clause
+ execute(TC_NegSem_1601_toplevel_004());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A definition without `runs on' clause cannot call function `@NegSem_1601_toplevel_004.f_test', which runs on component type `@NegSem_1601_toplevel_004.GeneralComp'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1601_toplevel_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles function definitions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1601_toplevel_005 NegSem_1601_toplevel_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1, Ensure that the IUT correctly handles function definitions
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_1601_toplevel_005 {
+
+ type component GeneralComp {
+ }
+
+ function f_test (in integer p_integer := 10 ) return integer {
+ if (p_integer > 5) {
+ p_integer := 5;
+ return p_integer;
+ }
+ // there is no return value if comparison is false
+
+ }
+
+ testcase TC_NegSem_1601_toplevel_005 () runs on GeneralComp {
+
+ if(f_test(2)==2) {
+ setverdict(pass);
+ }
+ else {
+ setverdict(fail);
+ }
+
+ }
+
+ control{
+
+ execute(TC_NegSem_1601_toplevel_005());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The function has return type, but control might leave it without reaching a return statement
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1601_toplevel_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles function definitions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1601_toplevel_006 NegSem_1601_toplevel_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1, Ensure that the IUT correctly handles function definitions
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_1601_toplevel_006 {
+
+ type component GeneralComp {
+ var integer v_comp:=1;
+ }
+
+ function f_test ( integer p_integer := 0 ) runs on GeneralComp return integer {
+ return f_two(p_integer);
+ }
+
+ function f_two ( integer p_integer := 0 ) return integer {
+ return p_integer+v_comp; //use of variable from a component but missing 'runs on' clause
+ }
+
+ testcase TC_NegSem_1601_toplevel_006 () runs on GeneralComp {
+
+ if(f_test(1)==2) {
+ setverdict(pass);
+ }
+ else {
+ setverdict(fail);
+ }
+
+ }
+
+ control{
+
+ execute(TC_NegSem_1601_toplevel_006());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: There is no local or imported definition with name `v_comp'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_160102_predefined_functions_001 NegSem_160102_predefined_functions_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_160102_predefined_functions_001 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_160102_predefined_functions_001 () runs on GeneralComp {
+ var charstring v_i;
+
+ v_i:=int2char(128);
+ }
+
+ control{
+ execute(TC_NegSem_160102_predefined_functions_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The operand of operation `int2char\(\)' should be in range 0..127
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_160102_predefined_functions_002 NegSem_160102_predefined_functions_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_160102_predefined_functions_002 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_160102_predefined_functions_002 () runs on GeneralComp {
+ var charstring v_i;
+
+ v_i:=int2char(-1);
+ }
+
+ control {
+ execute(TC_NegSem_160102_predefined_functions_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The operand of operation `int2char\(\)' should be in range 0..127
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_160102_predefined_functions_003 NegSem_160102_predefined_functions_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_160102_predefined_functions_003 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_160102_predefined_functions_003 () runs on GeneralComp {
+ var universal charstring v_i;
+
+ v_i:=int2char(2147483648);
+
+ }
+
+ control{
+
+ execute(TC_NegSem_160102_predefined_functions_003());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The operand of operation `int2char\(\)' should be in range 0..127
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_160102_predefined_functions_004 NegSem_160102_predefined_functions_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_160102_predefined_functions_004 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_160102_predefined_functions_004 () runs on GeneralComp {
+ var hexstring v_i;
+
+ v_i:=int2hex(256,2); //mismatch of string length
+ setverdict(pass);
+ }
+
+ control{
+
+ execute(TC_NegSem_160102_predefined_functions_004());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Value 256 does not fit in length 2
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_160102_predefined_functions_005 NegSem_160102_predefined_functions_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_160102_predefined_functions_005 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_160102_predefined_functions_005 () runs on GeneralComp {
+ var integer v_i;
+
+ v_i:=char2int("blabla"); //mismatch of string length
+
+ }
+
+ control{
+
+ execute(TC_NegSem_160102_predefined_functions_005());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The operand of operation `char2int\(\)' should be of length 1
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_160102_predefined_functions_006 NegSem_160102_predefined_functions_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_160102_predefined_functions_006 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_160102_predefined_functions_006 () runs on GeneralComp {
+ var integer v_i;
+
+ v_i:=lengthof('1*F'H); //undetermined string length
+ setverdict(pass);
+ }
+
+ control{
+
+ execute(TC_NegSem_160102_predefined_functions_006());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Performing lengthof\(\) operation on a hexstring template with no exact length.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_160102_predefined_functions_007 NegSem_160102_predefined_functions_007.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_160102_predefined_functions_007 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_160102_predefined_functions_007 () runs on GeneralComp {
+ var integer v_i;
+
+ v_i:=lengthof('1'B length(3)); //undetermined string length
+ setverdict(pass);
+ }
+
+ control{
+
+ execute(TC_NegSem_160102_predefined_functions_007());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: There are fewer \(1\) elements in the string than it is allowed by the length restriction \(3\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_160102_predefined_functions_008 NegSem_160102_predefined_functions_008.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_160102_predefined_functions_008 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_160102_predefined_functions_008 () runs on GeneralComp {
+ var integer v_i;
+
+ v_i:=lengthof('1*0'B length(3..6)); //undetermined string length
+ setverdict(pass);
+ }
+
+ control{
+
+ execute(TC_NegSem_160102_predefined_functions_008());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Performing lengthof\(\) operation on a bitstring template with no exact length.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_010 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_160102_predefined_functions_010 NegSem_160102_predefined_functions_010.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_160102_predefined_functions_010 {
+ type record of integer IntegerList;
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_160102_predefined_functions_010 () runs on GeneralComp {
+ template IntegerList template1 := { 1, 2, 3, * } length(1..2) ; //incorrect template length
+ var integer v_i;
+
+ v_i:=lengthof(template1);
+
+ }
+
+ control{
+
+ execute(TC_NegSem_160102_predefined_functions_010());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: There are more \(at least 3\) elements in the template than it is allowed by the length restriction \(at most 2\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_017 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_160102_predefined_functions_017 NegSem_160102_predefined_functions_017.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_160102_predefined_functions_017 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_160102_predefined_functions_017 () runs on GeneralComp {
+ var charstring v_example:="example text string";
+ var charstring v_i;
+
+ v_i:=regexp(v_example,charstring:"?+(text)?+",1); //wrong group index
+
+ }
+
+ control{
+
+ execute(TC_NegSem_160102_predefined_functions_017());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: The third argument \(groupno\) of function regexp\(\) is too large: The requested group index is 1, but the pattern contains only 1 group.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_018 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_160102_predefined_functions_018 NegSem_160102_predefined_functions_018.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_160102_predefined_functions_018 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_160102_predefined_functions_018 () runs on GeneralComp {
+ var charstring v_example:="example text string";
+ var charstring v_i;
+
+ v_i:=regexp(v_example,charstring:"?+(text)?+",-1); //wrong group index
+
+ }
+
+ control{
+
+ execute(TC_NegSem_160102_predefined_functions_018());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Third operand of operation `regexp\(\)' should not be negative
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_019 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_160102_predefined_functions_019 NegSem_160102_predefined_functions_019.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_160102_predefined_functions_019 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_160102_predefined_functions_019 () runs on GeneralComp {
+ var charstring v_example:="example text string";
+ var charstring v_i;
+
+ v_i:=regexp(v_example,charstring:"?+(text)?+"); //missing group index
+
+ }
+
+ control{
+
+ execute(TC_NegSem_160102_predefined_functions_019());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\)': syntax error, unexpected '\)', expecting ','
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_021 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_160102_predefined_functions_021 NegSem_160102_predefined_functions_021.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_160102_predefined_functions_021 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_160102_predefined_functions_021 () runs on GeneralComp {
+ var bitstring v_i;
+
+ v_i:=substr('00100110'B,-3,4); //wrong index value
+
+ }
+
+ control{
+
+ execute(TC_NegSem_160102_predefined_functions_021());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Second operand of operation `substr\(\)' should not be negative
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_022 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_160102_predefined_functions_022 NegSem_160102_predefined_functions_022.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_160102_predefined_functions_022 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_160102_predefined_functions_022 () runs on GeneralComp {
+ var charstring v_i;
+
+ v_i:=substr('00100110'B,3,-4); //wrong length value
+
+ }
+
+ control{
+
+ execute(TC_NegSem_160102_predefined_functions_022());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Third operand of operation `substr\(\)' should not be negative
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_023 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_160102_predefined_functions_023 NegSem_160102_predefined_functions_023.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_160102_predefined_functions_023 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_160102_predefined_functions_023 () runs on GeneralComp {
+ var charstring v_i;
+
+ v_i:=substr('00100110'B,3,14); //too large length value
+
+ }
+
+ control{
+
+ execute(TC_NegSem_160102_predefined_functions_023());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The sum of second operand `index' \(3\) and third operand `returncount' \(14\) is greater than the length of the first operand \(8\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_024 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_160102_predefined_functions_024 NegSem_160102_predefined_functions_024.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_160102_predefined_functions_024 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_160102_predefined_functions_024 () runs on GeneralComp {
+ var bitstring v_i;
+
+ v_i:=replace('00000110'B,-1,3,'111'B); //wrong index value
+
+ }
+
+ control{
+
+ execute(TC_NegSem_160102_predefined_functions_024());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Second operand of operation `replace\(\)' should not be negative
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_025 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_160102_predefined_functions_025 NegSem_160102_predefined_functions_025.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_160102_predefined_functions_025 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_160102_predefined_functions_025 () runs on GeneralComp {
+ var bitstring v_i;
+
+ v_i:=replace('00000110'B,1,-3,'111'B); //wrong length value
+
+ }
+
+ control{
+
+ execute(TC_NegSem_160102_predefined_functions_025());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Third operand of operation `replace\(\)' should not be negative
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_026 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_160102_predefined_functions_026 NegSem_160102_predefined_functions_026.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_160102_predefined_functions_026 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_160102_predefined_functions_026 () runs on GeneralComp {
+ var bitstring v_i;
+
+ v_i:=replace('00000110'B,1,13,'111'B); //too large length value
+
+ }
+
+ control{
+
+ execute(TC_NegSem_160102_predefined_functions_026());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The sum of second operand `index' \(1\) and third operand `len' \(13\) is greater than the length of the first operand \(8\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_027 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_160102_predefined_functions_027 NegSem_160102_predefined_functions_027.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_160102_predefined_functions_027 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_160102_predefined_functions_027 () runs on GeneralComp {
+ var bitstring v_i;
+
+ v_i:=replace('00000110'B,1,4,'8'H); //incompatible replacement type
+
+ }
+
+ control{
+
+ execute(TC_NegSem_160102_predefined_functions_027());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Fourth operand of operation `replace\(\)' is of type `hexstring', but a value of type `bitstring' was expected here
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_029 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_160102_predefined_functions_029 NegSem_160102_predefined_functions_029.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_160102_predefined_functions_029 {
+ type enumerated EnumeratedType {e_black, e_white};
+ type enumerated EnumeratedTypeWithLabels1 {e_black (1), e_white};
+ type enumerated EnumeratedTypeWithLabels2 {e_black (-1), e_white};
+ type enumerated EnumeratedTypeWithLabels3 {e_black (-1), e_white , e_yellow (0) };
+ type enumerated Fruits {e_apple, e_peach, e_cherry};
+
+ type component GeneralComp {
+ }
+
+
+ testcase TC_NegSem_160102_predefined_functions_029 () runs on GeneralComp {
+
+ var EnumeratedType vl_enum_black := e_black;
+ var EnumeratedType vl_enum_white := e_white;
+ var EnumeratedTypeWithLabels1 vl_enum1_black := e_black;
+ var EnumeratedTypeWithLabels1 vl_enum1_white := e_white;
+ var EnumeratedTypeWithLabels2 vl_enum2_black := e_black;
+ var EnumeratedTypeWithLabels2 vl_enum2_white := e_white;
+ var EnumeratedTypeWithLabels3 vl_enum3_black := e_black;
+ var EnumeratedTypeWithLabels3 vl_enum3_white := e_white;
+ var EnumeratedTypeWithLabels3 vl_enum3_yellow := e_yellow;
+
+
+ if( match(enum2int(EnumeratedTypeWithLabels1.e_black), 0) //not allowed selection
+ ) {
+ setverdict(pass);
+ }
+ else {
+ setverdict(fail);
+ }
+
+
+ }
+
+
+ control{
+
+ execute(TC_NegSem_160102_predefined_functions_029());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of type `@NegSem_160102_predefined_functions_029.EnumeratedTypeWithLabels1'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_030 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_160102_predefined_functions_030 NegSem_160102_predefined_functions_030.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_160102_predefined_functions_030 {
+ type enumerated EnumeratedType {e_black, e_white};
+ type enumerated EnumeratedTypeWithLabels1 {e_black (1), e_white};
+ type enumerated EnumeratedTypeWithLabels2 {e_black (-1), e_white};
+ type enumerated EnumeratedTypeWithLabels3 {e_black (-1), e_white , e_yellow (0) };
+ type enumerated Fruits {e_apple, e_peach, e_cherry};
+
+ type component GeneralComp {
+ }
+
+
+ testcase TC_NegSem_160102_predefined_functions_030 () runs on GeneralComp {
+
+ var EnumeratedType vl_enum_black := e_black;
+ var EnumeratedType vl_enum_white := e_white;
+ var EnumeratedTypeWithLabels1 vl_enum1_black := e_black;
+ var EnumeratedTypeWithLabels1 vl_enum1_white := e_white;
+ var EnumeratedTypeWithLabels2 vl_enum2_black := e_black;
+ var EnumeratedTypeWithLabels2 vl_enum2_white := e_white;
+ var EnumeratedTypeWithLabels3 vl_enum3_black := e_black;
+ var EnumeratedTypeWithLabels3 vl_enum3_white := e_white;
+ var EnumeratedTypeWithLabels3 vl_enum3_yellow := e_yellow;
+ const EnumeratedTypeWithLabels1 c_enum1_black := e_black;
+
+ int2enum(4,vl_enum1_black); //not existing label
+
+ //if( match(int2enum(4,vl_enum1_black), c_enum1_black) // int2enum isn't a return type function
+ if( match(vl_enum1_black, c_enum1_black)
+ ) {
+ setverdict(pass);
+ }
+ else {
+ setverdict(fail);
+ }
+
+
+ }
+
+
+ control{
+
+ execute(TC_NegSem_160102_predefined_functions_030());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Assigning invalid numeric value 4 to a variable of enumerated type @NegSem_160102_predefined_functions_030.EnumeratedTypeWithLabels1.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_031 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_160102_predefined_functions_031 NegSem_160102_predefined_functions_031.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_160102_predefined_functions_031 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_160102_predefined_functions_031 () runs on GeneralComp {
+ var float v_random1;
+
+ v_random1:=rnd(infinity); //cannot have infinity as a seed
+ if( match(rnd(infinity), v_random1) and not match(rnd(1.0), v_random1) ) {
+ setverdict(pass);
+ }
+ else {
+ setverdict(fail);
+ }
+
+ }
+
+ control{
+
+ execute(TC_NegSem_160102_predefined_functions_031());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 2>
+error: The operand of operation `rnd \(seed\)' cannot be INF, it must be a numeric value
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_036 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_160102_predefined_functions_036 NegSem_160102_predefined_functions_036.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+
+/* The following requirements are tested:
+ *In addition to the general error causes in clause 16.1.2, error causes are:
+ * inpar is a template of a character string type and contains a matching mechanism other than AnyElement or
+AnyElementsOrNone; */
+
+module NegSem_160102_predefined_functions_036 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_160102_predefined_functions_036 () runs on GeneralComp {
+
+ const universal charstring m_Ref:="abc?def?";
+
+ var template universal charstring Mytemp := pattern "{m_Ref}\q{0,0,1,113}";
+ var universal charstring v_i;
+
+ v_i:=substr(Mytemp,1,2); //error: non allowed matching mechanism
+
+
+ }
+
+ control{
+
+ execute(TC_NegSem_160102_predefined_functions_036());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: The first argument of function substr\(\) is a template with non-specific value.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160102_predefined_functions_037 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C) >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_160102_predefined_functions_037 NegSem_160102_predefined_functions_037.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.1.2, Ensure that the IUT recognizes predefined functions and correctly evaluates them (as specified by Annex C)
+ ** @verdict pass reject
+ ***************************************************/
+
+/* The following requirements are tested:
+ *In addition to the general error causes in clause 16.1.2, error causes are:
+ * inpar is a template of a binary string or sequence type or array and it contains other matching mechanism as
+ * specific value and AnyElement;
+ */
+
+module NegSem_160102_predefined_functions_037 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_160102_predefined_functions_037 () runs on GeneralComp {
+
+
+ var template bitstring Mytemp := '00101*'B;
+ var bitstring v_i;
+
+ v_i:=substr(Mytemp,1,2); //error: contains a matching mechanism other than AnyElement
+
+ }
+
+
+ control{
+
+ execute(TC_NegSem_160102_predefined_functions_037());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: The first argument of function substr\(\) is a template with non-specific value.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1602_toplevel_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes altstep definitions and correctly evaluates them >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1602_toplevel_005 NegSem_1602_toplevel_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.2, Ensure that the IUT recognizes altstep definitions and correctly evaluates them
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_1602_toplevel_005 {
+
+ type record MessageType {
+ integer field1,
+ charstring field2
+ }
+
+ type port loopbackPort message {
+ inout MessageType
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+
+ altstep AltSet1() { //altstep port operations without corresponding component reference
+
+ [] messagePort.receive {
+ setverdict(pass);
+ }
+
+ }
+
+ testcase TC_NegSem_1602_toplevel_005 () runs on GeneralComp {
+ var MessageType v_testMessage;
+ v_testMessage:= {
+ field1 := 1,
+ field2 := "test string"
+ }
+
+ connect(self:messagePort,self:messagePort);
+
+ messagePort.send(v_testMessage);
+
+ AltSet1();
+
+ }
+
+ control{
+
+ execute(TC_NegSem_1602_toplevel_005());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: There is no local or imported definition with name `messagePort'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1602_toplevel_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes altstep definitions and correctly evaluates them >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1602_toplevel_006 NegSem_1602_toplevel_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.2, Ensure that the IUT recognizes altstep definitions and correctly evaluates them
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_1602_toplevel_006 {
+
+ type record MessageType {
+ integer field1,
+ charstring field2
+ }
+
+ type port loopbackPort message {
+ inout MessageType
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ function f_test(integer p_int) runs on GeneralComp return boolean {
+ //use of a function with runs on clause from an altstep without a runs on clause
+ if (p_int==1)
+ { return true; }
+ else
+ { return false; }
+ }
+
+
+ altstep AltSet1() {
+ var integer v_LocalVar1 := 1;
+ timer t_timer := 1.0;
+
+ [f_test(v_LocalVar1)] t_timer.timeout {
+
+ setverdict(pass);
+ }
+
+ }
+
+ testcase TC_NegSem_1602_toplevel_006 () runs on GeneralComp {
+ var MessageType v_testMessage;
+ v_testMessage:= {
+ field1 := 1,
+ field2 := "test string"
+ }
+
+ connect(self:messagePort,self:messagePort);
+
+ messagePort.send(v_testMessage);
+
+ AltSet1();
+
+ }
+
+ control{
+
+ execute(TC_NegSem_1602_toplevel_006());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A definition without `runs on' clause cannot call function `@NegSem_1602_toplevel_006.f_test', which runs on component type `@NegSem_1602_toplevel_006.GeneralComp'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_1602_toplevel_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes altstep definitions and correctly evaluates them >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_1602_toplevel_001 NegSyn_1602_toplevel_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.2, Ensure that the IUT recognizes altstep definitions and correctly evaluates them
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_1602_toplevel_001 {
+
+ type record MessageType {
+ integer field1,
+ charstring field2
+ }
+
+ type port loopbackPort message {
+ inout MessageType
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ function f_test ( integer p_integer := 0 ) runs on GeneralComp return integer {
+
+ return p_integer+1;
+ }
+
+
+ altstep AltSet1() runs on GeneralComp {
+
+ [] messagePort.receive {
+ setverdict(pass);
+ }
+
+ var integer v_LocalVar := f_test(); //late definition of a local variable
+
+ }
+
+ testcase TC_NegSyn_1602_toplevel_001 () runs on GeneralComp {
+ var MessageType v_testMessage;
+ v_testMessage:= {
+ field1 := 1,
+ field2 := "test string"
+ }
+
+ connect(self:messagePort,self:messagePort);
+
+ messagePort.send(v_testMessage);
+
+ AltSet1();
+
+ }
+
+ control{
+
+ execute(TC_NegSyn_1602_toplevel_001());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `var': syntax error, unexpected VarKeyword, expecting '\}' or '\['
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_160201_invoking_altsteps_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT recognizes altstep definitions and correctly evaluates them >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_160201_invoking_altsteps_001 NegSem_160201_invoking_altsteps_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.2.1, Ensure that the IUT recognizes altstep definitions and correctly evaluates them
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_160201_invoking_altsteps_001 {
+
+ type record MessageType {
+ integer field1,
+ charstring field2
+ }
+
+ type port loopbackPort message {
+ inout MessageType
+ } with {extension "internal"}
+
+ type port simplePort message {
+ inout integer
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ type component AltComp {
+ port simplePort messagePort
+ }
+
+
+
+ altstep AltSet1() runs on AltComp { //incompatible component with GeneralComp
+
+ [] messagePort.receive {
+ setverdict(pass);
+ }
+
+ }
+
+ testcase TC_NegSem_160201_invoking_altsteps_001 () runs on GeneralComp {
+ var MessageType v_testMessage;
+ timer t_timer;
+
+ v_testMessage:= {
+ field1 := 1,
+ field2 := "test string"
+ }
+
+ connect(self:messagePort,self:messagePort);
+
+ messagePort.send(v_testMessage);
+ t_timer.start( 1.0 );
+
+ alt {
+ [] AltSet1();
+ [] t_timer.timeout {
+ setverdict(pass);
+ }
+ }
+
+ }
+
+ control{
+
+ execute(TC_NegSem_160201_invoking_altsteps_001());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Runs on clause mismatch: A definition that runs on component type `@NegSem_160201_invoking_altsteps_001.GeneralComp' cannot call altstep `@NegSem_160201_invoking_altsteps_001.AltSet1', which runs on `@NegSem_160201_invoking_altsteps_001.AltComp'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. 1603_testcases folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1603_testcases_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT properly evaluates invocation of testcases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1603_testcases_001 NegSem_1603_testcases_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.3, Ensure that the IUT properly evaluates invocation of testcases
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_1603_testcases_001 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_1603_testcases_001 () runs on GeneralComp {
+ execute(TC_fail()); //testcases can only be invoked from the control part
+ setverdict(pass);
+ }
+
+ testcase TC_fail () runs on GeneralComp {
+ setverdict(fail);
+ }
+
+ control{
+
+ execute(TC_NegSem_1603_testcases_001());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A definition that has `runs on' clause cannot execute testcases
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1603_testcases_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT properly evaluates invocation of testcases >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1603_testcases_002 NegSem_1603_testcases_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:16.3, Ensure that the IUT properly evaluates invocation of testcases
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_1603_testcases_002 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_1603_testcases_002 () runs on GeneralComp {
+ TC_fail(); //testcases can only be invoked from the control part
+ setverdict(pass);
+ }
+
+ testcase TC_fail () runs on GeneralComp {
+ setverdict(fail);
+ }
+
+ control{
+ execute(TC_NegSem_1603_testcases_002());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a function or altstep was expected instead of testcase `@NegSem_1603_testcases_002.TC_fail', which cannot be invoked
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h2. 19_basic_program_statements folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1901_assignments_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT properly evaluates assignment statements >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_1901_assignments_001 NegSem_1901_assignments_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:19.1, Ensure that the IUT properly evaluates assignment statements
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_1901_assignments_001 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_1901_assignments_001 () runs on GeneralComp system GeneralComp {
+ var integer v_i;
+ var integer v_j;
+
+ v_j:=v_i; //assignment of unbounded expression
+
+ }
+
+ control{
+
+ execute(TC_NegSem_1901_assignments_001());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Assignment of an unbound integer value.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1901_assignments_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT properly evaluates assignment statements >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1901_assignments_002 NegSem_1901_assignments_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:19.1, Ensure that the IUT properly evaluates assignment statements
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_1901_assignments_002 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_1901_assignments_002 () runs on GeneralComp system GeneralComp {
+ var integer v_i;
+
+ v_i:=1.5; //assignment of incompatible expression
+
+ }
+
+ control{
+
+ execute(TC_NegSem_1901_assignments_002());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: integer value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1901_assignments_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT properly evaluates assignment statements >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1901_assignments_003 NegSem_1901_assignments_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:19.1, Ensure that the IUT properly evaluates assignment statements
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_1901_assignments_003 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_1901_assignments_003 () runs on GeneralComp system GeneralComp {
+ var charstring v_i;
+
+ v_i:=pattern "a??b"; //assignment of incompatible expression
+
+ }
+
+ control{
+
+ execute(TC_NegSem_1901_assignments_003());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A template body with matching symbols cannot be assigned to a variable
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1901_assignments_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that omit assignment to a record non-optional value is not allowed >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1901_assignments_004 NegSem_1901_assignments_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:19.1, Ensure that omit assignment to a record non-optional value is not allowed
+ ** @verdict pass reject
+ ***************************************************/
+
+//Restriction c)
+/*If the left-hand side of the assignment is a reference to a non-optional value object (i.e. a value definition, a mandatory field, a record/set of/array element, a union alternative, a value parameter),
+ * the right-hand side shall not be a reference to an omitted field or the omit symbol.*/
+
+module NegSem_1901_assignments_004{
+
+ type component GeneralComp {
+ }
+
+ type record Myrec{
+ integer field1,
+ float field2
+ };
+
+ testcase TC_NegSem_1901_assignments_004 () runs on GeneralComp system GeneralComp {
+
+ var Myrec v_i;
+
+ v_i:={11,omit}; //assignment not allowed
+
+ setverdict(pass,v_i);
+
+ }
+
+
+ control{
+
+ execute(TC_NegSem_1901_assignments_004());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: `omit' value is not allowed in this context
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1901_assignments_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that omit assignment to set of non-optional value is not allowed >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1901_assignments_005 NegSem_1901_assignments_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:19.1, Ensure that omit assignment to set of non-optional value is not allowed
+ ** @verdict pass reject
+ ***************************************************/
+
+ //Restriction c)
+/*If the left-hand side of the assignment is a reference to a non-optional value object (i.e. a value definition, a mandatory field, a record/set of/array element, a union alternative, a value parameter),
+the right-hand side shall not be a reference to an omitted field or the omit symbol.*/
+
+module NegSem_1901_assignments_005{
+
+ type component GeneralComp {
+ }
+
+ type set of integer Myset;
+
+ testcase TC_NegSem_1901_assignments_005 () runs on GeneralComp system GeneralComp {
+
+ var Myset v_i;
+
+ v_i:={11,omit}; //assignment not allowed
+
+ setverdict(pass,v_i);
+
+ }
+
+
+ control{
+
+ execute(TC_NegSem_1901_assignments_005());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: `omit' value is not allowed in this context
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1901_assignments_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that omit assignment to an array is not allowed >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1901_assignments_006 NegSem_1901_assignments_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:19.1, Ensure that omit assignment to an array is not allowed
+ ** @verdict pass reject
+ ***************************************************/
+
+//Restriction c)
+/*If the left-hand side of the assignment is a reference to a non-optional value object (i.e. a value definition, a mandatory field, a record/set of/array element, a union alternative, a value parameter),
+the right-hand side shall not be a reference to an omitted field or the omit symbol.*/
+
+module NegSem_1901_assignments_006{
+
+ type component GeneralComp {
+ }
+
+
+
+ testcase TC_NegSem_1901_assignments_006 () runs on GeneralComp system GeneralComp {
+
+ var integer v_i[2];
+
+ v_i:={11,omit}; //assignment not allowed
+
+ setverdict(pass,v_i);
+
+ }
+
+
+ control{
+
+ execute(TC_NegSem_1901_assignments_006());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: `omit' value is not allowed in this context
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_1901_assignments_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - nsure that the IUT properly evaluates assignment statements >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_1901_assignments_001 NegSyn_1901_assignments_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:19.1, Ensure that the IUT properly evaluates assignment statements
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_1901_assignments_001 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSyn_1901_assignments_001 () runs on GeneralComp system GeneralComp {
+ var integer v_i;
+ var integer v_j;
+ var integer v_k;
+ v_i:=1;
+ v_k:=(v_j:=v_i); //such sequential assignments are not allowed by the syntax
+
+ }
+
+
+ control{
+
+ execute(TC_NegSyn_1901_assignments_001());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `:=': syntax error, unexpected :=, expecting ','
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_1902_if_else_statement_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT properly evaluates assignment statements >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_1902_if_else_statement_001 NegSyn_1902_if_else_statement_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:19.2, If statement requires curly brackets for the body
+ ** @verdict pass reject
+ ***************************************************/
+module NegSyn_1902_if_else_statement_001 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSyn_1902_if_else_statement_001 () runs on GeneralComp{
+
+ for(var integer v_i:=1; v_i<10; v_i:= j+1) {}
+
+ if(v_i==10)
+ setverdict(pass); // missing { } as defined by grammar rule 175 StatementBlock
+
+ }
+
+ control{
+
+ execute(TC_NegSyn_1902_if_else_statement_001());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `setverdict': syntax error, unexpected SetVerdictKeyword, expecting '\{'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1904_for_statement_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT properly evaluates for statements >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1904_for_statement_001 NegSem_1904_for_statement_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:19.4, Ensure that the IUT properly evaluates for statements
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_1904_for_statement_001 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_1904_for_statement_001 () runs on GeneralComp{
+
+ for(var integer v_i:=1; v_i<10; v_i:= v_i+1) {}
+
+ if(v_i==10) { setverdict(pass); } //v_i is not accessible from outside the loop
+
+ }
+
+ control{
+
+ execute(TC_NegSem_1904_for_statement_001());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: There is no local or imported definition with name `v_i'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1905_while_statement_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT properly evaluates while statements >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1905_while_statement_001 NegSem_1905_while_statement_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:19.5, Ensure that the IUT properly evaluates while statements
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_1905_while_statement_001 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_1905_while_statement_001 () runs on GeneralComp{
+ var integer v_i:=1;
+
+ while(v_i<10) {
+ var integer v_j:=1;
+ v_i:=v_i+1;
+ }
+
+ if(v_j==1) { setverdict(pass); } //v_j is not accessible from outside the loop
+
+ }
+
+ control{
+
+ execute(TC_NegSem_1905_while_statement_001());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: There is no local or imported definition with name `v_j'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1906_do_while_statement_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT properly evaluates do-while statements >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1906_do_while_statement_001 NegSem_1906_do_while_statement_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:19.6, Ensure that the IUT properly evaluates do-while statements
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_1906_do_while_statement_001 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_1906_do_while_statement_001 () runs on GeneralComp{
+ var integer v_i:=1;
+
+ do {
+ var integer v_j:=1;
+ v_i:=v_i+1;
+ } while(v_i<10);
+
+ if(v_j==1) { setverdict(pass); } //v_j is not accessible from outside the loop
+
+ }
+
+
+ control{
+
+ execute(TC_NegSem_1906_do_while_statement_001());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: There is no local or imported definition with name `v_j'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1907_label_statement_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles label naming uniqueness. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1907_label_statement_001 NegSem_1907_label_statement_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:19.7, Ensure that the IUT correctly handles label naming uniqueness.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1907_label_statement_001 {
+
+
+ type record MessageType {
+ integer field1,
+ charstring field2
+ }
+
+ type port loopbackPort message {
+ inout MessageType
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ function f_test ( integer p_integer := 0 ) runs on GeneralComp return integer {
+ label L1;
+ return p_integer+1;
+ }
+
+
+ altstep AltSet1() runs on GeneralComp {
+ var integer v_LocalVar := f_test(); // local variable
+
+ [] messagePort.receive {
+ label L_A;
+ setverdict(pass);
+ label L_B;
+ }
+
+ }
+
+ testcase TC_NegSem_1907_label_statement_001 () runs on GeneralComp {
+ var MessageType v_testMessage;
+ timer t_timer;
+
+ v_testMessage:= {
+ field1 := 1,
+ field2 := "test string"
+ }
+
+ connect(self:messagePort,self:messagePort);
+
+ messagePort.send(v_testMessage);
+ t_timer.start( 1.0 );
+ label L1;
+
+ alt {
+ [] AltSet1();
+ [] messagePort.receive {
+ label L2;
+ setverdict(pass);
+ }
+ [] t_timer.timeout {
+ label L3;
+ }
+ }
+ label L1; //conflicting label names
+ }
+
+ control{
+ execute(TC_NegSem_1907_label_statement_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Duplicate label `L1'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_1907_label_statement_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles label syntax. >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_1907_label_statement_001 NegSyn_1907_label_statement_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:19.7, Ensure that the IUT correctly handles label syntax.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSyn_1907_label_statement_001 {
+
+
+ type record MessageType {
+ integer field1,
+ charstring field2
+ }
+
+ type port loopbackPort message {
+ inout MessageType
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ function f_test ( integer p_integer := 0 ) runs on GeneralComp return integer {
+ label L1;
+ return p_integer+1;
+ }
+
+
+ altstep AltSet1() runs on GeneralComp {
+ var integer v_LocalVar := f_test(); // local variable
+
+ [] messagePort.receive {
+ label L_A;
+ setverdict(pass);
+ label L_B;
+ }
+
+ }
+
+ testcase TC_NegSyn_1907_label_statement_001 () runs on GeneralComp {
+ var MessageType v_testMessage;
+ timer t_timer;
+
+ v_testMessage:= {
+ field1 := 1,
+ field2 := "test string"
+ }
+
+ connect(self:messagePort,self:messagePort);
+
+ messagePort.send(v_testMessage);
+ t_timer.start( 1.0 );
+ label L1;
+
+ alt {
+ [] AltSet1();
+
+ label L_wrong; //wrong label on the alt toplevel
+
+ [] messagePort.receive {
+ label L2;
+ setverdict(pass);
+ }
+ [] t_timer.timeout {
+ label L3;
+ }
+ }
+
+ label L4;
+ }
+
+ control{
+ execute(TC_NegSyn_1907_label_statement_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `label': syntax error, unexpected LabelKeyword, expecting '\}' or '\[
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_1907_label_statement_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles label syntax. >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_1907_label_statement_002 NegSyn_1907_label_statement_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:19.7, Ensure that the IUT correctly handles label syntax.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSyn_1907_label_statement_002 {
+
+
+ type record MessageType {
+ integer field1,
+ charstring field2
+ }
+
+ type port loopbackPort message {
+ inout MessageType
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ function f_test ( integer p_integer := 0 ) runs on GeneralComp return integer {
+ label L1;
+ return p_integer+1;
+ }
+
+
+ altstep AltSet1() runs on GeneralComp {
+ var integer v_LocalVar := f_test(); // local variable
+
+ label L_wrong; //wrong label on the altstep toplevel
+
+ [] messagePort.receive {
+ label L_A;
+ setverdict(pass);
+ label L_B;
+ }
+
+ }
+
+ testcase TC_NegSyn_1907_label_statement_002 () runs on GeneralComp {
+ var MessageType v_testMessage;
+ timer t_timer;
+
+ v_testMessage:= {
+ field1 := 1,
+ field2 := "test string"
+ }
+
+ connect(self:messagePort,self:messagePort);
+
+ messagePort.send(v_testMessage);
+ t_timer.start( 1.0 );
+ label L1;
+
+ alt {
+ [] AltSet1();
+ [] messagePort.receive {
+ label L2;
+ setverdict(pass);
+ }
+ [] t_timer.timeout {
+ label L3;
+ }
+ }
+
+ label L4;
+ }
+
+ control{
+ execute(TC_NegSyn_1907_label_statement_002());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `label': syntax error, unexpected LabelKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1908_goto_statement_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles goto statements. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1908_goto_statement_001 NegSem_1908_goto_statement_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:19.8, Ensure that the IUT correctly handles goto statements.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_1908_goto_statement_001 {
+
+ type record MessageType {
+ integer field1,
+ charstring field2
+ }
+
+ type port loopbackPort message {
+ inout MessageType
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ function f_test ( integer p_integer := 0 ) runs on GeneralComp return integer {
+ label L1;
+ return p_integer+1;
+ }
+
+
+ altstep AltSet1() runs on GeneralComp {
+ var integer v_LocalVar := f_test(); // local variable
+
+ [] messagePort.receive {
+ label L_A;
+ label L_B;
+ }
+
+ }
+
+ testcase TC_NegSem_1908_goto_statement_001 () runs on GeneralComp {
+ var MessageType v_testMessage;
+ timer t_timer;
+
+ v_testMessage:= {
+ field1 := 1,
+ field2 := "test string"
+ }
+
+ connect(self:messagePort,self:messagePort);
+
+ messagePort.send(v_testMessage);
+ t_timer.start( 1.0 );
+ label L1;
+ goto L2; //cannot jump into alt statements
+
+ alt {
+ [] AltSet1();
+ [] messagePort.receive {
+ label L2;
+ setverdict(pass);
+ }
+ [] t_timer.timeout {
+ label L2;
+ }
+ }
+
+ label L3;
+ setverdict(pass);
+
+ }
+
+ control{
+ execute(TC_NegSem_1908_goto_statement_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Label `L2' is used, but not defined
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1908_goto_statement_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles goto statements. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1908_goto_statement_002 NegSem_1908_goto_statement_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:19.8, Ensure that the IUT correctly handles goto statements.
+ ** @verdict pass reject
+ *****************************************************************/
+module NegSem_1908_goto_statement_002 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_1908_goto_statement_002 () runs on GeneralComp{
+ var integer v_i;
+ goto L1; //forbidden jump into a loop
+
+ for(v_i:=1; v_i<10; v_i:= v_i+1) {
+ label L1;
+ if(v_i==5) { break; }
+ }
+
+ }
+
+ control{
+
+ execute(TC_NegSem_1908_goto_statement_002());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Label `L1' is used, but not defined
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1908_goto_statement_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles goto statements. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1908_goto_statement_003 NegSem_1908_goto_statement_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:19.8, Ensure that the IUT correctly handles goto statements.
+ ** @verdict pass reject
+ *****************************************************************/
+module NegSem_1908_goto_statement_003 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_1908_goto_statement_003 () runs on GeneralComp{
+ var integer v_i:=1;
+ goto L1; //forbidden jump into a loop
+
+ if(v_i==2) {
+ label L1;
+ v_i:=1;
+ }
+ else {
+ v_i:=2;
+ goto L1; //forbidden jump into an if-else statement
+ }
+
+ }
+
+ control{
+
+ execute(TC_NegSem_1908_goto_statement_003());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 2>
+error: Label `L1' is used, but not defined
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1910_return_statement_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles return statements. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1910_return_statement_001 NegSem_1910_return_statement_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:19.10, Ensure that the IUT correctly handles return statements.
+ ** @verdict pass reject
+ *****************************************************************/
+module NegSem_1910_return_statement_001 {
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_1910_return_statement_001 () runs on GeneralComp{
+ setverdict(pass);
+ return 0; //testcase cannot have a return statement
+
+ }
+
+ control{
+
+ execute(TC_NegSem_1910_return_statement_001());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Return statement cannot be used in a testcase. It is allowed only in functions and altsteps
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1911_log_statement_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT properly evaluates log statements. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1911_log_statement_001 NegSem_1911_log_statement_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:19.11, Ensure that the IUT properly evaluates log statements
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_1911_log_statement_001 {
+
+ type component GeneralComp {
+ }
+
+ function f_no_return(integer p_arg) {
+ var integer v_f;
+ v_f:=p_arg;
+ }
+
+ testcase TC_NegSem_1911_log_statement_001 () runs on GeneralComp{
+ var integer v_i;
+
+ for(v_i:=1; v_i<10; v_i:= v_i+1) {
+ log("Function without return value: ", f_no_return(v_i) );
+ //not allowed to use function without return value
+ }
+
+ }
+
+ control{
+
+ execute(TC_NegSem_1911_log_statement_001());
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value, template, timer or port was expected instead of a call of function `@NegSem_1911_log_statement_001.f_no_return', which does not have return type
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h2. 20_statement_and_operations_for_alt folder
+.*---------------------------------------------------------------------*
+*---------------------------------------------------------------------*
+:h3. NegSem_2002_TheAltStatement_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - dynamic error if a test component is completely blocked >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_2002_TheAltStatement_001 NegSem_2002_TheAltStatement_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:20.2, dynamic error if a test component is completely blocked
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirement is tested:
+// The test case shall stop and indicate a dynamic error if a test component is
+// completely blocked. This means none of the alternatives can be chosen, no
+// relevant test component is running, no relevant timer is running and all
+// relevant ports contain at least one message, call, reply or exception that
+// do not match.
+
+module NegSem_2002_TheAltStatement_001 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port MyPort p;
+ }
+
+ template charstring m_test := "ping";
+
+ testcase TC_NegSem_2002_TheAltStatement_001() runs on GeneralComp {
+ timer t_tmr1;
+
+ connect(self:p,self:p);
+
+ p.send(m_test);
+ alt {
+ [] p.receive("abc") {
+ setverdict(pass);
+ }
+ [] t_tmr1.timeout {
+ setverdict(pass);
+ }
+ }
+ }
+
+ control {
+ execute(TC_NegSem_2002_TheAltStatement_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: None of the branches can be chosen in the alt statement in file NegSem_2002_TheAltStatement_001.ttcn
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2003_the_repeat_statement_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly processes repeat statements >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2003_the_repeat_statement_001 NegSem_2003_the_repeat_statement_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:20.3, Ensure that the IUT correctly processes repeat statements
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2003_the_repeat_statement_001 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port MyPort p;
+ }
+
+ template charstring m_test := "ping";
+
+ testcase TC_NegSem_2003_the_repeat_statement_001() runs on GeneralComp {
+ var integer counter := 1;
+
+ connect(self:p, self:p);
+ p.send(m_test);
+ p.send(m_test);
+
+ alt {
+ [counter == 1] p.receive(m_test) {
+ counter := 2;
+ repeat;
+ }
+ [counter == 2] p.receive(m_test) {
+ setverdict(pass);
+ }
+ }
+ repeat; //repeat statement is used outside of an alt or call structure
+ }
+
+ control {
+ execute(TC_NegSem_2003_the_repeat_statement_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Repeat statement cannot be used outside alt statements, altsteps or response and exception handling part of call operations
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2004_InterleaveStatement_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - goto inside interleave >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2004_InterleaveStatement_004 NegSem_2004_InterleaveStatement_004.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:20.4, goto inside interleave
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirement is tested:
+// Control transfer statements for, while, do-while, goto, activate,
+// deactivate, stop, repeat, return, direct call of altsteps as alternatives
+// and (direct and indirect) calls of user-defined functions, which include
+// reception statements, shall not be used in interleave statements.
+
+module NegSem_2004_InterleaveStatement_004 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port MyPort p;
+ }
+
+ testcase TC_NegSem_2004_InterleaveStatement_004() runs on GeneralComp {
+
+ connect(self:p, self:p);
+
+ p.send(charstring:"foo");
+ p.send(charstring:"bar");
+
+ interleave {
+ [] p.receive(charstring:"bar") {
+ goto L1;
+ }
+ [] p.receive(charstring:"foo") {
+ }
+ }
+ label L1;
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_2004_InterleaveStatement_004());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Goto statement is not allowed within an interleave statement
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2004_InterleaveStatement_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - repeat inside interleave >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2004_InterleaveStatement_008 NegSem_2004_InterleaveStatement_008.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:20.4, repeat inside interleave
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirement is tested:
+// Control transfer statements for, while, do-while, goto, activate,
+// deactivate, stop, repeat, return, direct call of altsteps as alternatives
+// and (direct and indirect) calls of user-defined functions, which include
+// reception statements, shall not be used in interleave statements.
+
+module NegSem_2004_InterleaveStatement_008 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port MyPort p;
+ }
+
+ testcase TC_NegSem_2004_InterleaveStatement_008() runs on GeneralComp {
+
+ connect(self:p, self:p);
+
+ p.send(charstring:"foo");
+ p.send(charstring:"bar");
+
+ interleave {
+ [] p.receive(charstring:"bar") {
+ repeat;
+ }
+ [] p.receive(charstring:"foo") {
+ }
+ }
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_2004_InterleaveStatement_008());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Repeat statement is not allowed within an interleave statement
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2004_InterleaveStatement_009 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - return inside interleave >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2004_InterleaveStatement_009 NegSem_2004_InterleaveStatement_009.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:20.4, return inside interleave
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirement is tested:
+// Control transfer statements for, while, do-while, goto, activate,
+// deactivate, stop, repeat, return, direct call of altsteps as alternatives
+// and (direct and indirect) calls of user-defined functions, which include
+// reception statements, shall not be used in interleave statements.
+
+module NegSem_2004_InterleaveStatement_009 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port MyPort p;
+ }
+
+ function f_interleave() runs on GeneralComp {
+ interleave {
+ [] p.receive(charstring:"bar") {
+ setverdict(pass);
+ return;
+ }
+ [] p.receive(charstring:"foo") {
+ }
+ }
+ }
+
+ testcase TC_NegSem_2004_InterleaveStatement_009() runs on GeneralComp {
+
+ connect(self:p, self:p);
+
+ p.send(charstring:"foo");
+ p.send(charstring:"bar");
+ f_interleave();
+ }
+
+ control{
+ execute(TC_NegSem_2004_InterleaveStatement_009());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Return statement is not allowed within an interleave statement
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2004_InterleaveStatement_010 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - explicit altstep call inside interleave >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2004_InterleaveStatement_010 NegSem_2004_InterleaveStatement_010.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:20.4, explicit altstep call inside interleave
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirement is tested:
+// Control transfer statements for, while, do-while, goto, activate,
+// deactivate, stop, repeat, return, direct call of altsteps as alternatives
+// and (direct and indirect) calls of user-defined functions, which include
+// reception statements, shall not be used in interleave statements.
+
+module NegSem_2004_InterleaveStatement_010 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port MyPort p;
+ }
+
+ altstep a_receive() runs on GeneralComp {
+ [] p.receive(charstring:?) {
+ }
+ }
+
+ testcase TC_NegSem_2004_InterleaveStatement_010() runs on GeneralComp {
+
+ connect(self:p, self:p);
+
+ p.send(charstring:"foo");
+ p.send(charstring:"bar");
+ p.send(charstring:"ding");
+
+ interleave {
+ [] p.receive(charstring:"bar") {
+ a_receive();
+ }
+ [] p.receive(charstring:"foo") {
+ }
+ }
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_2004_InterleaveStatement_010());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Invocation of an altstep is not allowed within an interleave statement
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2004_InterleaveStatement_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Validate that interleave statements are properly handled. >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2004_InterleaveStatement_001 NegSyn_2004_InterleaveStatement_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:20.4, Validate that interleave statements are properly handled.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSyn_2004_InterleaveStatement_001 {
+
+ type port loopbackPort message {
+ inout MyMessageType
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort pt_myPort1,pt_myPort2;
+ }
+
+ type record MyMessageType {
+ integer field1,
+ charstring field2,
+ boolean field3
+ }
+
+ testcase TC_NegSyn_2004_InterleaveStatement_001() runs on GeneralComp {
+
+ connect(self:pt_myPort1, self:pt_myPort1);
+ connect(self:pt_myPort2, self:pt_myPort2);
+
+ pt_myPort1.send(MyMessageType:{1, "aaa", true});
+
+ template MyMessageType MySig1 := {1,"aaa",true};
+ template MyMessageType MySig2 := {2,"bbb",true};
+ template MyMessageType MySig3 := {3,"ccc",true};
+
+ timer t_timer;
+ t_timer.start(1.0);
+
+ interleave {
+ [] pt_myPort1.receive(MySig1)
+ {
+ pt_myPort2.send(MySig2);
+ alt {
+ [] pt_myPort1.receive(MySig3) {
+ setverdict(pass);
+ }
+ [] t_timer.timeout {
+ setverdict(fail);
+ }
+ }
+ }
+ [] pt_myPort2.receive(MySig2)
+ {
+ pt_myPort1.send(MySig3);
+ }
+ [else] {
+ setverdict(pass);
+ }
+ }
+
+
+ }
+
+ control{
+ execute(TC_NegSyn_2004_InterleaveStatement_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `else': syntax error, unexpected ElseKeyword, expecting '\]'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2004_InterleaveStatement_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Validate that interleave statements are properly handled. >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2004_InterleaveStatement_002 NegSyn_2004_InterleaveStatement_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:20.4, Validate that interleave statements are properly handled.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSyn_2004_InterleaveStatement_002 {
+
+ type port loopbackPort message {
+ inout MyMessageType
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort pt_myPort1,pt_myPort2;
+ }
+
+ type record MyMessageType {
+ integer field1,
+ charstring field2,
+ boolean field3
+ }
+
+ testcase TC_NegSyn_2004_InterleaveStatement_002() runs on GeneralComp {
+
+ connect(self:pt_myPort1, self:pt_myPort1);
+ connect(self:pt_myPort2, self:pt_myPort2);
+
+ pt_myPort1.send(MyMessageType:{1, "aaa", true});
+
+ template MyMessageType MySig1 := {1,"aaa",true};
+ template MyMessageType MySig2 := {2,"bbb",true};
+ template MyMessageType MySig3 := {3,"ccc",true};
+
+ timer t_timer;
+ t_timer.start(1.0);
+ var integer v:=1;
+
+ interleave {
+ [v>0] pt_myPort1.receive(MySig1) //boolean guard must be empty
+ {
+ pt_myPort2.send(MySig2);
+ alt {
+ [] pt_myPort1.receive(MySig3) {
+ setverdict(pass);
+ }
+ [] t_timer.timeout {
+ setverdict(fail);
+ }
+ }
+ }
+ [v<0] pt_myPort2.receive(MySig2) //boolean guard must be empty
+ {
+ pt_myPort1.send(MySig3);
+ }
+
+ }
+
+
+ }
+
+ control{
+ execute(TC_NegSyn_2004_InterleaveStatement_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 2>
+error: at or before token `v': syntax error, unexpected Identifier, expecting '\]'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_200501_the_default_mechanism_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify unsuccessful default termination >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_200501_the_default_mechanism_001 NegSem_200501_the_default_mechanism_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:20.5.1, verify unsuccessful default termination
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// For each test component the defaults, i.e. activated altsteps, are stored as an ordered
+// list. The defaults are listed in the reversed order of their activation i.e. the last
+// activated default is the first element in the list of active defaults.
+
+// The default mechanism is evoked at the end of each alt statement, if due to the
+// actual snapshot none of the specified alternatives could be executed. An evoked
+// default mechanism invokes the first altstep in the list of defaults, i.e. the last
+// activated default, and waits for the result of its termination. The termination can
+// be successful or unsuccessful.
+
+// In the case of an unsuccessful termination, the default mechanism invokes the next
+// default in the list. If the last default in the list has terminated unsuccessfully,
+// the default mechanism will return to the place in the alt statement in which it
+// has been invoked, i.e. at the end of the alt statement, and indicate an unsuccessful
+// default execution. An unsuccessful default execution will also be indicated if the list
+// of defaults is empty. An unsuccessful default execution may cause a new snapshot or
+// a dynamic error if the test component is blocked.
+
+module NegSem_200501_the_default_mechanism_001 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ altstep a1() runs on GeneralComp {
+ [] p.receive(integer:2) { // no match
+ setverdict(pass, "First default");
+ }
+ }
+
+ altstep a2() runs on GeneralComp {
+ [] p.receive(integer:1) { // no match
+ setverdict(fail, "Last default");
+ }
+ }
+
+ testcase TC_NegSem_200501_the_default_mechanism_001() runs on GeneralComp {
+ activate(a1());
+ activate(a2());
+
+ connect(self:p, self:p);
+
+ p.send(integer:5);
+ alt {
+ [] p.receive(integer:0) { // not expected: leads to default invocation
+ setverdict(fail);
+ }
+ } // defaults are terminated unsuccessfully -> dynamic test case error
+ }
+
+ control{
+ execute(TC_NegSem_200501_the_default_mechanism_001(), 1.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: None of the branches can be chosen in the alt statement in file NegSem_200501_the_default_mechanism_001.ttcn
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_200502_the_activate_operation_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify error is generated if activated alstep runs on incompatible component >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_200502_the_activate_operation_001 NegSem_200502_the_activate_operation_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:20.5.2, verify error is generated if activated alstep runs on incompatible component
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// An activate operation will put the referenced altstep as the first element into the list
+// of defaults and return a default reference.
+// The effect of an activate operation is local to the test component in which it is called.
+
+module NegSem_200502_the_activate_operation_001 {
+
+ type component GeneralComp {
+ }
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component TestComp {
+ port P p;
+ }
+
+ altstep a() runs on TestComp {
+ [] p.receive {}
+ }
+
+ testcase TC_NegSem_200502_the_activate_operation_001() runs on GeneralComp {
+ activate(a());
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_200502_the_activate_operation_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Runs on clause mismatch: A definition that runs on component type `@NegSem_200502_the_activate_operation_001.GeneralComp' cannot activate altstep `@NegSem_200502_the_activate_operation_001.a', which runs on `@NegSem_200502_the_activate_operation_001.TestComp'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_200502_the_activate_operation_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify error is generated when passing local timer >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_200502_the_activate_operation_002 NegSem_200502_the_activate_operation_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:20.5.2, verify error is generated when passing local timer
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// All timer instances in the actual parameter list shall be declared as component type local timers.
+
+module NegSem_200502_the_activate_operation_002 {
+
+ type component GeneralComp {
+ }
+
+ altstep a(timer t_tmr) runs on GeneralComp {
+ [] t_tmr.timeout {}
+ }
+
+ testcase TC_NegSem_200502_the_activate_operation_002() runs on GeneralComp {
+ if (true) {
+ timer t_local := 0.5;
+ t_local.start;
+ activate(a(t_local));
+ }
+ any port.receive;
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_200502_the_activate_operation_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Parameter #1 of altstep `@NegSem_200502_the_activate_operation_002.a' refers to timer `t_local', which is a local definition within a statement block and may have shorter lifespan than the activated default. Only references to variables and timers defined in the component type can be passed to activated defaults
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_200502_the_activate_operation_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify error is generated when activating function >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_200502_the_activate_operation_005 NegSem_200502_the_activate_operation_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:20.5.2, verify error is generated when activating function
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// An activate operation will put the referenced altstep as the first element into the list of defaults
+// and return a default reference.
+
+module NegSem_200502_the_activate_operation_005 {
+
+ type component GeneralComp {
+ }
+
+ function f() runs on GeneralComp {
+ alt {
+ [] any port.receive {}
+ }
+ }
+
+ testcase TC_NegSem_200502_the_activate_operation_005() runs on GeneralComp {
+ activate(f());
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_200502_the_activate_operation_005());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to an altstep was expected in the argument instead of function `@NegSem_200502_the_activate_operation_005.f'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_200502_the_activate_operation_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - local timer as a parameter of activated altstep in module control >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_200502_the_activate_operation_006 NegSem_200502_the_activate_operation_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:20.5.2, local timer as a parameter of activated altstep in module control
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// For altsteps activated in module control or in functions or altsteps invoked
+// directly or indirectly from module control, all timer instances in the actual
+// parameter list shall be declared in the highest scope of the module control
+// part (see clause 26.2). Timers from lower scopes of the module control part
+// (i.e. from the nested statement blocks) are not allowed to occur in the actual
+// parameter list.
+
+module NegSem_200502_the_activate_operation_006 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ altstep a(timer t_tmr) {
+ [] t_tmr.timeout { log ("Timeout in default"); }
+ }
+
+ testcase TC_NegSem_200502_the_activate_operation_006() runs on GeneralComp {
+ setverdict(pass);
+ }
+
+ function f_test() {
+ timer t_tmr := 1.0, t_tmr2;
+ t_tmr.start;
+ activate(a(t_tmr));
+ alt {
+ [] t_tmr2.timeout { }
+ }
+ }
+
+ control{
+ f_test();
+ execute(TC_NegSem_200502_the_activate_operation_006());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Parameter #1 of altstep `@NegSem_200502_the_activate_operation_006.a' refers to timer `t_tmr', which is a local definition within a statement block and may have shorter lifespan than the activated default. Only references to variables and timers defined in the component type can be passed to activated defaults
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_200502_the_activate_operation_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - local timer (referenced through timer parameter) as a parameter of activated altstep in module control >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_200502_the_activate_operation_007 NegSem_200502_the_activate_operation_007.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:20.5.2, local timer (referenced through timer parameter) as a parameter of activated altstep in module control
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// For altsteps activated in module control or in functions or altsteps invoked
+// directly or indirectly from module control, all timer instances in the actual
+// parameter list shall be declared in the highest scope of the module control
+// part (see clause 26.2). Timers from lower scopes of the module control part
+// (i.e. from the nested statement blocks) are not allowed to occur in the actual
+// parameter list.
+
+module NegSem_200502_the_activate_operation_007 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ altstep a(timer t_tmr) {
+ [] t_tmr.timeout { log ("Timeout in default"); }
+ }
+
+ testcase TC_NegSem_200502_the_activate_operation_007() runs on GeneralComp {
+ setverdict(pass);
+ }
+
+ function f_activate(timer t_tmr) {
+ activate(a(t_tmr));
+ }
+
+ function f_test() {
+ timer t_tmr := 1.0;
+ t_tmr.start;
+ f_activate(t_tmr); // t_tmr is a local timer, this should lead to an activation error in f_activate
+ }
+
+ control{
+ timer t_tmr2;
+ f_test();
+ alt {
+ [] t_tmr2.timeout { }
+ }
+ execute(TC_NegSem_200502_the_activate_operation_007());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Parameter #1 of altstep `@NegSem_200502_the_activate_operation_007.a' refers to timer parameter `t_tmr', which may have shorter lifespan than the activated default. Only references to variables and timers defined in the component type can be passed to activated defaults
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_200503_the_deactivate_operation_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that deactivate uninitialized default causes error >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_200503_the_deactivate_operation_002 NegSem_200503_the_deactivate_operation_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:20.5.1, verify that deactivate uninitialized default causes error
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Calling a deactivate operation with an uninitialized default reference variable
+// shall cause a runtime error.
+
+module NegSem_200503_the_deactivate_operation_002 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ altstep a1() runs on GeneralComp {
+ [] p.receive(integer:?) {
+ setverdict(pass);
+ }
+ }
+
+ testcase TC_NegSem_200503_the_deactivate_operation_002() runs on GeneralComp {
+ var default v_default;
+ var boolean v_flag := false;
+ if (v_flag) {
+ v_default := activate(a1());
+ }
+
+ connect(self:p, self:p);
+ p.send(integer:1);
+
+ deactivate(v_default); // uninitialized -> runtime error
+
+ alt {
+ [] p.receive(integer:0) { // not expected: leads to default invocation
+ setverdict(fail);
+ }
+ }
+ }
+
+ control{
+ execute(TC_NegSem_200503_the_deactivate_operation_002(), 1.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Performing a deactivate operation on an unbound default reference.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_200503_the_deactivate_operation_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - verify that error is generated when deactivated reference is on incorrect type >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_200503_the_deactivate_operation_003 NegSem_200503_the_deactivate_operation_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:20.5.1, verify that error is generated when deactivated reference is on incorrect type
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// A deactivate operation will remove the referenced default from the list of defaults.
+
+module NegSem_200503_the_deactivate_operation_003 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ altstep a1() runs on GeneralComp {
+ [] p.receive(integer:?) {
+ setverdict(pass);
+ }
+ }
+
+ testcase TC_NegSem_200503_the_deactivate_operation_003() runs on GeneralComp {
+ var GeneralComp v_ptc := null;
+
+ connect(self:p, self:p);
+ p.send(integer:1);
+
+ deactivate(v_ptc); // incorrect type -> error
+
+ alt {
+ [] p.receive(integer:0) { // not expected: leads to default invocation
+ setverdict(fail);
+ }
+ }
+ }
+
+ control{
+ execute(TC_NegSem_200503_the_deactivate_operation_003());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A value or expression of type default was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h1.References
+.*---------------------------------------------------------------------*
+:list.
+:li D='[1]'.1/174 02-CRL 113 200/5 Uen
+:nl.Statement of Compliance for TITAN project
+:li D='[2]'.ETSI ES 201 873-1, v4.7.1 Mockup v1 (2015-06):
+:nl.Testing and Test Control Notation version 3.,
+:nl.Part 1: TTCN-3 Core Language
+:elist.
--- /dev/null
+.******************************************************************************
+.* Copyright (c) 2000-2016 Ericsson Telecom AB
+.* All rights reserved. This program and the accompanying materials
+.* are made available under the terms of the Eclipse Public License v1.0
+.* which accompanies this distribution, and is available at
+.* http://www.eclipse.org/legal/epl-v10.html
+.*
+.* Contributors:
+.* Adrien Kirjak – initial implementation
+.*
+.******************************************************************************/
+text.
+:lang eng.
+.*
+:docname.Test Description
+:docno.xz/152 91-CRL 113 200 Uen
+:rev.PA1
+:date.2016-04-04
+.*
+:prep.ETH/XZ EADRKIR
+:subresp.EADRKIR
+:appr.ETH/XZ (Elemer Lelik)
+:checked.
+.*
+:title.ETSI TTCN3 Negative Conformance Test
+:contents level=3.
+.*---------------------------------------------------------------------*
+:h1.PREREQUISITES AND PREPARATIONS
+.*---------------------------------------------------------------------*
+.*---------------------------------------------------------------------*
+:h2.Scope of the Test Object
+.*---------------------------------------------------------------------*
+:xmp tab=1 nokeep.
+This TD contains negative tests from ETSI TTCN3 Conformance Test's 21_configuration_operations folder.
+
+:exmp.
+
+.*---------------------------------------------------------------------*
+:h2.Test Tools
+.*---------------------------------------------------------------------*
+:p.:us.Software Tools:eus.
+:xmp tab=2 nokeep.
+
+ SAtester.pl
+
+:exmp.
+:np.
+
+.*---------------------------------------------------------------------*
+:h1.REQUIREMENT-BASED TESTS
+.*---------------------------------------------------------------------*
+.*---------------------------------------------------------------------*
+:h2. 2101_connection_operations folder
+.*---------------------------------------------------------------------*
+*---------------------------------------------------------------------*
+:h3. NegSem_1601_toplevel_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Verify that connect operation cannot contain a system port >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_1601_toplevel_001 NegSem_1601_toplevel_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.1, Verify that connect operation cannot contain a system port
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// In the case of connections between two test components, the connect operation shall be used.
+
+module NegSem_2101_TopLevel_001 {
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ testcase TC_NegSem_210101_TopLevel_001() runs on GeneralComp system GeneralComp {
+ connect(self:p, system:p); // error expected
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_210101_TopLevel_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The `system' component reference shall not be used in `connect' operation
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_1601_toplevel_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Verify that map operation fails if both operands are component ports >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_1601_toplevel_002 NegSem_1601_toplevel_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.1, Verify that map operation fails if both operands are component ports
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// When connecting a test component to a test system interface the map operation shall be used.
+
+module NegSem_2101_TopLevel_002 {
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ testcase TC_NegSem_210101_TopLevel_002() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralComp.create;
+ map(self:p, v_ptc:p); // error expected
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_210101_TopLevel_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Both arguments of map operation refer to test component ports.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210101_connect_and_map_operations_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Verify that connect operation rejects ports with incompatible message type lists >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210101_connect_and_map_operations_001 NegSem_210101_connect_and_map_operations_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.1.1, Verify that connect operation rejects ports with incompatible message type lists
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// For the connect operations, only consistent connections are allowed.
+// a) Assuming the following:
+// 1) ports PORT1 and PORT2 are the ports to be connected;
+// 2) inlist-PORT1 defines the messages or procedures of the in-direction of PORT1;
+// 3) outlist-PORT1defines the messages or procedures of the out-direction of PORT1;
+// 4) inlist-PORT2 defines the messages or procedures of the in-direction of PORT2; and
+// 5) outlist-PORT2 defines the messages or procedures of the out-direction of PORT2.
+// b) The connect operation is allowed if and only if:
+// outlist-PORT1 âÂ\8aÂ\86 inlist-PORT2 and outlist-PORT2 âÂ\8aÂ\86 inlist-PORT1.
+//
+// In this test, inlists and outlists are completely incompatible
+
+module NegSem_210101_connect_and_map_operations_001 {
+ type record R {
+ integer field1,
+ charstring field2
+ }
+
+ type port P1 message {
+ inout integer;
+ in R;
+ } with {extension "internal"}
+
+ type port P2 message {
+ out bitstring;
+ in boolean;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ }
+
+ type component C1 {
+ port P1 p;
+ }
+
+ type component C2 {
+ port P2 p;
+ }
+
+ testcase TC_NegSem_210101_connect_and_map_operations_001() runs on GeneralComp system GeneralComp {
+ var C1 v_ptc1 := C1.create;
+ var C2 v_ptc2 := C2.create;
+ connect(v_ptc1:p, v_ptc2:p); // incompatible message types: error expected
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_210101_connect_and_map_operations_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The connection between port types `@NegSem_210101_connect_and_map_operations_001.P1' and `@NegSem_210101_connect_and_map_operations_001.P2' is not consistent
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210101_connect_and_map_operations_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Verify that connect operation rejects ports with only partially compatible message type lists >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210101_connect_and_map_operations_002 NegSem_210101_connect_and_map_operations_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.1.1, Verify that connect operation rejects ports with only partially compatible message type lists
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// For the connect operations, only consistent connections are allowed.
+// a) Assuming the following:
+// 1) ports PORT1 and PORT2 are the ports to be connected;
+// 2) inlist-PORT1 defines the messages or procedures of the in-direction of PORT1;
+// 3) outlist-PORT1defines the messages or procedures of the out-direction of PORT1;
+// 4) inlist-PORT2 defines the messages or procedures of the in-direction of PORT2; and
+// 5) outlist-PORT2 defines the messages or procedures of the out-direction of PORT2.
+// b) The connect operation is allowed if and only if:
+// outlist-PORT1 âÂ\8aÂ\86 inlist-PORT2 and outlist-PORT2 âÂ\8aÂ\86 inlist-PORT1.
+//
+// In this test, one pair in outlist-PORT1 and inlist-PORT2 is incompatible (using
+// strong typing rules)
+
+module NegSem_210101_connect_and_map_operations_002 {
+ type record R {
+ integer field1,
+ charstring field2
+ }
+
+ type record R2 {
+ integer field1,
+ charstring field2
+ }
+
+ type port P1 message {
+ inout integer;
+ out R;
+ } with {extension "internal"}
+
+ type port P2 message {
+ in R2, integer;
+ out integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ }
+
+ type component C1 {
+ port P1 p;
+ }
+
+ type component C2 {
+ port P2 p;
+ }
+
+ testcase TC_NegSem_210101_connect_and_map_operations_002() runs on GeneralComp system GeneralComp {
+ var C1 v_ptc1 := C1.create;
+ var C2 v_ptc2 := C2.create;
+ // R2 and R are compatible types, but strong typing is required in case of connection operation
+ connect(v_ptc1:p, v_ptc2:p); // incompatible message types: error expected
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_210101_connect_and_map_operations_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The connection between port types `@NegSem_210101_connect_and_map_operations_002.P1' and `@NegSem_210101_connect_and_map_operations_002.P2' is not consistent
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210101_connect_and_map_operations_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Verify that map operation rejects ports with incompatible message type lists >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210101_connect_and_map_operations_003 NegSem_210101_connect_and_map_operations_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.1.1, Verify that map operation rejects ports with incompatible message type lists
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// For the connect operations, only consistent connections are allowed.
+// a) Assuming the following:
+// 1) ports PORT1 and PORT2 are the ports to be connected;
+// 2) inlist-PORT1 defines the messages or procedures of the in-direction of PORT1;
+// 3) outlist-PORT1defines the messages or procedures of the out-direction of PORT1;
+// 4) inlist-PORT2 defines the messages or procedures of the in-direction of PORT2; and
+// 5) outlist-PORT2 defines the messages or procedures of the out-direction of PORT2.
+// c) The map operation (assuming PORT2 is the test system interface port) is allowed if
+// and only if:
+// outlist-PORT1 âÂ\8aÂ\86 outlist-PORT2 and inlist-PORT2 âÂ\8aÂ\86 inlist-PORT1.
+//
+// In this test, inlists and outlists are completely incompatible
+
+module NegSem_210101_connect_and_map_operations_003 {
+ type record R {
+ integer field1,
+ charstring field2
+ }
+
+ type port P1 message {
+ inout integer;
+ out R;
+ } with {extension "internal"}
+
+ type port P2 message {
+ out boolean;
+ in bitstring;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P1 p
+ }
+
+ type component SystemComp {
+ port P2 p;
+ }
+
+ testcase TC_NegSem_210101_connect_and_map_operations_003() runs on GeneralComp system SystemComp {
+ map(system:p, self:p); // incompatible message types: error expected
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_210101_connect_and_map_operations_003());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The mapping between system port type `@NegSem_210101_connect_and_map_operations_003.P2' and test component port type `@NegSem_210101_connect_and_map_operations_003.P1' is not consistent
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210101_connect_and_map_operations_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Verify that connect operation rejects ports with only partially compatible message type lists >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210101_connect_and_map_operations_004 NegSem_210101_connect_and_map_operations_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.1.1, Verify that connect operation rejects ports with only partially compatible message type lists
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// For the connect operations, only consistent connections are allowed.
+// a) Assuming the following:
+// 1) ports PORT1 and PORT2 are the ports to be connected;
+// 2) inlist-PORT1 defines the messages or procedures of the in-direction of PORT1;
+// 3) outlist-PORT1defines the messages or procedures of the out-direction of PORT1;
+// 4) inlist-PORT2 defines the messages or procedures of the in-direction of PORT2; and
+// 5) outlist-PORT2 defines the messages or procedures of the out-direction of PORT2.
+// c) The map operation (assuming PORT2 is the test system interface port) is allowed if
+// and only if:
+// outlist-PORT1 âÂ\8aÂ\86 outlist-PORT2 and inlist-PORT2 âÂ\8aÂ\86 inlist-PORT1.
+//
+// In this test, one pair in outlist-PORT1 and inlist-PORT2 is incompatible (using
+// strong typing rules)
+
+module NegSem_210101_connect_and_map_operations_004 {
+ type record R {
+ integer field1,
+ charstring field2
+ }
+
+ type record R2 {
+ integer field1,
+ charstring field2
+ }
+
+ type port P1 message {
+ in integer;
+ inout R;
+ } with {extension "internal"}
+
+ type port P2 message {
+ in integer, R;
+ out R2;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P1 p
+ }
+
+ type component SystemComp {
+ port P2 p;
+ }
+
+ testcase TC_NegSem_210101_connect_and_map_operations_004() runs on GeneralComp system SystemComp {
+ // R2 and R are compatible types, but strong typing is required in case of connection operation
+ map(system:p, self:p); // incompatible message types: error expected
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_210101_connect_and_map_operations_004());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The mapping between system port type `@NegSem_210101_connect_and_map_operations_004.P2' and test component port type `@NegSem_210101_connect_and_map_operations_004.P1' is not consistent
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210101_connect_and_map_operations_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - violation of strong typing rules for local ports in connect operations >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210101_connect_and_map_operations_008 NegSem_210101_connect_and_map_operations_008.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.1.1, violation of strong typing rules for local ports in connect operations
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// If the type of the component referenced in a connection operation is known (either
+// when the component reference is a variable or value returned from a function or the
+// type is defined in the runs on, mtc or system clause of the calling function), the
+// referenced port declaration shall be present in this component type.
+
+module NegSem_210101_connect_and_map_operations_008 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ type component GeneralCompEx extends GeneralComp {
+ port P p2;
+ }
+
+ function f_connect() runs on GeneralComp {
+ connect(self:p, self:p2); // although the actual instance of self contains the p2 port,
+ // it cannot be referenced as the "runs on" clause contains the GeneralComp type and
+ // not GeneralCompEx
+ }
+
+ testcase TC_NegSem_210101_connect_and_map_operations_008() runs on GeneralCompEx system GeneralComp {
+ f_connect();
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_210101_connect_and_map_operations_008());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Component type `@NegSem_210101_connect_and_map_operations_008.GeneralComp' does not have port with name `p2'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210101_connect_and_map_operations_010 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - violation of strong typing rules for PTC ports in connect operations >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210101_connect_and_map_operations_010 NegSem_210101_connect_and_map_operations_010.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.1.1, violation of strong typing rules for PTC ports in connect operations
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// If the type of the component referenced in a connection operation is known (either
+// when the component reference is a variable or value returned from a function or the
+// type is defined in the runs on, mtc or system clause of the calling function), the
+// referenced port declaration shall be present in this component type.
+
+module NegSem_210101_connect_and_map_operations_010 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ type component GeneralCompEx extends GeneralComp {
+ port P p2;
+ }
+
+ testcase TC_NegSem_210101_connect_and_map_operations_010() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralCompEx.create;
+ connect(self:p, v_ptc:p2); // although the actual PTC instance contains the p2 port,
+ // it cannot be referenced as the variable v_ptc is of the GeneralComp type and
+ // not GeneralCompEx
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_210101_connect_and_map_operations_010());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Component type `@NegSem_210101_connect_and_map_operations_010.GeneralComp' does not have port with name `p2'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210101_connect_and_map_operations_013 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - violation of strong typing rules for PTC ports in map operations >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210101_connect_and_map_operations_013 NegSem_210101_connect_and_map_operations_013.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.1.1, violation of strong typing rules for PTC ports in map operations
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// If the type of the component referenced in a connection operation is known (either
+// when the component reference is a variable or value returned from a function or the
+// type is defined in the runs on, mtc or system clause of the calling function), the
+// referenced port declaration shall be present in this component type.
+
+module NegSem_210101_connect_and_map_operations_013 {
+
+ type port P message {
+ inout integer;
+ //map param (integer p_par1); // map param not implemented
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ type component GeneralCompEx extends GeneralComp {
+ port P p2;
+ }
+
+ testcase TC_NegSem_210101_connect_and_map_operations_013() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralCompEx.create;
+ map(system:p, v_ptc:p2); // although the actual PTC instance contains the p2 port,
+ // it cannot be referenced as the variable v_ptc is of the GeneralComp type and
+ // not GeneralCompEx
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_210101_connect_and_map_operations_013());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Component type `@NegSem_210101_connect_and_map_operations_013.GeneralComp' does not have port with name `p2'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210101_connect_operation_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the the IUT does not allows two output port connection >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210101_connect_operation_001 NegSem_210101_connect_operation_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.1.1, Ensure that the the IUT does not allows two output port connection
+ ** @verdict pass reject
+ ***************************************************/
+//Test the two output port cannot connect
+module NegSem_210101_connect_operation_001{
+
+ type port myport message {
+ out integer
+ } with {extension "internal"}
+
+ type component Mysystem
+ {
+ port myport messagePort;
+ }
+
+ testcase TC_NegSem_210101_connect_operation_001() runs on Mysystem system Mysystem {
+ var Mysystem MyCompA;
+ var Mysystem MyCompB;
+
+ MyCompA:=Mysystem.create;
+ MyCompB:=Mysystem.create;
+
+ connect(MyCompA:messagePort, MyCompB:messagePort); //not allowed messageports are output
+
+ }
+
+ control{
+ execute(TC_NegSem_210101_connect_operation_001());
+ }
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The connection between port types `@NegSem_210101_connect_operation_001.myport' and `@NegSem_210101_connect_operation_001.myport' is not consistent
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210101_connect_operation_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that IUT cannot map input port with output port >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210101_connect_operation_001 NegSem_210101_connect_operation_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.1.1, Ensure that IUT cannot map input port with output port
+ ** @verdict pass reject
+ ***************************************************/
+
+// Mycompport A P1 is output port mapped to SUT in port
+module NegSem_210101_map_operation_002{
+
+ type port loopbackPort message {
+ in integer
+ } with {extension "internal"}
+
+ type port IntegerOutputPortType message {
+ out integer
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port IntegerOutputPortType MycomportA
+ }
+
+ type component MyTestSystemInterface
+ {
+ port loopbackPort messagePort
+ }
+
+ // MyTestSystemInterface is the test system interface
+ testcase TC_NegSem_210101_map_operation_002() runs on GeneralComp system MyTestSystemInterface {
+
+ // establishing the port connections
+ map(mtc:MycomportA, system:messagePort);
+ //not allowed: MycomportA is out port, meanwhile MySysteminterface port is input
+
+ setverdict(fail);
+
+ }
+
+ control{
+ execute(TC_NegSem_210101_map_operation_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The mapping between test component port type `@NegSem_210101_map_operation_002.IntegerOutputPortType' and system port type `@NegSem_210101_map_operation_002.loopbackPort' is not consistent
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210102_disconnect_and_unmap_operations_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Verify that unmap operation cannot contain a system port reference >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_210102_disconnect_and_unmap_operations_001 NegSem_210102_disconnect_and_unmap_operations_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.1.2, Verify that unmap operation cannot contain a system port reference
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// The disconnect and unmap operations are the opposite operations of connect and map.
+// (21.1) The ports of a test component can be connected to other components or to the
+// ports of the test system interface. When connecting a test component to a test system
+// interface the map operation shall be used.
+
+module NegSem_210102_disconnect_and_unmap_operations_001 {
+
+ type port P message {
+ inout integer
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ testcase TC_NegSem_210102_disconnect_and_unmap_operations_001() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralComp.create;
+
+ connect(self:p, v_ptc:p);
+ unmap(self:p, v_ptc:p); // no system port reference: error expected
+ }
+
+ control{
+ execute(TC_NegSem_210102_disconnect_and_unmap_operations_001());
+ }
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Both arguments of unmap operation refer to test component ports.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210102_disconnect_and_unmap_operations_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - violation of strong typing rules for local ports in disconnect operations >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210102_disconnect_and_unmap_operations_008 NegSem_210102_disconnect_and_unmap_operations_008.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.1.2, violation of strong typing rules for local ports in disconnect operations
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// If the type of the component referenced in a connection operation is known (either
+// when the component reference is a variable or value returned from a function or the
+// type is defined the runs on, mtc or system clause of the calling function), the
+// referenced port declaration shall be present in this component type.
+
+module NegSem_210102_disconnect_and_unmap_operations_008 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ type component GeneralCompEx extends GeneralComp {
+ port P p2;
+ }
+
+ function f_disconnect() runs on GeneralComp {
+ disconnect(self:p, self:p2); // although the actual instance of self contains the p2 port,
+ // it cannot be referenced as the "runs on" clause contains the GeneralComp type and
+ // not GeneralCompEx
+ }
+
+ testcase TC_NegSem_210102_disconnect_and_unmap_operations_008() runs on GeneralCompEx system GeneralComp {
+ connect(self:p, self:p2);
+ f_disconnect();
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_210102_disconnect_and_unmap_operations_008());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Component type `@NegSem_210102_disconnect_and_unmap_operations_008.GeneralComp' does not have port with name `p2'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210102_disconnect_and_unmap_operations_010 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - violation of strong typing rules for PTC ports in disconnect operations >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210102_disconnect_and_unmap_operations_010 NegSem_210102_disconnect_and_unmap_operations_010.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.1.2, violation of strong typing rules for PTC ports in disconnect operations
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// If the type of the component referenced in a connection operation is known (either
+// when the component reference is a variable or value returned from a function or the
+// type is defined the runs on, mtc or system clause of the calling function), the
+// referenced port declaration shall be present in this component type.
+
+module NegSem_210102_disconnect_and_unmap_operations_010 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ type component GeneralCompEx extends GeneralComp {
+ port P p2;
+ }
+
+ testcase TC_NegSem_210102_disconnect_and_unmap_operations_010() runs on GeneralComp system GeneralComp {
+ var GeneralCompEx v_ptc := GeneralCompEx.create;
+ var GeneralComp v_ptcAlias := v_ptc;
+ connect(self:p, v_ptc:p2);
+ disconnect(self:p, v_ptcAlias:p2);// although the actual PTC instance contains the p2 port,
+ // it cannot be referenced as the variable v_ptc is of the GeneralComp type and
+ // not GeneralCompEx
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_210102_disconnect_and_unmap_operations_010());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Component type `@NegSem_210102_disconnect_and_unmap_operations_010.GeneralComp' does not have port with name `p2'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210102_disconnect_and_unmap_operations_013 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - violation of strong typing rules for PTC ports in disconnect operations >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210102_disconnect_and_unmap_operations_013 NegSem_210102_disconnect_and_unmap_operations_013.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.1.2, violation of strong typing rules for PTC ports in unmap operations
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// If the type of the component referenced in a connection operation is known (either
+// when the component reference is a variable or value returned from a function or the
+// type is defined the runs on, mtc or system clause of the calling function), the
+// referenced port declaration shall be present in this component type.
+
+module NegSem_210102_disconnect_and_unmap_operations_013 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ type component GeneralCompEx extends GeneralComp {
+ port P p2;
+ }
+
+ testcase TC_NegSem_210102_disconnect_and_unmap_operations_013() runs on GeneralComp system GeneralComp {
+ var GeneralCompEx v_ptc := GeneralCompEx.create;
+ var GeneralComp v_ptcAlias := v_ptc;
+ map(system:p, v_ptc:p2);
+ unmap(system:p, v_ptcAlias:p2);// although the actual PTC instance contains the p2 port,
+ // it cannot be referenced as the variable v_ptc is of the GeneralComp type and
+ // not GeneralCompEx
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_210102_disconnect_and_unmap_operations_013());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Component type `@NegSem_210102_disconnect_and_unmap_operations_013.GeneralComp' does not have port with name `p2'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210102_disconnect_operation_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that mapped port cannot disconnect >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210102_disconnect_operation_001 NegSem_210102_disconnect_operation_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.1.2, Ensure that mapped port cannot disconnect
+ ** @verdict pass reject
+ ***************************************************/
+// System and component interface cannot disconnect
+module NegSem_210102_disconnect_operation_001{
+
+ type port myport message {
+ inout integer
+ } with {extension "internal"}
+
+ type component Mysystem
+ {
+ port myport messagePort;
+ }
+
+ function f() runs on Mysystem {}
+
+ testcase TC_NegSem_210102_disconnect_operation_001() runs on Mysystem system Mysystem {
+ var Mysystem MyCompA;
+
+ MyCompA:=Mysystem.create;
+
+ map(MyCompA:messagePort,system:messagePort);
+
+ MyCompA.start(f());
+
+ disconnect(MyCompA:messagePort,system:messagePort); // system interface cannot disconnect
+
+ }
+ control{
+ execute(TC_NegSem_210102_disconnect_operation_001());
+ }
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+ error: The `system' component reference shall not be used in `disconnect' operation
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h2. 2102_test_case_operations folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2102_testcase_stop_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Stopping test case >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_2102_testcase_stop_001 NegSem_2102_testcase_stop_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.2, Stopping test case
+ ** @verdict pass reject
+ ***************************************************/
+// Explicit test case termination test
+module NegSem_2102_testcase_stop_001 {
+ type component GeneralComp {}
+
+ testcase TC_NegSem_2102_testcase_stop_001() runs on GeneralComp {
+ var boolean v_b := true;
+
+ setverdict(pass, "Unexpected termination with verdict pass");
+
+ testcase.stop("Expected Termination with verdict error");
+ // stop runing test case now with verdict error
+ }
+
+ control {
+ execute(TC_NegSem_2102_testcase_stop_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: testcase.stop
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h2. 2103_test_component_operations folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210301_CreateOperation_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that named components on hosts are accepted >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210301_CreateOperation_001 NegSem_210301_CreateOperation_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.1, Ensure that named components on hosts are accepted
+ ** @verdict pass reject
+ *****************************************************************/
+module NegSem_210301_CreateOperation_001 {
+
+ type component GeneralComp { }
+
+ testcase TC_NegSem_210301_CreateOperation_001() runs on GeneralComp system GeneralComp {
+ var GeneralComp ptc := GeneralComp.create(5); // it should expect charstring
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_210301_CreateOperation_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: First operand of operation `create\(\)' should be charstring value
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210301_CreateOperation_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that named components on hosts are accepted >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210301_CreateOperation_002 NegSem_210301_CreateOperation_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.1, Ensure that named components on hosts are accepted
+ ** @verdict pass reject
+ *****************************************************************/
+module NegSem_210301_CreateOperation_002 {
+
+ type component GeneralComp { }
+
+ testcase TC_NegSem_210301_CreateOperation_002() runs on GeneralComp system GeneralComp {
+ var GeneralComp ptc := GeneralComp.create(true); // it should expect charstring
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_210301_CreateOperation_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: First operand of operation `create\(\)' should be charstring value
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210301_CreateOperation_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that named components on hosts are accepted >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210301_CreateOperation_003 NegSem_210301_CreateOperation_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.1, Ensure that named components on hosts are accepted
+ ** @verdict pass reject
+ *****************************************************************/
+module NegSem_210301_CreateOperation_003 {
+
+ type component GeneralComp { }
+
+ testcase TC_NegSem_210301_CreateOperation_003() runs on GeneralComp system GeneralComp {
+ var GeneralComp ptc := GeneralComp.create(-, 'CAFFEE'O); // it should expect charstring
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_210301_CreateOperation_003());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Second operand of operation `create\(\)' should be charstring value
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210302_Start_test_component_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that non-alive ptc cannot start again >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_210302_Start_test_component_001 NegSem_210302_Start_test_component_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.2, Ensure that non-alive ptc cannot start again
+ ** @verdict pass reject
+ *****************************************************************/
+//Non alive test component cannot start another function behavior
+module NegSem_210302_Start_test_component_001 {
+
+ type component GeneralComp { }
+ function f() runs on GeneralComp {}
+ function f2() runs on GeneralComp {}
+
+ testcase TC_NegSem_210302_Start_test_component_001() runs on GeneralComp system GeneralComp {
+ var GeneralComp ptc;
+ ptc:=GeneralComp.create;
+
+ ptc.start(f());
+ ptc.done;
+ ptc.start(f2()); // test case error, ptc is non-alive
+
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_210302_Start_test_component_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: PTC with component reference 3 is not alive anymore. Start operation cannot be performed on it.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210302_Start_test_component_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that only component type is allowed for ptc declaration >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210302_Start_test_component_002 NegSem_210302_Start_test_component_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.2, Ensure that only component type is allowed for ptc declaration
+ ** @verdict pass reject
+ *****************************************************************/
+// VariableRef (being a component type variable, a component type parameter
+module NegSem_210302_Start_test_component_002 {
+
+ type component GeneralComp { }
+
+ type record Rectype{}
+
+ function f() runs on GeneralComp {}
+
+ testcase TC_NegSem_210302_Start_test_component_002() runs on GeneralComp system GeneralComp {
+ var Rectype ptc;
+ ptc:= GeneralComp.create;
+ // VariableRef (being a component type variable, a component type parameter
+
+ ptc.start(f());
+
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_210302_Start_test_component_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: The type of the operand should be a component type instead of `@NegSem_210302_Start_test_component_002.Rectype'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210302_Start_test_component_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that only component type is allowed for ptc declaration >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210302_Start_test_component_003 NegSem_210302_Start_test_component_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.2, altstep in test component start operation
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// The start operation shall bind the required behaviour to the test component. This
+// behaviour is defined by reference to an already defined function.
+
+module NegSem_210302_Start_test_component_003 {
+
+ type port P message {
+ inout integer;
+ }
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ altstep a_test() runs on GeneralComp {
+ [] p.receive(integer:?) {
+ setverdict(pass);
+ }
+ }
+
+ testcase TC_NegSem_210302_Start_test_component_003() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralComp.create("PTC");
+ connect(self:p, v_ptc:p);
+ p.send(1);
+ v_ptc.start(a_test());
+ v_ptc.done;
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_210302_Start_test_component_003());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a function was expected in the argument instead of altstep `@NegSem_210302_Start_test_component_003.a_test'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210302_Start_test_component_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - starting behaviour on already running non-alive component >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_210302_Start_test_component_004 NegSem_210302_Start_test_component_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.2, starting behaviour on already running non-alive component
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// Starting a second behaviour function on a non-alive PTC or starting a function
+// on a PTC that is still running results in a test case error.
+
+module NegSem_210302_Start_test_component_004 {
+
+ type component GeneralComp {
+ }
+
+ function f_ptcBehaviour() runs on GeneralComp {
+ timer t_tmr := 10.0;
+ t_tmr.start;
+ t_tmr.timeout;
+ }
+
+ testcase TC_NegSem_210302_Start_test_component_004() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralComp.create("PTC") alive;
+ v_ptc.start(f_ptcBehaviour());
+ v_ptc.start(f_ptcBehaviour());
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_210302_Start_test_component_004());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Error message was received from MC: PTC with component reference 3 cannot be started because it is already executing function NegSem_210302_Start_test_component_004.f_ptcBehaviour.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210302_Start_test_component_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - starting behaviour on already running non-alive component >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_210302_Start_test_component_005 NegSem_210302_Start_test_component_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.2, starting behaviour on already running non-alive component
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// Starting a second behaviour function on a non-alive PTC or starting a function
+// on a PTC that is still running results in a test case error.
+
+module NegSem_210302_Start_test_component_005 {
+
+ type component GeneralComp {
+ }
+
+ function f_ptcBehaviour() runs on GeneralComp {
+ timer t_tmr := 10.0;
+ t_tmr.start;
+ t_tmr.timeout;
+ }
+
+ testcase TC_NegSem_210302_Start_test_component_005() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralComp.create("PTC");
+ v_ptc.start(f_ptcBehaviour());
+ v_ptc.start(f_ptcBehaviour());
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_210302_Start_test_component_005());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Error message was received from MC: PTC with component reference 3 cannot be started because it is already executing function NegSem_210302_Start_test_component_005.f_ptcBehaviour.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210302_Start_test_component_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - function invocation in the start operation doesn't return a component >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210302_Start_test_component_006 NegSem_210302_Start_test_component_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.2, function invocation in the start operation doesn't return a component
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// The variable associated with VariableRef (being a component type variable,
+// a component type parameter, etc.) or the return type associated with
+// FunctionInstance shall be of component type.
+
+module NegSem_210302_Start_test_component_006 {
+
+ type component GeneralComp {
+ }
+
+ type record R {
+ GeneralComp comp
+ }
+
+ function f_create() return R {
+ var R v_rec := { GeneralComp.create("PTC") }
+ return v_rec;
+ }
+
+ function f_ptcBehaviour() runs on GeneralComp {
+ }
+
+ testcase TC_NegSem_210302_Start_test_component_006() runs on GeneralComp system GeneralComp {
+ f_create().start(f_ptcBehaviour());
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_210302_Start_test_component_006());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: The type of the operand should be a component type instead of `@NegSem_210302_Start_test_component_006.R'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210302_Start_test_component_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - starting function with incompatible "runs on" clause >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210302_Start_test_component_007 NegSem_210302_Start_test_component_007.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.2, starting function with incompatible "runs on" clause
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// The function invoked in a start test component operation shall have a runs on
+// definition referencing a component type that is compatible with the newly
+// created component (see clause 6.3.3).
+
+module NegSem_210302_Start_test_component_007 {
+
+ type component GeneralComp {
+ var charstring vc_str := "abc";
+ }
+
+ type component DifferentComp {
+ var integer vc_int := 0;
+ }
+
+
+ function f_ptcBehaviour() runs on DifferentComp {
+ setverdict(pass, "Executing PTC behaviour...");
+ }
+
+ testcase TC_NegSem_210302_Start_test_component_007() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralComp.create("PTC") alive;
+ v_ptc.start(f_ptcBehaviour());
+ v_ptc.done;
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_210302_Start_test_component_007());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Component type mismatch: The component reference is of type `@NegSem_210302_Start_test_component_007.GeneralComp', but function `@NegSem_210302_Start_test_component_007.f_ptcBehaviour' runs on `@NegSem_210302_Start_test_component_007.DifferentComp'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210302_Start_test_component_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - passing port to started component function >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210302_Start_test_component_008 NegSem_210302_Start_test_component_008.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.2, passing port to started component function
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// Ports, defaults and timers shall not be passed into a function invoked in a start
+// test component operation.
+
+module NegSem_210302_Start_test_component_008 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ function f_behaviour(P p_port) runs on GeneralComp {
+ p_port.receive(integer:?);
+ setverdict(pass);
+ }
+
+ testcase TC_NegSem_210302_Start_test_component_008() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralComp.create("PTC");
+ connect(self:p, self:p);
+ p.send(1);
+ v_ptc.start(f_behaviour(p));
+ v_ptc.done;
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_210302_Start_test_component_008());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Function `@NegSem_210302_Start_test_component_008.f_behaviour' cannot be started on a parallel test component because it has port parameter `p_port'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210302_Start_test_component_009 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - passing default to started component function >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210302_Start_test_component_009 NegSem_210302_Start_test_component_009.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.2, passing default to started component function
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// Ports, defaults and timers shall not be passed into a function invoked in a start
+// test component operation.
+
+module NegSem_210302_Start_test_component_009 {
+
+ type component GeneralComp {
+ }
+
+ function f_behaviour(default p_default) runs on GeneralComp {
+ setverdict(pass);
+ }
+
+ altstep a_timeout() {
+ [] any timer.timeout { }
+ }
+
+ testcase TC_NegSem_210302_Start_test_component_009() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralComp.create("PTC");
+ var default v_def := activate(a_timeout());
+ v_ptc.start(f_behaviour(v_def));
+ v_ptc.done;
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_210302_Start_test_component_009());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Default type cannot be a parameter or embedded in a parameter of a function used in a start operation. Function `@NegSem_210302_Start_test_component_009.f_behaviour' cannot be started on a parallel test component because of `value parameter `p_default''
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210302_Start_test_component_010 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - passing timer to started component function >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210302_Start_test_component_010 NegSem_210302_Start_test_component_010.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.2, passing timer to started component function
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// Ports, defaults and timers shall not be passed into a function invoked in a start
+// test component operation.
+
+module NegSem_210302_Start_test_component_010 {
+
+ type component GeneralComp {
+ }
+
+ function f_behaviour(timer t_tmr) runs on GeneralComp {
+ t_tmr.timeout;
+ setverdict(pass);
+ }
+
+ testcase TC_NegSem_210302_Start_test_component_010() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralComp.create("PTC");
+ timer t_tmr := 0.0;
+ t_tmr.start;
+ v_ptc.start(f_behaviour(t_tmr));
+ v_ptc.done;
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_210302_Start_test_component_010());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Function `@NegSem_210302_Start_test_component_010.f_behaviour' cannot be started on a parallel test component because it has timer parameter `t_tmr'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210302_Start_test_component_011 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - passing structured value containing ports to started component function >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210302_Start_test_component_011 NegSem_210302_Start_test_component_011.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.2, passing structured value containing ports to started component function
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// All formal parameter types of the function shall neither be of port or default type
+// or should contain a direct or indirect element or field of port or default type.
+
+module NegSem_210302_Start_test_component_011 {
+
+ type port P message {
+ inout integer;
+ }
+
+ type P PortArray[2];
+
+ type component GeneralComp {
+ port P p[2];
+ }
+
+ function f_behaviour(PortArray p_ports) runs on GeneralComp {
+ p_ports[0].receive(integer:?);
+ setverdict(pass);
+ }
+
+ testcase TC_NegSem_210302_Start_test_component_011() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralComp.create("PTC");
+ connect(self:p[0], self:p[0]);
+ p[0].send(1);
+ v_ptc.start(f_behaviour(p));
+ v_ptc.done;
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_210302_Start_test_component_011());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Port type `@NegSem_210302_Start_test_component_011.P' cannot be a parameter or embedded in a parameter of a function used in a start operation. Function `@NegSem_210302_Start_test_component_011.f_behaviour' cannot be started on a parallel test component because of `value parameter `p_ports''
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210302_Start_test_component_012 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - passing structured value containing ports to started component function >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210302_Start_test_component_012 NegSem_210302_Start_test_component_012.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.2, passing default to started component function
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// All formal parameter types of the function shall neither be of port or default type
+// or should contain a direct or indirect element or field of port or default type.
+
+module NegSem_210302_Start_test_component_012 {
+
+ type record R {
+ default def
+ }
+
+ type component GeneralComp {
+ }
+
+ function f_behaviour(R p_def) runs on GeneralComp {
+ setverdict(pass);
+ }
+
+ altstep a_timeout() {
+ [] any timer.timeout { }
+ }
+
+ testcase TC_NegSem_210302_Start_test_component_012() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralComp.create("PTC");
+ var R v_def := { def := activate(a_timeout()) };
+ v_ptc.start(f_behaviour(v_def));
+ v_ptc.done;
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_210302_Start_test_component_012());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Default type cannot be a parameter or embedded in a parameter of a function used in a start operation. Function `@NegSem_210302_Start_test_component_012.f_behaviour' cannot be started on a parallel test component because of `value parameter `p_def''
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210303_Stop_test_component_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - restarting explicitly stopped non-alive component >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_210303_Stop_test_component_001 NegSem_210303_Stop_test_component_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.3, restarting explicitly stopped non-alive component
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// Stopping a non-alive-type test component (implicitly or explicitly) shall destroy
+// it and all resources associated with the test component shall be released.
+
+module NegSem_210303_Stop_test_component_001 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ function f() runs on GeneralComp {
+ p.receive(integer:?);
+ }
+
+ testcase TC_NegSem_210303_Stop_test_component_001() runs on GeneralComp system GeneralComp {
+ var GeneralComp ptc := GeneralComp.create;
+ ptc.start(f());
+ ptc.stop;
+ ptc.start(f());
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_210303_Stop_test_component_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Error message was received from MC: PTC with component reference 3 cannot be started because it is not alive anymore.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210303_Stop_test_component_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - stopping all PTCs from a PTC >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_210303_Stop_test_component_002 NegSem_210303_Stop_test_component_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.3, stopping all PTCs from a PTC
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// The all keyword can be used by the MTC only in order to stop all running PTCs but
+// the MTC itself.
+
+module NegSem_210303_Stop_test_component_002 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ function f() runs on GeneralComp {
+ all component.stop;
+ }
+
+ testcase TC_NegSem_210303_Stop_test_component_002() runs on GeneralComp system GeneralComp {
+ var GeneralComp ptc := GeneralComp.create;
+ ptc.start(f());
+ ptc.done;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_210303_Stop_test_component_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Operation 'all component.stop' can only be performed on the MTC.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210303_Stop_test_component_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - applying stop operation to a variable of a different than component type >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210303_Stop_test_component_003 NegSem_210303_Stop_test_component_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.3, applying stop operation to a variable of a different than component type
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// The variable associated with VariableRef (being a component type variable, a component
+// type parameter, etc.) or the return type associated with FunctionInstance shall be of
+// component type.
+
+module NegSem_210303_Stop_test_component_003 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ function f_behaviour() runs on GeneralComp {
+ p.receive(integer:?); // infinite blocking
+ }
+
+ testcase TC_NegSem_210303_Stop_test_component_003() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc[2];
+ v_ptc[0] := GeneralComp.create;
+ v_ptc[1] := GeneralComp.create;
+ v_ptc[0].start(f_behaviour());
+ v_ptc[1].start(f_behaviour());
+ v_ptc.stop;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_210303_Stop_test_component_003());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: The type of the operand should be a component type instead of `@NegSem_210303_Stop_test_component_003.GeneralComp\[2\]'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210303_Stop_test_component_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - applying stop operation to a variable of a different than component type >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210303_Stop_test_component_004 NegSem_210303_Stop_test_component_004.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.3, applying stop operation to a function call result of a different than component type
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// The variable associated with VariableRef (being a component type variable, a component
+// type parameter, etc.) or the return type associated with FunctionInstance shall be of
+// component type.
+
+module NegSem_210303_Stop_test_component_004 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ type GeneralComp CompArray[2];
+
+ function f_behaviour() runs on GeneralComp {
+ p.receive(integer:?); // infinite blocking
+ }
+
+ function f_createComponents() return CompArray {
+ var CompArray v_ptc;
+ v_ptc[0] := GeneralComp.create;
+ v_ptc[1] := GeneralComp.create;
+ v_ptc[0].start(f_behaviour());
+ v_ptc[1].start(f_behaviour());
+ return v_ptc;
+ }
+
+ testcase TC_NegSem_210303_Stop_test_component_004() runs on GeneralComp system GeneralComp {
+ f_createComponents().stop;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_210303_Stop_test_component_004());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: The type of the operand should be a component type instead of `@NegSem_210303_Stop_test_component_004.GeneralComp\[2\]'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210304_kill_test_component_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - restarting explicitly killed non-alive component >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_210304_kill_test_component_001 NegSem_210304_kill_test_component_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.4, restarting explicitly killed non-alive component
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// The kill operation applied on a test component stops the execution of the currently
+// running behaviour - if any - of that component and frees all resources associated
+// to it (including all port connections of the killed component) and removes the
+// component from the test system.
+
+module NegSem_210304_kill_test_component_001 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ function f() runs on GeneralComp {
+ p.receive(integer:?);
+ }
+
+ testcase TC_NegSem_210304_kill_test_component_001() runs on GeneralComp system GeneralComp {
+ var GeneralComp ptc := GeneralComp.create;
+ ptc.start(f());
+ ptc.kill;
+ ptc.start(f());
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_210304_kill_test_component_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: PTC with component reference 3 is not alive anymore. Start operation cannot be performed on it.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210304_kill_test_component_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - restarting explicitly killed alive component >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_210304_kill_test_component_002 NegSem_210304_kill_test_component_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.3, restarting explicitly killed alive component
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// The kill operation applied on a test component stops the execution of the currently
+// running behaviour - if any - of that component and frees all resources associated
+// to it (including all port connections of the killed component) and removes the
+// component from the test system.
+
+module NegSem_210304_kill_test_component_002 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ function f() runs on GeneralComp {
+ p.receive(integer:?);
+ }
+
+ testcase TC_NegSem_210304_kill_test_component_002() runs on GeneralComp system GeneralComp {
+ var GeneralComp ptc := GeneralComp.create alive;
+ ptc.start(f());
+ ptc.kill;
+ ptc.start(f());
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_210304_kill_test_component_002());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: PTC with component reference 3 is not alive anymore. Start operation cannot be performed on it.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210304_kill_test_component_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - killing all PTCs from a PTC >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_210304_kill_test_component_003 NegSem_210304_kill_test_component_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.4, killing all PTCs from a PTC
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// The all keyword can be used by the MTC only in order to stop and kill all running PTCs
+// but the MTC itself.
+
+module NegSem_210304_kill_test_component_003 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ function f() runs on GeneralComp {
+ all component.kill;
+ }
+
+ testcase TC_NegSem_210304_kill_test_component_003() runs on GeneralComp system GeneralComp {
+ var GeneralComp ptc := GeneralComp.create;
+ ptc.start(f());
+ ptc.done;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_210304_kill_test_component_003());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Operation 'all component.kill' can only be performed on the MTC.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210304_kill_test_component_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - applying kill operation to a variable of a different than component type >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210304_kill_test_component_004 NegSem_210304_kill_test_component_004.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.4, applying kill operation to a variable of a different than component type
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// The variable associated with VariableRef (being a component type variable, a component
+// type parameter, etc.) or the return type associated with FunctionInstance shall be of
+// component type.
+
+module NegSem_210304_kill_test_component_004 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ function f_behaviour() runs on GeneralComp {
+ p.receive(integer:?); // infinite blocking
+ }
+
+ testcase TC_NegSem_210304_kill_test_component_004() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc[2];
+ v_ptc[0] := GeneralComp.create;
+ v_ptc[1] := GeneralComp.create;
+ v_ptc[0].start(f_behaviour());
+ v_ptc[1].start(f_behaviour());
+ v_ptc.kill;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_210304_kill_test_component_004());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: The type of the operand should be a component type instead of `@NegSem_210304_kill_test_component_004.GeneralComp\[2\]'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210304_kill_test_component_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - applying kill operation to a function call result of a different than component type >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210304_kill_test_component_005 NegSem_210304_kill_test_component_005.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.4, applying kill operation to a function call result of a different than component type
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// The variable associated with VariableRef (being a component type variable, a component
+// type parameter, etc.) or the return type associated with FunctionInstance shall be of
+// component type.
+
+module NegSem_210304_kill_test_component_005 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ type GeneralComp CompArray[2];
+
+ function f_behaviour() runs on GeneralComp {
+ p.receive(integer:?); // infinite blocking
+ }
+
+ function f_createComponents() return CompArray {
+ var CompArray v_ptc;
+ v_ptc[0] := GeneralComp.create;
+ v_ptc[1] := GeneralComp.create;
+ v_ptc[0].start(f_behaviour());
+ v_ptc[1].start(f_behaviour());
+ return v_ptc;
+ }
+
+ testcase TC_NegSem_210304_kill_test_component_005() runs on GeneralComp system GeneralComp {
+ f_createComponents().kill;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_210304_kill_test_component_005());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch: The type of the operand should be a component type instead of `@NegSem_210304_kill_test_component_005.GeneralComp\[2\]'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210307_done_operation_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that done operator can be used only for ptcs. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210307_done_operation_001 NegSem_210307_done_operation_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.7, Ensure that done operator can be used only for ptcs.
+ ** @verdict pass reject
+ *****************************************************************/
+// Done operator can be used only for ptcs, not for mtcs.
+
+module NegSem_210307_done_operation_001 {
+
+ type component GeneralComp {}
+ function f1 ( ) runs on GeneralComp {}
+
+ testcase TC_NegSem_210307_done_operation_001() runs on GeneralComp system GeneralComp {
+ var GeneralComp ptc;
+ var GeneralComp ptc2;
+ ptc:=GeneralComp.create alive;
+ ptc2:=GeneralComp.create alive;
+
+ ptc.start(f1());
+
+ GeneralComp.done; // not allowed. Done only allowed for ptcs.
+
+ }
+
+ control {
+ execute(TC_NegSem_210307_done_operation_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of type `@NegSem_210307_done_operation_001.GeneralComp'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_210308_killed_operation_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that killed operator is only valid for ptcs. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_210308_killed_operation_001 NegSem_210308_killed_operation_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:21.3.8, Ensure that killed operator is only valid for ptcs.
+ ** @verdict pass reject
+ *****************************************************************/
+// killed operator is not allowed for mtc check.
+
+module NegSem_210308_killed_operation_001 {
+
+ type component GeneralComp {}
+ function f1 ( ) runs on GeneralComp {}
+
+ testcase TC_NegSem_210308_killed_operation_001() runs on GeneralComp system GeneralComp {
+ var GeneralComp ptc;
+ var GeneralComp ptc2;
+ ptc:=GeneralComp.create alive;
+ ptc2:=GeneralComp.create alive;
+
+ ptc.start(f1());
+
+ mtc.killed; // not allowed. killed only allowed for ptcs.
+
+ alt {
+ [] any component.killed {setverdict(pass);}
+ }
+ }
+
+ control {
+ execute(TC_NegSem_210308_killed_operation_001());
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `killed': syntax error, unexpected DotKilledKeyword, expecting DotKillKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h1.References
+.*---------------------------------------------------------------------*
+:list.
+:li D='[1]'.1/174 02-CRL 113 200/5 Uen
+:nl.Statement of Compliance for TITAN project
+:li D='[2]'.ETSI ES 201 873-1, v4.7.1 Mockup v1 (2015-06):
+:nl.Testing and Test Control Notation version 3.,
+:nl.Part 1: TTCN-3 Core Language
+:elist.
+
--- /dev/null
+.******************************************************************************
+.* Copyright (c) 2000-2016 Ericsson Telecom AB
+.* All rights reserved. This program and the accompanying materials
+.* are made available under the terms of the Eclipse Public License v1.0
+.* which accompanies this distribution, and is available at
+.* http://www.eclipse.org/legal/epl-v10.html
+.*
+.* Contributors:
+.* Adrien Kirjak – initial implementation
+.*
+.******************************************************************************/
+text.
+:lang eng.
+.*
+:docname.Test Description
+:docno.xz/152 91-CRL 113 200 Uen
+:rev.PA1
+:date.2016-04-04
+.*
+:prep.ETH/XZ EADRKIR
+:subresp.EADRKIR
+:appr.ETH/XZ (Elemer Lelik)
+:checked.
+.*
+:title.ETSI TTCN3 Negative Conformance Test
+:contents level=3.
+.*---------------------------------------------------------------------*
+:h1.PREREQUISITES AND PREPARATIONS
+.*---------------------------------------------------------------------*
+.*---------------------------------------------------------------------*
+:h2.Scope of the Test Object
+.*---------------------------------------------------------------------*
+:xmp tab=1 nokeep.
+This TD contains negative tests from ETSI TTCN3 Conformance Test's 22_communication_operations folder.
+
+:exmp.
+
+.*---------------------------------------------------------------------*
+:h2.Test Tools
+.*---------------------------------------------------------------------*
+:p.:us.Software Tools:eus.
+:xmp tab=2 nokeep.
+
+ SAtester.pl
+
+:exmp.
+:np.
+
+.*---------------------------------------------------------------------*
+:h1.REQUIREMENT-BASED TESTS
+.*---------------------------------------------------------------------*
+.*---------------------------------------------------------------------*
+:h2. 2202_message_based_communication folder
+.*---------------------------------------------------------------------*
+*---------------------------------------------------------------------*
+:h3. NegSem_220201_SendOperation_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles message sending operations >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220201_SendOperation_001 NegSem_220201_SendOperation_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.1, Ensure that the IUT correctly handles message sending operations
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_220201_SendOperation_001 {
+
+ type enumerated EnumeratedType {e_black, e_white};
+
+ type record RecordType {
+ integer a optional,
+ integer b optional,
+ boolean c
+ }
+
+ type set SetType {
+ integer a optional,
+ integer b optional,
+ boolean c
+ }
+
+ type record length (1..2) of integer IntegerList;
+
+ type set length (1..2) of integer IntegerUList;
+
+ type union UnionType {
+ integer a,
+ EnumeratedType b,
+ boolean c
+ }
+
+ type record MessageType {
+ integer field1,
+ charstring field2,
+ boolean field3,
+ integer field4[4],
+ EnumeratedType field5,
+ RecordType field6,
+ SetType field7,
+ UnionType field8,
+ IntegerList field9,
+ IntegerUList field10
+ }
+
+ type port loopbackPort message {
+ inout MessageType
+ } with {extension "internal"}
+
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_220201_SendOperation_001() runs on GeneralComp {
+
+ var MessageType v_testMessage;
+
+ template MessageType mw_matchingTemplate:=
+ {
+ field1 := 1,
+ field2 := "test string",
+ field3 := true,
+ field4 := {1,2,3,4},
+ field5 := e_black,
+ field6 := {a:=1,b:=2,c:=true},
+ field7 := {a:=1,b:=2,c:=true},
+ field8 := {a:=1},
+ field9 := {1},
+ field10 := {1,2}
+ }
+
+ template MessageType mw_sendingTemplate:=
+ {
+ field1 := 1,
+ field2 := "test string",
+ field3 := true,
+ field4 := {1,2,3,4},
+ field5 := e_black,
+ field6 := {a:=*,b:=2,c:=true},
+ field7 := {a:=1,b:=*,c:=true},
+ field8 := {a:=1},
+ field9 := {1},
+ field10 := {1,2}
+ }
+
+ connect(self:messagePort, self:messagePort);
+
+ messagePort.send(mw_sendingTemplate); //can only send specific values
+
+ alt {
+ [] messagePort.receive(mw_matchingTemplate) {
+ setverdict(pass);
+ }
+ [] messagePort.receive {
+ setverdict(fail);
+ }
+ }
+ }
+
+ control{
+ execute(TC_NegSem_220201_SendOperation_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 2>
+error: A specific value was expected instead of any or omit
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220201_SendOperation_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles message sending operations >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220201_SendOperation_002 NegSem_220201_SendOperation_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.1, Ensure that the IUT correctly handles message sending operations
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_220201_SendOperation_002 {
+
+ type enumerated EnumeratedType {e_black, e_white};
+
+ type record RecordType {
+ integer a optional,
+ integer b optional,
+ boolean c
+ }
+
+ type set SetType {
+ integer a optional,
+ integer b optional,
+ boolean c
+ }
+
+ type record length (1..2) of integer IntegerList;
+
+ type set length (1..2) of integer IntegerUList;
+
+ type union UnionType {
+ integer a,
+ EnumeratedType b,
+ boolean c
+ }
+
+ type record MessageType {
+ integer field1,
+ charstring field2,
+ boolean field3,
+ integer field4[4],
+ EnumeratedType field5,
+ RecordType field6,
+ SetType field7,
+ UnionType field8,
+ IntegerList field9,
+ IntegerUList field10
+ }
+
+ type port loopbackPort message {
+ inout MessageType
+ } with {extension "internal"}
+
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_220201_SendOperation_002() runs on GeneralComp {
+
+ var MessageType v_testMessage;
+
+ template MessageType mw_matchingTemplate:=
+ {
+ field1 := 1,
+ field2 := "test string",
+ field3 := true,
+ field4 := {1,2,3,4},
+ field5 := e_black,
+ field6 := {a:=1,b:=2,c:=true},
+ field7 := {a:=1,b:=2,c:=true},
+ field8 := {a:=1},
+ field9 := {1},
+ field10 := {1,2}
+ }
+
+ template MessageType mw_sendingTemplate:=
+ {
+ field1 := 1,
+ field2 := "test string",
+ field3 := true,
+ field4 := {1,2,3,4},
+ field5 := e_black,
+ field6 := {a:=?,b:=2,c:=true},
+ field7 := {a:=1,b:=?,c:=true},
+ field8 := {a:=1},
+ field9 := {1},
+ field10 := {1,2}
+ }
+
+ connect(self:messagePort, self:messagePort);
+
+ messagePort.send(mw_sendingTemplate); //can only send specific values
+
+ alt {
+ [] messagePort.receive(mw_matchingTemplate) {
+ setverdict(pass);
+ }
+ [] messagePort.receive {
+ setverdict(fail);
+ }
+ }
+ }
+
+ control{
+ execute(TC_NegSem_220201_SendOperation_002());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 2>
+error: A specific value was expected instead of any value
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220201_SendOperation_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles message sending operations >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220201_SendOperation_003 NegSem_220201_SendOperation_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.1, Ensure that the IUT correctly handles message sending operations
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_220201_SendOperation_003 {
+
+
+ type port loopbackPort message {
+ inout integer
+ } with {extension "internal"}
+
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_220201_SendOperation_003() runs on GeneralComp {
+
+ connect(self:messagePort, self:messagePort);
+
+ messagePort.send(float:2.0); //sent type does not match port specification
+
+ alt {
+ [] messagePort.receive(2) {
+ setverdict(pass);
+ }
+ [] messagePort.receive {
+ setverdict(fail);
+ }
+ }
+ }
+
+ control{
+ execute(TC_NegSem_220201_SendOperation_003());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Incompatible explicit type specification: `integer' was expected instead of `float'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220201_SendOperation_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles message sending operations >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220201_SendOperation_004 NegSem_220201_SendOperation_004.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.1, Ensure that the IUT correctly handles message sending operations
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_220201_SendOperation_004 {
+
+signature p_NegSem_220201_SendOperation_004(in integer p_par1, out integer p_par2, inout integer p_par3) return integer;
+
+ /*template p_NegSem_220201_SendOperation_004 s_baseTemplate := {
+ p_par1 := -,
+ p_par2 := 4,
+ p_par3 := ?
+ }
+
+ template p_NegSem_220201_SendOperation_004 s_returnTemplate modifies s_baseTemplate := {
+ p_par3 := 5
+ }
+
+ template p_NegSem_220201_SendOperation_004 s_wrongTemplate modifies s_baseTemplate := {
+ p_par3 := 3
+ }*/
+
+ template p_NegSem_220201_SendOperation_004 s_callTemplate := {
+ p_par1 := 1,
+ p_par2 := -,
+ p_par3 := 3
+ }
+
+ type port remotePort procedure {
+ out p_NegSem_220201_SendOperation_004;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port remotePort PCO;
+ }
+
+ testcase NegSem_220201_SendOperation_004() runs on GeneralComp {
+
+ //connect(self:PCO,self:PCO);
+
+ PCO.send(p_NegSem_220201_SendOperation_004:s_callTemplate);
+
+ //cannot use send operation on a procedure based port
+ /*PCO.send(p_NegSem_220201_SendOperation_004:s_callTemplate, 5.0) {
+ [] PCO.getreply(p_NegSem_220201_SendOperation_004:s_wrongTemplate value 1) {
+ setverdict(fail);
+ }
+ [] PCO.getreply(p_NegSem_220201_SendOperation_004:s_returnTemplate value 2) {
+ setverdict(fail);
+ }
+ [] PCO.getreply(p_NegSem_220201_SendOperation_004:s_returnTemplate value 1) {
+ setverdict(pass);
+ }
+ [] PCO.catch (timeout) {
+ setverdict(fail);
+ }
+ }*/
+ }
+
+ control{
+ execute(NegSem_220201_SendOperation_004());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Message-based operation `send' is not applicable to a procedure-based port of type `@NegSem_220201_SendOperation_004.remotePort'
+<END_RESULT>
+<RESULT COUNT 1>
+error: The type of send parameter is signature `@NegSem_220201_SendOperation_004.p_NegSem_220201_SendOperation_004', which cannot be a message type
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220201_SendOperation_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - missing to clause in case of one-to-many connections >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_220201_SendOperation_005 NegSem_220201_SendOperation_005.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.1, missing to clause in case of one-to-many connections
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// Unicast, multicast and broadcast communication can be determined by the optional to clause
+// in the send operation. A to clause can be omitted in case of a one-to-one connection where
+// unicast communication is used and the message receiver is uniquely determined by the test
+// system structure.
+// A to clause shall be present in case of one-to-many connections.
+
+module NegSem_220201_SendOperation_005 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ function f(integer p_expected) runs on GeneralComp
+ {
+ alt {
+ [] p.receive(p_expected) { setverdict(pass); }
+ [] p.receive { setverdict(fail); }
+ }
+ }
+
+ const integer c_ptcCount := 2;
+
+ testcase TC_NegSem_220201_SendOperation_005() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptcs[c_ptcCount];
+
+ for (var integer i := 0; i < c_ptcCount; i := i + 1) {
+ v_ptcs[i] := GeneralComp.create;
+ connect(self:p, v_ptcs[i]:p);
+ v_ptcs[i].start(f(0));
+ }
+
+ p.send(0);
+ all component.done;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_220201_SendOperation_005(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Port p has more than one active connections. Message can be sent on it only with explicit addressing.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220201_SendOperation_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - partially initialized template >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_220201_SendOperation_006 NegSem_220201_SendOperation_006.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.1, partially initialized template
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// The TemplateInstance (and all parts of it) shall have a specific value i.e. the use
+// of matching mechanisms such as AnyValue is not allowed.
+
+module NegSem_220201_SendOperation_006 {
+
+ type record of integer RoI;
+
+ type port P message {
+ inout RoI;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ testcase TC_NegSem_220201_SendOperation_006() runs on GeneralComp {
+ var template RoI vm_msg := {1, -, 2};
+
+ connect(self:p,self:p);
+
+ p.send(vm_msg);
+ p.receive;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_220201_SendOperation_006(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Text encoder: Encoding an unbound integer value.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220201_SendOperation_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - no type prefix in inline template >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220201_SendOperation_007 NegSem_220201_SendOperation_007.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.1, no type prefix in inline template
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// When defining the message in-line, the optional type part shall be used if there is
+// ambiguity of the type of the message being sent.
+
+
+module NegSem_220201_SendOperation_007 {
+
+ type record R1
+ {
+ integer field1,
+ integer field2
+ }
+
+ type record of integer RoI;
+
+ type port P message {
+ inout R1, RoI;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ testcase TC_NegSem_220201_SendOperation_007() runs on GeneralComp {
+
+ connect(self:p,self:p);
+
+ p.send({1, 2});
+ p.receive;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_220201_SendOperation_007(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Cannot determine the type of the outgoing message
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220201_SendOperation_010 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - null component in the to clause of send operation >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_220201_SendOperation_010 NegSem_220201_SendOperation_010.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.1, null component in the to clause of send operation
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// No AddressRef shall contain the special value null at the time of the operation.
+
+module NegSem_220201_SendOperation_010 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ testcase TC_NegSem_220201_SendOperation_010() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_comp := null;
+ connect(self:p, v_comp:p);
+
+ p.send(0) to v_comp;
+ p.receive(integer:?);
+
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_220201_SendOperation_010(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: The second argument of connect operation contains the null component reference.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220201_SendOperation_011 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - send operation on disconnected and unmapped ports >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_220201_SendOperation_011 NegSem_220201_SendOperation_011.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.1, send operation on disconnected and unmapped ports
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// Applying a send operation to an unmapped or disconnected port shall cause a test case
+// error.
+
+module NegSem_220201_SendOperation_011 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ testcase TC_NegSem_220201_SendOperation_011() runs on GeneralComp system GeneralComp {
+ p.send(0);
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_220201_SendOperation_011(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Port p has neither connections nor mappings. Message cannot be sent on it.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220202_ReceiveOperation_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles message receiving operations >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220202_ReceiveOperation_001 NegSem_220202_ReceiveOperation_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.2, Ensure that the IUT correctly handles message receiving operations
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_220202_ReceiveOperation_001 {
+
+signature p_NegSem_220202_ReceiveOperation_001(in integer p_par1, out integer p_par2, inout integer p_par3) return integer;
+
+ template p_NegSem_220202_ReceiveOperation_001 s_baseTemplate := {
+ p_par1 := -,
+ p_par2 := 4,
+ p_par3 := ?
+ }
+
+ template p_NegSem_220202_ReceiveOperation_001 s_returnTemplate modifies s_baseTemplate := {
+ p_par3 := 5
+ }
+
+ /*template p_NegSem_220202_ReceiveOperation_001 s_wrongTemplate modifies s_baseTemplate := {
+ p_par3 := 3
+ }
+
+ template p_NegSem_220202_ReceiveOperation_001 s_callTemplate := {
+ p_par1 := 1,
+ p_par2 := -,
+ p_par3 := 3
+ }*/
+
+ type port remotePort procedure {
+ out p_NegSem_220202_ReceiveOperation_001;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port remotePort PCO;
+ }
+
+ testcase NegSem_220202_ReceiveOperation_001() runs on GeneralComp {
+
+ PCO.receive(s_returnTemplate);
+
+ /* PCO.call(p_NegSem_220202_ReceiveOperation_001:s_callTemplate, 5.0) {
+ [] PCO.receive(p_NegSem_220202_ReceiveOperation_001:s_wrongTemplate value 1) {
+ //cannot receive from procedure based port
+ setverdict(fail);
+ }
+ [] PCO.receive(p_NegSem_220202_ReceiveOperation_001:s_returnTemplate value 2) {
+ setverdict(fail);
+ }
+ [] PCO.receive(p_NegSem_220202_ReceiveOperation_001:s_returnTemplate value 1) {
+ setverdict(pass);
+ }
+ [] PCO.catch (timeout) {
+ setverdict(fail);
+ }
+ }*/
+ }
+
+ control{
+ execute(NegSem_220202_ReceiveOperation_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Message-based operation `receive' is not applicable to a procedure-based port of type `@NegSem_220202_ReceiveOperation_001.remotePort'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220202_ReceiveOperation_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - no type prefix in ambiguous inline template >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220202_ReceiveOperation_002 NegSem_220202_ReceiveOperation_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.2, no type prefix in ambiguous inline template
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// An optional type field in the matching criteria to the receive operation shall
+// be used to avoid any ambiguity of the type of the value being received.
+
+module NegSem_220202_ReceiveOperation_002 {
+
+ type record of integer RoI;
+ type record R {
+ integer field1,
+ integer field2
+ }
+
+ type port P message {
+ inout R, RoI;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ testcase TC_NegSem_220202_ReceiveOperation_002() runs on GeneralComp {
+
+ connect(self:p, self:p);
+
+ p.send(R:{1, 2});
+ alt {
+ [] p.receive({?, 2}) { setverdict(pass); } // error (ambiguous type)
+ [] p.receive { setverdict(pass); }
+ }
+ }
+
+ control {
+ execute(TC_NegSem_220202_ReceiveOperation_002(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Cannot determine the type of the incoming message
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220202_ReceiveOperation_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - type mismatch in redirect value assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220202_ReceiveOperation_003 NegSem_220202_ReceiveOperation_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.2, type mismatch in redirect value assignment
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// The variable or formal parameter shall be type compatible with the received message.
+
+module NegSem_220202_ReceiveOperation_003 {
+
+ type port P message {
+ inout integer, charstring;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ testcase TC_NegSem_220202_ReceiveOperation_003() runs on GeneralComp {
+ var charstring v_str;
+
+ connect(self:p, self:p);
+
+ p.send(1);
+ alt {
+ [] p.receive(integer:?) -> value v_str { setverdict(pass); }
+ // error (type mismatch in redirect assignment)
+ [] p.receive { setverdict(pass); }
+ }
+ }
+
+ control {
+ execute(TC_NegSem_220202_ReceiveOperation_003(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch in value redirect: A variable of type `integer' was expected instead of `charstring'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220202_ReceiveOperation_010 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - attempting to store component name in redirect assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220202_ReceiveOperation_010 NegSem_220202_ReceiveOperation_010.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.2, attempting to store component name in redirect assignment
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// When the message is received on a connected port, only the component reference is
+// stored in the following the sender keyword, but the test system shall internally
+// store the component name too, if any (to be used in logging).
+
+module NegSem_220202_ReceiveOperation_010 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ testcase TC_NegSem_220202_ReceiveOperation_010() runs on GeneralComp system GeneralComp {
+ var charstring v_name;
+ connect(self:p, self:p);
+ p.send(10);
+ p.receive(integer:?) -> sender v_name;
+ if (v_name == "MTC") { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control {
+ execute(TC_NegSem_220202_ReceiveOperation_010(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The type of the variable should be a component type instead of `charstring'
+<END_RESULT>
+
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220202_ReceiveOperation_011 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - attempting to receive a type missing from the port list >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220202_ReceiveOperation_011 NegSem_220202_ReceiveOperation_011.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.2, attempting to receive a type missing from the port list
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// The receive operation shall only be used on message-based ports and the type of the
+// value to be received shall be included in the list of incoming types of the port type
+// definition.
+
+
+module NegSem_220202_ReceiveOperation_011 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ testcase TC_NegSem_220202_ReceiveOperation_011() runs on GeneralComp {
+ var integer v_index;
+
+ connect(self:p, self:p);
+ p.send(10);
+
+ alt {
+ [] p.receive(charstring:?) { setverdict(pass); }
+ [] any port.receive { setverdict(pass); }
+ }
+ }
+
+ control {
+ execute(TC_NegSem_220202_ReceiveOperation_011(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Incompatible explicit type specification: `integer' was expected instead of `charstring'
+<END_RESULT>
+
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220202_ReceiveOperation_012 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - value redirect assignment in receive any message statement >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220202_ReceiveOperation_012 NegSem_220202_ReceiveOperation_012.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.2, value redirect assignment in receive any message statement
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// AddressRef for retrieving the sending entity shall be of type address, component or
+// of the type provided in the address declaration of the port type of the port instance
+// referenced in the receive operation.
+
+module NegSem_220202_ReceiveOperation_012 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ testcase TC_NegSem_220202_ReceiveOperation_012() runs on GeneralComp {
+ var integer v_val;
+
+ connect(self:p, self:p);
+ p.send(10);
+
+ p.receive -> value v_val;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_220202_ReceiveOperation_012(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Value redirect cannot be used without receive parameter
+<END_RESULT>
+
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220202_ReceiveOperation_014 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - type mismatch in sender redirect assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220202_ReceiveOperation_014 NegSem_220202_ReceiveOperation_014.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.2, type mismatch in sender redirect assignment
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// AddressRef for retrieving the sending entity shall be of type address, component or
+// of the type provided in the address declaration of the port type of the port instance
+// referenced in the receive operation.
+
+module NegSem_220202_ReceiveOperation_014 {
+
+ type port P message {
+ inout integer;
+ // address integer;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ testcase TC_NegSem_220202_ReceiveOperation_014() runs on GeneralComp {
+ var charstring v_addr;
+ connect(self:p, self:p);
+ p.send(10);
+ p.receive -> sender v_addr;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_220202_ReceiveOperation_014(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The type of the variable should be a component type instead of `charstring'
+<END_RESULT>
+
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220202_ReceiveOperation_015 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - null component reference in from clause of receive operation >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_220202_ReceiveOperation_015 NegSem_220202_ReceiveOperation_015.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.2, null component reference in from clause of receive operation
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// No AddressRef shall contain the special value null at the time of the operation.
+
+module NegSem_220202_ReceiveOperation_015 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ testcase TC_NegSem_220202_ReceiveOperation_015() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_comp := null;
+ connect(self:p, v_comp:p);
+ p.send(10);
+ alt {
+ [] p.receive from v_comp {}
+ [] p.receive {}
+ }
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_220202_ReceiveOperation_015(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: The second argument of connect operation contains the null component reference.
+<END_RESULT>
+
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220202_ReceiveOperation_022 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - incompatible from and sender clause >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220202_ReceiveOperation_022 NegSem_220202_ReceiveOperation_022.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.2, incompatible from and sender clause
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// If the receive operation contains both from and sender clause, the variable or parameter
+// referenced in the sender clause shall be type compatible with the template in the from
+// clause.
+
+module NegSem_220202_ReceiveOperation_022 {
+
+ type integer address;
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ testcase TC_NegSem_220202_ReceiveOperation_022() runs on GeneralComp {
+ var address v_addr;
+
+ connect(self:p, self:p);
+ p.send(100);
+ alt {
+ [] p.receive(integer:?) from GeneralComp:? -> sender v_addr { }
+ [] p.receive {}
+ }
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_220202_ReceiveOperation_022(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The type of the variable should be a component type instead of `integer'
+<END_RESULT>
+
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220203_TriggerOperation_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles message trigger operations >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220203_TriggerOperation_001 NegSem_220203_TriggerOperation_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.3, Ensure that the IUT correctly handles message trigger operations
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_220203_TriggerOperation_001 {
+
+signature p_NegSem_220203_TriggerOperation_001(in integer p_par1, out integer p_par2, inout integer p_par3) return integer;
+
+ template p_NegSem_220203_TriggerOperation_001 s_baseTemplate := {
+ p_par1 := -,
+ p_par2 := 4,
+ p_par3 := ?
+ }
+
+ /*template p_NegSem_220203_TriggerOperation_001 s_returnTemplate modifies s_baseTemplate := {
+ p_par3 := 5
+ }*/
+
+ template p_NegSem_220203_TriggerOperation_001 s_wrongTemplate modifies s_baseTemplate := {
+ p_par3 := 3
+ }
+
+ /*template p_NegSem_220203_TriggerOperation_001 s_callTemplate := {
+ p_par1 := 1,
+ p_par2 := -,
+ p_par3 := 3
+ }*/
+
+ type port remotePort procedure {
+ out p_NegSem_220203_TriggerOperation_001;
+ }
+
+ type component GeneralComp {
+ port remotePort PCO;
+ }
+
+ testcase NegSem_220203_TriggerOperation_001() runs on GeneralComp {
+
+ PCO.trigger(p_NegSem_220203_TriggerOperation_001:s_wrongTemplate);
+
+ /*PCO.call(p_NegSem_220203_TriggerOperation_001:s_callTemplate, 5.0) {
+
+ [] PCO.trigger(p_NegSem_220203_TriggerOperation_001:s_wrongTemplate value 1) {
+ //cannot trigger from procedure based port
+ setverdict(fail);
+ }
+ [] PCO.trigger(p_NegSem_220203_TriggerOperation_001:s_returnTemplate value 2) {
+ setverdict(fail);
+ }
+ [] PCO.trigger(p_NegSem_220203_TriggerOperation_001:s_returnTemplate value 1) {
+ setverdict(pass);
+ }
+ [] PCO.catch (timeout) {
+ setverdict(fail);
+ }
+ }*/
+ }
+
+ control{
+ execute(NegSem_220203_TriggerOperation_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Message-based operation `trigger' is not applicable to a procedure-based port of type `@NegSem_220203_TriggerOperation_001.remotePort'
+<END_RESULT>
+
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220203_TriggerOperation_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - no type prefix in ambiguous inline template >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220203_TriggerOperation_002 NegSem_220203_TriggerOperation_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.3, no type prefix in ambiguous inline template
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// The matching criteria as defined in clause 22.2.2 apply also to the trigger operation.
+// An optional type field in the matching criteria to the [trigger] operation shall
+// be used to avoid any ambiguity of the type of the value being received.
+
+module NegSem_220203_TriggerOperation_002 {
+
+ type record of integer RoI;
+ type record R {
+ integer field1,
+ integer field2
+ }
+
+ type port P message {
+ inout R, RoI;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ testcase TC_NegSem_220203_TriggerOperation_002() runs on GeneralComp {
+
+ connect(self:p, self:p);
+ p.send(R:{1, 2});
+
+ alt {
+ [] p.trigger({?, 2}) { setverdict(pass); } // error (ambiguous type)
+ [else] { setverdict(pass); }
+ }
+ }
+
+ control {
+ execute(TC_NegSem_220203_TriggerOperation_002(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Cannot determine the type of the incoming message
+<END_RESULT>
+
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220203_TriggerOperation_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - type mismatch in redirect value assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220203_TriggerOperation_003 NegSem_220203_TriggerOperation_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.3, type mismatch in redirect value assignment
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// Rules in clause 22.2.2 shall apply.
+// The variable or formal parameter shall be type compatible with the received message.
+
+module NegSem_220203_TriggerOperation_003 {
+
+ type port P message {
+ inout integer, charstring;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ testcase TC_NegSem_220203_TriggerOperation_003() runs on GeneralComp {
+ var charstring v_str;
+
+ connect(self:p, self:p);
+ p.send(1);
+ alt {
+ [] p.trigger(integer:?) -> value v_str { setverdict(pass); }
+ // error (type mismatch in redirect assignment)
+ }
+ }
+
+ control {
+ execute(TC_NegSem_220203_TriggerOperation_003(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type mismatch in value redirect: A variable of type `integer' was expected instead of `charstring'
+<END_RESULT>
+
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220203_TriggerOperation_010 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - attempting to store component name in redirect assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220203_TriggerOperation_010 NegSem_220203_TriggerOperation_010.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.3, attempting to store component name in redirect assignment
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// Rules in clause 22.2.2 shall apply.
+// When the message is received on a connected port, only the component reference is
+// stored in the following the sender keyword, but the test system shall internally
+// store the component name too, if any (to be used in logging).
+
+module NegSem_220203_TriggerOperation_010 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ testcase TC_NegSem_220203_TriggerOperation_010() runs on GeneralComp system GeneralComp {
+ var charstring v_name;
+
+ connect(self:p, self:p);
+ p.send(10);
+ p.trigger(integer:?) -> sender v_name;
+
+ if (v_name == "MTC") { setverdict(pass); }
+ else { setverdict(fail); }
+ }
+
+ control {
+ execute(TC_NegSem_220203_TriggerOperation_010(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The type of the variable should be a component type instead of `charstring'
+<END_RESULT>
+
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220203_TriggerOperation_011 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - attempting to receive a type missing from the port list >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220203_TriggerOperation_011 NegSem_220203_TriggerOperation_011.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.3, attempting to receive a type missing from the port list
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// The trigger operation shall only be used on message-based ports and the type of the
+// value to be received shall be included in the list of incoming types of the port type
+// definition.
+
+
+module NegSem_220203_TriggerOperation_011 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ testcase TC_NegSem_220203_TriggerOperation_011() runs on GeneralComp {
+ var integer v_index;
+
+ connect(self:p, self:p);
+ p.send(10);
+ alt {
+ [] p.trigger(charstring:?) { setverdict(pass); }
+ [else] { setverdict(pass); }
+ }
+ }
+
+ control {
+ execute(TC_NegSem_220203_TriggerOperation_011(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Incompatible explicit type specification: `integer' was expected instead of `charstring'
+<END_RESULT>
+
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220203_TriggerOperation_012 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - value redirect assignment in receive any message statement >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220203_TriggerOperation_012 NegSem_220203_TriggerOperation_012.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.3, value redirect assignment in receive any message statement
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// AddressRef for retrieving the sending entity shall be of type address, component or
+// of the type provided in the address declaration of the port type of the port instance
+// referenced in the receive operation.
+
+module NegSem_220203_TriggerOperation_012 {
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ testcase TC_NegSem_220203_TriggerOperation_012() runs on GeneralComp {
+ var integer v_val;
+
+ connect(self:p, self:p);
+ p.send(10);
+ p.trigger -> value v_val;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_220203_TriggerOperation_012(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Value redirect cannot be used without receive parameter
+<END_RESULT>
+
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220203_TriggerOperation_014 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - type mismatch in sender redirect assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220203_TriggerOperation_014 NegSem_220203_TriggerOperation_014.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.3, type mismatch in sender redirect assignment
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// AddressRef for retrieving the sending entity shall be of type address, component or
+// of the type provided in the address declaration of the port type of the port instance
+// referenced in the receive operation.
+
+
+module NegSem_220203_TriggerOperation_014 {
+
+ type port P message {
+ inout integer;
+ //address integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ testcase TC_NegSem_220203_TriggerOperation_014() runs on GeneralComp {
+ var charstring v_addr;
+
+ connect(self:p, self:p);
+ p.send(10);
+ p.trigger -> sender v_addr;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_220203_TriggerOperation_014(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The type of the variable should be a component type instead of `charstring'
+<END_RESULT>
+
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220203_TriggerOperation_015 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - null component reference in from clause of trigger operation >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_220203_TriggerOperation_015 NegSem_220203_TriggerOperation_015.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.3, null component reference in from clause of trigger operation
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// No AddressRef shall contain the special value null at the time of the operation.
+
+module NegSem_220203_TriggerOperation_015 {
+
+ type port P message {
+ inout integer;
+ //address integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ testcase TC_NegSem_220203_TriggerOperation_015() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_comp := null;
+
+ connect(self:p, v_comp:p);
+ p.send(10);
+ alt {
+ [] p.trigger from v_comp {}
+ [else] {}
+ }
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_220203_TriggerOperation_015(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: The second argument of connect operation contains the null component reference.
+<END_RESULT>
+
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220203_TriggerOperation_022 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - incompatible from and sender clause >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220203_TriggerOperation_022 NegSem_220203_TriggerOperation_022.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.2.3, incompatible from and sender clause
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// If the trigger operation contains both from and sender clause, the variable or parameter
+// referenced in the sender clause shall be type compatible with the template in the from
+// clause.
+
+module NegSem_220203_TriggerOperation_022 {
+
+ type integer address;
+
+ type port P message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ testcase TC_NegSem_220203_TriggerOperation_022() runs on GeneralComp {
+ var address v_addr;
+
+ connect(self:p, self:p);
+ p.send(100);
+ alt {
+ [] p.trigger(integer:?) from GeneralComp:? -> sender v_addr { }
+ [else] {}
+ }
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_220203_TriggerOperation_022(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The type of the variable should be a component type instead of `integer'
+<END_RESULT>
+
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h2. 2203_procedure_based_communication folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220301_CallOperation_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles procedure call operations >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220301_CallOperation_001 NegSem_220301_CallOperation_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.1, Ensure that the IUT correctly handles procedure call operations
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_220301_CallOperation_001 {
+
+ type port loopbackPort message {
+ inout integer
+ } with {extension "internal"}
+
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_220301_CallOperation_001() runs on GeneralComp {
+
+ connect(self:messagePort, self:messagePort);
+
+ messagePort.call(2); //cannot use call on a message based port
+
+ alt {
+ [] messagePort.receive {
+ setverdict(pass);
+ }
+ [] messagePort.receive {
+ setverdict(fail);
+ }
+ }
+ }
+
+ control{
+ execute(TC_NegSem_220301_CallOperation_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Procedure-based operation `call' is not applicable to a message-based port of type `@NegSem_220301_CallOperation_001.loopbackPort'
+<END_RESULT>
+
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220301_CallOperation_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly procedure calls >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220301_CallOperation_002 NegSem_220301_CallOperation_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.1, Ensure that the IUT correctly procedure calls
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_220301_CallOperation_002 {
+
+ /**
+ * @desc testing of inline return template for remote procedure call
+ * @param p_par1 only input parameter
+ * @param p_par2 must have value 4 at return
+ * @param p_par3 must have value 5 at return
+ * @return must return value 1
+ */
+ signature p_NegSem_220301_CallOperation_002(in integer p_par1, out integer p_par2, inout integer p_par3) return integer;
+
+ template p_NegSem_220301_CallOperation_002 s_returnTemplate := {
+ p_par1 := -,
+ p_par2 := 4,
+ p_par3 := 5
+ }
+
+ template p_NegSem_220301_CallOperation_002 s_wrongTemplate := {
+ p_par1 := -,
+ p_par2 := 2,
+ p_par3 := 3
+ }
+
+ template p_NegSem_220301_CallOperation_002 s_callTemplate := {
+ p_par1 := 1,
+ p_par2 := -,
+ p_par3 := 3
+ }
+
+ type port remotePort procedure {
+ inout p_NegSem_220301_CallOperation_002;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port remotePort PCO;
+ }
+
+ function f_ClientQuery() runs on GeneralComp {
+ var integer v_zero:=0;
+ var integer v_one:=1;
+
+ //nowait cannot be used in this construct with timeout checking
+ PCO.call(p_NegSem_220301_CallOperation_002:s_callTemplate, nowait) {
+
+ [] PCO.getreply(p_NegSem_220301_CallOperation_002:s_wrongTemplate value 1) {
+ setverdict(fail);
+ }
+ [] PCO.getreply(p_NegSem_220301_CallOperation_002:s_returnTemplate value 2) {
+ setverdict(fail);
+ }
+ [] PCO.getreply(p_NegSem_220301_CallOperation_002:s_returnTemplate value 1) {
+ setverdict(pass);
+ }
+ [] PCO.catch (timeout) {
+ setverdict(fail);
+ }
+ }
+ }
+
+ function f_ServerResponses() runs on GeneralComp {
+
+ var integer v_par1;
+ var integer v_par3;
+ timer t_timeout:=30.0;
+
+ template p_NegSem_220301_CallOperation_002 s_acceptTemplate := {
+ p_par1 := ?,
+ p_par2 := ?,
+ p_par3 := ?
+ };
+
+
+ t_timeout.start;
+
+ alt {
+ [] PCO.getcall(p_NegSem_220301_CallOperation_002:s_acceptTemplate) -> param(v_par1, v_par3) {
+ PCO.reply(p_NegSem_220301_CallOperation_002:{p_par1 := -, p_par2 := v_par1+v_par3, p_par3 := v_par1+v_par3+1} value v_par1); //procedure return values are sent
+ repeat;
+ }
+ [] t_timeout.timeout {
+ setverdict(fail);
+ }
+ }
+
+ }
+
+
+ testcase TC_NegSem_220301_CallOperation_002() runs on GeneralComp system GeneralComp {
+ var GeneralComp server := GeneralComp.create("RemoteProcedure Service");
+ var GeneralComp client := GeneralComp.create("RemoteProcedure Client");
+ // map the PTCs to the system port
+ connect(server:PCO, client:PCO);
+
+ server.start(f_ServerResponses());
+ client.start(f_ClientQuery());
+
+ alt {
+ [] client.done {
+ server.stop;
+ }
+ }
+
+ alt {
+ [] all component.done {}
+ }
+
+ disconnect(server:PCO, client:PCO);
+ }
+
+ control{
+ execute(TC_NegSem_220301_CallOperation_002());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A call with `nowait' keyword cannot have response and exception handling part
+<END_RESULT>
+<RESULT COUNT 1>
+error: Catching of `timeout' exception is not allowed because the previous `call' operation does not have timer
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220301_CallOperation_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - null component in the to clause of the call operation >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+
+<MODULE TTCN NegSem_220301_CallOperation_003 NegSem_220301_CallOperation_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.1, null component in the to clause of the call operation
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// No AddressRef shall contain the special value null at the time of the operation.
+
+module NegSem_220301_CallOperation_003 {
+
+ signature S();
+
+ type port P procedure {
+ inout S;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ testcase TC_NegSem_220301_CallOperation_003() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralComp.create("PTC"), v_compRef := null;
+ connect(self:p, v_compRef:p);
+ p.call(S:{}, nowait) to v_compRef;
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_220301_CallOperation_003(), 5.0);
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: The second argument of connect operation contains the null component reference.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220302_GetcallOperation_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that getcall operations are only used on procedure based ports >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220302_GetcallOperation_001 NegSem_220302_GetcallOperation_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.2, Ensure that getcall operations are only used on procedure based ports
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_220302_GetcallOperation_001 {
+
+ type port loopbackPort message {
+ inout integer
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_220302_GetcallOperation_001() runs on GeneralComp {
+
+ connect(self:messagePort, self:messagePort);
+
+ messagePort.send(2);
+
+ alt {
+ [] messagePort.getcall { //cannot use getcall on a message based port
+ setverdict(pass);
+ }
+ [] messagePort.receive {
+ setverdict(fail);
+ }
+ }
+ }
+
+ control{
+ execute(TC_NegSem_220302_GetcallOperation_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Procedure-based operation `getcall' is not applicable to a message-based port of type `@NegSem_220302_GetcallOperation_001.loopbackPort'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220302_GetcallOperation_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that getcall operation does not allow value assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220302_GetcallOperation_002 NegSem_220302_GetcallOperation_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.2, Ensure that getcall operation does not allow value assignment
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_220302_GetcallOperation_002 {
+
+ /**
+ * @desc testing of inline return template for remote procedure call
+ * @param p_par1 only input parameter
+ * @param p_par2 must have value 4 at return
+ * @param p_par3 must have value 5 at return
+ * @return must return value 1
+ */
+ signature p_NegSem_220302_GetcallOperation_002(in integer p_par1, out integer p_par2, inout integer p_par3) return integer;
+
+ template p_NegSem_220302_GetcallOperation_002 s_returnTemplate := {
+ p_par1 := 0, // p_par1 := -, core dump
+ p_par2 := 4,
+ p_par3 := 5
+ }
+
+ template p_NegSem_220302_GetcallOperation_002 s_wrongTemplate := {
+ p_par1 := 0, // p_par1 := -, core dump
+ p_par2 := 2,
+ p_par3 := 3
+ }
+
+ template p_NegSem_220302_GetcallOperation_002 s_callTemplate := {
+ p_par1 := 1,
+ p_par2 := 0, // p_par2 := -, core dump
+ p_par3 := 3
+ }
+
+ type port remotePort procedure {
+ inout p_NegSem_220302_GetcallOperation_002;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port remotePort PCO;
+ }
+
+ function f_ClientQuery() runs on GeneralComp {
+ var integer v_zero:=0;
+ var integer v_one:=1;
+
+ PCO.call(p_NegSem_220302_GetcallOperation_002:s_callTemplate, 5.0) {
+
+ [] PCO.getreply(p_NegSem_220302_GetcallOperation_002:s_wrongTemplate value 1) {
+ setverdict(fail);
+ }
+ [] PCO.getreply(p_NegSem_220302_GetcallOperation_002:s_returnTemplate value 2) {
+ setverdict(fail);
+ }
+ [v_one>v_zero] PCO.getreply(p_NegSem_220302_GetcallOperation_002:s_returnTemplate value 1) { //check that boolean guard is correctly evaluated
+ setverdict(pass);
+ }
+ [] PCO.catch (timeout) {
+ setverdict(fail);
+ }
+ }
+ }
+
+ function f_ServerResponses() runs on GeneralComp {
+
+ var integer v_par1;
+ var integer v_par3;
+ var integer v_return;
+ timer t_timeout:=30.0;
+
+ template p_NegSem_220302_GetcallOperation_002 s_acceptTemplate := {
+ p_par1 := ?,
+ p_par2 := ?,
+ p_par3 := ?
+ };
+
+
+ t_timeout.start;
+
+ alt {
+ [] PCO.getcall(p_NegSem_220302_GetcallOperation_001:s_acceptTemplate) -> value v_return {
+ //not allowed assignment
+ }
+ [] t_timeout.timeout {
+ }
+ }
+
+ }
+
+
+ testcase TC_NegSem_220302_GetcallOperation_002() runs on GeneralComp system GeneralComp {
+ var GeneralComp server := GeneralComp.create("RemoteProcedure Service");
+ var GeneralComp client := GeneralComp.create("RemoteProcedure Client");
+ timer t_wait:=1.0;
+
+
+ connect(server:PCO, client:PCO);
+
+ server.start(f_ServerResponses());
+ client.start(f_ClientQuery());
+
+ alt {
+ [] client.done {
+ t_wait.start;
+ while(t_wait.running) {
+ //this gives a chance for server to still test for second getcall match
+ }
+ server.stop;
+ }
+ }
+
+ alt {
+ [] all component.done {}
+ }
+
+ disconnect(server:PCO, client:PCO);
+ }
+
+ control{
+ execute(TC_NegSem_220302_GetcallOperation_002());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `value': syntax error, unexpected ValueKeyword, expecting ParamKeyword or SenderKeyword
+<END_RESULT>
+<RESULT COUNT 1>
+error: at or before token `testcase': syntax error, unexpected TestcaseKeyword, expecting \$end
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220302_GetcallOperation_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that getcall for any call does not allow param assignment >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220302_GetcallOperation_003 NegSem_220302_GetcallOperation_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.2, Ensure that getcall for any call does not allow param assignment
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_220302_GetcallOperation_003 {
+
+ /**
+ * @desc testing of inline return template for remote procedure call
+ * @param p_par1 only input parameter
+ * @param p_par2 must have value 4 at return
+ * @param p_par3 must have value 5 at return
+ * @return must return value 1
+ */
+ signature p_NegSem_220302_GetcallOperation_003(in integer p_par1, out integer p_par2, inout integer p_par3) return integer;
+
+ template p_NegSem_220302_GetcallOperation_003 s_returnTemplate := {
+ p_par1 := 0, // p_par1 := -, core dump
+ p_par2 := 4,
+ p_par3 := 5
+ }
+
+ template p_NegSem_220302_GetcallOperation_003 s_wrongTemplate := {
+ p_par1 := 0, // p_par1 := -, core dump
+ p_par2 := 2,
+ p_par3 := 3
+ }
+
+ template p_NegSem_220302_GetcallOperation_003 s_callTemplate := {
+ p_par1 := 1,
+ p_par2 := 0, // p_par2 := -, core dump
+ p_par3 := 3
+ }
+
+ type port remotePort procedure {
+ inout p_NegSem_220302_GetcallOperation_003;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port remotePort PCO;
+ }
+
+ function f_ClientQuery() runs on GeneralComp {
+ var integer v_zero:=0;
+ var integer v_one:=1;
+
+ PCO.call(p_NegSem_220302_GetcallOperation_003:s_callTemplate, 5.0) {
+
+ [] PCO.getreply(p_NegSem_220302_GetcallOperation_003:s_wrongTemplate value 1) {
+ setverdict(fail);
+ }
+ [] PCO.getreply(p_NegSem_220302_GetcallOperation_003:s_returnTemplate value 2) {
+ setverdict(fail);
+ }
+ [v_one>v_zero] PCO.getreply(p_NegSem_220302_GetcallOperation_003:s_returnTemplate value 1) { //check that boolean guard is correctly evaluated
+ setverdict(pass);
+ }
+ [] PCO.catch (timeout) {
+ setverdict(fail);
+ }
+ }
+ }
+
+ function f_ServerResponses() runs on GeneralComp {
+
+ var integer v_par1;
+ var integer v_par3;
+ timer t_timeout:=30.0;
+
+ template p_NegSem_220302_GetcallOperation_003 s_acceptTemplate := {
+ p_par1 := ?,
+ p_par2 := ?,
+ p_par3 := ?
+ };
+
+
+ t_timeout.start;
+
+ alt {
+ [] PCO.getcall -> param(v_par1, v_par3) { //not allowed param assignment for any call
+ }
+ [] t_timeout.timeout {
+ }
+ }
+
+ }
+
+
+ testcase TC_NegSem_220302_GetcallOperation_003() runs on GeneralComp system GeneralComp {
+ var GeneralComp server := GeneralComp.create("RemoteProcedure Service");
+ var GeneralComp client := GeneralComp.create("RemoteProcedure Client");
+ timer t_wait:=1.0;
+
+ // map the PTCs to the system port
+ connect(server:PCO, client:PCO);
+
+ server.start(f_ServerResponses());
+ client.start(f_ClientQuery());
+
+ alt {
+ [] client.done {
+ t_wait.start;
+ while(t_wait.running) {
+ //this gives a chance for server to still test for second getcall match
+ }
+ server.stop;
+ }
+ }
+
+ alt {
+ [] all component.done {}
+ }
+
+ disconnect(server:PCO, client:PCO);
+ }
+
+ control{
+ execute(TC_NegSem_220302_GetcallOperation_003());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Parameter redirect cannot be used without signature template
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220302_GetcallOperation_009 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - null component in the from clause of the getcall operation >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_220302_GetcallOperation_009 NegSem_220302_GetcallOperation_009.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.2, null component in the from clause of the getcall operation
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// No AddressRef shall contain the special value null at the time of the operation.
+
+module NegSem_220302_GetcallOperation_009 {
+
+ signature S();
+
+ type port P procedure {
+ inout S;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ function f() runs on GeneralComp
+ {
+ var GeneralComp v_compRef := null;
+ connect(self:p, v_compRef:p);
+
+ alt {
+ [] p.getcall(S:{}) from v_compRef { setverdict(pass, "first branch");} // error expected
+ [] p.getcall(S:{}) { setverdict(fail, "second branch"); }
+ }
+ }
+
+ testcase TC_NegSem_220302_GetcallOperation_009() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralComp.create;
+ connect(self:p, v_ptc:p);
+ p.call(S:{}, nowait);
+ v_ptc.start(f());
+ v_ptc.done;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_220302_GetcallOperation_009(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: The second argument of connect operation contains the null component reference.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220302_GetcallOperation_016 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - incompatible from and sender clause in getcall operation >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220302_GetcallOperation_016 NegSem_220302_GetcallOperation_016.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.2, incompatible from and sender clause in getcall operation
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// If the getcall operation contains both from and sender clause, the variable or parameter
+// referenced in the sender clause shall be type compatible with the template in the from
+// clause.
+
+module NegSem_220302_GetcallOperation_016 {
+
+ signature S();
+
+ type port P procedure {
+ inout S;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ var integer vc_int;
+ port P p;
+ }
+
+ type component AltComp {
+ var charstring vc_str;
+ port P px;
+ }
+
+ function f() runs on GeneralComp {
+ var GeneralComp v_compRef := null;
+ alt {
+ [] p.getcall(S:{}) from AltComp:? -> sender v_compRef { } // error expected
+ [] p.getcall(S:{}) { }
+ }
+ setverdict (pass);
+ }
+
+ testcase TC_NegSem_220302_GetcallOperation_016() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralComp.create;
+ connect(self:p, v_ptc:p);
+ p.call(S:{}, nowait);
+ v_ptc.start(f());
+ v_ptc.done;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_220302_GetcallOperation_016(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The types in `from' clause and `sender' redirect are not the same: `@NegSem_220302_GetcallOperation_016.AltComp' was expected instead of `@NegSem_220302_GetcallOperation_016.GeneralComp'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220303_ReplyOperation_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that reply operations are only used on procedure based ports >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220303_ReplyOperation_001 NegSem_220303_ReplyOperation_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.3, Ensure that reply operations are only used on procedure based ports
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_220303_ReplyOperation_001 {
+
+ type port loopbackPort message {
+ inout integer
+ } with {extension "internal"}
+
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_220303_ReplyOperation_001() runs on GeneralComp {
+
+ connect(self:messagePort, self:messagePort);
+
+ messagePort.send(2);
+
+ alt {
+ [] messagePort.receive(2) {
+ messagePort.reply(3); //cannot use reply on a message based port
+ setverdict(pass);
+ }
+ [] messagePort.receive {
+ setverdict(fail);
+ }
+ }
+ }
+
+ control{
+ execute(TC_NegSem_220303_ReplyOperation_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Procedure-based operation `reply' is not applicable to a message-based port of type `@NegSem_220303_ReplyOperation_001.loopbackPort'
+<END_RESULT>
+<RESULT COUNT 1>
+error: The type of parameter is `integer', which is not a signature
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220303_ReplyOperation_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - null component in the to clause of the reply operation >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_220303_ReplyOperation_002 NegSem_220303_ReplyOperation_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.3, null component in the to clause of the reply operation
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirements are tested:
+// No AddressRef shall contain the special value null at the time of the operation.
+
+module NegSem_220303_ReplyOperation_002 {
+
+
+ signature S();
+
+ type port P procedure {
+ inout S;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ function f_server() runs on GeneralComp {
+ var GeneralComp v_compRef := null;
+ connect(self:p, v_compRef:p);
+ p.getcall(S:{});
+ p.reply(S:{}) to v_compRef;
+ }
+
+ testcase TC_NegSem_220303_ReplyOperation_002() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralComp.create("PTC");
+ connect(self:p, v_ptc:p);
+ v_ptc.start(f_server());
+ p.call(S:{}, 1.0) {
+ [] p.getreply(S:{}) { }
+ [] p.catch(timeout) { }
+ }
+ setverdict(pass);
+ }
+
+ control{
+ execute(TC_NegSem_220303_ReplyOperation_002(), 5.0);
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: The second argument of connect operation contains the null component reference.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220304_getreply_operation_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - null component in the from clause of the getreply operation >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_220304_getreply_operation_006 NegSem_220304_getreply_operation_006.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.4, null component in the from clause of the getreply operation
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// No AddressRef shall contain the special value null at the time of the operation.
+
+module NegSem_220304_getreply_operation_006 {
+
+ signature S();
+
+ type port P procedure {
+ inout S;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ function f() runs on GeneralComp
+ {
+ p.getcall(S:{});
+ p.reply(S:{});
+ }
+
+ testcase TC_NegSem_220304_getreply_operation_006() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_compRef := null;
+ var GeneralComp v_ptc := GeneralComp.create;
+ connect(self:p, v_ptc:p);
+ connect(self:p, v_compRef:p);
+
+ v_ptc.start(f());
+ p.call(S:{}) {
+ [] p.getreply(S:{}) from v_compRef {} // error expected
+ [] p.getreply(S:{}) {}
+ }
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_220304_getreply_operation_006(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: The second argument of connect operation contains the null component reference.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220304_getreply_operation_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - null component in the multicast list of the from clause of the getreply operation >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_220304_getreply_operation_007 NegSem_220304_getreply_operation_007.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.4, null component in the multicast list of the from clause of the getreply operation
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// No AddressRef shall contain the special value null at the time of the operation.
+
+module NegSem_220304_getreply_operation_007 {
+
+ signature S();
+
+ type port P procedure {
+ inout S;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ function f() runs on GeneralComp {
+ p.getcall(S:{});
+ p.reply(S:{});
+ }
+
+ testcase TC_NegSem_220304_getreply_operation_007() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_compRef := null;
+ var GeneralComp v_ptc := GeneralComp.create;
+ connect(self:p, v_ptc:p);
+ connect(self:p, v_compRef:p);
+
+ v_ptc.start(f());
+ p.call(S:{}) {
+ [] p.getreply(S:{}) from (mtc, v_compRef) {} // error expected
+ }
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_220304_getreply_operation_007(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: The second argument of connect operation contains the null component reference.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220304_getreply_operation_013 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - incompatible from and sender clause in getreply operation >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220304_getreply_operation_013 NegSem_220304_getreply_operation_013.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.4, incompatible from and sender clause in getreply operation
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// If the getreply operation contains both from and sender clause, the variable or parameter
+// referenced in the sender clause shall be type compatible with the template in the from
+// clause.
+
+module NegSem_220304_getreply_operation_013 {
+
+ signature S();
+
+ type port P procedure {
+ inout S;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ var integer vc_int;
+ port P p;
+ }
+
+ type component AltComp {
+ var charstring vc_str;
+ port P px;
+ }
+
+ function f() runs on GeneralComp {
+ p.getcall(S:{});
+ p.reply(S:{});
+ }
+
+ testcase TC_NegSem_220304_getreply_operation_013() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_compRef := null;
+ var GeneralComp v_ptc := GeneralComp.create;
+ connect(self:p, v_ptc:p);
+ p.call(S:{}) {
+ [] p.getreply(S:{}) from AltComp:? -> sender v_compRef { } // error expected
+ [] p.getreply(S:{}) { }
+ }
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_220304_getreply_operation_013(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The types in `from' clause and `sender' redirect are not the same: `@NegSem_220304_getreply_operation_013.AltComp' was expected instead of `@NegSem_220304_getreply_operation_013.GeneralComp'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220305_raise_operation_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - raised exception type not in the list of available exceptions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220305_raise_operation_001 NegSem_220305_raise_operation_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.5, raised exception type not in the list of available exceptions
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// Exceptions are specified as types. Therefore the exception value may either be derived
+// from a template or be the value resulting from an expression (which of course can be
+// an explicit value). The optional type field in the value specification to the raise
+// operation shall be used in cases where it is necessary to avoid any ambiguity of the type
+// of the value being sent.
+
+module NegSem_220305_raise_operation_001 {
+ signature S() exception(charstring, octetstring);
+
+ type port P procedure {
+ inout S;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ function f() runs on GeneralComp
+ {
+ p.getcall(S:{});
+ p.raise(S, 1);
+ setverdict(pass);
+ }
+
+ testcase TC_NegSem_220305_raise_operation_001() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralComp.create;
+ connect(self:p, v_ptc:p);
+ v_ptc.start(f());
+ p.call(S:{}, nowait);
+ // no processing of the exception to avoid possible errors in the catch operation
+ v_ptc.done;
+ }
+
+ control {
+ execute(TC_NegSem_220305_raise_operation_001(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type `integer' is not present on the exception list of signature `@NegSem_220305_raise_operation_001.S'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220305_raise_operation_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - exception raised for a signature with no exception list >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220305_raise_operation_002 NegSem_220305_raise_operation_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.5, exception raised for a signature with no exception list
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// Exceptions are specified as types. Therefore the exception value may either be derived
+// from a template or be the value resulting from an expression (which of course can be
+// an explicit value). The optional type field in the value specification to the raise
+// operation shall be used in cases where it is necessary to avoid any ambiguity of the type
+// of the value being sent.
+
+module NegSem_220305_raise_operation_002 {
+ signature S();
+
+ type port P procedure {
+ inout S;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ function f() runs on GeneralComp
+ {
+ p.getcall(S:{});
+ p.raise(S, 1);
+ setverdict(pass);
+ }
+
+ testcase TC_NegSem_220305_raise_operation_002() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralComp.create;
+ connect(self:p, v_ptc:p);
+ v_ptc.start(f());
+ p.call(S:{}, nowait);
+ // no processing of the exception to avoid possible errors in the catch operation
+ v_ptc.done;
+ }
+
+ control {
+ execute(TC_NegSem_220305_raise_operation_002(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Signature `@NegSem_220305_raise_operation_002.S' does not have exceptions
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220305_raise_operation_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - raised exception type is ambiguous >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220305_raise_operation_003 NegSem_220305_raise_operation_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.5, raised exception type is ambiguous
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// Exceptions are specified as types. Therefore the exception value may either be derived
+// from a template or be the value resulting from an expression (which of course can be
+// an explicit value). The optional type field in the value specification to the raise
+// operation shall be used in cases where it is necessary to avoid any ambiguity of the type
+// of the value being sent.
+
+module NegSem_220305_raise_operation_003 {
+ type integer MyInt1 (1..10);
+ type integer MyInt2 (1..20);
+
+ signature S() exception(MyInt1, MyInt2);
+
+ type port P procedure {
+ inout S;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ function f() runs on GeneralComp
+ {
+ p.getcall(S:{});
+ p.raise(S, 1);
+ setverdict(pass);
+ }
+
+ testcase TC_NegSem_220305_raise_operation_003() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralComp.create;
+ connect(self:p, v_ptc:p);
+ v_ptc.start(f());
+ p.call(S:{}, nowait);
+ // no processing of the exception to avoid possible errors in the catch operation
+ v_ptc.done;
+ }
+
+ control {
+ execute(TC_NegSem_220305_raise_operation_003(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Type of the exception is ambiguous: `integer' is compatible with more than one exception types of signature `@NegSem_220305_raise_operation_003.S'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220305_raise_operation_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - missing to clause in case of 1 to n connection >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_220305_raise_operation_004 NegSem_220305_raise_operation_004.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.5, missing to clause in case of 1 to n connection
+ ** @verdict pass reject
+ *****************************************************************/
+// The following requirements are tested:
+// In case of one-to-one connections, the to clause may be omitted, because the receiving
+// entity is uniquely identified by the system structure.
+
+module NegSem_220305_raise_operation_004 {
+ signature S() exception(integer);
+
+ type port P procedure {
+ inout S;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ function f(integer p_expected) runs on GeneralComp
+ {
+ p.call(S:{}) {
+ [] p.catch(S, p_expected) { setverdict(pass); }
+ [] p.catch { setverdict(fail); }
+ }
+ }
+
+ testcase TC_NegSem_220305_raise_operation_004() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc1 := GeneralComp.create, v_ptc2 := GeneralComp.create;
+ connect(self:p, v_ptc1:p);
+ connect(self:p, v_ptc2:p);
+ v_ptc1.start(f(1));
+ v_ptc2.start(f(1));
+ p.getcall(S:{});
+ p.getcall(S:{}); // call from both components expected
+ p.raise(S, 1); // missing to clause: error expected
+ all component.done;
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_220305_raise_operation_004(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Port p has more than one active connections. Message can be sent on it only with explicit addressing.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220305_raise_operation_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - exception on a message port >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220305_raise_operation_005 NegSem_220305_raise_operation_005.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.5, exception on a message port
+ ** @verdict pass reject
+ *****************************************************************/
+// The following requirements are tested:
+// An exception shall only be raised at a procedure-based port. An exception is a reaction
+// to an accepted procedure call the result of which leads to an exceptional event.
+
+module NegSem_220305_raise_operation_005 {
+ signature S() exception(integer);
+
+ type port PSig procedure {
+ inout S;
+ } with {extension "internal"}
+
+ type port PMsg message {
+ inout integer;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port PSig p1;
+ port PMsg p2;
+ }
+
+ function f() runs on GeneralComp
+ {
+ p1.getcall(S:{});
+ p2.raise(S, 1);
+ setverdict(pass);
+ }
+
+ testcase TC_NegSem_220305_raise_operation_005() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralComp.create;
+ connect(self:p1, v_ptc:p1);
+ connect(self:p2, v_ptc:p2);
+ v_ptc.start(f());
+ p1.call(S:{}, nowait);
+ // no processing of the exception to avoid possible errors in the catch operation
+ v_ptc.done;
+ }
+
+ control {
+ execute(TC_NegSem_220305_raise_operation_005(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Procedure-based operation `raise' is not applicable to a message-based port of type `@NegSem_220305_raise_operation_005.PMsg'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220305_raise_operation_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - exception procedure signature not in the port list >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220305_raise_operation_006 NegSem_220305_raise_operation_006.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.5, exception procedure signature not in the port list
+ ** @verdict pass reject
+ *****************************************************************/
+// The following requirements are tested:
+// The type definition of the port shall include in its list of accepted procedure calls the
+// name of the procedure to which the exception belongs.
+
+module NegSem_220305_raise_operation_006 {
+ signature S1() exception(integer);
+ signature S2() exception(integer);
+
+ type port P procedure {
+ inout S1;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ function f() runs on GeneralComp
+ {
+ p.getcall(S1:{});
+ p.raise(S2, 1);
+ setverdict(pass);
+ }
+
+ testcase TC_NegSem_220305_raise_operation_006() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralComp.create;
+ connect(self:p, v_ptc:p);
+ v_ptc.start(f());
+ p.call(S1:{}, nowait);
+ // no processing of the exception to avoid possible errors in the catch operation
+ v_ptc.done;
+ }
+
+ control {
+ execute(TC_NegSem_220305_raise_operation_006(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Signature `@NegSem_220305_raise_operation_006.S2' is not present on the incoming list of port type `@NegSem_220305_raise_operation_006.P'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220305_raise_operation_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - value of incorrect type in the to clause of the raise operation >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220305_raise_operation_007 NegSem_220305_raise_operation_007.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.5, value of incorrect type in the to clause of the raise operation
+ ** @verdict pass reject
+ *****************************************************************/
+// The following requirements are tested:
+// AddressRef shall be of type address, component or of the type provided in the address
+// declaration of the port type of the port instance referenced in the raise operation.
+
+module NegSem_220305_raise_operation_007 {
+ signature S() exception(integer);
+
+ type port P procedure {
+ inout S;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ const charstring c_ptcName := "PTC";
+
+ function f() runs on GeneralComp
+ {
+ p.getcall(S:{});
+ p.raise(S, 1) to c_ptcName;
+ setverdict(pass);
+ }
+
+ testcase TC_NegSem_220305_raise_operation_007() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralComp.create(c_ptcName);
+ connect(self:p, v_ptc:p);
+ v_ptc.start(f());
+ p.call(S:{}, nowait);
+ // no processing of the exception to avoid possible errors in the catch operation
+ v_ptc.done;
+ }
+
+ control {
+ execute(TC_NegSem_220305_raise_operation_007(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A component reference was expected as operand
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220305_raise_operation_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - null in the to clause of the raise operation >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_220305_raise_operation_008 NegSem_220305_raise_operation_008.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.5, null in the to clause of the raise operation
+ ** @verdict pass reject
+ *****************************************************************/
+// The following requirements are tested:
+// No AddressRef shall contain the special value null at the time of the operation.
+
+module NegSem_220305_raise_operation_008 {
+ signature S() exception(integer);
+
+ type port P procedure {
+ inout S;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ function f() runs on GeneralComp
+ {
+ var GeneralComp v_compRef := null;
+ connect(self:p, v_compRef:p);
+ p.getcall(S:{});
+ p.raise(S, 1) to v_compRef;
+ setverdict(pass);
+ }
+
+ testcase TC_NegSem_220305_raise_operation_008() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralComp.create;
+ connect(self:p, v_ptc:p);
+ v_ptc.start(f());
+ p.call(S:{}, nowait);
+ // no processing of the exception to avoid possible errors in the catch operation
+ v_ptc.done;
+ }
+
+ control {
+ execute(TC_NegSem_220305_raise_operation_008(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: The second argument of connect operation contains the null component reference.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220305_raise_operation_009 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - raise operation on disconnected and unmapped ports >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_220305_raise_operation_009 NegSem_220305_raise_operation_009.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.5, raise operation on disconnected and unmapped ports
+ ** @verdict pass reject
+ *****************************************************************/
+// The following requirements are tested:
+// Applying a raise operation to an unmapped or disconnected port shall cause a test case
+// error.
+
+module NegSem_220305_raise_operation_009 {
+ signature S() exception(integer);
+
+ type port P procedure {
+ inout S;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ function f() runs on GeneralComp
+ {
+ p.getcall(S:{});
+ disconnect(self:p, mtc:p);
+ p.raise(S, 1);
+ setverdict(pass);
+ }
+
+ testcase TC_NegSem_220305_raise_operation_009() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_ptc := GeneralComp.create;
+ connect(self:p, v_ptc:p);
+ v_ptc.start(f());
+ p.call(S:{}, nowait);
+ // no processing of the exception to avoid possible errors in the catch operation
+ v_ptc.done;
+ }
+
+ control {
+ execute(TC_NegSem_220305_raise_operation_009(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Port p has neither connections nor mappings. Message cannot be sent on it.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220306_catch_operation_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - null component in the from clause of the catch operation >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_220306_catch_operation_006 NegSem_220306_catch_operation_006.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.6, null component in the from clause of the catch operation
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// No AddressRef shall contain the special value null at the time of the operation.
+
+module NegSem_220306_catch_operation_006 {
+
+ signature S() exception (charstring);
+
+ type port P procedure {
+ inout S;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ function f() runs on GeneralComp
+ {
+ p.getcall(S:{});
+ p.raise(S, "exc");
+ }
+
+ testcase TC_NegSem_220306_catch_operation_006() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_compRef := null;
+ var GeneralComp v_ptc := GeneralComp.create;
+ connect(self:p, v_ptc:p);
+ connect(self:p, v_compRef:p);
+ v_ptc.start(f());
+ p.call(S:{}) {
+ [] p.catch(S, charstring:?) from v_compRef {} // error expected
+ [] p.catch {}
+ }
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_220306_catch_operation_006(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: The second argument of connect operation contains the null component reference.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220306_catch_operation_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - null component in the multicast list of the from clause of the catch operation >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_220306_catch_operation_007 NegSem_220306_catch_operation_007.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.6, null component in the multicast list of the from clause of the catch operation
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// No AddressRef shall contain the special value null at the time of the operation.
+
+module NegSem_220306_catch_operation_007 {
+
+ signature S() exception (charstring);
+
+ type port P procedure {
+ inout S;
+ } with {extension "internal"}
+
+ type component GeneralComp
+ {
+ port P p;
+ }
+
+ function f() runs on GeneralComp
+ {
+ p.getcall(S:{});
+ p.raise(S, "exc");
+ }
+
+ testcase TC_NegSem_220306_catch_operation_007() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_compRef := null;
+ var GeneralComp v_ptc := GeneralComp.create;
+ connect(self:p, v_ptc:p);
+ connect(self:p, v_compRef:p);
+ v_ptc.start(f());
+ p.call(S:{}) {
+ [] p.catch(S, charstring:?) from (mtc, v_compRef) {} // error expected
+ }
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_220306_catch_operation_007(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: The second argument of connect operation contains the null component reference.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_220306_catch_operation_013 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - incompatible from and sender clause in catch operation >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_220306_catch_operation_013 NegSem_220306_catch_operation_013.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.3.6, incompatible from and sender clause in catch operation
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// If the catch operation contains both from and sender clause, the variable or parameter
+// referenced in the sender clause shall be type compatible with the template in the from
+// clause.
+
+module NegSem_220306_catch_operation_013 {
+
+ signature S() exception (charstring);
+
+ type port P procedure {
+ inout S;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ var integer vc_int;
+ port P p;
+ }
+
+ type component AltComp {
+ var charstring vc_str;
+ port P px;
+ }
+
+ function f() runs on GeneralComp {
+ p.getcall(S:{});
+ p.raise(S, "exc");
+ }
+
+ testcase TC_NegSem_220306_catch_operation_013() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_compRef := null;
+ var GeneralComp v_ptc := GeneralComp.create;
+ connect(self:p, v_ptc:p);
+
+ p.call(S:{}) {
+ [] p.catch(S, charstring:?) from AltComp:? -> sender v_compRef { } // error expected
+ [] p.catch { }
+ }
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_220306_catch_operation_013(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The types in `from' clause and `sender' redirect are not the same: `@NegSem_220306_catch_operation_013.AltComp' was expected instead of `@NegSem_220306_catch_operation_013.GeneralComp'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h2. 2204_the_check_operation folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2204_the_check_operation_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - null component reference in from clause of check operation >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_2204_the_check_operation_001 NegSem_2204_the_check_operation_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:22.4, null component reference in from clause of check operation
+ ** @verdict pass reject
+ *****************************************************************/
+
+// The following requirements are tested:
+// No AddressRef shall contain the special value null at the time of the operation.
+
+module NegSem_2204_the_check_operation_001 {
+
+ type port P message {
+ inout integer;
+ //address integer;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port P p;
+ }
+
+ testcase TC_NegSem_2204_the_check_operation_001() runs on GeneralComp system GeneralComp {
+ var GeneralComp v_comp := null;
+ connect(self:p, self:p);
+ connect(self:p, v_comp:p);
+ p.send(10);
+ alt {
+ [] p.check (from v_comp) {}
+ [] p.check {}
+ }
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_2204_the_check_operation_001(), 5.0);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: The second argument of connect operation contains the null component reference.
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h1.References
+.*---------------------------------------------------------------------*
+:list.
+:li D='[1]'.1/174 02-CRL 113 200/5 Uen
+:nl.Statement of Compliance for TITAN project
+:li D='[2]'.ETSI ES 201 873-1, v4.7.1 Mockup v1 (2015-06):
+:nl.Testing and Test Control Notation version 3.,
+:nl.Part 1: TTCN-3 Core Language
+:elist.
--- /dev/null
+.******************************************************************************
+.* Copyright (c) 2000-2016 Ericsson Telecom AB
+.* All rights reserved. This program and the accompanying materials
+.* are made available under the terms of the Eclipse Public License v1.0
+.* which accompanies this distribution, and is available at
+.* http://www.eclipse.org/legal/epl-v10.html
+.*
+.* Contributors:
+.* Adrien Kirjak – initial implementation
+.*
+.******************************************************************************/
+text.
+:lang eng.
+.*
+:docname.Test Description
+:docno.xz/152 91-CRL 113 200 Uen
+:rev.PA1
+:date.2016-04-04
+.*
+:prep.ETH/XZ EADRKIR
+:subresp.EADRKIR
+:appr.ETH/XZ (Elemer Lelik)
+:checked.
+.*
+:title.ETSI TTCN3 Negative Conformance Test
+:contents level=3.
+.*---------------------------------------------------------------------*
+:h1.PREREQUISITES AND PREPARATIONS
+.*---------------------------------------------------------------------*
+.*---------------------------------------------------------------------*
+:h2.Scope of the Test Object
+.*---------------------------------------------------------------------*
+:xmp tab=1 nokeep.
+This TD contains negative tests from ETSI TTCN3 Conformance Test's 23_timer_operations, 24_test_verdict_operations, 26_module_control and B_matching_incoming_values folders.
+
+:exmp.
+
+.*---------------------------------------------------------------------*
+:h2.Test Tools
+.*---------------------------------------------------------------------*
+:p.:us.Software Tools:eus.
+:xmp tab=2 nokeep.
+
+ SAtester.pl
+
+:exmp.
+:np.
+
+.*---------------------------------------------------------------------*
+:h1.REQUIREMENT-BASED TESTS
+.*---------------------------------------------------------------------*
+.*---------------------------------------------------------------------*
+:h2. 23_timer_operations folder
+.*---------------------------------------------------------------------*
+*---------------------------------------------------------------------*
+:h3. NegSem_23_toplevel_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer operations are not allowed outside of module control, test case, function, altstep >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_23_toplevel_001 NNegSem_23_toplevel_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23, Ensure timer operations are not allowed outside of module control, test case, function, altstep
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/Usage of timers is allowed in test cases, functions, altsteps, module control/Timer read is not allowed in component definitions
+module NegSem_23_toplevel_001
+{
+ type component TComp
+ {
+ timer t_timer1 := 1.0;
+ timer t_timer2 := t_timer1.read;
+ }
+
+ testcase TC_NegSem_23_toplevel_001() runs on TComp
+ {
+ log("Value of t_timer2.read before starting it", t_timer2.read);
+ }
+
+ control
+ {
+ execute(TC_NegSem_23_toplevel_001())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A static value was expected instead of operation `timer read'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_23_toplevel_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer operations are not allowed outside of module control, test case, function, altstep >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_23_toplevel_002 NegSem_23_toplevel_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23, Ensure timer operations are not allowed outside of module control, test case, function, altstep
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/Usage of timers is allowed in test cases, functions, altsteps, module control/Timer running is not allowed in component definitions
+module NegSem_23_toplevel_002
+{
+ type component TComp
+ {
+ timer t_timer1 := 1.0;
+ var boolean v_bool := t_timer1.running;
+ }
+
+ testcase TC_NegSem_23_toplevel_002() runs on TComp
+ {
+ log("Value of timer.running before starting it", v_bool);
+ }
+
+ control
+ {
+ execute(TC_NegSem_23_toplevel_002())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A static value was expected instead of operation `timer running'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_23_toplevel_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer operations are not allowed outside of module control, test case, function, altstep >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_23_toplevel_001 NegSyn_23_toplevel_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23, Ensure timer operations are not allowed outside of module control, test case, function, altstep
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/Usage of timers is allowed in test cases, functions, altsteps, module control/Timer stop is not allowed in module definitions
+
+module NegSyn_23_toplevel_001
+{
+ all timer.stop;
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `all': syntax error, unexpected AllKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_23_toplevel_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer operations are not allowed outside of module control, test case, function, altstep >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_23_toplevel_002 NegSyn_23_toplevel_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23, Ensure timer operations are not allowed outside of module control, test case, function, altstep
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/Usage of timers is allowed in test cases, functions, altsteps, module control/Timer timeout operation is not allowed in module definitions
+
+module NegSyn_23_toplevel_002
+{
+ any timer.timeout;
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `any': syntax error, unexpected AnyKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2302_timer_start_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure negative value is not allowed >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_2302_timer_start_003 NegSem_2302_timer_start_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23, Ensure negative value is not allowed
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.2 The start timer operation/Timer value is non-neg float
+// #reqname /Requirements/23 Timer operations/23.2 The start timer operation/neg timer value causes error verdict
+
+module NegSem_2302_timer_start_003 {
+ type component TComp{
+ timer t_timer;
+ }
+
+ testcase TC_NegSem_2302_timer_start_003() runs on TComp{
+ // Timer value shall be a non-negative numerical float number
+ // (i.e. the value shall be greater or equal 0.0, infinity and not_a_number are disallowed).
+ var float duration := -1.0;
+ t_timer.start(duration);
+
+ setverdict(fail);
+ }
+
+ control{
+
+ execute(TC_NegSem_2302_timer_start_003())
+
+
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Starting timer t_timer with a negative duration \(-1\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2302_timer_start_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure negative infinity is not allowed >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_2302_timer_start_004 NegSem_2302_timer_start_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23, Ensure negative infinity is not allowed
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.2 The start timer operation/Timer value is non-neg float
+
+
+module NegSem_2302_timer_start_004 {
+ type component TComp{
+ timer t_timer;
+ }
+
+ testcase TC_NegSem_2302_timer_start_004() runs on TComp{
+ // Timer value shall be a non-negative numerical float number
+ // (i.e. the value shall be greater or equal 0.0, infinity and not_a_number are disallowed).
+ var float duration := -infinity;
+ t_timer.start(duration);
+
+ setverdict(fail);
+ }
+
+ control{
+
+ execute(TC_NegSem_2302_timer_start_004())
+
+
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Starting timer t_timer with a negative duration \(-inf\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2302_timer_start_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer start syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2302_timer_start_001 NegSyn_2302_timer_start_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23, Ensure timer start syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.2 The start timer operation/Start timer syntax
+
+
+module NegSyn_2302_timer_start_001 {
+ type component TComp{
+ timer t_timer := 1.0;
+ }
+
+ testcase TC_NegSyn_2302_timer_start_001() runs on TComp{
+ t_timer.start();
+
+ }
+
+ control{
+
+ execute(TC_NegSyn_2302_timer_start_001())
+
+
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\)': syntax error, unexpected '\)'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2302_timer_start_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer start syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2302_timer_start_002 NegSyn_2302_timer_start_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23, Ensure timer start syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.2 The start timer operation/Start timer syntax
+
+
+module NegSyn_2302_timer_start_002 {
+ type component TComp{
+
+ timer t_timers[3] := {1.0, 1.0, 1.0};
+ }
+
+ testcase TC_NegSyn_2302_timer_start_002() runs on TComp{
+
+ t_timers[].start;
+
+ }
+
+ control{
+
+ execute(TC_NegSyn_2302_timer_start_002())
+
+
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\]': syntax error, unexpected '\]'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2302_timer_start_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer start syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2302_timer_start_003 NegSyn_2302_timer_start_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23, Ensure timer start syntax
+ ** @verdict pass reject
+ ***************************************************/
+
+
+module NegSyn_2302_timer_start_003 {
+ type component TComp{
+
+ timer t_timers[3] := {1.0, 1.0, 1.0};
+ }
+
+ testcase TC_NegSyn_2302_timer_start_003() runs on TComp{
+
+ t_timers[1].start();
+
+ }
+
+ control{
+
+ execute(TC_NegSyn_2302_timer_start_003())
+
+
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\)': syntax error, unexpected '\)'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2302_timer_start_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer start syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2302_timer_start_004 NegSyn_2302_timer_start_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23, Ensure timer start syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.2 The start timer operation/Start timer syntax
+
+
+module NegSyn_2302_timer_start_004 {
+ type component TComp{
+
+ timer t_timer := 1.0;
+ }
+
+ testcase TC_NegSyn_2302_timer_start_004() runs on TComp{
+
+ t_timer.start 1.0;
+
+ }
+
+ control{
+
+ execute(TC_NegSyn_2302_timer_start_004())
+
+
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `1.0': syntax error, unexpected FloatValue
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2302_timer_start_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer start syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2302_timer_start_005 NegSyn_2302_timer_start_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23, Ensure timer start syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.2 The start timer operation/Start timer syntax
+
+
+module NegSyn_2302_timer_start_005 {
+ type component TComp{
+
+ timer t_timer := 1.0;
+ }
+
+ testcase TC_NegSyn_2302_timer_start_005() runs on TComp{
+
+ t_timer start(1.0);
+
+ }
+
+ control{
+
+ execute(TC_NegSyn_2302_timer_start_005())
+
+
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `start': syntax error, unexpected StartKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2302_timer_start_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer start syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2302_timer_start_006 NegSyn_2302_timer_start_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23, Ensure timer start syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.2 The start timer operation/Start timer syntax
+
+
+module NegSyn_2302_timer_start_006 {
+ type component TComp{
+
+ timer t_timers[3] := {1.0, 1.0, 1.0};
+ }
+
+ testcase TC_NegSyn_2302_timer_start_006() runs on TComp{
+
+ t_timers[1].start 1.0;
+
+ }
+
+ control{
+
+ execute(TC_NegSyn_2302_timer_start_006())
+
+
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `1.0': syntax error, unexpected FloatValue
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2302_timer_start_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer start syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2302_timer_start_007 NegSyn_2302_timer_start_007.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23, Ensure timer start syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.2 The start timer operation/Start timer syntax
+
+
+module NegSyn_2302_timer_start_007 {
+ type component TComp{
+
+ timer t_timers[3] := {1.0, 1.0, 1.0};
+ }
+
+ testcase TC_NegSyn_2302_timer_start_007() runs on TComp{
+
+ t_timers[1] start(1.0);
+
+ }
+
+ control{
+
+ execute(TC_NegSyn_2302_timer_start_007())
+
+
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `start': syntax error, unexpected StartKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2302_timer_start_009 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer start syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2302_timer_start_009 NegSyn_2302_timer_start_009.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23, Ensure timer start syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.2 The start timer operation/Start timer syntax
+
+
+module NegSyn_2302_timer_start_009 {
+ type component TComp{
+
+ timer t_timers[3] := {1.0, 1.0, 1.0};
+ }
+
+ testcase TC_NegSyn_2302_timer_start_009() runs on TComp{
+
+ t_timers[1] start;
+
+ }
+
+ control{
+
+ execute(TC_NegSyn_2302_timer_start_009())
+
+
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `start': syntax error, unexpected StartKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2302_timer_start_010 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer start syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2302_timer_start_010 NegSyn_2302_timer_start_010.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23, Ensure timer start syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.2 The start timer operation/Start timer syntax
+// #reqname /Requirements/23 Timer operations/23.7 Summary of use of any and all with timers/Disallow any timer.start
+
+module NegSyn_2302_timer_start_010 {
+ type component TComp{
+
+ timer t_timers[3] := {1.0, 1.0, 1.0};
+ }
+
+ testcase TC_NegSyn_2302_timer_start_010() runs on TComp{
+ // This is not allowed by the TTCN3 grammar
+ any timer.start;
+
+ }
+
+ control{
+
+ execute(TC_NegSyn_2302_timer_start_010())
+
+
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `start': syntax error, unexpected DotStartKeyword, expecting DotTimeoutKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2302_timer_start_011 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer start syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2302_timer_start_011 NegSyn_2302_timer_start_011.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23, Ensure timer start syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.2 The start timer operation/Start timer syntax
+// #reqname /Requirements/23 Timer operations/23.7 Summary of use of any and all with timers/Disallow any timer.start
+
+module NegSyn_2302_timer_start_011 {
+ type component TComp{
+
+ timer t_timers[3] := {1.0, 1.0, 1.0};
+ }
+
+ testcase TC_NegSyn_2302_timer_start_011() runs on TComp{
+ // This is not allowed by the TTCN3 grammar
+ any timer.start(1.0);
+
+ }
+
+ control{
+
+ execute(TC_NegSyn_2302_timer_start_011())
+
+
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `start': syntax error, unexpected DotStartKeyword, expecting DotTimeoutKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2302_timer_start_012 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer start syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2302_timer_start_012 NegSyn_2302_timer_start_012.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23, Ensure timer start syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.2 The start timer operation/Start timer syntax
+// #reqname /Requirements/23 Timer operations/23.7 Summary of use of any and all with timers/Disallow all timer.start
+
+module NegSyn_2302_timer_start_012 {
+ type component TComp{
+
+ timer t_timers[3] := {1.0, 1.0, 1.0};
+ }
+
+ testcase TC_NegSyn_2302_timer_start_012() runs on TComp{
+ // This is not allowed by the TTCN3 grammar
+ all timer.start;
+
+ }
+
+ control{
+
+ execute(TC_NegSyn_2302_timer_start_012())
+
+
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `start': syntax error, unexpected DotStartKeyword, expecting DotStopKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2302_timer_start_013 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer start syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2302_timer_start_013 NegSyn_2302_timer_start_013.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23, Ensure timer start syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.2 The start timer operation/Start timer syntax
+// #reqname /Requirements/23 Timer operations/23.7 Summary of use of any and all with timers/Disallow all timer.start
+
+
+module NegSyn_2302_timer_start_013 {
+ type component TComp{
+
+ timer t_timers[3] := {1.0, 1.0, 1.0};
+ }
+
+ testcase TC_NegSyn_2302_timer_start_013() runs on TComp{
+ // This is not allowed by the TTCN3 grammar
+ all timer.start(1.0);
+
+ }
+
+ control{
+
+ execute(TC_NegSyn_2302_timer_start_013())
+
+
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `start': syntax error, unexpected DotStartKeyword, expecting DotStopKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2303_timer_stop_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer stop syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2303_timer_stop_001 NegSyn_2303_timer_stop_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23.3, Ensure timer stop syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.3 The Stop timer operation/Timer stop syntax
+
+
+module NegSyn_2303_timer_stop_001 {
+ type component TComp{
+ timer t_timer := 1.0;
+ }
+
+ testcase TC_NegSyn_2303_timer_stop_001() runs on TComp{
+ t_timer.start;
+ t_timer stop;
+
+ }
+
+ control{
+
+ execute(TC_NegSyn_2303_timer_stop_001())
+
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `stop': syntax error, unexpected StopKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2303_timer_stop_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer stop syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2303_timer_stop_002 NegSyn_2303_timer_stop_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23.3, Ensure timer stop syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.3 The Stop timer operation/Timer stop syntax
+
+
+module NegSyn_2303_timer_stop_002 {
+ type component TComp{
+ timer t_timer[2] := {1.0, 1.0};
+ }
+
+ testcase TC_NegSyn_2303_timer_stop_002() runs on TComp{
+ t_timer[0].start;
+ t_timer[1].start;
+ t_timer[].stop;
+
+ }
+
+ control{
+
+ execute(TC_NegSyn_2303_timer_stop_002())
+
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\]': syntax error, unexpected '\]'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2303_timer_stop_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer stop syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2303_timer_stop_003 NegSyn_2303_timer_stop_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23.3, Ensure all timer stop syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.3 The Stop timer operation/Timer stop syntax
+
+
+module NegSyn_2303_timer_stop_003 {
+ type component TComp{
+ timer t_timer[2] := {1.0, 1.0};
+ }
+
+ testcase TC_NegSyn_2303_timer_stop_003() runs on TComp{
+ t_timer[0].start;
+ t_timer[1].start;
+ all.stop;
+
+ }
+
+ control{
+
+ execute(TC_NegSyn_2303_timer_stop_003())
+
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `stop': syntax error, unexpected DotStopKeyword, expecting ComponentKeyword or PortKeyword or TimerKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2303_timer_stop_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer stop syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2303_timer_stop_004 NegSyn_2303_timer_stop_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23.3, Ensure all timer stop syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.3 The Stop timer operation/Timer stop syntax
+
+
+module NegSyn_2303_timer_stop_004 {
+ type component TComp{
+ timer t_timer[2] := {1.0, 1.0};
+ }
+
+ testcase TC_NegSyn_2303_timer_stop_004() runs on TComp{
+ t_timer[0].start;
+ t_timer[1].start;
+ timer.stop;
+
+ }
+
+ control{
+ execute(TC_NegSyn_2303_timer_stop_004())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `stop': syntax error, unexpected DotStopKeyword, expecting Identifier
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2303_timer_stop_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer stop syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2303_timer_stop_005 NegSyn_2303_timer_stop_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23.3, Ensure all timer stop syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.3 The Stop timer operation/Timer stop syntax
+
+
+module NegSyn_2303_timer_stop_005 {
+ type component TComp{
+ timer t_timer[2] := {1.0, 1.0};
+ }
+
+ testcase TC_NegSyn_2303_timer_stop_005() runs on TComp{
+ t_timer[0].start;
+ t_timer[1].start;
+ all timer stop;
+
+ }
+
+ control{
+ execute(TC_NegSyn_2303_timer_stop_005())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `stop': syntax error, unexpected StopKeyword, expecting DotStopKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2303_timer_stop_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer stop syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2303_timer_stop_006 NegSyn_2303_timer_stop_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23.3, Ensure all timer stop syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.3 The Stop timer operation/Timer stop syntax
+// #reqname /Requirements/23 Timer operations/23.7 Summary of use of any and all with timers/Disallow any timer.stop
+
+module NegSyn_2303_timer_stop_006 {
+ type component TComp{
+ timer t_timer[2] := {1.0, 1.0};
+ }
+
+ testcase TC_NegSyn_2303_timer_stop_006() runs on TComp{
+ t_timer[0].start;
+ t_timer[1].start;
+ any timer.stop;
+
+ }
+
+ control{
+ execute(TC_NegSyn_2303_timer_stop_006())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `stop': syntax error, unexpected DotStopKeyword, expecting DotTimeoutKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2304_timer_read_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer read syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2304_timer_read_001 NegSyn_2304_timer_read_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:24.4, Ensure timer read syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.4 The Read timer operation/Timer Read syntax
+
+
+module NegSyn_2304_timer_read_001 {
+ type component TComp{
+ timer t_timer[2] := {1.0, 1.0};
+ }
+
+ testcase TC_NegSyn_2304_timer_read_001() runs on TComp{
+ t_timer[0].start;
+ t_timer[1].start;
+ t_timer[].read;
+
+ }
+
+ control{
+ execute(TC_NegSyn_2304_timer_read_001())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\]': syntax error, unexpected '\]'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2304_timer_read_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer read syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2304_timer_read_002 NegSyn_2304_timer_read_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:24.4, Ensure timer read syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.4 The Read timer operation/Timer Read syntax
+
+
+module NegSyn_2304_timer_read_002 {
+ type component TComp{
+ timer t_timer := 1.0;
+ }
+
+ testcase TC_NegSyn_2304_timer_read_002() runs on TComp{
+ var float v_float;
+ v_float := t_timer read;
+
+ }
+
+ control{
+ execute(TC_NegSyn_2304_timer_read_002())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `read': syntax error, unexpected ReadKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2304_timer_read_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer read syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2304_timer_read_003 NegSyn_2304_timer_read_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:24.4, Ensure timer read syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.4 The Read timer operation/Timer Read syntax
+
+
+module NegSyn_2304_timer_read_003 {
+ type component TComp{
+ timer t_timer := 1.0;
+ }
+
+ testcase TC_NegSyn_2304_timer_read_003() runs on TComp{
+ var float v_float;
+ v_float := read(t_timer);
+
+ }
+
+ control{
+ execute(TC_NegSyn_2304_timer_read_003())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `read': syntax error, unexpected ReadKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2304_timer_read_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer read syntax: disallow any timer.read >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2304_timer_read_004 NegSyn_2304_timer_read_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:24.4, Ensure timer read syntax: disallow any timer.read
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.4 The Read timer operation/Timer Read syntax
+// #reqname /Requirements/23 Timer operations/23.7 Summary of use of any and all with timers/Disallow any timer.read
+
+module NegSyn_2304_timer_read_004 {
+ type component TComp{
+ timer t_timer := 1.0;
+ }
+
+ testcase TC_NegSyn_2304_timer_read_004() runs on TComp{
+ var float v_float;
+ v_float := any timer.read;
+ log ("any timer.read", v_float);
+ }
+
+ control{
+ execute(TC_NegSyn_2304_timer_read_004())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `read': syntax error, unexpected DotReadKeyword, expecting DotRunningKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2304_timer_read_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer read syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2304_timer_read_005 NegSyn_2304_timer_read_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:24.4, Ensure timer read syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.4 The Read timer operation/Timer Read syntax
+// #reqname /Requirements/23 Timer operations/23.7 Summary of use of any and all with timers/Disallow all timer.read
+
+module NegSyn_2305_timer_read_005 {
+ type component TComp{
+ timer t_timer := 1.0;
+ }
+
+ testcase TC_NegSyn_2305_timer_read_005() runs on TComp{
+ var float v_float;
+ v_float := all timer.read;
+ }
+
+ control{
+ execute(TC_NegSyn_2305_timer_read_005())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `timer': syntax error, unexpected TimerKeyword, expecting ComponentKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2305_timer_running_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer running syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2305_timer_running_001 NegSyn_2305_timer_running_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23.5, Ensure timer running syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.5 The Running timer operation/Timer running syntax
+
+
+module NegSyn_2305_timer_running_001 {
+ type component TComp{
+ timer t_timer := 1.0;
+ }
+
+ testcase TC_NegSyn_2305_timer_running_001() runs on TComp{
+ var boolean v_bool;
+ v_bool := t_timer running;
+ }
+
+ control{
+ execute(TC_NegSyn_2305_timer_running_001())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `running': syntax error, unexpected RunningKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2305_timer_running_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer running syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2305_timer_running_002 NegSyn_2305_timer_running_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23.5, Ensure timer running syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.5 The Running timer operation/Timer running syntax
+
+
+module NegSyn_2305_timer_running_002 {
+ type component TComp{
+ timer t_timer[2] := {1.0, 1.0};
+ }
+
+ testcase TC_NegSyn_2305_timer_running_002() runs on TComp{
+ var boolean v_bool;
+ v_bool := t_timer[].running;
+
+ }
+
+ control{
+ execute(TC_NegSyn_2305_timer_running_002())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\]': syntax error, unexpected '\]'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2305_timer_running_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer running syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2305_timer_running_003 NegSyn_2305_timer_running_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23.5, Ensure timer running syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.5 The Running timer operation/Timer running syntax
+
+
+module NegSyn_2305_timer_running_003 {
+ type component TComp{
+ timer t_timer[2] := {1.0, 1.0};
+ }
+
+ testcase TC_NegSyn_2305_timer_running_003() runs on TComp{
+ var boolean v_bool;
+ v_bool := any timer running;
+
+ }
+
+ control{
+ execute(TC_NegSyn_2305_timer_running_003())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `running': syntax error, unexpected RunningKeyword, expecting DotRunningKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2305_timer_running_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer running syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2305_timer_running_004 NegSyn_2305_timer_running_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23.5, Ensure timer running syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.5 The Running timer operation/Timer running syntax
+
+
+module NegSyn_2305_timer_running_004 {
+ type component TComp{
+ timer t_timer[2] := {1.0, 1.0};
+ }
+
+ testcase TC_NegSyn_2305_timer_running_004() runs on TComp{
+ var boolean v_bool;
+ v_bool := timer.running;
+
+ }
+
+ control{
+ execute(TC_NegSyn_2305_timer_running_004())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `timer': syntax error, unexpected TimerKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2305_timer_running_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer running syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2305_timer_running_005 NegSyn_2305_timer_running_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23.5, Ensure timer running syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.5 The Running timer operation/Timer running syntax
+
+
+module NegSyn_2305_timer_running_005 {
+ type component TComp{
+ timer t_timer[2] := {1.0, 1.0};
+ }
+
+ testcase TC_NegSyn_2305_timer_running_005() runs on TComp{
+ var boolean v_bool;
+ v_bool := timer any.running;
+
+ }
+
+ control{
+ execute(TC_NegSyn_2305_timer_running_005())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `timer': syntax error, unexpected TimerKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2305_timer_running_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer running syntax: disallow all timer.running >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2305_timer_running_006 NegSyn_2305_timer_running_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23.5, Ensure timer running syntax: disallow all timer.running
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.5 The Running timer operation/Timer running syntax
+// #reqname /Requirements/23 Timer operations/23.7 Summary of use of any and all with timers/Disallow all timer.running
+
+module NegSyn_2305_timer_running_006 {
+ type component TComp{
+ timer t_timer[2] := {1.0, 1.0};
+ }
+
+ testcase TC_NegSyn_2305_timer_running_006() runs on TComp{
+ var boolean v_bool;
+ v_bool := all timer.running;
+
+ }
+
+ control{
+ execute(TC_NegSyn_2305_timer_running_006())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `timer': syntax error, unexpected TimerKeyword, expecting ComponentKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2306_timer_timeout_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer timeout syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2306_timer_timeout_001 NegSyn_2306_timer_timeout_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23.6, Ensure timer timeout syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.6 The Timeout operation/Timer Timeout syntax
+
+
+module NegSyn_2306_timer_timeout_001 {
+ type component TComp{
+ timer t_timer[2] := {1.0, 1.0};
+ }
+
+ testcase TC_NegSyn_2306_timer_timeout_001() runs on TComp{
+ t_timer[0].start;
+ t_timer[1].start;
+ t_timer[].timeout;
+
+ }
+
+ control{
+ execute(TC_NegSyn_2306_timer_timeout_001())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\]': syntax error, unexpected '\]'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2306_timer_timeout_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer timeout can`t be used in boolean expressions >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2306_timer_timeout_002 NegSyn_2306_timer_timeout_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23.6, Ensure timer timeout can`t be used in boolean expressions
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.6 The Timeout operation/The timeout shall not be used in a boolean expression.
+
+
+module NegSyn_2306_timer_timeout_002 {
+ type component TComp{
+ timer t_timer[2] := {1.0, 1.1};
+ }
+
+ testcase TC_NegSyn_2306_timer_timeout_002() runs on TComp{
+ t_timer[0].start;
+ if (t_timer[0].timeout){
+ setverdict(fail);
+ }
+ setverdict(pass);
+
+ }
+
+ control{
+ execute(TC_NegSyn_2306_timer_timeout_002())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `timeout': syntax error, unexpected DotTimeoutKeyword, expecting '\)'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2306_timer_timeout_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer timeout syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2306_timer_timeout_003 NegSyn_2306_timer_timeout_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23.6, Ensure timer timeout syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.6 The Timeout operation/Timer Timeout syntax
+
+
+module NegSyn_2306_timer_timeout_003 {
+ type component TComp{
+ timer t_timer := 1.0;
+ }
+
+ testcase TC_NegSyn_2306_timer_timeout_003() runs on TComp{
+ t_timer.start;
+ t_timer.timeout();
+
+ }
+
+ control{
+ execute(TC_NegSyn_2306_timer_timeout_003())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\(': syntax error, unexpected '\('
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2306_timer_timeout_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer timeout syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2306_timer_timeout_004 NegSyn_2306_timer_timeout_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23.6, Ensure timer timeout syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.6 The Timeout operation/Timer Timeout syntax
+
+module NegSyn_2306_timer_timeout_004 {
+ type component TComp{
+ timer t_timer := 1.0;
+ }
+
+ testcase TC_NegSyn_2306_timer_timeout_004() runs on TComp{
+ t_timer.start;
+ any timer.timeout();
+
+ }
+
+ control{
+ execute(TC_NegSyn_2306_timer_timeout_004())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `\(': syntax error, unexpected '\('
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2306_timer_timeout_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer timeout syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2306_timer_timeout_005 NegSyn_2306_timer_timeout_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23.6, Ensure timer timeout syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.6 The Timeout operation/Timer Timeout syntax
+
+
+module NegSyn_2306_timer_timeout_005 {
+ type component TComp{
+ timer t_timer := 1.0;
+ }
+
+ testcase TC_NegSyn_2306_timer_timeout_005() runs on TComp{
+ t_timer.start;
+ any timer timeout;
+
+ }
+
+ control{
+ execute(TC_NegSyn_2306_timer_timeout_005())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `timeout': syntax error, unexpected TimeoutKeyword, expecting DotTimeoutKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2306_timer_timeout_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer timeout syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2306_timer_timeout_006 NegSyn_2306_timer_timeout_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23.6, Ensure timer timeout syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.6 The Timeout operation/Timer Timeout syntax
+
+
+module NegSyn_2306_timer_timeout_006 {
+ type component TComp{
+ timer t_timer := 1.0;
+ }
+
+ testcase TC_NegSyn_2306_timer_timeout_006() runs on TComp{
+ t_timer.start;
+ timeout(t_timer);
+
+ }
+
+ control{
+ execute(TC_NegSyn_2306_timer_timeout_006())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `timeout': syntax error, unexpected TimeoutKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_2306_timer_timeout_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure timer timeout syntax >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_2306_timer_timeout_007 NegSyn_2306_timer_timeout_007.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:23.6, Ensure timer timeout syntax
+ ** @verdict pass reject
+ ***************************************************/
+// #reqname /Requirements/23 Timer operations/23.6 The Timeout operation/Timer Timeout syntax
+// #reqname /Requirements/23 Timer operations/23.7 Summary of use of any and all with timers/Disallow all timer.timeout
+
+module NegSyn_2306_timer_timeout_007 {
+ type component TComp{
+ timer t_timer := 1.0;
+ }
+
+ testcase TC_NegSyn_2306_timer_timeout_007() runs on TComp{
+ t_timer.start;
+ all timer.timeout;
+
+ }
+
+ control{
+ execute(TC_NegSyn_2306_timer_timeout_007())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `timeout': syntax error, unexpected DotTimeoutKeyword, expecting DotStopKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h2. 24_test_verdict_operations folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_24_toplevel_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure getverdict is not allowed in constant initialization in control part >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_24_toplevel_001 NegSem_24_toplevel_001.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24, Ensure getverdict is not allowed in constant initialization in control part
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/Getverdict and setverdict operations shall only be used in test cases, altsteps and functions.
+ **/
+
+module NegSem_24_toplevel_001 {
+ // This should be syntactically correct since BNF does not restrict initialization expression
+ const verdicttype c_verdict := getverdict;
+
+ type component GeneralComp {}
+
+ testcase TC_NegSem_24_toplevel_001 (verdicttype v_verdict) runs on GeneralComp{
+ setverdict(pass)
+ }
+
+ control {
+ execute(TC_NegSem_24_toplevel_001(c_verdict));
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: An evaluatable constant value was expected instead of operation `getverdict\(\)'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_24_toplevel_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure getverdict is not allowed in parameter initialization in control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_24_toplevel_002 NegSem_24_toplevel_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:24, Ensure getverdict is not allowed in parameter initialization in control part.
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/Getverdict and setverdict operations shall only be used in test cases, altsteps and functions.
+ **/
+
+module NegSem_24_toplevel_002 {
+ type component GeneralComp {}
+
+ testcase TC_NegSem_24_toplevel_002(verdicttype v_param) runs on GeneralComp {
+ setverdict(fail);
+ }
+
+ control {
+ // BNF allows getverdict in expression -- this is a semantic test
+ execute(TC_NegSem_24_toplevel_002(getverdict));
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Operation `getverdict\(\)' is not allowed in the control part
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_24_toplevel_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure getverdict is not allowed in variable definition in control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_24_toplevel_003 NegSem_24_toplevel_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:24, Ensure getverdict is not allowed in variable definition in control part.
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/Getverdict and setverdict operations shall only be used in test cases, altsteps and functions.
+ **/
+
+module NegSem_24_toplevel_003 {
+ type component GeneralComp {}
+
+ testcase TC_NegSem_24_toplevel_003() runs on GeneralComp {
+ setverdict(fail);
+ }
+
+ control {
+ var verdicttype v_verdict := getverdict;
+ execute(TC_NegSem_24_toplevel_003())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Operation `getverdict\(\)' is not allowed in the control part
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_24_toplevel_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure setverdict is not allowed in part whithin compound statement. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_24_toplevel_004 NegSem_24_toplevel_004.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24, Ensure setverdict is not allowed in part whithin compound statement.
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/Getverdict and setverdict operations shall only be used in test cases, altsteps and functions.
+ **/
+
+module NegSem_24_toplevel_004 {
+ type component GeneralComp {}
+
+ testcase TC_NegSem_24_toplevel_004() runs on GeneralComp {
+ setverdict(fail);
+ }
+
+ control {
+ if (true) {
+ // It is allowed by BNF: ControlStatement -> BasicStatements -> ConditionalConstruct -> StatementBlock => SetLocalVerdict
+ setverdict(pass);
+ }
+ execute(TC_NegSem_24_toplevel_004())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Setverdict statement is not allowed in the control part
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_24_toplevel_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure setverdict is not allowed in control part at the top level. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_24_toplevel_005 NegSem_24_toplevel_005.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24, Ensure setverdict is not allowed in control part at the top level.
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/Getverdict and setverdict operations shall only be used in test cases, altsteps and functions.
+ **/
+
+module NegSem_24_toplevel_005 {
+ type component GeneralComp {}
+
+ testcase TC_NegSem_24_toplevel_005() runs on GeneralComp {
+ setverdict(fail);
+ }
+
+ control {
+ // TODO Check with grammar if it is allowed
+ // At least grammar allowes it in compound statements
+ setverdict(pass);
+ execute(TC_NegSem_24_toplevel_005())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `setverdict': syntax error, unexpected SetVerdictKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2401_SetverdictError_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that setverdict can't set error verdict >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2401_SetverdictError_001 NegSem_2401_SetverdictError_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:24.1, Ensure that setverdict can't set error verdict
+ ** @verdict pass reject, manual:"Ensure only one test case was executed "
+ *****************************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.1 The Verdict mechanism/Error verdict shall not be set with setverdict
+ **/
+
+module NegSem_2401_SetverdictError_001 {
+ type component GeneralComp {};
+
+ testcase TC_NegSem_2401_SetverdictError_001_setverdict(out boolean pb_error_occurred) runs on GeneralComp {
+ pb_error_occurred := true;
+ setverdict(error);
+ // Must abort here
+ pb_error_occurred := false;
+ setverdict(pass)
+ }
+
+ testcase TC_NegSem_2401_SetverdictError_001_check_error_occured(boolean b_error_occurred) runs on GeneralComp {
+ if (b_error_occurred) {
+ setverdict(pass);
+ } else {
+ setverdict(fail)
+ }
+ }
+
+ control {
+ var boolean b_error_occurred := true;
+ execute(TC_NegSem_2401_SetverdictError_001_setverdict(b_error_occurred));
+ execute(TC_NegSem_2401_SetverdictError_001_check_error_occured(b_error_occurred));
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Error verdict cannot be set by the setverdict operation
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2402_setverdict_params_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure setverdict accepts parameters of verdicttype only >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2402_setverdict_params_001 NegSem_2402_setverdict_params_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:24, Ensure setverdict accepts parameters of verdicttype only
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.2 The Setverdict operation/Setverdict allowed verdict values
+ **/
+
+module NegSem_2402_setverdict_params_001 {
+ type component TComp {}
+
+ testcase TC_NegSem_2402_setverdict_params_001() runs on TComp {
+ var charstring v_pass := "pass";
+ setverdict(v_pass);
+ }
+
+ control {
+ execute(TC_NegSem_2402_setverdict_params_001())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A value or expression of type verdict was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2402_setverdict_params_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure setverdict accepts parameters of verdicttype only >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2402_setverdict_params_002 NegSem_2402_setverdict_params_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:24, Ensure setverdict accepts parameters of verdicttype only
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.2 The Setverdict operation/Setverdict allowed verdict values
+ **/
+
+
+module NegSem_2402_setverdict_params_002 {
+ type component TComp {}
+ type record TRec { verdicttype field1 }
+
+ testcase TC_NegSem_2402_setverdict_params_002() runs on TComp {
+ var TRec v_pass := { field1 := pass };
+ setverdict(v_pass);
+ }
+
+ control {
+ execute(TC_NegSem_2402_setverdict_params_002())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A value or expression of type verdict was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2402_setverdict_params_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure setverdict accepts parameters of verdicttype only >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2402_setverdict_params_003 NegSem_2402_setverdict_params_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:24, Ensure setverdict accepts values of verdicttype only
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.2 The Setverdict operation/Setverdict allowed verdict values
+ **/
+
+module NegSem_2402_setverdict_params_003 {
+ type component TComp {}
+
+ testcase TC_NegSem_2402_setverdict_params_003() runs on TComp {
+ var template verdicttype v_pass := pass;
+ setverdict(v_pass);
+ }
+
+ control {
+ execute(TC_NegSem_2402_setverdict_params_003())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of template variable `v_pass'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2402_setverdict_params_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure setverdict accepts values only as the parameter >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2402_setverdict_params_004 NegSem_2402_setverdict_params_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:24, Ensure setverdict accepts values only as the parameter
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.2 The Setverdict operation/Setverdict allowed verdict values
+ **/
+
+module NegSem_2402_setverdict_params_004 {
+ type component TComp {}
+
+ testcase TC_NegSem_2402_setverdict_params_004() runs on TComp {
+ var template verdicttype v_pass := ?;
+ setverdict(v_pass);
+ }
+
+ control {
+ execute(TC_NegSem_2402_setverdict_params_004())
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Reference to a value was expected instead of template variable `v_pass'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2402_setverdict_params_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure setverdict accepts values only as the parameter >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN NegSem_2402_setverdict_params_005 NegSem_2402_setverdict_params_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:24, Ensure setverdict accepts values only as the parameter
+ ** @verdict pass reject
+ ***************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.2 The Setverdict operation/Setverdict allowed verdict values
+ **/
+
+module NegSem_2402_setverdict_params_005 {
+ type component TComp {}
+
+ testcase TC_NegSem_2402_setverdict_params_005() runs on TComp {
+ var anytype v_var := { integer := 1 };
+ setverdict(v_var.verdicttype);
+ }
+
+ control {
+ execute(TC_NegSem_2402_setverdict_params_005())
+ }
+}
+with {
+ extension "anytype integer, verdicttype"
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+Dynamic test case error: Using non-selected field verdicttype in a value of union type @NegSem_2402_setverdict_params_005.anytype
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h2. 26_module_control folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2601_ExecuteStatement_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that non-float timeout parameters in the execute statement are rejected (in this case int).>
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2601_ExecuteStatement_001 NegSem_2601_ExecuteStatement_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:26.1, Ensure that non-float timeout parameters in the execute statement are rejected (in this case int).
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2601_ExecuteStatement_001 {
+
+ type component GeneralComp { }
+
+ testcase TC_NegSem_2601_ExecuteStatement_001() runs on GeneralComp {
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_2601_ExecuteStatement_001(), 1);
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A value or expression of type float was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2601_ExecuteStatement_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that non-float timeout parameters in the execute statement are rejected (in this case charstring).>
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2601_ExecuteStatement_002 NegSem_2601_ExecuteStatement_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:26.1, Ensure that non-float timeout parameters in the execute statement are rejected (in this case charstring).
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2601_ExecuteStatement_002 {
+
+ type component GeneralComp { }
+
+ testcase TC_NegSem_2601_ExecuteStatement_002() runs on GeneralComp {
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_2601_ExecuteStatement_002(), "foobar");
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A value or expression of type float was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2601_ExecuteStatement_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that execution rejects test case execution with infinity timer guard >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2601_ExecuteStatement_004 NegSem_2601_ExecuteStatement_004.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:26.1, Ensure that execution rejects test case execution with infinity timer guard
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2601_ExecuteStatement_004 {
+
+ type component GeneralComp { }
+
+ testcase TC_NegSem_2601_ExecuteStatement_004(integer p_value, charstring p_string, boolean p_bool) runs on GeneralComp {
+ setverdict(pass);
+ }
+
+ control {
+ var integer v_test := 20;
+ execute(TC_NegSem_2601_ExecuteStatement_004(v_test, "hello", true), infinity); //not allowed to explicitly assign infinite timer
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The testcase guard timer duration cannot be INF
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that setverdict statements are not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_001 NegSem_2602_TheControlPart_001.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:26.2, Ensure that setverdict statements are not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_001 {
+
+ type component GeneralComp { }
+
+ control {
+ setverdict(pass);
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `setverdict': syntax error, unexpected SetVerdictKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the create component is not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_002 NegSem_2602_TheControlPart_002.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:26.2, Ensure that the create component is not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_002 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ control {
+ var MTCComp v_myComp := MTCComp.create;
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Operation `create\(\)' is not allowed in the control part
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the create alive component is not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_003 NegSem_2602_TheControlPart_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:26.2, Ensure that the create alive component is not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_003 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ control {
+ var MTCComp v_myComp := MTCComp.create alive;
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Operation `create\(\)' is not allowed in the control part
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the start statement is not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_004 NegSem_2602_TheControlPart_004.ttcn >
+/*****************************************************************
+ ** @version 0.0.2
+ ** @purpose 1:26.2, Ensure that the start statement is not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_004 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ function f_myBehavior() runs on MTCComp {
+ setverdict(fail);
+ }
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_myComp := f_createComp(); // assume create was accepted
+ v_myComp.start(f_myBehavior());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Component operation is not allowed in the control part
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the stop statement is not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_005 NegSem_2602_TheControlPart_005.ttcn >
+/*****************************************************************
+ ** @version 0.0.2
+ ** @purpose 1:26.2, Ensure that the stop statement is not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_005 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ function f_myBehavior() runs on MTCComp {
+ setverdict(fail);
+ }
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_myComp := f_createComp(); // assume create was accepted
+ v_myComp.start(f_myBehavior());
+ v_myComp.stop;
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 2>
+error: Component operation is not allowed in the control part
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the kill statement is not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_006 NegSem_2602_TheControlPart_006.ttcn >
+/*****************************************************************
+ ** @version 0.0.2
+ ** @purpose 1:26.2, Ensure that the kill statement is not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_006 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ function f_myBehavior() runs on MTCComp {
+ setverdict(fail);
+ }
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_myComp := f_createComp(); // assume create was accepted
+ v_myComp.start(f_myBehavior());
+ v_myComp.kill;
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `kill': syntax error, unexpected DotKillKeyword, expecting DotTimeoutKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the alive operation is not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_007 NegSem_2602_TheControlPart_007.ttcn >
+/*****************************************************************
+ ** @version 0.0.2
+ ** @purpose 1:26.2, Ensure that the alive operation is not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_007 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ function f_myBehavior() runs on MTCComp {
+ setverdict(fail);
+ }
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_myComp := f_createComp(); // assume create was accepted
+ if (v_myComp.alive) {
+ // should be rejected
+ }
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Operation `alive' is not allowed in the control part
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the running operation is not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_008 NegSem_2602_TheControlPart_008.ttcn >
+/*****************************************************************
+ ** @version 0.0.2
+ ** @purpose 1:26.2, Ensure that the running operation is not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_008 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ function f_myBehavior() runs on MTCComp {
+ setverdict(fail);
+ }
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_myComp := f_createComp(); // assume create was accepted
+ if (v_myComp.running) {
+ // should be rejected
+ }
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Operation `component running' is not allowed in the control part
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_009 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the done operation is not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_009 NegSem_2602_TheControlPart_009.ttcn >
+/*****************************************************************
+ ** @version 0.0.2
+ ** @purpose 1:26.2, Ensure that the done operation is not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_009 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ function f_myBehavior() runs on MTCComp {
+ setverdict(fail);
+ }
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_myComp := f_createComp(); // assume create was accepted
+ v_myComp.start(f_myBehavior());
+ v_myComp.done;
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `done': syntax error, unexpected DotDoneKeyword, expecting DotTimeoutKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_010 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the done operation is not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_010 NegSem_2602_TheControlPart_010.ttcn >
+/*****************************************************************
+ ** @version 0.0.2
+ ** @purpose 1:26.2, Ensure that the killed operation is not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_010 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ function f_myBehavior() runs on MTCComp {
+ setverdict(fail);
+ }
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_myComp := f_createComp(); // assume create was accepted
+ if (v_myComp.killed) {
+ // should be rejected
+ }
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `killed': syntax error, unexpected DotKilledKeyword, expecting '\)'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_011 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the connect statements are not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_011 NegSem_2602_TheControlPart_011.ttcn >
+/*****************************************************************
+ ** @version 0.0.2
+ ** @purpose 1:26.2, Ensure that the connect statements are not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_011 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ type component PTCComp {
+ port MyPort p;
+ }
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_firstComp := f_createComp(); // assume create was accepted
+ var PTCComp v_secondComp := f_createComp(); // assume create was accepted
+
+ connect(v_firstComp:p,v_firstComp:p);
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `connect': syntax error, unexpected ConnectKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_012 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the disconnect statements are not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_012 NegSem_2602_TheControlPart_012.ttcn >
+/*****************************************************************
+ ** @version 0.0.2
+ ** @purpose 1:26.2, Ensure that the disconnect statements are not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_012 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ type component PTCComp {
+ port MyPort p;
+ }
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_firstComp := f_createComp(); // assume create was accepted
+ var PTCComp v_secondComp := f_createComp(); // assume create was accepted
+
+ disconnect(v_firstComp:p,v_firstComp:p);
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `disconnect': syntax error, unexpected DisconnectKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_013 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the map statements are not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_013 NegSem_2602_TheControlPart_013.ttcn >
+/*****************************************************************
+ ** @version 0.0.2
+ ** @purpose 1:26.2, Ensure that the map statements are not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_013 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ type component PTCComp {
+ port MyPort p;
+ }
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_firstComp := f_createComp(); // assume create was accepted
+ var PTCComp v_secondComp := f_createComp(); // assume create was accepted
+
+ map(v_firstComp:p,v_firstComp:p);
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `map': syntax error, unexpected MapKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_014 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the unmap statements are not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_014 NegSem_2602_TheControlPart_014.ttcn >
+/*****************************************************************
+ ** @version 0.0.2
+ ** @purpose 1:26.2, Ensure that the unmap statements are not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_014 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ type component PTCComp {
+ port MyPort p;
+ }
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_firstComp := f_createComp(); // assume create was accepted
+ var PTCComp v_secondComp := f_createComp(); // assume create was accepted
+
+ unmap(v_firstComp:p,v_firstComp:p);
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `unmap': syntax error, unexpected UnmapKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_015 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the send statements are not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_015 NegSem_2602_TheControlPart_015.ttcn >
+/*****************************************************************
+ ** @version 0.0.2
+ ** @purpose 1:26.2, Ensure that the send statements are not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_015 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_myComp := f_createComp(); // assume create was accepted
+
+ v_myComp.p.send(charstring:"foobar");
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `send': syntax error, unexpected DotSendOpKeyword, expecting DotTimeoutKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_016 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the receive statements are not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_016 NegSem_2602_TheControlPart_016.ttcn >
+/*****************************************************************
+ ** @version 0.0.2
+ ** @purpose 1:26.2, Ensure that the receive statements are not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_016 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_myComp := f_createComp(); // assume create was accepted
+
+ v_myComp.p.receive(charstring:"foobar");
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `receive': syntax error, unexpected DotReceiveOpKeyword, expecting DotTimeoutKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_017 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the call statements are not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_017 NegSem_2602_TheControlPart_017.ttcn >
+/*****************************************************************
+ ** @version 0.0.2
+ ** @purpose 1:26.2, Ensure that the call statements are not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_017 {
+
+ type port MyPort procedure {
+ inout MyProcedure
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ signature MyProcedure(integer p_value, boolean p_bool);
+
+ template MyProcedure s_call := { 2, true }
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_myComp := f_createComp(); // assume create was accepted
+
+ v_myComp.p.call(s_call);
+
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `call': syntax error, unexpected DotCallOpKeyword, expecting DotTimeoutKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_018 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the reply statements are not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_018 NegSem_2602_TheControlPart_018.ttcn >
+/*****************************************************************
+ ** @version 0.0.2
+ ** @purpose 1:26.2, Ensure that the reply statements are not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_018 {
+
+ type port MyPort procedure {
+ inout MyProcedure
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ signature MyProcedure(integer p_value, boolean p_bool);
+
+ template MyProcedure s_call := { 2, true }
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_myComp := f_createComp(); // assume create was accepted
+
+ v_myComp.p.reply(s_call);
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `reply': syntax error, unexpected DotReplyKeyword, expecting DotTimeoutKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_019 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the raise statements are not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_019 NegSem_2602_TheControlPart_019.ttcn >
+/*****************************************************************
+ ** @version 0.0.2
+ ** @purpose 1:26.2, Ensure that the raise statements are not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_019 {
+
+ type port MyPort procedure {
+ inout MyProcedure
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ type charstring Exception;
+
+ signature MyProcedure(integer p_value, boolean p_bool) exception (Exception);
+
+ template Exception s_exception := "Thrown exception";
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_myComp := f_createComp(); // assume create was accepted
+
+ v_myComp.p.raise(MyProcedure, s_exception);
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `raise': syntax error, unexpected DotRaiseKeyword, expecting DotTimeoutKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_020 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the trigger statements are not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_020 NegSem_2602_TheControlPart_020.ttcn >
+/*****************************************************************
+ ** @version 0.0.2
+ ** @purpose 1:26.2, Ensure that the trigger statements are not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_020 {
+
+ type port MyPort procedure {
+ inout MyProcedure
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ signature MyProcedure(integer p_value, boolean p_bool);
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_myComp := f_createComp(); // assume create was accepted
+ var MyProcedure v_procValue;
+ v_myComp.p.trigger(MyProcedure:?) -> value v_procValue;
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `trigger': syntax error, unexpected DotTriggerOpKeyword, expecting DotTimeoutKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_021 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the getcall statements are not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_021 NegSem_2602_TheControlPart_021.ttcn >
+/*****************************************************************
+ ** @version 0.0.2
+ ** @purpose 1:26.2, Ensure that the getcall statements are not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_021 {
+
+ type port MyPort procedure {
+ inout MyProcedure
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ signature MyProcedure(integer p_value, boolean p_bool);
+
+ template MyProcedure s_expected := { 1, ? }
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_myComp := f_createComp(); // assume create was accepted
+
+ v_myComp.p.getcall(s_expected);
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `getcall': syntax error, unexpected DotGetCallOpKeyword, expecting DotTimeoutKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_022 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the getreply statements are not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_022 NegSem_2602_TheControlPart_022.ttcn >
+/*****************************************************************
+ ** @version 0.0.2
+ ** @purpose 1:26.2, Ensure that the getreply statements are not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_022 {
+
+ type port MyPort procedure {
+ inout MyProcedure
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ signature MyProcedure(integer p_value, boolean p_bool);
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_myComp := f_createComp(); // assume create was accepted
+
+ v_myComp.p.getreply;
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `getreply': syntax error, unexpected DotGetReplyOpKeyword, expecting DotTimeoutKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_023 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the catch statements are not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_023 NegSem_2602_TheControlPart_023.ttcn >
+/*****************************************************************
+ ** @version 0.0.2
+ ** @purpose 1:26.2, Ensure that the catch statements are not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_023 {
+
+ type port MyPort procedure {
+ inout MyProcedure
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ signature MyProcedure(integer p_value, boolean p_bool);
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_myComp := f_createComp(); // assume create was accepted
+
+ v_myComp.p.catch;
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `catch': syntax error, unexpected DotCatchOpKeyword, expecting DotTimeoutKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_024 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the check statements are not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_024 NegSem_2602_TheControlPart_024.ttcn >
+/*****************************************************************
+ ** @version 0.0.2
+ ** @purpose 1:26.2, Ensure that the check statements are not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_024 {
+
+ type port MyPort procedure {
+ inout MyProcedure
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ signature MyProcedure(integer p_value, boolean p_bool);
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_myComp := f_createComp(); // assume create was accepted
+
+ v_myComp.p.check;
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `check': syntax error, unexpected DotCheckOpKeyword, expecting DotTimeoutKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_025 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the clear statements are not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_025 NegSem_2602_TheControlPart_025.ttcn >
+/*****************************************************************
+ ** @version 0.0.2
+ ** @purpose 1:26.2, Ensure that the clear statements are not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_025 {
+
+ type port MyPort procedure {
+ inout MyProcedure
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ signature MyProcedure(integer p_value, boolean p_bool);
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_myComp := f_createComp(); // assume create was accepted
+
+ v_myComp.p.clear;
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `clear': syntax error, unexpected DotClearOpKeyword, expecting DotTimeoutKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_026 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the start statements on ports are not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_026 NegSem_2602_TheControlPart_026.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:26.2, Ensure that the start statements on ports are not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_026 {
+
+ type port MyPort procedure {
+ inout MyProcedure
+ }
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ signature MyProcedure(integer p_value, boolean p_bool);
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_myComp := f_createComp(); // assume create was accepted
+
+ v_myComp.p.start;
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The argument of start operation is missing, although it cannot be a start timer or start port operation
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_027 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the stop statements on ports are not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_027 NegSem_2602_TheControlPart_027.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:26.2, Ensure that the stop statements on ports are not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_027 {
+
+ type port MyPort procedure {
+ inout MyProcedure
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ signature MyProcedure(integer p_value, boolean p_bool);
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_myComp := f_createComp(); // assume create was accepted
+
+ v_myComp.p.stop;
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Component operation is not allowed in the control part
+<END_RESULT>
+<RESULT COUNT 1>
+error: Invalid field reference `p': type `@NegSem_2602_TheControlPart_027.MTCComp' does not have fields
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_028 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the halt statements are not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_028 NegSem_2602_TheControlPart_028.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:26.2, Ensure that the halt statements are not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_028 {
+
+ type port MyPort procedure {
+ inout MyProcedure
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ signature MyProcedure(integer p_value, boolean p_bool);
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_myComp := f_createComp(); // assume create was accepted
+
+ v_myComp.p.halt;
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `halt': syntax error, unexpected DotHaltKeyword, expecting DotTimeoutKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_029 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that alternative behaviours are only used to control timer behavior in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_029 NegSem_2602_TheControlPart_029.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:26.2, Ensure that alternative behaviours are only used to control timer behavior in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_029 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ function f_createComp() return MTCComp {
+ return MTCComp.create;
+ }
+
+ control {
+ var MTCComp v_myComp := f_createComp(); // assume create was accepted
+ alt {
+ [] v_myComp.p.receive(charstring:"foobar") {
+ }
+ }
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Port operation is not allowed in the control part
+<END_RESULT>
+<RESULT COUNT 1>
+error: Reference to a port or port parameter was expected instead of variable `v_myComp'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_030 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that getverdict statements are not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_030 NegSem_2602_TheControlPart_030.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:26.2, Ensure that getverdict statements are not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_030 {
+
+ type component GeneralComp { }
+
+ control {
+ var verdicttype v_result;
+ v_result := getverdict;
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Operation `getverdict\(\)' is not allowed in the control part
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_031 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that execute statements are not executed from test cases. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_031 NegSem_2602_TheControlPart_031.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:26.2, Ensure that execute statements are not executed from test cases.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_031 {
+
+ type component GeneralComp { }
+
+ testcase TC_NegSem_2602_TheControlPart_031() runs on GeneralComp {
+ setverdict(pass);
+ execute(TC_NegSem_2602_TheControlPart_031_second()); // shall be rejected
+ }
+
+ testcase TC_NegSem_2602_TheControlPart_031_second() runs on GeneralComp {
+ setverdict(fail);
+ }
+
+
+ control {
+ execute(TC_NegSem_2602_TheControlPart_031());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A definition that has `runs on' clause cannot execute testcases
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_032 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the create alive named component is not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_032 NegSem_2602_TheControlPart_032.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:26.2, Ensure that the create alive named component is not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_032 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ control {
+ var MTCComp v_myComp := MTCComp.create("component name") alive;
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Operation `create\(\)' is not allowed in the control part
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_033 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the create named component is not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_033 NegSem_2602_TheControlPart_033.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:26.2, Ensure that the create named component is not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_033 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ control {
+ var MTCComp v_myComp := MTCComp.create("component name");
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Operation `create\(\)' is not allowed in the control part
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_034 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the create named component on host is not allowed in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_034 NegSem_2602_TheControlPart_034.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:26.2, Ensure that the create named component on host is not allowed in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_034 {
+
+ type port MyPort message {
+ inout charstring
+ } with {extension "internal"}
+
+ type component MTCComp {
+ port MyPort p;
+ }
+
+ control {
+ var MTCComp v_myComp := MTCComp.create("component name", "localhost");
+ }
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Operation `create\(\)' is not allowed in the control part
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_2602_TheControlPart_035 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that alternative behaviours are only used to control timer behavior in the control part. >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_2602_TheControlPart_035 NegSem_2602_TheControlPart_035.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:26.2, Ensure that alternative behaviours are only used to control timer behavior in the control part.
+ ** @verdict pass reject
+ *****************************************************************/
+
+module NegSem_2602_TheControlPart_035 {
+ control {
+ alt {
+ [] any port.receive {
+ }
+ }
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Port operation is not allowed in the control part
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h2. B_matching_incoming_values folder
+.*---------------------------------------------------------------------*
+*---------------------------------------------------------------------*
+:h3. NegSem_B010101_omitting_values_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of omitted values >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010101_omitting_values_001 NegSem_B010101_omitting_values_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.1.1, Ensure that the IUT correctly handles template matching of omitted values
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_B010101_omitting_values_001 {
+
+ type record RecordType {
+ integer a optional,
+ integer b optional,
+ boolean c
+ }
+
+ type set SetType {
+ integer a optional,
+ integer b optional,
+ boolean c
+ }
+
+ type record MessageType {
+ RecordType field1,
+ SetType field2
+ }
+
+ type port loopbackPort message {
+ inout MessageType
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_B010101_omitting_values_001() runs on GeneralComp {
+
+ var MessageType v_testMessage;
+
+ template MessageType mw_matchingTemplate:=
+ {
+ field1 := {a:=1,b:=omit,c:=omit}, //omitting a mandatory field
+ field2 := {a:=1,b:=omit,c:=omit}
+ }
+
+ v_testMessage:= {
+ field1 := {a:=1,b:=omit,c:=true},
+ field2 := {a:=1,b:=omit,c:=true}
+ }
+
+ connect(self:messagePort, self:messagePort);
+
+ messagePort.send(v_testMessage);
+
+ }
+
+ control{
+ execute(TC_NegSem_B010101_omitting_values_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 2>
+error: `omit' value is not allowed in this context
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010205_value_range_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of value range definitions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010205_value_range_001 NegSem_B010205_value_range_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.2.5, Ensure that the IUT correctly handles template matching of value range definitions
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_B010205_value_range_001 {
+
+ type enumerated EnumeratedType {e_black, e_white, e_green};
+
+ type record RecordType {
+ integer a optional,
+ integer b optional,
+ boolean c
+ }
+
+ type union UnionType {
+ integer a,
+ EnumeratedType b,
+ boolean c
+ }
+
+ type record MessageType {
+ integer field1,
+ EnumeratedType field2,
+ RecordType field3,
+ UnionType field4
+ }
+
+ type port loopbackPort message {
+ inout MessageType
+ } with {extension "internal"}
+
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_B010205_value_range_001() runs on GeneralComp {
+
+ var MessageType v_testMessage;
+
+ template MessageType mw_matchingTemplate:=
+ {
+ field1 := (0..2),
+ field2 := (e_black..e_white), //attempt to use range on enumerated type
+ field3 := {a:=1,b:=(0..2),c:=true},
+ field4 := {a:=(0..2)}
+ }
+
+ v_testMessage:= {
+ field1 := 2,
+ field2 := e_black,
+ field3 := {a:=1,b:=2,c:=true},
+ field4 := {a:=1}
+ }
+
+ connect(self:messagePort, self:messagePort);
+ messagePort.send(v_testMessage);
+
+ }
+
+ control{
+ execute(TC_NegSem_B010205_value_range_001());
+ }
+
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: value range match cannot be used for enumerated type `@NegSem_B010205_value_range_001.EnumeratedType'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010205_value_range_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of value range definitions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010205_value_range_002 NegSem_B010205_value_range_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.2.5, Ensure that the IUT correctly handles template matching of value range definitions
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_B010205_value_range_002 {
+
+ type enumerated EnumeratedType {e_black, e_white, e_green};
+
+ type record RecordType {
+ integer a optional,
+ integer b optional,
+ boolean c
+ }
+
+ type union UnionType {
+ integer a,
+ EnumeratedType b,
+ boolean c
+ }
+
+ type record MessageType {
+ integer field1,
+ charstring field2,
+ RecordType field3,
+ UnionType field4
+ }
+
+ type port loopbackPort message {
+ inout MessageType
+ } with {extension "internal"}
+
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_B010205_value_range_002() runs on GeneralComp {
+
+ var MessageType v_testMessage;
+
+ template MessageType mw_matchingTemplate:=
+ {
+ field1 := (2..0), //boundaries in wrong order
+ field2 := ("a".."f"),
+ field3 := {a:=1,b:=(0..2),c:=true},
+ field4 := {a:=(0..2)}
+ }
+
+ v_testMessage:= {
+ field1 := 2,
+ field2 := "abc",
+ field3 := {a:=1,b:=2,c:=true},
+ field4 := {a:=1}
+ }
+
+ connect(self:messagePort, self:messagePort);
+
+ messagePort.send(v_testMessage);
+
+ }
+
+ control{
+ execute(TC_NegSem_B010205_value_range_002());
+ }
+
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The lower boundary is higher than the upper boundary
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010205_value_range_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of value range definitions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010205_value_range_003 NegSem_B010205_value_range_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.2.5, Ensure that the IUT correctly handles template matching of value range definitions
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_B010205_value_range_003 {
+
+ type enumerated EnumeratedType {e_black, e_white, e_green};
+
+ type record RecordType {
+ integer a optional,
+ integer b optional,
+ boolean c
+ }
+
+ type union UnionType {
+ integer a,
+ EnumeratedType b,
+ boolean c
+ }
+
+ type record MessageType {
+ integer field1,
+ charstring field2,
+ RecordType field3,
+ UnionType field4
+ }
+
+ type port loopbackPort message {
+ inout MessageType
+ } with {extension "internal"}
+
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_B010205_value_range_003() runs on GeneralComp {
+
+ var MessageType v_testMessage;
+
+ template MessageType mw_matchingTemplate:=
+ {
+ field1 := (0..2),
+ field2 := ("f".."a"), //boundaries in wrong order
+ field3 := {a:=1,b:=(0..2),c:=true},
+ field4 := {a:=(0..2)}
+ }
+
+ v_testMessage:= {
+ field1 := 2,
+ field2 := "abc",
+ field3 := {a:=1,b:=2,c:=true},
+ field4 := {a:=1}
+ }
+
+ connect(self:messagePort, self:messagePort);
+ messagePort.send(v_testMessage);
+
+ }
+
+ control{
+ execute(TC_NegSem_B010205_value_range_003());
+ }
+
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: The lower boundary has higher character code than the upper boundary
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010206_superset_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of superset definitions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010206_superset_001 NegSem_B010206_superset_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.2.6, Ensure that the IUT correctly handles template matching of superset definitions
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_B010206_superset_001 {
+ type record MessageType {
+ record of integer field1 // superset definition is only allowed over set of
+ }
+
+ type port loopbackPort message {
+ inout MessageType;
+ } with {extension "internal"}
+
+
+ type component GeneralComp {
+ port loopbackPort messagePort;
+ }
+
+ testcase TC_NegSem_B010206_superset_001() runs on GeneralComp {
+
+ var MessageType v_testMessage;
+
+ template MessageType mw_matchingTemplate := {field1 := superset(1, 2)}
+
+ v_testMessage := {field1 := {1, 3, 2}};
+
+ connect(self:messagePort, self:messagePort);
+ messagePort.send(v_testMessage);
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_B010206_superset_001());
+ }
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: superset match cannot be used for `record of' type `@NegSem_B010206_superset_001.MessageType.field1'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010206_superset_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of superset definitions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010206_superset_002 NegSem_B010206_superset_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.2.6, Ensure that the IUT correctly handles template matching of superset definitions
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_B010206_superset_002 {
+ type set SetType {
+ integer a optional, integer b optional, integer c optional
+ }
+
+ type record MessageType {
+ SetType field1 // superset definition is only allowed over set of
+ }
+
+ type port loopbackPort message {
+ inout MessageType;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort messagePort;
+ }
+
+ testcase TC_NegSem_B010206_superset_002() runs on GeneralComp {
+
+ var MessageType v_testMessage;
+
+ template MessageType mw_matchingTemplate := {field1 := superset(1, 2)}
+
+ v_testMessage := {field1 := { a:= 1, b:= 3, c:= 2}};
+
+ connect(self:messagePort, self:messagePort);
+ messagePort.send(v_testMessage);
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_B010206_superset_002());
+ }
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: superset match cannot be used for set type `@NegSem_B010206_superset_002.SetType'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010206_superset_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of superset definition >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010206_superset_004 NegSem_B010206_superset_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.2.6, Ensure that the IUT correctly handles template matching of superset definition
+ ** @verdict pass reject
+ ***************************************************/
+
+//Restriction e)
+/*The individual members of the SuperSet's argument and the elements of the template in the all from clause
+shall not be the matching mechanisms omit, SuperSet, SubSet and the matching attributes (length restriction
+and ifpresent). In addition, the individual members shall not resolve to AnyValueOrNone and individual
+elements of the template in the all from clause shall not resolve to AnyElementsOrNone or permutation.*/
+
+module NegSem_B010206_superset_004 {
+
+ type set of integer SoI;
+ type record of integer RoI;
+
+ type port loopbackPort message {
+ inout SoI
+ } with {extension "internal"}
+
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_B010206_superset_004() runs on GeneralComp {
+
+ var SoI v_testMessage;
+
+ template RoI Template:= {omit};
+
+ template SoI mw_matchingTemplate:= superset(all from Template); //error
+
+ v_testMessage:={2};
+
+ connect(self:messagePort, self:messagePort);
+ messagePort.send(v_testMessage);
+
+ alt {
+ [] messagePort.receive(mw_matchingTemplate) {
+ setverdict(pass);
+ }
+ [] messagePort.receive {
+ setverdict(fail);
+ }
+ }
+ }
+
+ control{
+ execute(TC_NegSem_B010206_superset_004());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 2>
+error: `omit' value is not allowed in this context
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010206_superset_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of subset definition >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010206_superset_005 NegSem_B010206_superset_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.2.6, Ensure that the IUT correctly handles template matching of subset definition
+ ** @verdict pass reject
+ ***************************************************/
+
+//Restriction e)
+/*The individual members of the SuperSet's argument and the elements of the template in the all from clause
+shall not be the matching mechanisms omit, SuperSet, SubSet and the matching attributes (length restriction
+and ifpresent). In addition, the individual members shall not resolve to AnyValueOrNone and individual
+elements of the template in the all from clause shall not resolve to AnyElementsOrNone or permutation.*/
+
+module NegSem_B010206_superset_005 {
+
+ type set of integer SoI;
+
+ type port loopbackPort message {
+ inout SoI
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_B010206_superset_005() runs on GeneralComp {
+
+ var SoI v_testMessage;
+
+ template SoI Template := superset(1,2);
+
+ template SoI mw_matchingTemplate:= superset(all from Template); //error
+
+ v_testMessage:={2};
+
+ connect(self:messagePort, self:messagePort);
+ messagePort.send(v_testMessage);
+
+ alt {
+ [] messagePort.receive(mw_matchingTemplate) {
+ setverdict(pass);
+ }
+ [] messagePort.receive {
+ setverdict(fail);
+ }
+ }
+ }
+
+ control{
+ execute(TC_NegSem_B010206_superset_005());
+ }
+
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A template of type '@NegSem_B010206_superset_005.SoI' can not be used as target of 'all from'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010206_superset_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of superset definition >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010206_superset_006 NegSem_B010206_superset_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.2.6, Ensure that the IUT correctly handles template matching of superset definition
+ ** @verdict pass reject
+ ***************************************************/
+
+//Restriction e)
+/*The individual members of the SuperSet's argument and the elements of the template in the all from clause
+shall not be the matching mechanisms omit, SuperSet, SubSet and the matching attributes (length restriction
+and ifpresent). In addition, the individual members shall not resolve to AnyValueOrNone and individual
+elements of the template in the all from clause shall not resolve to AnyElementsOrNone or permutation.*/
+
+module NegSem_B010206_superset_006 {
+
+ type set of integer SoI;
+
+ type port loopbackPort message {
+ inout SoI
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_B010206_superset_006() runs on GeneralComp {
+
+ var SoI v_testMessage;
+
+ template SoI Template:= subset(1,2);
+
+ template SoI mw_matchingTemplate:= superset(all from Template); //error
+
+ v_testMessage:={2};
+
+ connect(self:messagePort, self:messagePort);
+ messagePort.send(v_testMessage);
+
+ alt {
+ [] messagePort.receive(mw_matchingTemplate) {
+ setverdict(pass);
+ }
+ [] messagePort.receive {
+ setverdict(fail);
+ }
+ }
+ }
+
+ control{
+ execute(TC_NegSem_B010206_superset_006());
+ }
+
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A template of type '@NegSem_B010206_superset_006.SoI' can not be used as target of 'all from'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010206_superset_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of superset definitions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010206_superset_007 NegSem_B010206_superset_007.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.2.6, Ensure that the IUT correctly handles template matching of superset definitions
+ ** @verdict pass reject
+ ***************************************************/
+
+//Restriction e)
+/*The individual members of the SuperSet's argument and the elements of the template in the all from clause
+shall not be the matching mechanisms omit, SuperSet, SubSet and the matching attributes (length restriction
+and ifpresent). In addition, the individual members shall not resolve to AnyValueOrNone and individual
+elements of the template in the all from clause shall not resolve to AnyElementsOrNone or permutation.*/
+
+module NegSem_B010206_superset_007 {
+
+ type set of integer SoI;
+
+ type port loopbackPort message {
+ inout SoI
+ } with {extension "internal"}
+
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_B010206_superset_007() runs on GeneralComp {
+
+ var SoI v_testMessage;
+
+ template SoI Template:= {*};
+
+ template SoI mw_matchingTemplate:= superset(all from Template); //error
+
+ v_testMessage:={2};
+
+ connect(self:messagePort, self:messagePort);
+ messagePort.send(v_testMessage);
+
+ alt {
+ [] messagePort.receive(mw_matchingTemplate) {
+ setverdict(pass);
+ }
+ [] messagePort.receive {
+ setverdict(fail);
+ }
+ }
+ }
+
+ control{
+ execute(TC_NegSem_B010206_superset_007());
+ }
+
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 'all from' can not refer to permutation or AnyElementsOrNone
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010206_superset_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of superset definition >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010206_superset_008 NegSem_B010206_superset_008.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.2.6, Ensure that the IUT correctly handles template matching of superset definition
+ ** @verdict pass reject
+ ***************************************************/
+
+//Restriction e)
+/*The individual members of the SuperSet's argument and the elements of the template in the all from clause
+shall not be the matching mechanisms omit, SuperSet, SubSet and the matching attributes (length restriction
+and ifpresent). In addition, the individual members shall not resolve to AnyValueOrNone and individual
+elements of the template in the all from clause shall not resolve to AnyElementsOrNone or permutation.*/
+
+module NegSem_B010206_superset_008 {
+ type record of integer RoI;
+ type set of integer SoI;
+
+ type port loopbackPort message {
+ inout SoI
+ } with {extension "internal"}
+
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_B010206_superset_008() runs on GeneralComp {
+
+ var SoI v_testMessage;
+
+ template RoI Template:= {permutation(1,2,3)};
+
+ template SoI mw_matchingTemplate:= superset(all from Template); //error
+
+ v_testMessage:={2};
+
+ connect(self:messagePort, self:messagePort);
+ messagePort.send(v_testMessage);
+
+ alt {
+ [] messagePort.receive(mw_matchingTemplate) {
+ setverdict(pass);
+ }
+ [] messagePort.receive {
+ setverdict(fail);
+ }
+ }
+ }
+
+ control{
+ execute(TC_NegSem_B010206_superset_008());
+ }
+
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 'all from' can not refer to permutation or AnyElementsOrNone
+<END_RESULT>
+<RESULT COUNT 1>
+error: permutation match cannot be used for type `integer'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010207_subset_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of subset definitions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010207_subset_001 NegSem_B010207_subset_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.2.7, Ensure that the IUT correctly handles template matching of subset definitions
+ ** @verdict pass reject
+ ***************************************************/
+module NegSem_B010207_subset_001 {
+ type record MessageType {
+ record of integer
+ field1 // subset definition is only allowed over set of
+ }
+
+ type port loopbackPort message {
+ inout MessageType;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort messagePort;
+ }
+
+ testcase TC_NegSem_B010207_subset_001() runs on GeneralComp {
+
+ var MessageType v_testMessage;
+
+ template MessageType mw_matchingTemplate := {field1 := subset(1, 2)}
+
+ v_testMessage := {field1 := {1}};
+
+ connect(self:messagePort, self:messagePort);
+ messagePort.send(v_testMessage);
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_NegSem_B010207_subset_001());
+ }
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: subset match cannot be used for `record of' type `@NegSem_B010207_subset_001.MessageType.field1'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010207_subset_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of subset definitions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010207_subset_002 NegSem_B010207_subset_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.2.7, Ensure that the IUT correctly handles template matching of subset definitions
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_B010207_subset_002 {
+
+ type set SetType {
+ integer a optional,
+ integer b optional,
+ integer c optional
+ }
+
+ type record MessageType {
+ SetType field1 //subset definition is only allowed over set of
+ }
+
+ type port loopbackPort message {
+ inout MessageType
+ } with {extension "internal"}
+
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_B010207_subset_002() runs on GeneralComp {
+
+ var MessageType v_testMessage;
+
+ template MessageType mw_matchingTemplate:= {
+ field1 := subset(1,2)
+ }
+
+ v_testMessage:= {
+ field1 := {a:= 1}
+ }
+
+ connect(self:messagePort, self:messagePort);
+ messagePort.send(v_testMessage);
+
+ }
+
+ control{
+ execute(TC_NegSem_B010207_subset_002());
+ }
+
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: subset match cannot be used for set type `@NegSem_B010207_subset_002.SetType'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010207_subset_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of subset definitions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010207_subset_004 NegSem_B010207_subset_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.2.6, Ensure that the IUT correctly handles template matching of subset definitions
+ ** @verdict pass reject
+ ***************************************************/
+
+//Restriction e)
+/*The individual members of the SubSet's argument and the elements of the template in the all from clause
+shall not be the matching mechanisms omit, SuperSet, SubSet and the matching attributes (length restriction
+and ifpresent). In addition, individual members shall not resolve to AnyValueOrNone and individual fields of
+the template in the all from clause shall not resolve to AnyElementsOrNone or permutation.*/
+
+module NegSem_B010207_subset_004 {
+
+ type set of integer SoI;
+
+ type port loopbackPort message {
+ inout SoI
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_B010207_subset_004() runs on GeneralComp {
+
+ var SoI v_testMessage;
+
+ template SoI Template:= {omit};
+
+ template SoI mw_matchingTemplate:= subset(all from Template);
+ //error: Compulsory item cannot be omitted.
+
+ v_testMessage:={2};
+
+ connect(self:messagePort, self:messagePort);
+ messagePort.send(v_testMessage);
+
+ alt {
+ [] messagePort.receive(mw_matchingTemplate) {
+ setverdict(pass);
+ }
+ [] messagePort.receive {
+ setverdict(fail);
+ }
+ }
+ }
+
+ control{
+ execute(TC_NegSem_B010207_subset_004());
+ }
+
+}
+
+<END_MODULE>
+
+<RESULT COUNT 2>
+error: `omit' value is not allowed in this context
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010207_subset_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of subset definitions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010207_subset_005 NegSem_B010207_subset_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.2.6, Ensure that the IUT correctly handles template matching of subset definitions
+ ** @verdict pass reject
+ ***************************************************/
+
+//Restriction e)
+/*The individual members of the SubSet's argument and the elements of the template in the all from clause
+shall not be the matching mechanisms omit, SuperSet, SubSet and the matching attributes (length restriction
+and ifpresent). In addition, individual members shall not resolve to AnyValueOrNone and individual fields of
+the template in the all from clause shall not resolve to AnyElementsOrNone or permutation.*/
+
+module NegSem_B010207_subset_005 {
+
+ type set of integer SoI;
+
+ type port loopbackPort message {
+ inout SoI
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_B010207_subset_005() runs on GeneralComp {
+
+ var SoI v_testMessage;
+
+ template SoI Template:= superset(3,4);
+
+ template SoI mw_matchingTemplate:= subset(all from Template);
+ //error: The "all from" clause contains a matching mechanism.
+
+ v_testMessage:={2};
+
+ connect(self:messagePort, self:messagePort);
+ messagePort.send(v_testMessage);
+
+ alt {
+ [] messagePort.receive(mw_matchingTemplate) {
+ setverdict(pass);
+ }
+ [] messagePort.receive {
+ setverdict(fail);
+ }
+ }
+ }
+
+ control{
+ execute(TC_NegSem_B010207_subset_005());
+ }
+
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A template of type '@NegSem_B010207_subset_005.SoI' can not be used as target of 'all from'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010207_subset_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of subset definitions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010207_subset_006 NegSem_B010207_subset_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.2.6, Ensure that the IUT correctly handles template matching of subset definitions
+ ** @verdict pass reject
+ ***************************************************/
+
+//Restriction e)
+/*The individual members of the SubSet's argument and the elements of the template in the all from clause
+shall not be the matching mechanisms omit, SuperSet, SubSet and the matching attributes (length restriction
+and ifpresent). In addition, individual members shall not resolve to AnyValueOrNone and individual fields of
+the template in the all from clause shall not resolve to AnyElementsOrNone or permutation.*/
+
+module NegSem_B010207_subset_006 {
+
+ type set of integer SoI;
+
+ type port loopbackPort message {
+ inout SoI
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_B010207_subset_006() runs on GeneralComp {
+
+ var SoI v_testMessage;
+
+ template SoI Template:= subset(3,4);
+
+ template SoI mw_matchingTemplate:= subset(all from Template);
+ //error: The "all from" clause contains a matching mechanism.
+
+ v_testMessage:={2};
+
+ connect(self:messagePort, self:messagePort);
+ messagePort.send(v_testMessage);
+
+ alt {
+ [] messagePort.receive(mw_matchingTemplate) {
+ setverdict(pass);
+ }
+ [] messagePort.receive {
+ setverdict(fail);
+ }
+ }
+ }
+
+ control{
+ execute(TC_NegSem_B010207_subset_006());
+ }
+
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A template of type '@NegSem_B010207_subset_006.SoI' can not be used as target of 'all from'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010207_subset_007 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of subset definitions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010207_subset_007 NegSem_B010207_subset_007.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.2.6, Ensure that the IUT correctly handles template matching of subset definitions
+ ** @verdict pass reject
+ ***************************************************/
+
+//Restriction e)
+/*The individual members of the SubSet's argument and the elements of the template in the all from clause
+shall not be the matching mechanisms omit, SuperSet, SubSet and the matching attributes (length restriction
+and ifpresent). In addition, individual members shall not resolve to AnyValueOrNone and individual fields of
+the template in the all from clause shall not resolve to AnyElementsOrNone or permutation.*/
+
+module NegSem_B010207_subset_007 {
+
+ type set of integer SoI;
+
+ type port loopbackPort message {
+ inout SoI
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_B010207_subset_007() runs on GeneralComp {
+
+ var SoI v_testMessage;
+
+ template SoI Template:= {*};
+
+ template SoI mw_matchingTemplate:= subset(all from Template);
+ //error: forbidden matching mechanism.
+
+ v_testMessage:={2};
+
+ connect(self:messagePort, self:messagePort);
+ messagePort.send(v_testMessage);
+
+ alt {
+ [] messagePort.receive(mw_matchingTemplate) {
+ setverdict(pass);
+ }
+ [] messagePort.receive {
+ setverdict(fail);
+ }
+ }
+ }
+
+ control{
+ execute(TC_NegSem_B010207_subset_007());
+ }
+
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 'all from' can not refer to permutation or AnyElementsOrNone
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010207_subset_008 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of subset definitions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010207_subset_008 NegSem_B010207_subset_008.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.2.6, Ensure that the IUT correctly handles template matching of subset definitions
+ ** @verdict pass reject
+ ***************************************************/
+
+//Restriction e)
+/*The individual members of the SubSet's argument and the elements of the template in the all from clause
+shall not be the matching mechanisms omit, SuperSet, SubSet and the matching attributes (length restriction
+and ifpresent). In addition, individual members shall not resolve to AnyValueOrNone and individual fields of
+the template in the all from clause shall not resolve to AnyElementsOrNone or permutation.*/
+
+module NegSem_B010207_subset_008 {
+
+ type set of integer SoI;
+ type record of integer RoI;
+
+ type port loopbackPort message {
+ inout SoI
+ } with {extension "internal"}
+
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_B010207_subset_008() runs on GeneralComp {
+
+ var SoI v_testMessage;
+
+ template RoI Template:= {permutation(1,2,4)};
+
+ template SoI mw_matchingTemplate:= subset(all from Template);
+ //error: forbidden matching mechanism.
+
+ v_testMessage:={2};
+
+ connect(self:messagePort, self:messagePort);
+ messagePort.send(v_testMessage);
+
+ alt {
+ [] messagePort.receive(mw_matchingTemplate) {
+ setverdict(pass);
+ }
+ [] messagePort.receive {
+ setverdict(fail);
+ }
+ }
+ }
+
+ control{
+ execute(TC_NegSem_B010207_subset_008());
+ }
+
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 'all from' can not refer to permutation or AnyElementsOrNone
+<END_RESULT>
+<RESULT COUNT 1>
+error: permutation match cannot be used for type `integer'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010208_omit_value_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of omit values >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010208_omit_value_001 NegSem_B010208_omit_value_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.2.8, Ensure that the IUT correctly handles template matching of omit values
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_B010208_omit_value_001 {
+
+ type enumerated EnumeratedType {e_black, e_white, e_green};
+
+ type record RecordType {
+ integer a optional,
+ integer b optional,
+ boolean c
+ }
+
+ type union UnionType {
+ integer a,
+ EnumeratedType b,
+ boolean c
+ }
+
+ type record MessageType {
+ integer field1,
+ charstring field2 optional,
+ EnumeratedType field3 optional,
+ RecordType field4 optional,
+ UnionType field5 optional,
+ RecordType field6 optional,
+ UnionType field7 optional
+ }
+
+ type port loopbackPort message {
+ inout MessageType
+ } with {extension "internal"}
+
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_B010208_omit_value_001() runs on GeneralComp {
+
+ template MessageType mw_matchingTemplate:=
+ {
+ field1 := omit,// causes an error as field1 is mandatory
+ field2 := *,
+ field3 := *,
+ field4 := *,
+ field5 := *,
+ field6 := *,
+ field7 := *
+ }
+
+ var MessageType v_testMessage:= {
+ field1 := 2,
+ field2 := omit,
+ field3 := omit,
+ field4 := omit,
+ field5 := omit,
+ field6 := omit,
+ field7 := omit
+ }
+
+ connect(self:messagePort, self:messagePort);
+ messagePort.send(v_testMessage);
+
+ alt {
+ [] messagePort.receive(mw_matchingTemplate) {
+ setverdict(pass);
+ }
+ [] messagePort.receive {
+ setverdict(fail);
+ }
+ }
+ }
+
+ control{
+ execute(TC_NegSem_B010208_omit_value_001());
+ }
+
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: `omit' value is not allowed in this context
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010208_omit_value_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of omit values >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010208_omit_value_002 NegSem_B010208_omit_value_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.2.8, Ensure that the IUT correctly handles template matching of omit values
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_B010208_omit_value_002 {
+
+ type enumerated EnumeratedType {e_black, e_white, e_green};
+
+ type record RecordType {
+ integer a optional,
+ integer b optional,
+ boolean c
+ }
+
+ type union UnionType {
+ integer a,
+ EnumeratedType b,
+ boolean c
+ }
+
+ type record MessageType {
+ integer field1,
+ charstring field2 optional,
+ EnumeratedType field3 optional,
+ RecordType field4 optional,
+ UnionType field5 optional,
+ RecordType field6 optional,
+ UnionType field7 optional
+ }
+
+ type port loopbackPort message {
+ inout MessageType
+ } with {extension "internal"}
+
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_B010208_omit_value_002() runs on GeneralComp {
+
+ template MessageType mw_matchingTemplate:=
+ {
+ field1 := ?,
+ field2 := *,
+ field3 := *,
+ field4 := *,
+ field5 := *,
+ field6 := {a:=1,b:=2,c:=omit},// causes an error as c field is mandatory
+ field7 := *
+ }
+
+ var MessageType v_testMessage:= {
+ field1 := 2,
+ field2 := "test string",
+ field3 := e_black,
+ field4 := {a:=1,b:=omit,c:=true},
+ field5 := {a:=1},
+ field6 := {a:=1,b:=2,c:=true},
+ field7 := {a:=1}
+ }
+
+ connect(self:messagePort, self:messagePort);
+ messagePort.send(v_testMessage);
+
+ alt {
+ [] messagePort.receive(mw_matchingTemplate) {
+ setverdict(pass);
+ }
+ [] messagePort.receive {
+ setverdict(fail);
+ }
+ }
+ }
+
+ control{
+ execute(TC_NegSem_B010208_omit_value_002());
+ }
+
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: `omit' value is not allowed in this context
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010303_permutation_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of ? symbols in value elements >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010303_permutation_001 NegSem_B010303_permutation_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.3.3, Ensure that the IUT correctly handles template matching of ? symbols in value elements
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_B010303_permutation_001 {
+ type record MessageType {
+ set of integer field1, // permutation can only be applied to a record of type
+ set of integer field2,
+ set of integer field3,
+ set of integer field4
+ }
+
+ type port loopbackPort message {
+ inout MessageType;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort messagePort;
+ }
+
+ testcase TC_NegSem_B010303_permutation_001() runs on GeneralComp {
+ timer t := 1.0;
+ var MessageType v_testMessage;
+
+ template MessageType mw_matchingTemplate := {
+ field1 := {permutation(1, 2, 3), 5},
+ field2 := {permutation(1, 2, ?), 5},
+ field3 := {permutation(1, 2, 3), *},
+ field4 := {permutation((1, 2, 3), 2, 3), 5}
+ }
+
+ v_testMessage := {
+ field1 := {2, 1, 3, 5},
+ field2 := {2, 1, 8, 5},
+ field3 := {3, 2, 1, 8, 8},
+ field4 := {3, 2, 2, 5}
+ };
+
+ t.start;
+
+ connect(self:messagePort, self:messagePort);
+ messagePort.send(v_testMessage);
+ alt {
+ [] messagePort.receive(mw_matchingTemplate) {
+ setverdict(pass);
+ }
+ [] t.timeout {
+ setverdict(fail);
+ }
+ }
+ }
+ control {
+ execute(TC_NegSem_B010303_permutation_001());
+ }
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: permutation match cannot be used for `set of' type `@NegSem_B010303_permutation_001.MessageType.field1'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010303_permutation_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that all from operand can be a record of or set of only >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010303_permutation_002 NegSem_B010303_permutation_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.3.3, Ensure that all from operand can be a record of or set of only
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Besides specifying all individual values, it is possible to add all elements of
+// a record of or set of template into permutations using an all from clause.
+
+module NegSem_B010303_permutation_002 {
+
+ type record of integer RoI;
+ template integer t_source := 2;
+ // t_source is not a record of or set of -> an error expected
+ template RoI t_perm1 := { permutation ( 5, all from t_source ) };
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_B010303_permutation_002() runs on GeneralComp {
+ if (match({ 2, 5 }, t_perm1)) {
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_B010303_permutation_002());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: A template of type 'integer' can not be used as target of 'all from'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010303_permutation_003 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that type restriction for permutation elements is applied >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010303_permutation_003 NegSem_B010303_permutation_003.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.3.3, Ensure that type restriction for permutation elements is applied
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Each individual member listed in the permutation shall be of the type replicated
+// by the record of type.
+
+module NegSem_B010303_permutation_003 {
+
+ type record of integer RoI;
+
+ template RoI t_perm1 := { permutation ( 5, 2.0 ) }; // float value is not compatible
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_B010303_permutation_003() runs on GeneralComp {
+ if (match({ 2, 5 }, t_perm1)) {
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_B010303_permutation_003());
+ }
+
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: integer value was expected
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010303_permutation_005 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Verify restriction on individual members of all from operand in permutation >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010303_permutation_005 NegSem_B010303_permutation_005.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.3.3, Verify restriction on individual members of all from operand in permutation
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// The template in the all from clause as a whole shall not resolve into a matching
+// mechanism
+
+module NegSem_B010303_permutation_005 {
+
+ type record of integer RoI;
+
+ template RoI t_source := ?;
+ // The source template resolves to a matching mechanism. It should cause an error.
+ template RoI t_perm1 := { permutation ( all from t_source, 2 ) };
+
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_B010303_permutation_005() runs on GeneralComp {
+ if (match({ 2, 3 }, t_perm1)) {
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_B010303_permutation_005());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Matching mechanism can not be used as target of 'all from'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010303_permutation_006 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Verify restriction on individual members of all from operand in permutation >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010303_permutation_006 NegSem_B010303_permutation_006.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.3.3, Verify restriction on individual members of all from operand in permutation
+ ** @verdict pass reject
+ ***************************************************/
+
+// The following requirement is tested:
+// Individual members of a permutation and elements of the template in the all from
+// clause shall only be expressions, templates, and the AnyElement and
+// AnyElementsOrNone matching mechanisms.
+
+module NegSem_B010303_permutation_006 {
+
+ type record of integer RoI;
+
+ template RoI t_source := { 1, permutation(2, 3) }
+ // The source template contains a matching mechanism inside value (permutation)
+ // that is not mentioned as a valid content of the all from operand in
+ // B.1.3.3. restriction c
+ template RoI t_perm1 := { permutation ( all from t_source, * ) };
+
+
+ type component GeneralComp {
+ }
+
+ testcase TC_NegSem_B010303_permutation_006() runs on GeneralComp {
+ if (match({ 1, 4, 2, 3 }, t_perm1)) {
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+ control{
+ execute(TC_NegSem_B010303_permutation_006());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: 'all from' can not refer to permutation or AnyElementsOrNone
+<END_RESULT>
+<RESULT COUNT 1>
+error: permutation match cannot be used for type `integer'
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. B0104_matching_attributes_of_values folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010401_length_restrictions_002 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of value length definitions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010401_length_restrictions_002 NegSem_B010401_length_restrictions_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.4.1, Ensure that the IUT correctly handles template matching of value length definitions
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_B010401_length_restrictions_002 {
+
+
+ type record MessageType {
+ charstring field1,
+ bitstring field2,
+ hexstring field3,
+ charstring field4,
+ bitstring field5,
+ hexstring field6
+ }
+
+ type port loopbackPort message {
+ inout MessageType
+ } with {extension "internal"}
+
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_B010401_length_restrictions_002() runs on GeneralComp {
+
+ var MessageType v_testMessage;
+
+ template MessageType mw_matchingTemplate:= {
+ field1 := pattern "test s*g" length (6 .. 15),
+ field2 := '10*'B length (3 .. 5),
+ field3 := '89?AB'H length (6), //pattern is shorter than length restriction
+ field4 := pattern "tes?" length (4 .. 13),
+ field5 := '10?'B length (3 .. 5),
+ field6 := '89?ABC'H length (6)
+ }
+
+ v_testMessage:= {
+ field1 := "test string",
+ field2 := '10101'B,
+ field3 := '89ABC'H,
+ field4 := "test",
+ field5 := '101'B,
+ field6 := '899ABC'H
+ }
+
+ connect(self:messagePort, self:messagePort);
+ messagePort.send(v_testMessage);
+
+ alt {
+ [] messagePort.receive(mw_matchingTemplate) {
+ setverdict(fail);
+ }
+ [] messagePort.receive {
+ setverdict(pass);
+ }
+ }
+ }
+
+ control{
+ execute(TC_NegSem_B010401_length_restrictions_002());
+ }
+
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: There are fewer \(5\) elements in the string than it is allowed by the length restriction \(6\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010401_length_restrictions_004 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of value length definitions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010401_length_restrictions_004 NegSem_B010401_length_restrictions_004.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.4.1, Ensure that the IUT correctly handles template matching of value length definitions
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_B010401_length_restrictions_004 {
+
+
+ type record MessageType {
+ record of integer field1,
+ record of integer field2,
+ record of integer field3,
+ record of integer field4,
+ record of integer field5,
+ record of integer field6
+ }
+
+ type port loopbackPort message {
+ inout MessageType
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_B010401_length_restrictions_004() runs on GeneralComp {
+
+ var MessageType v_testMessage;
+
+ template MessageType mw_matchingTemplate:= {
+ field1 := { permutation ( 1, 2, 3 ), * } length (3..4),
+ field2 := { (1,2),* } length (2 .. 5),
+ field3 := { permutation ( 1, 2, 3 ), ? } length (2..3), // message length is too long
+ field4 := { (1,2),? } length (2 .. 5)
+ }
+
+ v_testMessage:= {
+ field1 := {2,1,3},
+ field2 := {2,1,3,5},
+ field3 := {2,1,3,5},
+ field4 := {1,1}
+ }
+
+ connect(self:messagePort, self:messagePort);
+ messagePort.send(v_testMessage);
+
+ alt {
+ [] messagePort.receive(mw_matchingTemplate) {
+ setverdict(fail);
+ }
+ [] messagePort.receive {
+ setverdict(pass);
+ }
+ }
+ }
+
+ control{
+ execute(TC_NegSem_B010401_length_restrictions_004());
+ }
+
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: There are more \(4\) elements in the template than it is allowed by the length restriction \(at most 3\)
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010402_ifPresent_indicator_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of ifpresent indicators >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010402_ifPresent_indicator_001 NegSem_B010402_ifPresent_indicator_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.4.2, Ensure that the IUT correctly handles template matching of ifpresent indicators
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSem_B010402_ifPresent_indicator_001 {
+
+ type enumerated EnumeratedType {e_black, e_white, e_green};
+
+ type record RecordType {
+ integer a optional,
+ integer b optional,
+ boolean c
+ }
+
+ type union UnionType {
+ integer a,
+ EnumeratedType b,
+ boolean c
+ }
+
+ type record MessageType {
+ integer field1 optional,
+ charstring field2 optional,
+ RecordType field3,
+ UnionType field4 optional
+ }
+
+ type port loopbackPort message {
+ inout MessageType
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort messagePort
+ }
+
+ testcase TC_NegSem_B010402_ifPresent_indicator_001() runs on GeneralComp {
+
+ var MessageType v_testMessage;
+
+ template MessageType mw_matchingTemplate:= {
+ field1 := (0..2) ifpresent,
+ field2 := ("a".."f") ifpresent,
+ field3 := {a:=1,b:=(0..2) ifpresent,c:=true} ifpresent,
+ //use of ifpresent on non-optional field
+ field4 := {a:=(0..2)} ifpresent
+ }
+
+ v_testMessage:= {
+ field1 := omit,
+ field2 := omit,
+ field3 := {a:=1,b:=omit,c:=true},
+ field4 := omit
+ }
+
+ connect(self:messagePort, self:messagePort);
+ messagePort.send(v_testMessage);
+ }
+
+ control{
+ execute(TC_NegSem_B010402_ifPresent_indicator_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: `ifpresent' is not allowed here
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSem_B010501_set_expression_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles template matching of character pattern set expressions >
+
+<COMPILE>
+
+<MODULE TTCN NegSem_B010501_set_expression_001 NegSem_B010501_set_expression_001.ttcn >
+/***************************************************
+ * @author STF 409
+ * @version 0.0.1
+ * @purpose 1:B.1.5.1, Ensure that the IUT correctly handles template matching of character pattern set expressions
+ * @verdict pass reject
+ ***************************************************/
+module NegSem_B010501_set_expression_001 {
+ type record MessageType {
+ charstring field1
+ }
+
+ type port loopbackPort message {
+ inout MessageType;
+ } with {extension "internal"}
+
+ type component GeneralComp {
+ port loopbackPort messagePort;
+ }
+
+ testcase TC_NegSem_B010501_set_expression_001() runs on GeneralComp {
+
+ var boolean m_res := match( "test", pattern "te[p[q-t]x]t"); // embedded set is not allowed
+
+ setverdict(fail);
+
+ }
+ control {
+ execute(TC_NegSem_B010501_set_expression_001());
+ }
+}
+
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: Unmatched `\]'. Did you mean `\\\]'\?
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. NegSyn_B010505_pattern_compatibility_001 negative test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the IUT correctly handles character pattern metacharacters
+ compatibility rules of template matching >
+
+<COMPILE>
+
+<MODULE TTCN NegSyn_B010505_pattern_compatibility_001 NegSyn_B010505_pattern_compatibility_001.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:B.1.5.0, Ensure that the IUT correctly handles character pattern metacharacters
+ compatibility rules of template matching
+ ** @verdict pass reject
+ ***************************************************/
+
+module NegSyn_B010505_pattern_compatibility_001 {
+
+ type component GeneralComp {}
+
+ testcase TC_NegSyn_B010505_pattern_compatibility_001() runs on GeneralComp {
+
+ template charstring mw_matchingTemplate:= pattern "??riable reference";
+ var charstring mw_matchingTemplate_2:= pattern mw_matchingTemplate;
+ // error: Cannot assign a template to a non-template variable.
+
+ }
+
+ control{
+ execute(TC_NegSyn_B010505_pattern_compatibility_001());
+ }
+
+}
+<END_MODULE>
+
+<RESULT COUNT 1>
+error: at or before token `pattern': syntax error, unexpected PatternKeyword
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h1.References
+.*---------------------------------------------------------------------*
+:list.
+:li D='[1]'.1/174 02-CRL 113 200/5 Uen
+:nl.Statement of Compliance for TITAN project
+:li D='[2]'.ETSI ES 201 873-1, v4.7.1 Mockup v1 (2015-06):
+:nl.Testing and Test Control Notation version 3.,
+:nl.Part 1: TTCN-3 Core Language
+:elist.
--- /dev/null
+.******************************************************************************
+.* Copyright (c) 2000-2016 Ericsson Telecom AB
+.* All rights reserved. This program and the accompanying materials
+.* are made available under the terms of the Eclipse Public License v1.0
+.* which accompanies this distribution, and is available at
+.* http://www.eclipse.org/legal/epl-v10.html
+.*
+.* Contributors:
+.* Adrien Kirjak – initial implementation
+.*
+.******************************************************************************/
+text.
+:lang eng.
+.*
+:docname.Test Description
+:docno.xz/152 91-CRL 113 200 Uen
+:rev.PA1
+:date.2016-04-04
+.*
+:prep.ETH/XZ EADRKIR
+:subresp.EADRKIR
+:appr.ETH/XZ (Elemer Lelik)
+:checked.
+.*
+:title.ETSI TTCN3 Negative Conformance Test
+:contents level=3.
+.*---------------------------------------------------------------------*
+:h1.PREREQUISITES AND PREPARATIONS
+.*---------------------------------------------------------------------*
+.*---------------------------------------------------------------------*
+:h2.Scope of the Test Object
+.*---------------------------------------------------------------------*
+:xmp tab=1 nokeep.
+This TD contains tests with not pass verdicts from ETSI TTCN3 Conformance Test's 24_test_verdict_operations and 26_module_control folders.
+
+:exmp.
+
+.*---------------------------------------------------------------------*
+:h2.Test Tools
+.*---------------------------------------------------------------------*
+:p.:us.Software Tools:eus.
+:xmp tab=2 nokeep.
+
+ SAtester.pl
+
+:exmp.
+:np.
+
+.*---------------------------------------------------------------------*
+:h1.REQUIREMENT-BASED TESTS
+.*---------------------------------------------------------------------*
+
+.*---------------------------------------------------------------------*
+:h2. 24_test_verdict_operations folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. Sem_2401_GlobalVerdict_002 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure overwriting rules for global verdict: inconc can overwrite none. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2401_GlobalVerdict_002 Sem_2401_GlobalVerdict_002.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24.1, Ensure overwriting rules for global verdict: inconc can overwrite none.
+ ** @verdict pass accept, ttcn3verdict:inconc
+ *****************************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.1 The Verdict mechanism/Overwriting rules for setverdict
+ **/
+
+
+module Sem_2401_GlobalVerdict_002 {
+ type component GeneralComp {}
+
+ function set_PTC_verdict_none() runs on GeneralComp {
+ setverdict(none);
+ }
+
+ function set_PTC_verdict_inconc() runs on GeneralComp {
+ setverdict(inconc);
+ }
+
+ testcase TC_Sem_2401_GlobalVerdict_002() runs on GeneralComp system GeneralComp {
+ var GeneralComp PTC1, PTC2;
+
+ PTC1 := GeneralComp.create;
+ PTC2 := GeneralComp.create;
+ PTC1.start(set_PTC_verdict_none());
+ PTC2.start(set_PTC_verdict_inconc());
+ all component.done;
+ // Verdict inconc can overwrite none
+ }
+
+ control{
+ execute(TC_Sem_2401_GlobalVerdict_002());
+ }
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: inconc
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2401_GlobalVerdict_003 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure overwriting rules for global verdict: fail can overwrite none. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2401_GlobalVerdict_003 Sem_2401_GlobalVerdict_003.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24.1, Ensure overwriting rules for global verdict: fail can overwrite none.
+ ** @verdict pass accept, ttcn3verdict:fail
+ *****************************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.1 The Verdict mechanism/Overwriting rules for setverdict
+ **/
+
+
+module Sem_2401_GlobalVerdict_003 {
+ type component GeneralComp {}
+
+ function set_PTC_verdict_none() runs on GeneralComp {
+ setverdict(none);
+ }
+
+ function set_PTC_verdict_fail() runs on GeneralComp {
+ setverdict(fail);
+ }
+
+ testcase TC_Sem_2401_GlobalVerdict_003() runs on GeneralComp system GeneralComp {
+ var GeneralComp PTC1, PTC2;
+
+ PTC1 := GeneralComp.create;
+ PTC2 := GeneralComp.create;
+ PTC1.start(set_PTC_verdict_none());
+ PTC2.start(set_PTC_verdict_fail());
+ all component.done;
+ // Verdict fail can overwrite none
+ }
+
+ control{
+ execute(TC_Sem_2401_GlobalVerdict_003());
+ }
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: fail
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2401_GlobalVerdict_005 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure overwriting rules for global verdict: inconc can overwrite pass. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2401_GlobalVerdict_005 Sem_2401_GlobalVerdict_005.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24.1, Ensure overwriting rules for global verdict: inconc can overwrite pass.
+ ** @verdict pass accept, ttcn3verdict:inconc
+ *****************************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.1 The Verdict mechanism/Overwriting rules for setverdict
+ **/
+
+
+module Sem_2401_GlobalVerdict_005 {
+ type component GeneralComp {}
+
+ function set_PTC_verdict_pass() runs on GeneralComp {
+ setverdict(pass);
+ }
+
+ function set_PTC_verdict_inconc() runs on GeneralComp {
+ setverdict(inconc);
+ }
+
+ testcase TC_Sem_2401_GlobalVerdict_005() runs on GeneralComp system GeneralComp {
+ var GeneralComp PTC1, PTC2;
+
+ PTC1 := GeneralComp.create;
+ PTC2 := GeneralComp.create;
+ PTC1.start(set_PTC_verdict_pass());
+ PTC2.start(set_PTC_verdict_inconc());
+ all component.done;
+ // Verdict inconc can overwrite pass
+ }
+
+ control{
+ execute(TC_Sem_2401_GlobalVerdict_005());
+ }
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: inconc
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2401_GlobalVerdict_006 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure overwriting rules for global verdict: fail can overwrite pass. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2401_GlobalVerdict_006 Sem_2401_GlobalVerdict_006.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24.1, Ensure overwriting rules for global verdict: fail can overwrite pass.
+ ** @verdict pass accept, ttcn3verdict:fail
+ *****************************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.1 The Verdict mechanism/Overwriting rules for setverdict
+ **/
+
+
+module Sem_2401_GlobalVerdict_006 {
+ type component GeneralComp {}
+
+ function set_PTC_verdict_pass() runs on GeneralComp {
+ setverdict(pass);
+ }
+
+ function set_PTC_verdict_fail() runs on GeneralComp {
+ setverdict(fail);
+ }
+
+ testcase TC_Sem_2401_GlobalVerdict_006() runs on GeneralComp system GeneralComp {
+ var GeneralComp PTC1, PTC2;
+
+ PTC1 := GeneralComp.create;
+ PTC2 := GeneralComp.create;
+ PTC1.start(set_PTC_verdict_pass());
+ PTC2.start(set_PTC_verdict_fail());
+ all component.done;
+ // Verdict fail can overwrite pass
+ }
+
+ control{
+ execute(TC_Sem_2401_GlobalVerdict_006());
+ }
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: fail
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2401_GlobalVerdict_007 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure overwriting rules for global verdict: none can't overwrite inconc. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2401_GlobalVerdict_007 Sem_2401_GlobalVerdict_007.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24.1, Ensure overwriting rules for global verdict: none can't overwrite inconc.
+ ** @verdict pass accept, ttcn3verdict:inconc
+ *****************************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.1 The Verdict mechanism/Overwriting rules for setverdict
+ **/
+
+
+module Sem_2401_GlobalVerdict_007 {
+ type component GeneralComp {}
+
+ function set_PTC_verdict_inconc() runs on GeneralComp {
+ setverdict(inconc);
+ }
+
+ function set_PTC_verdict_none() runs on GeneralComp {
+ setverdict(none);
+ }
+
+ testcase TC_Sem_2401_GlobalVerdict_007() runs on GeneralComp system GeneralComp {
+ var GeneralComp PTC1, PTC2;
+
+ PTC1 := GeneralComp.create;
+ PTC2 := GeneralComp.create;
+ PTC1.start(set_PTC_verdict_inconc());
+ PTC2.start(set_PTC_verdict_none());
+ all component.done;
+ // Verdict none can't overwrite inconc
+ }
+
+ control{
+ execute(TC_Sem_2401_GlobalVerdict_007());
+ }
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: inconc
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2401_GlobalVerdict_008 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure overwriting rules for global verdict: pass can't overwrite inconc. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2401_GlobalVerdict_008 Sem_2401_GlobalVerdict_008.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24.1, Ensure overwriting rules for global verdict: pass can't overwrite inconc.
+ ** @verdict pass accept, ttcn3verdict:inconc
+ *****************************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.1 The Verdict mechanism/Overwriting rules for setverdict
+ **/
+
+
+module Sem_2401_GlobalVerdict_008 {
+ type component GeneralComp {}
+
+ function set_PTC_verdict_inconc() runs on GeneralComp {
+ setverdict(inconc);
+ }
+
+ function set_PTC_verdict_pass() runs on GeneralComp {
+ setverdict(pass);
+ }
+
+ testcase TC_Sem_2401_GlobalVerdict_008() runs on GeneralComp system GeneralComp {
+ var GeneralComp PTC1, PTC2;
+
+ PTC1 := GeneralComp.create;
+ PTC2 := GeneralComp.create;
+ PTC1.start(set_PTC_verdict_inconc());
+ PTC2.start(set_PTC_verdict_pass());
+ all component.done;
+ // Verdict pass can't overwrite inconc
+ }
+
+ control{
+ execute(TC_Sem_2401_GlobalVerdict_008());
+ }
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: inconc
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2401_GlobalVerdict_009 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure overwriting rules for global verdict: fail can overwrite inconc. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2401_GlobalVerdict_009 Sem_2401_GlobalVerdict_009.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24.1, Ensure overwriting rules for global verdict: fail can overwrite inconc.
+ ** @verdict pass accept, ttcn3verdict:fail
+ *****************************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.1 The Verdict mechanism/Overwriting rules for setverdict
+ **/
+
+
+module Sem_2401_GlobalVerdict_009 {
+ type component GeneralComp {}
+
+ function set_PTC_verdict_inconc() runs on GeneralComp {
+ setverdict(inconc);
+ }
+
+ function set_PTC_verdict_fail() runs on GeneralComp {
+ setverdict(fail);
+ }
+
+ testcase TC_Sem_2401_GlobalVerdict_009() runs on GeneralComp system GeneralComp {
+ var GeneralComp PTC1, PTC2;
+
+ PTC1 := GeneralComp.create;
+ PTC2 := GeneralComp.create;
+ PTC1.start(set_PTC_verdict_inconc());
+ PTC2.start(set_PTC_verdict_fail());
+ all component.done;
+ // Verdict fail can overwrite inconc
+ }
+
+ control{
+ execute(TC_Sem_2401_GlobalVerdict_009());
+ }
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: fail
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2401_GlobalVerdict_010 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure overwriting rules for global verdict: none can't overwrite fail. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2401_GlobalVerdict_010 Sem_2401_GlobalVerdict_010.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24.1, Ensure overwriting rules for global verdict: none can't overwrite fail.
+ ** @verdict pass accept, ttcn3verdict:fail
+ *****************************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.1 The Verdict mechanism/Overwriting rules for setverdict
+ **/
+
+
+module Sem_2401_GlobalVerdict_010 {
+ type component GeneralComp {}
+
+ function set_PTC_verdict_fail() runs on GeneralComp {
+ setverdict(fail);
+ }
+
+ function set_PTC_verdict_none() runs on GeneralComp {
+ setverdict(none);
+ }
+
+ testcase TC_Sem_2401_GlobalVerdict_010() runs on GeneralComp system GeneralComp {
+ var GeneralComp PTC1, PTC2;
+
+ PTC1 := GeneralComp.create;
+ PTC2 := GeneralComp.create;
+ PTC1.start(set_PTC_verdict_fail());
+ PTC2.start(set_PTC_verdict_none());
+ all component.done;
+ // Verdict none can't overwrite fail
+ }
+
+ control{
+ execute(TC_Sem_2401_GlobalVerdict_010());
+ }
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: fail
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2401_GlobalVerdict_011 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure overwriting rules for global verdict: pass can't overwrite fail. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2401_GlobalVerdict_011 Sem_2401_GlobalVerdict_011.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24.1, Ensure overwriting rules for global verdict: pass can't overwrite fail.
+ ** @verdict pass accept, ttcn3verdict:fail
+ *****************************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.1 The Verdict mechanism/Overwriting rules for setverdict
+ **/
+
+
+module Sem_2401_GlobalVerdict_011 {
+ type component GeneralComp {}
+
+ function set_PTC_verdict_fail() runs on GeneralComp {
+ setverdict(fail);
+ }
+
+ function set_PTC_verdict_pass() runs on GeneralComp {
+ setverdict(pass);
+ }
+
+ testcase TC_Sem_2401_GlobalVerdict_011() runs on GeneralComp system GeneralComp {
+ var GeneralComp PTC1, PTC2;
+
+ PTC1 := GeneralComp.create;
+ PTC2 := GeneralComp.create;
+ PTC1.start(set_PTC_verdict_fail());
+ PTC2.start(set_PTC_verdict_pass());
+ all component.done;
+ // Verdict pass can't overwrite fail
+ }
+
+ control{
+ execute(TC_Sem_2401_GlobalVerdict_011());
+ }
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: fail
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2401_GlobalVerdict_012 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure overwriting rules for global verdict: inconc can't overwrite fail. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2401_GlobalVerdict_012 Sem_2401_GlobalVerdict_012.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24.1, Ensure overwriting rules for global verdict: inconc can't overwrite fail.
+ ** @verdict pass accept, ttcn3verdict:fail
+ *****************************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.1 The Verdict mechanism/Overwriting rules for setverdict
+ **/
+
+
+module Sem_2401_GlobalVerdict_012 {
+ type component GeneralComp {}
+
+ function set_PTC_verdict_fail() runs on GeneralComp {
+ setverdict(fail);
+ }
+
+ function set_PTC_verdict_inconc() runs on GeneralComp {
+ setverdict(inconc);
+ }
+
+ testcase TC_Sem_2401_GlobalVerdict_012() runs on GeneralComp system GeneralComp {
+ var GeneralComp PTC1, PTC2;
+
+ PTC1 := GeneralComp.create;
+ PTC2 := GeneralComp.create;
+ PTC1.start(set_PTC_verdict_fail());
+ PTC2.start(set_PTC_verdict_inconc());
+ all component.done;
+ // Verdict inconc can't overwrite fail
+ }
+
+ control{
+ execute(TC_Sem_2401_GlobalVerdict_012());
+ }
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: fail
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2401_LocalVerdict_002 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure overwriting rules for local verdict: inconc can overwrite none. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2401_LocalVerdict_002 Sem_2401_LocalVerdict_002.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24.1, Ensure overwriting rules for local verdict: inconc can overwrite none.
+ ** @verdict pass accept, ttcn3verdict:inconc
+ *****************************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.1 The Verdict mechanism/Overwriting rules for setverdict
+ **/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.2 The Setverdict operation/The value of the local verdict is changed with the setverdict operation.
+ **/
+
+
+module Sem_2401_LocalVerdict_002 {
+ type component GeneralComp {}
+
+ testcase TC_Sem_2401_LocalVerdict_002() runs on GeneralComp {
+ setverdict(none);
+ setverdict(inconc);
+
+ // The verdict is evaluated by the validation tool according to @verdict header
+ }
+
+ control{
+ execute(TC_Sem_2401_LocalVerdict_002());
+ }
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: inconc
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2401_LocalVerdict_003 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure overwriting rules for local verdict: fail can overwrite none. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2401_LocalVerdict_003 Sem_2401_LocalVerdict_003.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24.1, Ensure overwriting rules for local verdict: fail can overwrite none.
+ ** @verdict pass accept, ttcn3verdict:fail
+ *****************************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.1 The Verdict mechanism/Overwriting rules for setverdict
+ **/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.2 The Setverdict operation/The value of the local verdict is changed with the setverdict operation.
+ **/
+
+
+module Sem_2401_LocalVerdict_003 {
+ type component GeneralComp {}
+
+ testcase TC_Sem_2401_LocalVerdict_003() runs on GeneralComp {
+ setverdict(none);
+ setverdict(fail);
+
+ // The verdict is evaluated by the validation tool according to @verdict header
+ }
+
+ control{
+ execute(TC_Sem_2401_LocalVerdict_003());
+ }
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: fail
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2401_LocalVerdict_005 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure overwriting rules for local verdict: inconc can overwrite pass. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2401_LocalVerdict_005 Sem_2401_LocalVerdict_005.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24.1, Ensure overwriting rules for local verdict: inconc can overwrite pass.
+ ** @verdict pass accept, ttcn3verdict:inconc
+ *****************************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.1 The Verdict mechanism/Overwriting rules for setverdict
+ **/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.2 The Setverdict operation/The value of the local verdict is changed with the setverdict operation.
+ **/
+
+
+module Sem_2401_LocalVerdict_005 {
+ type component GeneralComp {}
+
+ testcase TC_Sem_2401_LocalVerdict_005() runs on GeneralComp {
+ setverdict(pass);
+ setverdict(inconc);
+
+ // The verdict is evaluated by the validation tool according to @verdict header
+ }
+
+ control{
+ execute(TC_Sem_2401_LocalVerdict_005());
+ }
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: inconc
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2401_LocalVerdict_006 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure overwriting rules for local verdict: fail can overwrite pass. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2401_LocalVerdict_006 Sem_2401_LocalVerdict_006.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24.1, Ensure overwriting rules for local verdict: fail can overwrite pass.
+ ** @verdict pass accept, ttcn3verdict:fail
+ *****************************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.1 The Verdict mechanism/Overwriting rules for setverdict
+ **/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.2 The Setverdict operation/The value of the local verdict is changed with the setverdict operation.
+ **/
+
+
+module Sem_2401_LocalVerdict_006 {
+ type component GeneralComp {}
+
+ testcase TC_Sem_2401_LocalVerdict_006() runs on GeneralComp {
+ setverdict(pass);
+ setverdict(fail);
+
+ // The verdict is evaluated by the validation tool according to @verdict header
+ }
+
+ control{
+ execute(TC_Sem_2401_LocalVerdict_006());
+ }
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: fail
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2401_LocalVerdict_007 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure overwriting rules for local verdict: none can't overwrite inconc. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2401_LocalVerdict_007 Sem_2401_LocalVerdict_007.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24.1, Ensure overwriting rules for local verdict: none can't overwrite inconc.
+ ** @verdict pass accept, ttcn3verdict:inconc
+ *****************************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.1 The Verdict mechanism/Overwriting rules for setverdict
+ **/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.2 The Setverdict operation/The value of the local verdict is changed with the setverdict operation.
+ **/
+
+
+module Sem_2401_LocalVerdict_007 {
+ type component GeneralComp {}
+
+ testcase TC_Sem_2401_LocalVerdict_007() runs on GeneralComp {
+ setverdict(inconc);
+ setverdict(none);
+
+ // The verdict is evaluated by the validation tool according to @verdict header
+ }
+
+ control{
+ execute(TC_Sem_2401_LocalVerdict_007());
+ }
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: inconc
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2401_LocalVerdict_008 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure overwriting rules for local verdict: pass can't overwrite inconc. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2401_LocalVerdict_008 Sem_2401_LocalVerdict_008.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24.1, Ensure overwriting rules for local verdict: pass can't overwrite inconc.
+ ** @verdict pass accept, ttcn3verdict:inconc
+ *****************************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.1 The Verdict mechanism/Overwriting rules for setverdict
+ **/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.2 The Setverdict operation/The value of the local verdict is changed with the setverdict operation.
+ **/
+
+
+module Sem_2401_LocalVerdict_008 {
+ type component GeneralComp {}
+
+ testcase TC_Sem_2401_LocalVerdict_008() runs on GeneralComp {
+ setverdict(inconc);
+ setverdict(pass);
+
+ // The verdict is evaluated by the validation tool according to @verdict header
+ }
+
+ control{
+ execute(TC_Sem_2401_LocalVerdict_008());
+ }
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: inconc
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2401_LocalVerdict_009 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure overwriting rules for local verdict: fail can overwrite inconc. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2401_LocalVerdict_009 Sem_2401_LocalVerdict_009.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24.1, Ensure overwriting rules for local verdict: fail can overwrite inconc.
+ ** @verdict pass accept, ttcn3verdict:fail
+ *****************************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.1 The Verdict mechanism/Overwriting rules for setverdict
+ **/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.2 The Setverdict operation/The value of the local verdict is changed with the setverdict operation.
+ **/
+
+
+module Sem_2401_LocalVerdict_009 {
+ type component GeneralComp {}
+
+ testcase TC_Sem_2401_LocalVerdict_009() runs on GeneralComp {
+ setverdict(inconc);
+ setverdict(fail);
+
+ // The verdict is evaluated by the validation tool according to @verdict header
+ }
+
+ control{
+ execute(TC_Sem_2401_LocalVerdict_009());
+ }
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: fail
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2401_LocalVerdict_010 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure overwriting rules for local verdict: none can't overwrite fail. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2401_LocalVerdict_010 Sem_2401_LocalVerdict_010.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24.1, Ensure overwriting rules for local verdict: none can't overwrite fail.
+ ** @verdict pass accept, ttcn3verdict:fail
+ *****************************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.1 The Verdict mechanism/Overwriting rules for setverdict
+ **/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.2 The Setverdict operation/The value of the local verdict is changed with the setverdict operation.
+ **/
+
+
+module Sem_2401_LocalVerdict_010 {
+ type component GeneralComp {}
+
+ testcase TC_Sem_2401_LocalVerdict_010() runs on GeneralComp {
+ setverdict(fail);
+ setverdict(none);
+
+ // The verdict is evaluated by the validation tool according to @verdict header
+ }
+
+ control{
+ execute(TC_Sem_2401_LocalVerdict_010());
+ }
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: fail
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2401_LocalVerdict_011 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure overwriting rules for local verdict: pass can't overwrite fail. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2401_LocalVerdict_011 Sem_2401_LocalVerdict_011.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24.1, Ensure overwriting rules for local verdict: pass can't overwrite fail.
+ ** @verdict pass accept, ttcn3verdict:fail
+ *****************************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.1 The Verdict mechanism/Overwriting rules for setverdict
+ **/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.2 The Setverdict operation/The value of the local verdict is changed with the setverdict operation.
+ **/
+
+
+module Sem_2401_LocalVerdict_011 {
+ type component GeneralComp {}
+
+ testcase TC_Sem_2401_LocalVerdict_011() runs on GeneralComp {
+ setverdict(fail);
+ setverdict(pass);
+
+ // The verdict is evaluated by the validation tool according to @verdict header
+ }
+
+ control{
+ execute(TC_Sem_2401_LocalVerdict_011());
+ }
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: fail
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2401_LocalVerdict_012 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure overwriting rules for local verdict: inconc can't overwrite fail. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2401_LocalVerdict_012 Sem_2401_LocalVerdict_012.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24.1, Ensure overwriting rules for local verdict: inconc can't overwrite fail.
+ ** @verdict pass accept, ttcn3verdict:fail
+ *****************************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.1 The Verdict mechanism/Overwriting rules for setverdict
+ **/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.2 The Setverdict operation/The value of the local verdict is changed with the setverdict operation.
+ **/
+
+
+module Sem_2401_LocalVerdict_012 {
+ type component GeneralComp {}
+
+ testcase TC_Sem_2401_LocalVerdict_012() runs on GeneralComp {
+ setverdict(fail);
+ setverdict(inconc);
+
+ // The verdict is evaluated by the validation tool according to @verdict header
+ }
+
+ control{
+ execute(TC_Sem_2401_LocalVerdict_012());
+ }
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: fail
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2403_getverdict_002 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure getverdict returns the actual verdict inconc >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2403_getverdict_002 Sem_2403_getverdict_002.ttcn >
+/***************************************************
+ ** @version 0.0.1
+ ** @purpose 1:24.3, Ensure getverdict returns the actual verdict inconc
+ ** @verdict pass accept, ttcn3verdict:inconc
+ ***************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.3 The Getverdict operation/Getverdict returns local verdict value
+ **/
+
+module Sem_2403_getverdict_002 {
+ type component TComp {}
+
+ testcase TC_Sem_2403_getverdict_002() runs on TComp {
+ var verdicttype v_verdict;
+ setverdict(inconc);
+ v_verdict := getverdict;
+ if (v_verdict != inconc)
+ {
+ setverdict(fail);
+ }
+
+ }
+
+ control {
+ execute(TC_Sem_2403_getverdict_002())
+ }
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: inconc
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2403_getverdict_004 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure getverdict returns the actual verdict fail >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2403_getverdict_004 Sem_2403_getverdict_004.ttcn >
+/***************************************************
+ ** @version 0.0.2
+ ** @purpose 1:24.3, Ensure getverdict returns the actual verdict fail
+ ** @verdict pass accept, ttcn3verdict:fail
+ ***************************************************/
+/*
+ * #reqname /Requirements/24 Test verdict operations/24.3 The Getverdict operation/Getverdict returns local verdict value
+ **/
+
+module Sem_2403_getverdict_004 {
+ type component TComp {}
+
+ testcase TC_Sem_2403_getverdict_004() runs on TComp {
+ var verdicttype v_verdict;
+ setverdict(fail);
+ v_verdict := getverdict;
+ if (v_verdict != fail)
+ {
+ // Set error verdict
+ testcase.stop;
+ }
+ }
+
+ control {
+ execute(TC_Sem_2403_getverdict_004())
+ }
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: fail
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h2. 26_module_control folder
+.*---------------------------------------------------------------------*
+
+*---------------------------------------------------------------------*
+:h3. Sem_2601_ExecuteStatement_003 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the timeout specified with the execute statement is respected. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2601_ExecuteStatement_003 Sem_2601_ExecuteStatement_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:26.1, Ensure that the timeout specified with the execute statement is respected.
+ ** @verdict pass accept, ttcn3verdict:error
+ *****************************************************************/
+
+module Sem_2601_ExecuteStatement_003 {
+
+ type component GeneralComp { }
+
+ testcase TC_Sem_2601_ExecuteStatement_003() runs on GeneralComp {
+ alt { // this alt is intentionally blocking!
+ [] any port.receive {
+ repeat;
+ }
+ [else]
+ { repeat; }
+ }
+ setverdict(pass);
+ }
+
+ control {
+ execute(TC_Sem_2601_ExecuteStatement_003(), 2.0); // let the testcase timeout after 2 seconds
+ }
+
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: error
+<END_RESULT>
+<RESULT COUNT 1>
+Dynamic test case error: Guard timer has expired. Execution of current test case will be interrupted.
+<END_RESULT>
+
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2601_ExecuteStatement_004 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the verdict none works correctly. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2601_ExecuteStatement_004 Sem_2601_ExecuteStatement_004.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:26.1, Ensure that the verdict none works correctly.
+ ** @verdict pass accept, ttcn3verdict:pass
+ *****************************************************************/
+
+module Sem_2601_ExecuteStatement_004 {
+
+ type component GeneralComp { }
+
+ testcase TC_Sem_2601_ExecuteStatement_004() runs on GeneralComp {
+ setverdict(none);
+ }
+
+ testcase TC_Sem_2601_ExecuteStatement_004_second(verdicttype p_verdict) runs on GeneralComp {
+ if (p_verdict == none) {
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+ control {
+ var verdicttype v_result;
+
+ v_result := execute(TC_Sem_2601_ExecuteStatement_004());
+ execute(TC_Sem_2601_ExecuteStatement_004_second(v_result));
+ }
+
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: none
+<END_RESULT>
+<RESULT IF_PASS POSITIVE>
+Verdict: pass
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2601_ExecuteStatement_006 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the verdict inconc works correctly. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2601_ExecuteStatement_006 Sem_2601_ExecuteStatement_006.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:26.1, Ensure that the verdict inconc works correctly.
+ ** @verdict pass accept, ttcn3verdict:inconc
+ *****************************************************************/
+
+module Sem_2601_ExecuteStatement_006 {
+
+ type component GeneralComp { }
+
+ testcase TC_Sem_2601_ExecuteStatement_006() runs on GeneralComp {
+ setverdict(inconc);
+ }
+
+ testcase TC_Sem_2601_ExecuteStatement_006_second(verdicttype p_verdict) runs on GeneralComp {
+ if (p_verdict == inconc) {
+ setverdict(pass);
+ } else {
+ setverdict(fail);
+ }
+ }
+
+ control {
+ var verdicttype v_result;
+
+ v_result := execute(TC_Sem_2601_ExecuteStatement_006());
+ execute(TC_Sem_2601_ExecuteStatement_006_second(v_result));
+ }
+
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: inconc
+<END_RESULT>
+<RESULT IF_PASS POSITIVE>
+Verdict: pass
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2601_ExecuteStatement_008 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the user error sets the verdict error correctly. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2601_ExecuteStatement_008 Sem_2601_ExecuteStatement_008.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:26.1, Ensure that the user error sets the verdict error correctly.
+ ** @verdict pass accept, ttcn3verdict:error
+ *****************************************************************/
+
+module Sem_2601_ExecuteStatement_008 {
+
+ type component GeneralComp { }
+
+ testcase TC_Sem_2601_ExecuteStatement_008() runs on GeneralComp {
+ testcase.stop("User error!");
+ }
+
+ control {
+ var verdicttype v_result;
+
+ execute(TC_Sem_2601_ExecuteStatement_008());
+ }
+
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: error
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+*---------------------------------------------------------------------*
+:h3. Sem_2602_TheControlPart_003 positive test
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Ensure that the selection of test cases can be achieven based on resulting verdict types. >
+
+<COMPILE>
+<EXECUTE_PARALLEL>
+
+<MODULE TTCN Sem_2602_TheControlPart_003 Sem_2602_TheControlPart_003.ttcn >
+/*****************************************************************
+ ** @version 0.0.1
+ ** @purpose 1:26.2, Ensure that the selection of test cases can be achieven based on resulting verdict types.
+ ** @verdict pass accept, ttcn3verdict:fail
+ *****************************************************************/
+
+module Sem_2602_TheControlPart_003 {
+
+ type component GeneralComp { }
+
+ testcase TC_Sem_2602_TheControlPart_003() runs on GeneralComp {
+ setverdict(pass);
+ }
+
+ testcase TC_Sem_2602_TheControlPart_003_second() runs on GeneralComp {
+ setverdict(fail);
+ }
+
+ control {
+ var verdicttype v_result;
+ v_result := execute(TC_Sem_2602_TheControlPart_003());
+
+ if (v_result == pass) {
+ execute(TC_Sem_2602_TheControlPart_003_second());
+ }
+ }
+
+}
+<END_MODULE>
+
+<RESULT IF_PASS POSITIVE>
+Verdict: pass
+<END_RESULT>
+<RESULT IF_PASS POSITIVE>
+Verdict: fail
+<END_RESULT>
+
+<END_TC>
+:exmp
+
+.*---------------------------------------------------------------------*
+:h1.References
+.*---------------------------------------------------------------------*
+:list.
+:li D='[1]'.1/174 02-CRL 113 200/5 Uen
+:nl.Statement of Compliance for TITAN project
+:li D='[2]'.ETSI ES 201 873-1, v4.7.1 Mockup v1 (2015-06):
+:nl.Testing and Test Control Notation version 3.,
+:nl.Part 1: TTCN-3 Core Language
+:elist.
--- /dev/null
+// README to negative conformance tests
+
+How to run:
+The tests can be started all at once:
+ ./run_test_all
+
+How to run scripts individually:
+ ./SAtester.pl scriptname.script
--- /dev/null
+#!/usr/bin/perl -w
+###############################################################################
+# Copyright (c) 2000-2015 Ericsson Telecom AB
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+###############################################################################
+##
+## File : SAtester.pl
+## Description: Tester utility for Semantic Analyser, TITAN
+## Written by : Endre Szalai (Endre.Szalai@ericsson.com)
+##
+
+## TODO: exit status always 0, investigate why; workaround: catch the notify
+## printout from the compiler
+
+require 5.6.1;
+
+use strict;
+use Getopt::Long;
+
+###############################################################################
+### Global Variables
+###############################################################################
+# Whether to stop on test case failures (1) or not (0)
+my $sa_halt_on_errors = '';
+# Whether to list available test cases or not
+my $sa_list_TCs = 0;
+# Whether to show info or not
+my $sa_info = 0;
+# Whether to use matching in test case selection
+my $sa_tc_select = '';
+# Name of the logfile
+my $sa_logFile = '';
+my $sa_LOG;
+# Elapsed time in this session
+my $sessionTime;
+# Whether to show command line info or not
+my $sa_printHelp_cmd = 0;
+# Whether to show detailed info or not
+my $sa_printHelp_doc = 0;
+# Use function-test runtime or not
+my $sa_titanRuntime2 = 0;
+# Enable coverage or not
+my $sa_coverageEnabled = 0;
+# Files existed before a test case execution
+my %sa_existedFiles;
+# Store input TD files from which TCs are collected
+my @sa_scriptFiles;
+# Store information about the TCs to execute
+my @sa_tcList2Execute;
+# Store test case data
+my @sa_TCInfo;
+# Timeout for system calls in seconds
+my $sa_timeout = 30;
+# Max time to wait for a license, in multiple of 10 minutes
+my $max_cycles = 6;
+# Execution statistics
+# Number of TCs: PASSED, FAILED, ERROR verdicts,
+# abnormally terminated, memory leaked
+my @sa_executionStatistics = (0, 0, 0, 0, 0);
+# Command to invoke the titan compiler
+my $sa_compilerCmd;
+# Command to invoke the titan Makefile generator
+my $sa_mfgenCmd;
+# Command to invoke the runtime execution
+my $sa_runtimeCmd;
+# commonly used regexps
+my $sa_re_TCheader = "\\n\\s*<\\s*TC\\s*-\\s*(.+?)\\s*>\\s*\\n";
+my $sa_re_MODULEheader = "\\n\\s*<\\s*MODULE\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s*>";
+my $sa_re_MODULEbody = "${sa_re_MODULEheader}\\s*(.+?)\\n\\s*<\\s*END_MODULE\\s*>";
+my $sa_re_RESULTheader = "\\n\\s*<\\s*RESULT\\s*(IF_PASS|IF_FAIL)?\\s*(LTRT|FTRT)?\\s*(POSITIVE|NEGATIVE)?\\s*(?:COUNT\\s+(\\d+))?.*?>";
+my $sa_re_RESULTbody = "${sa_re_RESULTheader}\\s*(.*?)\\s*\\n\\s*<\\s*END_RESULT\\s*>";
+my $sa_re_EXPECTEDbody = "\\s*<\\s*VERDICT_LEAF\\s+(PASS|FAIL)\\s*>\\s*";
+my $sa_re_MemoryLeak = "(?:unallocated\\s+blocks\\s*:\\s*)|(?:Memory\\s+leakage\\s+detected)";
+# separator for printouts
+my $sa_separator = "===============================================================\n";
+
+
+# Detailed info about the usage
+my $sa_detailedInfo = '
+Purpose
+-------
+The tester program was written especially for testing the semantic analyser
+functionality in TITAN. A generic test flow looks like:
+- generate input sources (TTCN-3 and/or ASN.1)
+- compile them with the TITAN compiler
+- check that the error messages are as expected (negative testing)
+- check that the modules are compiled both with TITAN and gcc
+ (positive testing)
+Test cases and all information needed to execute them are stored in one file, in
+the Test Description files (*.script) in EDML format. The tester program uses
+this file to execute the test according to the flow described above in a fully
+automatic way..
+Unlike in a simple test method, where a test may be passed or failed, in
+regression test it might be important, why a test case is failed (e.g. due to a
+not yet implemented feature). Therefore, each test case may have two separate
+expected behaviour (called leaves later on). The first is the case when the test
+purpose is expected to work in a specific way (IF_PASS leaf). The other, when
+the test case is expected to fail, but why it fails is also interesting (IF_FAIL
+leaf). Each test case may have both leaves and a specific selector points out
+which leaf is expected to occur. This also means, that a test case passes, if
+the selected leaf is passed (which may be the IF_FAIL leaf). Therefore, the
+tester needs to check test cases that are failed, as only in those cases the
+current result is not as expected.
+
+Features
+--------
+The tester program has the following features:
+1. Support for one-by-one and batched execution of test cases.
+2. Support for unlimited number of input modules: ASN.1,
+TTCN-3 and runtime config files for TITAN.
+3. Support for compilation of the modules using TITAN and
+GCC. It also supports single mode execution of the test suite.
+Makefile and test port files generation is automatic.
+5. Automatic cleanup after each test case.
+6. Flexible pattern matching for the test case printout using
+Perl regexps combined with different matching logic.
+7. Support for regression testing process.
+
+Reference
+---------
+For a list of command line options, execute the tester program with
+SAtester.pl -help
+
+A test case structure in the EDML files looks like:
+test case block:
+ <TC - test case name>
+compile block:
+ [<COMPILE|COMPILEGCC|EXECUTE|EXECUTE_PARALLEL>] (default is COMPILE)
+leaf selector block:
+ <VERDICT_LEAF (PASS|FAIL)>
+module block(s):
+ <MODULE TTCN|ASN|CFG modulename filename>
+ ... text from here is written to the filename specified above ...
+ <END_MODULE>
+ ... several module sections may follow ...
+result block(s):
+ <RESULT IF_PASS|IF_FAIL [POSITIVE|NEGATIVE|COUNT number]> (default is POSITIVE)
+ ... pattern in Perl regexp format ...
+ <END_RESULT>
+ ... several result sections may follow ...
+
+ <END_TC>
+
+Each block header/footer must be single-line, i.e. newline is not allowed.
+
+The compile block instructs the SAtester to:
+ COMPILE compile the modules using TITAN only
+ COMPILEGCC compile the modules using TITAN and GCC afterwards
+ (the Makefile is automatically generated)
+ EXECUTE after compilation, execute the executable test suite
+ the first runtime configuration file is passed to TITAN
+ (single mode execution)
+ EXECUTE_PARALLEL after compilation, execute the executable test suite
+ (parallel mode execution)
+If any of the actions fail, the test case result will be "ERROR". This block is
+optional, the default value is COMPILE.
+
+The leaf selector block helps the regression testing process, where not only the
+verdict itself, but the expected verdict is interesting. The value may be PASS
+or FAIL. The leaf selector selects which RESULT blocks to use when matching the
+printout from the compiler(s).
+
+A module block instructs the SAtester to produce a source module
+or a runtime configuration file:
+ TTCN The module is treated as a TTCN-3 module
+ ASN The module is treated as an ASN.1 module
+ CFG The module is treated as a runtime configuration file
+ modulename Name of the module
+ filename Name of the file to be produced
+The text within this section is written as is to "filename". You may specify as
+many modules as you need.
+
+A result block instructs the SAtester how to check result as soon the actions in
+the compile block is finished successfully.
+Either:
+ POSITIVE Indicates a positive pattern match (i.e. =~ syntax in Perl)
+ with the supplied pattern is needed to continue
+ NEGATIVE Indicates a negative pattern match (i.e. !~ syntax in Perl)
+ with the supplied pattern is needed to continue
+Or:
+ COUNT Indicates that instead of a direct pattern match, perform
+ a counting of the supplied pattern. If the number of pattern-
+ matches equals to the supplied number in COUNT section, the
+ execution continues
+ POSITIVE or NEGATIVE can be used for simple pattern match, i.e. whether the
+ pattern is present or not.
+ COUNT can be used to detect that a pattern how many times are present.
+Result blocks are evaluated in the order of their appearence. If any of the
+result block is failed, the verdict will be "FAILED" and execution continues
+with the next test case (if any). Entries in the result header are optional, the
+default value is "POSITIVE".
+
+Memory leak printouts are automatically detected. If one is found, the current
+verdict will be "FAIL".
+
+Example
+-------
+//line comments are written for understanding only
+
+// Name of the test case
+<TC - TTCN-3::Subtypes, list of values: Anytype>
+// compile with TITAN only
+<COMPILE>
+// "anytype" is not supported, so use the FAIL-leaf
+// in result matching
+<VERDICT_LEAF FAIL>
+// Specify one module
+<MODULE TTCN ModuleA ModuleA.ttcn>
+module ModuleA {
+ type anytype MyType ( 10, 11.0, Nonexi, false );
+}
+<END_MODULE>
+// PASS-leaf of the result matching
+// used if VERDICT_LEAF is "PASS"
+// expecting exactly 1 "no imported or local definition nonexi"
+<RESULT IF_PASS COUNT 1>
+(?im)\berror\b.+?no.+?definition.+?nonexi
+<END_RESULT>
+// expecting exactly 1 "error", so no other error shall
+// occur than the previous error
+<RESULT IF_PASS COUNT 1>
+(?is)\berror\b
+<END_RESULT>
+// expecting a notification that no code is generated due
+// to the error
+<RESULT IF_PASS POSITIVE>
+(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
+<END_RESULT>
+// FAIL-leaf of the result matching
+// used if VERDICT_LEAF is "FAIL"
+// expecting exactly 1 "parse error"
+<RESULT IF_FAIL COUNT 1>
+(?im)parse.+?error
+<END_RESULT>
+// expecting exactly 1 "error", so no other error shall
+// occur than the parse error
+<RESULT IF_FAIL COUNT 1>
+(?is)\berror\b
+<END_RESULT>
+<END_TC>
+
+Information about Perl regular expressions can be found at:
+www.perl.com
+
+Guides
+------
+1. Use the IF_FAIL leaf only, if the test case is expected to fail because of a
+missing functionality that will not be implemented in the current project. Using
+IF_FAIL leaves for limitations that are expected to disappear within a project
+is just an unnecessary overhead.
+
+2. Whenever a TR is issued, this should be mentioned in the test case, within
+the source module where the error occured, e.g.
+<MODULE TTCN ModuleA ModuleA.ttcn>
+module ModuleA {
+ // TR 623: length restriction of charstrings
+ type record of charstring MyType7 length(0..666-Nonexi);
+}
+<END_MODULE>
+
+3. Always expect a specific error message, but be a bit flexible in pattern
+matching. Always check that no other errors occured. E.g.:
+<RESULT IF_PASS COUNT 1>
+(?im)\berror\b.+?no.+?definition.+?nonexi
+<END_RESULT>
+<RESULT IF_PASS COUNT 1>
+(?is)\berror\b
+<END_RESULT>
+<RESULT IF_PASS POSITIVE>
+(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
+<END_RESULT>
+Note the non-case sensitive matching; that only 1 error is expected and that no
+code is expected to be generated.
+
+Known issues
+------------
+On cygwin, fork does not always work and Perl stops with an error like:
+264 [main] perl 2216 fork_copy: linked dll data/bss pass 0 failed,
+0x412000..0x412370, done 0, windows pid 1832, Win32 error 487
+
+';
+
+
+
+
+# easterEgg
+my $sa_egg = '
+ \\\\\\\\|////
+ \\\\ - - //
+ #( @ @ )#
+ \ o /
+ \ * /
+---------------------oOOo--oOOo-------------------------
+ "Do or do not. There is no try." - Yoda
+------------------------ooooO---Ooooo-------------------
+ ( ) ( )
+ \ | | /
+ (_| |_)
+ -- This amazing code was created by McHalls --
+
+';
+
+
+###############################################################################
+## Subs
+###############################################################################
+sub sa_commandLineInfo();
+sub sa_log($);
+sub sa_processArgs($);
+sub sa_processCommandLine();
+sub sa_readFile($);
+sub sa_writeFile($$);
+sub sa_collectTCs();
+sub sa_isInList(\@$);
+sub sa_getTCInfo(\@$$);
+sub sa_parseTCs();
+sub sa_writeModulesOfTC(\@);
+sub sa_deleteModulesOfTC(\@);
+sub sa_fetchExecutableName();
+sub sa_executeCommand($);
+sub sa_compileTC(\@);
+sub sa_printResult($$);
+sub sa_checkTCResult(\@$);
+sub sa_executeTCs();
+
+# Print command line information
+sub sa_commandLineInfo () {
+ sa_log("\nPerl utility to execute test cases for Semantic Analyser\n");
+ sa_log("Contact: Endre Szalai (Endre.Szalai\@ericsson.com)\n");
+ sa_log("Usage: SA_tester.pl\n");
+ sa_log(" [-halt] [-list] [-help] [-doc] [-rt2] [-coverage]\n");
+ sa_log(" [-select <pattern>]\n");
+ sa_log(" [-timeout <timeout>]\n");
+ sa_log(" [<TDfile1.script>] ... [<TDfileN.script>]\n");
+ sa_log(" [\"<test case name1>\"] ... [\"<test case nameM>\"]\n");
+ sa_log(" [-log <logfilename>]\n");
+ sa_log("Where\n");
+ sa_log(" -halt halt on any errors\n");
+ sa_log(" -list list available test cases\n");
+ sa_log(" -help display command line parameters\n");
+ sa_log(" -doc display complete documentation\n");
+ sa_log(" -rt2 use function-test runtime\n");
+ sa_log(" -coverage enable coverage");
+ sa_log(" <pattern> select test cases if pattern is present in the\n");
+ sa_log(" name of the test case\n");
+ sa_log(" <timeout> maximum execution time of a system call\n");
+ sa_log(" in seconds (default is $sa_timeout)\n");
+ sa_log(" <logfilename> name of the logfile\n");
+ sa_log(" NOTE: do NOT use the .log file extension !\n");
+ sa_log(" <TDfile.script> name of the TD file(s) to collect test cases from\n");
+ sa_log(" <test case name> name of the test case(s) to execute\n");
+ sa_log("If no TDfile(s) are defined, all script files from the current\n");
+ sa_log("directory are considered.\n");
+ sa_log("If no test cases are defined, all test cases from the script files\n");
+ sa_log("are executed.\n\n");
+}
+
+# Log entries
+sub sa_log($) {
+ print $_[0];
+ if (defined($sa_LOG)) { print $sa_LOG $_[0]; }
+}
+
+# Process the command line
+sub sa_processArgs($) {
+ if ($_[0] =~ /\.script$/m) { $sa_scriptFiles[scalar @sa_scriptFiles] = $_[0]; }
+ else { $sa_tcList2Execute[scalar @sa_tcList2Execute] = $_[0]; }
+}
+sub sa_processCommandLine() {
+
+ die unless (GetOptions('halt' => \$sa_halt_on_errors,
+ 'list' => \$sa_list_TCs,
+ 'credit' => \$sa_info,
+ 'help' => \$sa_printHelp_cmd,
+ 'doc' => \$sa_printHelp_doc,
+ 'rt2' => \$sa_titanRuntime2,
+ 'coverage' => \$sa_coverageEnabled,
+ 'log=s' => \$sa_logFile,
+ 'timeout=s' => \$sa_timeout,
+ 'select=s' => \$sa_tc_select,
+ 'maxcycle=s'=> \$max_cycles,
+ "<>" => \&sa_processArgs));
+ if ($sa_info) {print $sa_egg; exit(1);}
+ if ($sa_logFile ne '') {
+ die "Never use '.log' extension as TITAN's cleanup may remove it, specify a different name\n"
+ unless ($sa_logFile !~ /.*\.log$/is);
+ open ($sa_LOG, ">$sa_logFile") or die "Cannot open log file: '$sa_logFile': $!\n";}
+ if ($sa_printHelp_cmd) {sa_commandLineInfo(); exit(1);}
+ if ($sa_printHelp_doc) {sa_log ($sa_detailedInfo); exit(1);}
+}
+
+# Read and return the content of a file
+sub sa_readFile($) {
+ # $_[0] : name of the file
+ my $Buffer;
+ sa_log("Parsing file $_[0]...\n");
+ open (TMP, "$_[0]") or die "Cannot open script file: '$_[0]': $!\n";
+ read(TMP, $Buffer, -s "$_[0]");
+ close (TMP);
+ # remove carriage returns
+ # Unix/windows: \n \r combo
+ if ($Buffer =~ /\n/s) {$Buffer =~ s/\r//g;}
+ # Mac: only \r
+ else {$Buffer =~ s/\r/\n/g;}
+ return $Buffer;
+}
+
+# Write a file
+sub sa_writeFile($$) {
+ # $_[0] : name of the file
+ # $_[1] : content of the file
+ sa_log("Flushing file $_[0]...\n");
+ open (TMP, ">$_[0]") or die "Cannot open file: '$_[0]': $!\n";
+ print(TMP $_[1]);
+ close (TMP);
+}
+
+# Checks whether a TC is on the list
+sub sa_isInList(\@$) {
+ my $poi = $_[0];
+ foreach my $val (@{$poi}) {
+ if ($val eq $_[1]) {return 1;}
+ }
+ return 0;
+}
+# Collect test cases from command line and/or script files
+sub sa_collectTCs() {
+ # No script files are defined, collect all script files from
+ # current directory
+ if (scalar @sa_scriptFiles == 0) {
+ my @list = split (/\s/, `ls *.script`);
+ foreach my $filename (@list) { $sa_scriptFiles[scalar @sa_scriptFiles] = $filename; }
+ }
+ # no test cases specified, collect from available script files
+ if (scalar @sa_tcList2Execute == 0) {
+ foreach my $filename (@sa_scriptFiles) {
+ my $Buffer = sa_readFile($filename);
+ while ($Buffer =~ s/^.*?${sa_re_TCheader}//s) {
+ my $tcName = $1;
+ if (sa_isInList(@sa_tcList2Execute,$tcName))
+ {sa_log( "WARNING: Test case name is not unique: '$tcName'\n");}
+ # execute test case if match with pattern or no pattern available
+ if ((not $sa_tc_select) or
+ ($sa_tc_select and ($tcName =~ /$sa_tc_select/))) {
+ $sa_tcList2Execute[scalar @sa_tcList2Execute] = $tcName;
+ }
+ }
+ }
+ }
+ my $sa_nrOfTCs2Execute = scalar @sa_tcList2Execute;
+ my $nrOfScriptFiles = scalar @sa_scriptFiles;
+ sa_log( "$sa_nrOfTCs2Execute test cases from $nrOfScriptFiles script files to be executed\n");
+ my $tmp = ($sa_halt_on_errors) ? "halting on errors\n" : "ignoring errors\n";
+ sa_log( "Mode: $tmp");
+}
+
+
+# Gather execution information according to:
+# [N] Nth test case
+# [0] test case name
+# [1] "COMPILE", "COMPILEGCC" or "EXECUTE"
+# [2][N] Nth module
+# [0] module type ("ASN", "TTCN" or "CFG")
+# [1] module name (if ASN or TTCN)/execution mode (if CFG)
+# [2] filename to use for the module
+# [3] content of the module
+# [3]{'PASS'|'FAIL'}[N] Nth result for expected result leaf PASS|FAIL
+# [0] result type ("POSITIVE" or "NEGATIVE")
+# [1] match expression
+# [2] number of coccurances (if "COUNT" used in RESULT)
+# [4] name of the source script file
+# [5] expected test case result leaf selector (PASS, FAIL)
+# [6] verdict of the TC
+# [7] flag whether memory leak is detected or not (defined/not defined)
+# [8] flag whether abnormal termination is detected or not (defined/not defined)
+sub sa_getTCInfo(\@$$) {
+ my ($poi, $Buffer, $filename) = @_;
+ my $tcidx = scalar @{$poi};
+ if ($Buffer =~ s/${sa_re_TCheader}//s) { $poi->[$tcidx][0] = $1; }
+ else { die "ERROR: Cannot find test case name in current block\n"; }
+ if ($Buffer =~ s/<\s*EXECUTE\s*>//m) { $poi->[$tcidx][1] = 'EXECUTE'; }
+ elsif ($Buffer =~ s/<\s*EXECUTE_PARALLEL\s*>//m) { $poi->[$tcidx][1] = 'EXECUTE_PARALLEL'; }
+ elsif ($Buffer =~ s/<\s*COMPILEGCC\s*>//m) { $poi->[$tcidx][1] = 'COMPILEGCC'; }
+ else { $poi->[$tcidx][1] = 'COMPILE'; }
+ if ($Buffer =~ /${sa_re_EXPECTEDbody}/m) { $poi->[$tcidx][5] = $1; }
+ else { $poi->[$tcidx][5] = 'PASS'; }
+ my $idx = 0;
+ while ($Buffer =~ s/${sa_re_MODULEbody}//s) {
+ $poi->[$tcidx][2][$idx][0] = $1;
+ $poi->[$tcidx][2][$idx][1] = $2;
+ $poi->[$tcidx][2][$idx][2] = $3;
+ $poi->[$tcidx][2][$idx][3] = $4;
+ $idx++;
+ }
+ while ($Buffer =~ s/${sa_re_RESULTbody}//s) {
+ my $expectedVerdict;
+ if (defined($1)) {
+ $expectedVerdict = ($1 eq 'IF_FAIL') ? 'FAIL':'PASS';
+ } else { $expectedVerdict = 'PASS'; }
+ my $idx = (defined($poi->[$tcidx][3]{$expectedVerdict}))
+ ? scalar @{$poi->[$tcidx][3]{$expectedVerdict}} : 0;
+ if (defined($2)) {
+ # Skip matching strings intended for the load-test run-time when
+ # "-rt2" is used. Vice versa.
+ if ($2 eq 'LTRT' and $sa_titanRuntime2
+ or $2 eq 'FTRT' and not $sa_titanRuntime2) { next; }
+ }
+ if (defined($3)) {
+ $poi->[$tcidx][3]{$expectedVerdict}[$idx][0] = ($3 ne '') ? $3 : 'POSITIVE';}
+ else {$poi->[$tcidx][3]{$expectedVerdict}[$idx][0] = 'POSITIVE';}
+ if (defined($4)) { $poi->[$tcidx][3]{$expectedVerdict}[$idx][2] = $4; }
+ $poi->[$tcidx][3]{$expectedVerdict}[$idx][1] = $5;
+ eval { '' =~ /$poi->[$tcidx][3]{$expectedVerdict}[$idx][1]/ };
+ if ($@) {
+ sa_log("In file $filename, test case '$poi->[$tcidx][0]'\n");
+ sa_log " Syntax error in provided pattern:\n $poi->[$tcidx][3]{$expectedVerdict}[$idx][1]\n$@\n";
+ exit(1);
+ }
+ }
+ $poi->[$tcidx][4] = $filename;
+ $poi->[$tcidx][6] = 'NONE';
+}
+# Parse test case data
+sub sa_parseTCs() {
+ # give only a list of the test cases
+ if ($sa_list_TCs) {
+ sa_log( "Collected test cases:\n");
+ my $idx = 1;
+ # collect test case data from all specified script files
+ foreach my $filename (@sa_scriptFiles) {
+ my $Buffer = sa_readFile($filename);
+ while ($Buffer =~ s/^.*?(${sa_re_TCheader}.+?<END_TC>)//s) {
+ sa_getTCInfo(@sa_TCInfo, $1, $filename);
+ }
+ }
+ foreach my $poi (@sa_TCInfo) {
+ sa_log( "$idx. '$poi->[0]' \n");
+ sa_log( " source:$poi->[4]; leaf:$poi->[5]\n");
+ $idx++;
+ }
+ exit(1);
+ }
+ foreach my $filename (@sa_scriptFiles) {
+ my $Buffer = sa_readFile($filename);
+ while ($Buffer =~ s/^.*?(${sa_re_TCheader}.+?<END_TC>)//s) {
+ if (not sa_isInList(@sa_tcList2Execute,$2)) { next; }
+ sa_getTCInfo(@sa_TCInfo, $1, $filename);
+ }
+ }
+}
+
+# Writes the modules of the TC
+sub sa_writeModulesOfTC(\@) {
+ my $root = $_[0];
+ foreach my $poi (@{$root->[2]}) {
+ open(TMP, "> $poi->[2]") or die "Can't create file '$poi->[2]': $!\n";
+ sa_log("Module $poi->[1] (file $poi->[2]):\n");
+ sa_log("$poi->[3]\n");
+ print TMP $poi->[3] . "\n";
+ close (TMP);
+ }
+}
+# Deletes the files(modules) of the TC
+sub sa_deleteModulesOfTC(\@) {
+ my $root = $_[0];
+ sa_log( "Cleanup... ");
+ if (-f 'Makefile') {
+ my $makefile;
+ `make clean 2>&1`;
+ $makefile = sa_readFile('Makefile');
+ while ($makefile =~ s/^(\s*USER_SOURCES\s*=\s*)(\w+\.cc)/$1/im) {
+ if (not exists($sa_existedFiles{$2})) {
+ if (unlink $2) {sa_log( "$2 ");}
+ }
+ }
+ while ($makefile =~ s/^(\s*USER_HEADERS\s*=\s*)(\w+\.hh)/$1/im) {
+ if (not exists($sa_existedFiles{$2})) {
+ if (unlink $2) {sa_log( "$2 ");}
+ }
+ }
+ }
+ if (unlink "Makefile") {sa_log( "Makefile ");}
+ foreach my $poi (@{$root->[2]}) {
+ if (unlink $poi->[2]) {sa_log( "$poi->[2] ");}
+ # remove possible generated code
+ if ($poi->[0] eq 'TTCN') {
+ if (unlink "$poi->[1].cc") {sa_log( "$poi->[1].cc ");}
+ if (unlink "$poi->[1].hh") {sa_log( "$poi->[1].hh ");}
+ } else {
+ my $tmp = $poi->[1];
+ $tmp =~ s/\-/_/g;
+ if (unlink "$tmp.cc") {sa_log( "$tmp.cc ");}
+ if (unlink "$tmp.hh") {sa_log( "$tmp.hh ");}
+ }
+ }
+ sa_log("\n");
+}
+
+# Fetch the executable name from Makefile
+sub sa_fetchExecutableName() {
+ my $makefile = sa_readFile('Makefile');
+ if ($makefile =~ /^\s*EXECUTABLE\s*=\s*(\w+)/im) { return $1; }
+ die "ERROR: Executable name is not found in generated Makefile\n";
+}
+
+# Perform a system call
+# return value: (status, output)
+# status = 0 on success
+# status = 1 on command timeout
+# status = 2 on abnormal termination
+# output: collected printout from the process
+sub sa_executeCommand($) {
+ # Silly Perl does not allow to capture STDERR, only STDOUT.
+ # As a workaround, ask the shell to redirect STDERR to STDOUT.
+ # It's OK until TITAN writes everything to STDERR (as it is today)
+ my $command = "$_[0] 2>&1";
+ my $subRes = "";
+ my $pid;
+ my $exitStatus = 0;
+ sa_log( "$_[0]\n");
+ # run as a separate Perl program to be able to use timeout
+ eval {
+ local $SIG{ALRM} = sub { die "timeout\n" }; # NB: \n required
+ alarm $sa_timeout; # send an alarm signal in specified time
+ # call via exec to be able to catch the exit status
+ # (without exec, the shell always return with 0 exit status)
+ $pid = open(TMP, "exec $command |");
+ die "ERROR: Cannot fork: $!\n" unless ($pid);
+ while (<TMP>) { $subRes .= $_; }
+ close(TMP);
+ $exitStatus = $? & 128; # whether core dump occured
+ alarm 0;
+ };
+ sa_log("$subRes\n");
+ if ($@) { # an error occured (thought, not only at timeout)
+ sa_log("\nSoftly killing forked process $pid\n");
+ kill 1, $pid;
+ sa_log("ERROR: system call '$command' is not finished within $sa_timeout seconds\n");
+ return (1, $subRes);
+ }
+ if ($exitStatus) { # core dump occured
+ sa_log("\nERROR: system call '$command' is terminated abnormally\n");
+ return (2, $subRes);
+ }
+ return (0, $subRes);
+}
+
+# Compile the stuff now
+# return value: (status, output)
+# status = 0 on success
+# status = 1 on ERROR
+# status = 2 on test case FAIL (compiler related ERROR)
+sub sa_compileTC(\@) {
+ my $root = $_[0];
+ my $modules2compile = '';
+ my $configFile = '';
+ my $subRes = '';
+ my $res;
+ my $cycles = 0;
+ foreach my $poi (@{$root->[2]}) {
+ if ($poi->[0] eq "CFG") {$configFile = $poi->[2]; next;}
+ $modules2compile .= " $poi->[2]";
+ }
+ if ($modules2compile eq '') {
+ sa_log( "WARNING: test case '$root->[0]' does not contain any modules, skipping\n");
+ return (1, '');
+ }
+ sa_log( "Compiling sources...\n");
+ my $runtimeOption = '';
+ if ($sa_titanRuntime2) { $runtimeOption = '-R'; }
+ do {
+ if ($cycles) { sleep(60 * 10); }
+ $cycles++;
+ ($res, $subRes) = sa_executeCommand("$sa_compilerCmd $runtimeOption $modules2compile");
+ # Purify message, when no floating license available. Sleep for a while
+ # and retry.
+ # -continue-without-license=yes
+ } while (($subRes =~ /\-continue\-without\-license\=yes/mi) and ($cycles <= $max_cycles));
+ if ($res) { return (2, $subRes); }
+ my $resultBuffer = $subRes;
+ if ($root->[1] eq "COMPILE") { return (0, $resultBuffer); }
+
+ sa_log( "Generating test port skeletons...\n");
+ ($res, $subRes) = sa_executeCommand("$sa_compilerCmd $runtimeOption -t -f $modules2compile");
+ if ($res) { return (1, $subRes); }
+ $resultBuffer .= $subRes;
+
+ sa_log( "Generating Makefile...\n");
+ ($res, $subRes) = sa_executeCommand("$sa_mfgenCmd $runtimeOption -s -f $modules2compile *.cc*");
+ if ($res) { return (1, $subRes); }
+ $resultBuffer .= $subRes;
+ if (not (-e 'Makefile')) {
+ sa_log( "ERROR: Makefile could not be generated\n");
+ sa_log ($subRes);
+ return (1, $subRes);
+ }
+ if ($root->[1] eq "EXECUTE_PARALLEL") {
+ sa_log("Patching Makefile for parallel mode...\n");
+ my $Buffer = sa_readFile('Makefile');
+ $Buffer =~ s/^\s*TTCN3_LIB\s*=\s*(ttcn3\S*)\s*$/TTCN3_LIB = $1-parallel/im;
+ unlink 'Makefile';
+ sa_writeFile('Makefile', $Buffer);
+ }
+ sa_log("Building...\n");
+ my $coverage_args = $sa_coverageEnabled ? "CXXFLAGS=\"-fprofile-arcs -ftest-coverage -g\" LDFLAGS=\"-fprofile-arcs -ftest-coverage -g -lgcov\"" : "";
+ ($res, $subRes) = sa_executeCommand("make " . $coverage_args);
+ if ($res) { return (1, $subRes); }
+ $resultBuffer .= $subRes;
+ my $exeName = sa_fetchExecutableName();
+ if (not (-e $exeName)) {
+ sa_log( "ERROR: GCC compilation error, no executable produced ('$exeName')\n");
+ if ($sa_halt_on_errors) {
+ sa_log( "\nTest execution interrupted (no cleanup).\n\n");
+ exit(1);
+ }
+
+ return (1, $subRes);
+ }
+ if ($root->[1] eq "COMPILEGCC") { return (0, $resultBuffer); }
+
+ # go on with execution
+ sa_log("Fetched executable name: $exeName\n");
+ if ($root->[1] eq "EXECUTE") {
+ sa_log( "Executing in single mode...\n");
+ if ($configFile eq '') {
+ sa_log( "ERROR: No runtime config file is specified in the test case\n");
+ return (1, $subRes);
+ }
+ ($res, $subRes) = sa_executeCommand("./$exeName $configFile");
+ if ($res) { return (1, $subRes); }
+ $resultBuffer .= $subRes;
+ return (0, $resultBuffer);
+ } else {
+ sa_log( "Executing in parallel mode...\n");
+ if ($configFile eq '') {
+ ($res, $subRes) = sa_executeCommand("$sa_runtimeCmd $exeName");
+ } else {
+ ($res, $subRes) = sa_executeCommand("$sa_runtimeCmd $exeName $configFile");
+ }
+ if ($res) { return (1, $subRes); }
+ $resultBuffer .= $subRes;
+ return (0, $resultBuffer);
+ }
+}
+
+
+# Print a test case result
+# $_[0] name of the test case
+# $_[1] verdict
+sub sa_printResult($$) {
+ sa_log( "\nTest case '$_[0]' \n '$_[1]'\n".$sa_separator);
+}
+
+# Check test case result based on RESULT lists
+sub sa_checkTCResult(\@$) {
+ my ($root, $resultBuffer) = @_;
+ my $result = 'PASS';
+ my $expectedResult = $root->[5];
+ if (not defined($root->[3])) {
+ sa_log( "ERROR: No RESULT section in test case '$root->[0]'\n");
+ sa_printResult($root->[0], 'ERROR');
+ $root->[6] = 'ERROR';
+ return;
+ }
+ foreach my $poi (@{$root->[3]{$expectedResult}}) {
+ # match with each result
+ if ($poi->[1] !~ /\S/) {next;}
+ if (($poi->[0] eq 'POSITIVE') and defined($poi->[2])) { # counter match
+ my $counter = 0;
+ my $tmpBuf = $resultBuffer;
+ while ($tmpBuf =~ s/$poi->[1]//) { $counter++; }
+ if ($counter != $poi->[2]) {
+ sa_log( "Failing at counting: pattern '$poi->[1]'\nexpected '$poi->[2]' times, found '$counter' times\n");
+ $result = 'FAIL'; last;
+ } else { sa_log("Passed matching pattern (counting $counter times): '$poi->[1]'\n"); }
+ } else { # simple pattern match
+ if ($poi->[0] eq 'POSITIVE') {
+ if ($resultBuffer !~ /$poi->[1]/si) {
+ sa_log( "Failing at pattern (expected, not found):\n$poi->[1]\n");
+ $result = 'FAIL'; last;
+ } else { sa_log("Passed matching pattern (expected): '$poi->[1]'\n"); }
+ } else { # NEGATIVE
+ if ($resultBuffer =~ /$poi->[1]/si) {
+ sa_log( "Failing at pattern (not expected but found):\n$poi->[1]\n");
+ $result = 'FAIL'; last;
+ } else { sa_log("Passed matching pattern (not expected): '$poi->[1]'\n"); }
+ }
+ }
+ }
+ # Check if there is any memory leak in compiler
+ if ($resultBuffer =~ /${sa_re_MemoryLeak}/mi) {
+ sa_log( "WARNING: Memory leak detected in compiler, setting verdict to 'FAIL'\n");
+ $root->[7] = 'memory leak detected';
+ $result = 'FAIL';
+ }
+ sa_printResult($root->[0], $result);
+ if ($sa_halt_on_errors and ($result ne 'PASS')) {
+ sa_log( "\nTest execution interrupted (no cleanup).\n\n");
+ exit(1);
+ }
+ $root->[6] = $result;
+}
+
+# Execute test cases
+sub sa_executeTCs() {
+ my $flag;
+ # Log general info
+ sa_log($sa_separator);
+ sa_log("Date : " . `date`);
+ sa_log("User : " . `whoami`);
+ if (defined($ENV{HOST})) {
+ sa_log("Host : $ENV{HOST}\n");
+ } else {
+ sa_log("Host : <unknown>\n");
+ }
+ sa_log("Platform : " . `uname -a`);
+ sa_log("g++ : " . `which g++ | grep g++`);
+ sa_log("g++ vers.: " . `g++ -dumpversion`);
+ if (defined($ENV{TTCN3_DIR})) {
+ sa_log( "compiler : $sa_compilerCmd\n");
+ sa_log( "TTCN3_DIR: $ENV{TTCN3_DIR}\n");
+ } else {
+ sa_log( "compiler : " . `which compiler | grep compiler`);
+ sa_log( "TTCN3_DIR: <undefined>\n");
+ }
+ sa_log("Location : $ENV{PWD}\n");
+ sa_log( `$sa_compilerCmd -v 2>&1` . "\n");
+ my $sa_nrOfTCs2Execute = scalar @sa_tcList2Execute;
+ my $sa_nrOfTCs2Executed = 1;
+ # test case execution
+ foreach my $poi (@sa_TCInfo) {
+ sa_log ("\n\n$sa_separator Executing test case: '$poi->[0]'\n");
+ sa_log (" leaf: $poi->[5] ; mode: $poi->[1] ; source: $poi->[4] ;");
+ sa_log (" index: $sa_nrOfTCs2Executed of $sa_nrOfTCs2Execute\n$sa_separator");
+ opendir(DIR, '.') || die "can't opendir '.': $!";
+ foreach my $f (readdir(DIR)) { $sa_existedFiles{$f} = $f; }
+ closedir DIR;
+ sa_writeModulesOfTC(@{$poi});
+ my ($res, $resultBuffer) = sa_compileTC(@{$poi});
+ if ($res == 1) { # error
+ sa_printResult($poi->[0], 'ERROR');
+ $poi->[6] = 'ERROR';
+ next;
+ } elsif ($res == 2) { # compiler hanged or terminated abnormally
+ sa_printResult($poi->[0], 'FAIL');
+ $poi->[6] = 'FAIL';
+ $poi->[8] = 'hanged or abnormal termination';
+ next;
+ }
+ # Check result now
+ sa_checkTCResult(@{$poi}, $resultBuffer);
+ sa_deleteModulesOfTC(@{$poi});
+ $sa_nrOfTCs2Executed++;
+ }
+
+ sa_log("\n\n$sa_separator");
+
+ $flag = 0;
+ sa_log("The following test cases passed:\n");
+ sa_log("================================\n");
+ foreach my $poi (@sa_TCInfo) {
+ if ($poi->[6] eq 'PASS') {
+ sa_log(" [$poi->[4]]: '$poi->[0]' \n");
+ $sa_executionStatistics[0]++;
+ $flag = 1;
+ }
+ }
+ if (not $flag) { sa_log(" None.\n"); }
+
+ $flag = 0;
+ sa_log("The following test cases failed:\n");
+ sa_log("================================\n");
+ foreach my $poi (@sa_TCInfo) {
+ if ($poi->[6] eq 'FAIL') {
+ sa_log(" [$poi->[4]]: '$poi->[0]' \n");
+ $sa_executionStatistics[1]++;
+ $flag = 1;
+ }
+ }
+ if (not $flag) { sa_log(" None.\n"); }
+
+ $flag = 0;
+ sa_log("The following test cases are inconclusive:\n");
+ sa_log("==========================================\n");
+ foreach my $poi (@sa_TCInfo) {
+ if ($poi->[6] eq 'ERROR') {
+ sa_log(" [$poi->[4]]: '$poi->[0]' \n");
+ $sa_executionStatistics[2]++;
+ $flag = 1;
+ }
+ }
+ if (not $flag) { sa_log(" None.\n"); }
+
+ $flag = 0;
+ sa_log("\nMemory leak detected in the following test cases:\n");
+ foreach my $poi (@sa_TCInfo) {
+ if (defined($poi->[7])) {
+ sa_log(" [$poi->[4]]: '$poi->[0]' \n");
+ $sa_executionStatistics[4]++;
+ $flag = 1;
+ }
+ }
+ if (not $flag) { sa_log(" None.\n"); }
+
+ $flag = 0;
+ sa_log("\nAbnormal termination occured during the following test cases:\n");
+ foreach my $poi (@sa_TCInfo) {
+ if (defined($poi->[8])) {
+ sa_log(" [$poi->[4]]: '$poi->[0]' \n");
+ $sa_executionStatistics[3]++;
+ $flag = 1;
+ }
+ }
+ if (not $flag) { sa_log(" None.\n"); }
+
+ my $sa_nrOfTCs2Execute = scalar @sa_tcList2Execute;
+ my $nrOfScriptFiles = scalar @sa_scriptFiles;
+ sa_log("\n\n$sa_separator");
+ sa_log("$sa_nrOfTCs2Execute test cases from $nrOfScriptFiles script files were executed\n");
+ sa_log("Total number of executed test cases: $sa_nrOfTCs2Execute\n");
+ sa_log(" PASSED test cases: $sa_executionStatistics[0]\n");
+ sa_log(" FAILED test cases: $sa_executionStatistics[1]\n");
+ sa_log(" INCONCLUSIVE test cases: $sa_executionStatistics[2]\n");
+ sa_log(" Abnormally terminated test cases: $sa_executionStatistics[3]\n");
+ sa_log(" Memory leaked test cases: $sa_executionStatistics[4]\n");
+ if ($sa_nrOfTCs2Execute != $sa_executionStatistics[0] + $sa_executionStatistics[1] +
+ $sa_executionStatistics[2]) { sa_log( "INTERNAL ERROR: Statistics mismatch\n"); }
+
+ if (defined($sa_LOG)) {sa_log("Session saved to log file '$sa_logFile'\n");}
+ return ($sa_nrOfTCs2Execute==$sa_executionStatistics[0]);
+}
+
+###############################################################################
+## M A I N
+###############################################################################
+
+$sessionTime = time();
+$sa_compilerCmd = (defined $ENV{TTCN3_DIR}) ?
+ "$ENV{TTCN3_DIR}/bin/compiler" : 'compiler';
+$sa_mfgenCmd = (defined $ENV{TTCN3_DIR}) ?
+ "$ENV{TTCN3_DIR}/bin/ttcn3_makefilegen" : 'ttcn3_makefilegen';
+$sa_runtimeCmd = (defined $ENV{TTCN3_DIR}) ?
+ "$ENV{TTCN3_DIR}/bin/ttcn3_start" : 'ttcn3_start';
+sa_processCommandLine();
+sa_collectTCs();
+sa_parseTCs();
+my $isAllPassed = sa_executeTCs();
+$sessionTime = time() - $sessionTime;
+sa_log("Elapsed time in this session: $sessionTime seconds\n");
+if (defined($sa_LOG)) { close $sa_LOG; }
+exit($isAllPassed?0:1);
--- /dev/null
+module Temp {
+}
--- /dev/null
+#!/bin/bash
+
+SCRIPTFLAGS=
+while [ $# -gt 0 ]; do
+case $1 in
+"-coverage") SCRIPTFLAGS+=" -coverage"; shift 1 ;;
+"-rt2") SCRIPTFLAGS=" -rt2"; shift 1 ;;
+*) echo "Usage: $0 [-rt2] [-coverage]"; exit 1 ;;
+esac
+done
+
+echo "Batch execution of SA tests: creating 1 report for each script file"
+echo "You must have a symlink in this directory named perl and pointing to perl 5.6.0 or higher"
+
+echo "./perl ../Tools/SAtester.pl $SCRIPTFLAGS -log SA_log.report *.script"
+./perl ../../function_test/Tools/SAtester.pl $SCRIPTFLAGS -log SA_log.report *.script