/**
 *  Copyright Notification
 *  No part of this document may be reproduced, in an electronic retrieval system or otherwise, except as authorized by written permission.
 *  The copyright and the foregoing restriction extend to reproduction in all media.
 *  © 2016, oneM2M Partners Type 1 (ARIB, ATIS, CCSA, ETSI, TIA, TSDSI, TTA, TTC).
 *  All rights reserved.
 *  
 *  @author     ETSI
 *  @version    $URL: https://oldforge.etsi.org/svn/oneM2M/branches/Release1/ttcn/OneM2M_Testcases.ttcn $
 *              $Id: OneM2M_Testcases.ttcn 347 2017-08-11 08:48:20Z reinaortega $
 *  @desc       Module containing test cases for oneM2M
 *
 */
module OneM2M_Testcases_AE_Release_1 {

	import from OneM2M_TestSystem all;
	import from OneM2M_Templates all;
	import from OneM2M_Types all;//{type XSD.ID};
	import from OneM2M_TypesAndValues all;
	import from OneM2M_Pixits all;
	import from LibCommon_Time all;
	import from OneM2M_Pics all;
	import from OneM2M_Functions all;
	import from OneM2M_PermutationFunctions all;
	import from XSD all;

	group AE {
		
		group General {
			
			group Create {
						
				group g_AE_GEN_CRE_001 {
							
					/**
					 * @desc  Check that the IUT sends the creation of a <container> resource using unstructured resource identifier
					 */
		
					testcase TC_AE_GEN_CRE_001_CSR() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
												
						// Test control
						if(not(PICS_PRIMITIVE_SCOPE_CSE_RELATIVE)) {
							setverdict(inconc, __SCOPE__, ": Unstructured-CSE-Relative-Resource-ID format support is required to run this test case");
							stop;
						}
						
						v_cse1.start(f_AE_GEN_CRE_001(e_cseRelative));
						v_cse1.done;
					}
					
					testcase TC_AE_GEN_CRE_001_SPR() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
												
						// Test control
						if(not(PICS_PRIMITIVE_SCOPE_SP_RELATIVE)) {
							setverdict(inconc, __SCOPE__, ": Unstructured-SP-Relative-Resource-ID format support is required to run this test case");
							stop;
						}
						
						v_cse1.start(f_AE_GEN_CRE_001(e_spRelative));
						v_cse1.done;
					}
					
					testcase TC_AE_GEN_CRE_001_ABS() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						// Test control
						if(not(PICS_PRIMITIVE_SCOPE_ABSOLUTE)) {
							setverdict(inconc, __SCOPE__, ": Unstructured-Absolute-Resource-ID format support is required to run this test case");
							stop;
						}
						v_cse1.start(f_AE_GEN_CRE_001(e_absolute));
						v_cse1.done;
					}
					
				}//end group g_AE_GEN_CRE_002
						
				group g_AE_GEN_CRE_002 {
							
					/**
					 * @desc  Check that the IUT sends the creation of a <container> resource using structured resource identifier
					 */

					testcase TC_AE_GEN_CRE_002_CSR() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						if(not(PICS_PRIMITIVE_SCOPE_CSE_RELATIVE)) {
							setverdict(inconc, __SCOPE__, ": Structured-CSE-Relative-Resource-ID format support is required to run this test case");
							stop;
						}
						
						v_cse1.start(f_AE_GEN_CRE_002(e_cseRelative));
						v_cse1.done;
					}

					testcase TC_AE_GEN_CRE_002_SPR() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						if(not(PICS_PRIMITIVE_SCOPE_SP_RELATIVE)) {
							setverdict(inconc, __SCOPE__, ": Structured-SP-Relative-Resource-ID format support is required to run this test case");
							stop;
						}
						
						v_cse1.start(f_AE_GEN_CRE_002(e_spRelative));
						v_cse1.done;
					}

					testcase TC_AE_GEN_CRE_002_ABS() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						if(not(PICS_PRIMITIVE_SCOPE_ABSOLUTE)) {
							setverdict(inconc, __SCOPE__, ": Structured-Absolute-Resource-ID format support is required to run this test case");
							stop;
						}
						
						v_cse1.start(f_AE_GEN_CRE_002(e_absolute));
						v_cse1.done;
					}

				} //end group g_AE_GEN_CRE_002
				
			} //end group Create
			
			group Update {
						
				group g_AE_GEN_UPD_001 {
							
					/**
					 * @desc  Check that the IUT sends the update of a <container>  resource using unstructured resource identifier
					 */
		
					testcase TC_AE_GEN_UPD_001_CSR() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						// Test control
						if(not(PICS_PRIMITIVE_SCOPE_CSE_RELATIVE)) {
							setverdict(inconc, __SCOPE__, ": Unstructured-CSE-Relative-Resource-ID format support is required to run this test case");
							stop;
						}
						
						v_cse1.start(f_AE_GEN_UPD_001(e_cseRelative));
						v_cse1.done;
					}
					
					testcase TC_AE_GEN_UPD_001_SPR() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
					//Test control
					if(not(PICS_PRIMITIVE_SCOPE_SP_RELATIVE)) {
						setverdict(inconc, __SCOPE__, ": Unstructured-SP-Relative-Resource-ID format support is required to run this test case");
						stop;
					}
						
						v_cse1.start(f_AE_GEN_UPD_001(e_spRelative));
						v_cse1.done;
					}
					
					testcase TC_AE_GEN_UPD_001_ABS() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						//Test control
						if(not(PICS_PRIMITIVE_SCOPE_ABSOLUTE)) {
							setverdict(inconc, __SCOPE__, ": Unstructured-Absolute-Resource-ID format support is required to run this test case");
							stop;
						}
						
						v_cse1.start(f_AE_GEN_UPD_001(e_absolute));
						v_cse1.done;
					}
					
				}//end group g_AE_GEN_UPD_001
					
				group g_AE_GEN_UPD_002 {
							
					/**
					 * @desc  Check that the IUT sends the update of a <container>  resource using structured resource identifier
					 */

					testcase TC_AE_GEN_UPD_002_CSR() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						//Test control
						if(not(PICS_PRIMITIVE_SCOPE_CSE_RELATIVE)) {
							setverdict(inconc, __SCOPE__, ": Structured-CSE-Relative-Resource-ID format support is required to run this test case");
							stop;
						}
						
						v_cse1.start(f_AE_GEN_UPD_002(e_cseRelative));
						v_cse1.done;
					}

					testcase TC_AE_GEN_UPD_002_SPR() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						//Test control
						if(not(PICS_PRIMITIVE_SCOPE_SP_RELATIVE)) {
							setverdict(inconc, __SCOPE__, ": Structured-SP-Relative-Resource-ID format support is required to run this test case");
							stop;
						}
						
						v_cse1.start(f_AE_GEN_UPD_002(e_spRelative));
						v_cse1.done;
					}

					testcase TC_AE_GEN_UPD_002_ABS() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						//Test control
						if(not(PICS_PRIMITIVE_SCOPE_ABSOLUTE)) {
							setverdict(inconc, __SCOPE__, ": Structured-Absolute-Resource-ID format support is required to run this test case");
							stop;
						}
						
						v_cse1.start(f_AE_GEN_UPD_002(e_absolute));
						v_cse1.done;
					}

				} //end group g_AE_GEN_UPD_002
				
			} //end group Update
			
			group Retrieve {
						
				group g_AE_GEN_RET_001 {
				
					/**
					 * @desc  Check that the IUT sends the retrieval of a <container>  resource using unstructured resource identifier
					 */

					testcase TC_AE_GEN_RET_001_CSR() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						// Test control
						if(not(PICS_PRIMITIVE_SCOPE_CSE_RELATIVE)) {
							setverdict(inconc, __SCOPE__, ": Unstructured-CSE-Relative-Resource-ID format support is required to run this test case");
							stop;
						}
						
						v_cse1.start(f_AE_GEN_RET_001(e_cseRelative));
						v_cse1.done;
					}
		
					testcase TC_AE_GEN_RET_001_SPR() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						//Test control
						if(not(PICS_PRIMITIVE_SCOPE_SP_RELATIVE)) {
							setverdict(inconc, __SCOPE__, ": Unstructured-SP-Relative-Resource-ID format support is required to run this test case");
							stop;
						}
						
						v_cse1.start(f_AE_GEN_RET_001(e_spRelative));
						v_cse1.done;
					}
		
					testcase TC_AE_GEN_RET_001_ABS() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						//Test control
						if(not(PICS_PRIMITIVE_SCOPE_ABSOLUTE)) {
							setverdict(inconc, __SCOPE__, ": Unstructured-Absolute-Resource-ID format support is required to run this test case");
							stop;
						}
						
						v_cse1.start(f_AE_GEN_RET_001(e_absolute));
						v_cse1.done;
					}
		
				}//end group g_AE_GEN_RET_001
		
				group g_AE_GEN_RET_002 {
				
					/**
					 * @desc  Check that the IUT sends the retrieval of a <container>  resource using structured resource identifier
					 */

					testcase TC_AE_GEN_RET_002_CSR() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						//Test control
						if(not(PICS_PRIMITIVE_SCOPE_CSE_RELATIVE)) {
							setverdict(inconc, __SCOPE__, ": Structured-CSE-Relative-Resource-ID format support is required to run this test case");
							stop;
						}
						
						v_cse1.start(f_AE_GEN_RET_002(e_cseRelative));
						v_cse1.done;
					}

					testcase TC_AE_GEN_RET_002_SPR() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						//Test control
						if(not(PICS_PRIMITIVE_SCOPE_SP_RELATIVE)) {
							setverdict(inconc, __SCOPE__, ": Structured-SP-Relative-Resource-ID format support is required to run this test case");
							stop;
						}
						
						v_cse1.start(f_AE_GEN_RET_002(e_spRelative));
						v_cse1.done;
					}

					testcase TC_AE_GEN_RET_002_ABS() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						//Test control
						if(not(PICS_PRIMITIVE_SCOPE_ABSOLUTE)) {
							setverdict(inconc, __SCOPE__, ": Structured-Absolute-Resource-ID format support is required to run this test case");
							stop;
						}
						
						v_cse1.start(f_AE_GEN_RET_002(e_absolute));
						v_cse1.done;
					}

				} //end group g_AE_GEN_RET_002
	
			} //end group Retrieve
						
			group Delete {
						
				group g_AE_GEN_DEL_001 {
				
					/**
					 * @desc  Check that the IUT sends the deletion of a <container>  resource using unstructured resource identifier
					 */

					testcase TC_AE_GEN_DEL_001_CSR() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						//Test control
						if(not(PICS_PRIMITIVE_SCOPE_CSE_RELATIVE)) {
							setverdict(inconc, __SCOPE__, ": Unstructured-CSE-Relative-Resource-ID format support is required to run this test case");
							stop;
						}
						
						v_cse1.start(f_AE_GEN_DEL_001(e_cseRelative));
						v_cse1.done;
					}
		
					testcase TC_AE_GEN_DEL_001_SPR() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						//Test control
						if(not(PICS_PRIMITIVE_SCOPE_SP_RELATIVE)) {
							setverdict(inconc, __SCOPE__, ": Unstructured-SP-Relative-Resource-ID format support is required to run this test case");
							stop;
						}
						
						v_cse1.start(f_AE_GEN_DEL_001(e_spRelative));
						v_cse1.done;
					}
		
					testcase TC_AE_GEN_DEL_001_ABS() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						//Test control
						if(not(PICS_PRIMITIVE_SCOPE_ABSOLUTE)) {
							setverdict(inconc, __SCOPE__, ": Unstructured-Absolute-Resource-ID format support is required to run this test case");
							stop;
						}
						
						v_cse1.start(f_AE_GEN_DEL_001(e_absolute));
						v_cse1.done;
					}
		
				}//end group g_AE_GEN_DEL_001
		
				group g_AE_GEN_DEL_002 {
				
					/**
					 * @desc  Check that the IUT sends the deletion of a <container>  resource using structured resource identifier
					 */

					testcase TC_AE_GEN_DEL_002_CSR() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						//Test control
						if(not(PICS_PRIMITIVE_SCOPE_CSE_RELATIVE)) {
							setverdict(inconc, __SCOPE__, ": Structured-CSE-Relative-Resource-ID format support is required to run this test case");
							stop;
						}
						
						v_cse1.start(f_AE_GEN_DEL_002(e_cseRelative));
						v_cse1.done;
					}

					testcase TC_AE_GEN_DEL_002_SPR() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						//Test control
						if(not(PICS_PRIMITIVE_SCOPE_SP_RELATIVE)) {
							setverdict(inconc, __SCOPE__, ": Structured-SP-Relative-Resource-ID format support is required to run this test case");
							stop;
						}
						
						v_cse1.start(f_AE_GEN_DEL_002(e_spRelative));
						v_cse1.done;
					}

					testcase TC_AE_GEN_DEL_002_ABS() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						//Test control
						if(not(PICS_PRIMITIVE_SCOPE_ABSOLUTE)) {
							setverdict(inconc, __SCOPE__, ": Structured-Absolute-Resource-ID format support is required to run this test case");
							stop;
						}
						
						v_cse1.start(f_AE_GEN_DEL_002(e_absolute));
						v_cse1.done;
					}

				} //end group g_AE_GEN_DEL_002
	
			} //end group Delete
			
		}//end group General

		group Registration {
			
			group Create {
						
				/**
				 * @desc  Check that the IUT sends an AE initial registration request with no AE-ID-STEM provided when it is started
				 */

				testcase TC_AE_REG_CRE_001() runs on Tester system AeSystem {
						
					var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
					
					v_cse1.start(f_AE_REG_CRE_001());
					
					v_cse1.done;
				}
					
				function f_AE_REG_CRE_001() runs on CseSimu {

					//primitives for utPort
					var template UtTriggerPrimitive v_utRequest := m_utCreateAe;
					

					//primitives for mcaPortIn
					var MsgIn v_request;
					var template RequestPrimitive v_requestPrimitive := mw_createAe;
					var ResponsePrimitive v_responsePrimitive;
					var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid AE CREATE Registration Request";

					f_cf03Up();
				
					//Send Trigger Message
					v_utRequest.requestPrimitive.to_ := f_getLocalResourceAddress(-, -, -);
					v_requestPrimitive.to_ := v_utRequest.requestPrimitive.to_;
					f_sendUtPrimitive(v_utRequest, v_action);

					//Test behavior
					tc_ac.start;
					alt{
						[] mcaPortIn.receive(mw_request(v_requestPrimitive)) -> value v_request {
							tc_ac.stop;
							setverdict(pass, __SCOPE__, " : AE registration request is accepted!!");
							//v_responsePrimitive := valueof(m_responsePrimitiveTemp(int2000, omit));
							v_responsePrimitive := valueof(m_responsePrimitive(int2001, v_request.primitive.requestPrimitive.requestIdentifier, omit));
							
							//send back responsePrimitive
							mcaPortIn.send(m_response(v_responsePrimitive));
						}
						[] mcaPortIn.receive(mw_request(mw_createAe(*,?,m_contentCreateAe_Invalid))) -> value v_request {
							tc_ac.stop;
							setverdict(fail, __SCOPE__, " : AE registration request is rejected due to not including mandatory attributes!!");
						}
						[] tc_ac.timeout{
							setverdict(fail, __SCOPE__, " : Timeout due to no response received from requested SUT!");
						}
	
					}
	
					// Postamble
					f_cf03Down();
				}
				
				/**
				 * @desc  Check that the IUT sends a registration CREATE Request with the value of the attribute ATTRIBUTE_NAME  of the AE resource
				 */
				
				group g_AE_REG_CRE_002 {
				
					testcase TC_AE_REG_CRE_002_RN() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						//primitives for utPort
						var template UtTriggerPrimitive v_utRequest := m_utCreateAe;
						var template RequestPrimitive v_createAe := mw_createAe;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid AE CREATE Registration Request containing attribute ResourceName";
						v_utRequest.requestPrimitive.primitiveContent.aE.resourceName := "UNINITIALIZED";
						v_createAe.primitiveContent.aE.resourceName := complement("UNINITIALIZED");
						v_cse1.start(f_AE_REG_CRE_002(v_utRequest,v_createAe,v_action));
						v_cse1.done;
					}
	
					testcase TC_AE_REG_CRE_002_ET() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						//primitives for utPort
						var template UtTriggerPrimitive v_utRequest := m_utCreateAe;
						var template RequestPrimitive v_createAe := mw_createAe;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid AE CREATE Registration Request containing attribute ExpirationTime";
						v_utRequest.requestPrimitive.primitiveContent.aE.expirationTime := "20301231T012345";
						v_utRequest.forcedFields := {{name := "expirationTime", value_ := "UNINITIALIZED"}};
						v_createAe.primitiveContent.aE.expirationTime := ?;//Check value other than "UNINITIALIZED", done by typing
						v_cse1.start(f_AE_REG_CRE_002(v_utRequest,v_createAe,v_action));
						v_cse1.done;
					}
	
					testcase TC_AE_REG_CRE_002_LBL() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						//primitives for utPort
						var template UtTriggerPrimitive v_utRequest := m_utCreateAe;
						var template RequestPrimitive v_createAe := mw_createAe;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid AE CREATE Registration Request containing attribute Labels";
						v_utRequest.requestPrimitive.primitiveContent.aE.labels := {"UNINITIALIZED"};
						v_createAe.primitiveContent.aE.labels := complement({*,"UNINITIALIZED",*});
						v_cse1.start(f_AE_REG_CRE_002(v_utRequest,v_createAe,v_action));
						v_cse1.done;
					}
	
					testcase TC_AE_REG_CRE_002_APN() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						//primitives for utPort
						var template UtTriggerPrimitive v_utRequest := m_utCreateAe;
						var template RequestPrimitive v_createAe := mw_createAe;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid AE CREATE Registration Request containing attribute AppName";
						v_utRequest.requestPrimitive.primitiveContent.aE.appName := "UNINITIALIZED";
						v_createAe.primitiveContent.aE.appName := complement("UNINITIALIZED");
						v_cse1.start(f_AE_REG_CRE_002(v_utRequest,v_createAe,v_action));
						v_cse1.done;
					}
	
					testcase TC_AE_REG_CRE_002_API() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						//primitives for utPort
						var template UtTriggerPrimitive v_utRequest := m_utCreateAe;
						var template RequestPrimitive v_createAe := mw_createAe;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid AE CREATE Registration Request containing attribute AppID";
						v_utRequest.requestPrimitive.primitiveContent.aE.app_ID := "UNINITIALIZED";
						v_createAe.primitiveContent.aE.app_ID := complement("UNINITIALIZED");
						v_cse1.start(f_AE_REG_CRE_002(v_utRequest,v_createAe,v_action));
						v_cse1.done;
					}
	
					testcase TC_AE_REG_CRE_002_POA() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						//primitives for utPort
						var template UtTriggerPrimitive v_utRequest := m_utCreateAe;
						var template RequestPrimitive v_createAe := mw_createAe;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid AE CREATE Registration Request containing attribute PointOfAccess";
						v_utRequest.requestPrimitive.primitiveContent.aE.pointOfAccess := {"UNINITIALIZED"};
						v_createAe.primitiveContent.aE.pointOfAccess := complement({*,"UNINITIALIZED",*});
						v_cse1.start(f_AE_REG_CRE_002(v_utRequest,v_createAe,v_action));
						v_cse1.done;
					}
	
					testcase TC_AE_REG_CRE_002_OR() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						//primitives for utPort
						var template UtTriggerPrimitive v_utRequest := m_utCreateAe;
						var template RequestPrimitive v_createAe := mw_createAe;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid AE CREATE Registration Request containing attribute OntologyRef";
						v_utRequest.requestPrimitive.primitiveContent.aE.ontologyRef := "UNINITIALIZED";
						v_createAe.primitiveContent.aE.ontologyRef := complement("UNINITIALIZED");
						v_cse1.start(f_AE_REG_CRE_002(v_utRequest,v_createAe,v_action));
						v_cse1.done;
					}
	
					testcase TC_AE_REG_CRE_002_NL() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						//primitives for utPort
						var template UtTriggerPrimitive v_utRequest := m_utCreateAe;
						var template RequestPrimitive v_createAe := mw_createAe;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid AE CREATE Registration Request containing attribute NodeLink";
						v_utRequest.requestPrimitive.primitiveContent.aE.nodeLink := "UNINITIALIZED";
						v_createAe.primitiveContent.aE.nodeLink := complement("UNINITIALIZED");
						v_cse1.start(f_AE_REG_CRE_002(v_utRequest,v_createAe,v_action));
						v_cse1.done;
					}
	
					testcase TC_AE_REG_CRE_002_RR() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						//primitives for utPort
						var template UtTriggerPrimitive v_utRequest := m_utCreateAe;
						var template RequestPrimitive v_createAe := mw_createAe;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid AE CREATE Registration Request containing attribute RequestReachability";
						v_utRequest.requestPrimitive.primitiveContent.aE.requestReachability := true;
						v_utRequest.forcedFields := {{name := "requestReachability", value_ := "UNINITIALIZED"}};
						v_createAe.primitiveContent.aE.requestReachability := ?;//Check value other than UNINITIALIZED, done by typing
						v_cse1.start(f_AE_REG_CRE_002(v_utRequest,v_createAe,v_action));
						v_cse1.done;
					}
	
					testcase TC_AE_REG_CRE_002_CSZ() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						//primitives for utPort
						var template UtTriggerPrimitive v_utRequest := m_utCreateAe;
						var template RequestPrimitive v_createAe := mw_createAe;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid AE CREATE Registration Request containing attribute ContentSerialization";
						v_utRequest.requestPrimitive.primitiveContent.aE.contentSerialization := {applicationxml};
						v_utRequest.forcedFields := {{name := "contentSerialization", value_ := "UNINITIALIZED"}};
						v_createAe.primitiveContent.aE.contentSerialization := ?;//Check value other than UNINITIALIZED, done by typing
						v_cse1.start(f_AE_REG_CRE_002(v_utRequest,v_createAe,v_action));
						v_cse1.done;
					}
	
				}//End of subgroup AE_REG_CRE_002
				
			} // End of subgroup Create
			
			group Delete {
			
			/**
				 * @desc Check that the IUT sends AE deregistration request to CSE
				 */
	
				testcase TC_AE_REG_DEL_001() runs on Tester system AeSystem {
						
					var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
					
					v_cse1.start(f_AE_REG_DEL_001());
					
					v_cse1.done;
					
				}
					
				function f_AE_REG_DEL_001() runs on CseSimu {
	
					//variables
					var MsgIn v_request;
					var ResponsePrimitive v_responsePrimitive;
					var PrimitiveContent v_localResource;
					var integer v_auxInteger := -1;
					var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid AE DELETE Registration Request";
					
					//primitives for utPort
					var template UtTriggerPrimitive v_utRequest := m_utDelete;
	
					f_cf03Up();
	
					v_localResource := f_ae_generateLocalResource(valueof(m_primitiveContentAe(m_contentCreateAe(omit, -, -, omit))), vc_cSEBaseIndex, int2);
					v_auxInteger := f_setLocalResource(v_localResource, int2, vc_cSEBaseIndex);
					v_utRequest.requestPrimitive.to_ := f_getLocalResourceAddress(v_auxInteger, -, -);
					f_sendUtPrimitive(v_utRequest,v_action);
	
					//Test behavior
					tc_ac.start;
					alt{
						[] mcaPortIn.receive(mw_request(mw_delete(v_utRequest.requestPrimitive.to_))) -> value v_request {
							tc_ac.stop;
							setverdict(pass, __SCOPE__, " : AE deregistration request is accepted!");
	
							//v_responsePrimitive := valueof(m_responsePrimitiveTemp(int2000, omit));
							v_responsePrimitive := valueof(m_responsePrimitive(int2001, v_request.primitive.requestPrimitive.requestIdentifier, omit));
	
							//send back responsePrimitive
							mcaPortIn.send(m_response(v_responsePrimitive));
						}
						[] mcaPortIn.receive {
							tc_ac.stop;
							setverdict(fail, __SCOPE__, " : Error while AE deregistration");
						}
						[] tc_ac.timeout{
							setverdict(fail, __SCOPE__, " : Timeout due to no response received from requested SUT!");
						}
	
					}
					// Postamble
					f_cf03Down();
				}
			
			}// End Delete subgroup

		}//end Registration subgroup

		group Data_Management_and_Repository {
			
			group Create {
			
				/**
				 * @desc Check that the IUT sends a Container creation request when it is triggered
				 */
			
				testcase TC_AE_DMR_CRE_001() runs on Tester system AeSystem {
						
					var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
					
					v_cse1.start(f_AE_DMR_CRE_001());
					
					v_cse1.done;
				}

				function f_AE_DMR_CRE_001() runs on CseSimu {
	
					//variables
					var template UtTriggerPrimitive v_utRequest := m_utCreateContainer;
					var MsgIn v_request;
					var template RequestPrimitive v_requestPrimitive := mw_createContainer;
					var ResponsePrimitive v_responsePrimitive;
					var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid CREATE Request for container";
					
					f_cf03Up();
	
					//send triggering primitive to SUT
					v_utRequest.requestPrimitive.to_ := f_getLocalResourceAddress(-, -, -);
					v_requestPrimitive.to_ := v_utRequest.requestPrimitive.to_;
					f_sendUtPrimitive(v_utRequest,v_action);
					
					//Test behavior
					tc_ac.start;
					alt{
						[] mcaPortIn.receive(mw_request(v_requestPrimitive)) -> value v_request {
							tc_ac.stop;
							setverdict(pass, __SCOPE__, " : Container creation request is accepted!");
	
							//set responseStatusCode back to SUT
							v_responsePrimitive := valueof(m_responsePrimitive(int2001, v_request.primitive.requestPrimitive.requestIdentifier, omit));
							
							//send back responsePrimitive
							mcaPortIn.send(m_response(v_responsePrimitive));
						}
						[] mcaPortIn.receive {
							tc_ac.stop;
							setverdict(fail, __SCOPE__, " : Container creation request is rejected due to not including mandatory attributes!!");
						}
						[] tc_ac.timeout{
							setverdict(fail, __SCOPE__, " : Timeout due to no response received from requested SUT!");
						}
					}
	
					// Postamble
					f_cf03Down();
				}
				
				/**
				 * @desc Check that the IUT sends a ContentInstance creation request when it is triggered
				 */
				testcase TC_AE_DMR_CRE_002() runs on Tester system AeSystem {
						
					var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
					
					v_cse1.start(f_AE_DMR_CRE_002());
					
					v_cse1.done;
				}

				function f_AE_DMR_CRE_002() runs on CseSimu {
	
					var template UtTriggerPrimitive v_utRequest := m_utCreateContentInstance;
					var MsgIn v_request;
					var PrimitiveContent v_localResource;
					var integer v_containerIndex := -1;
					var template RequestPrimitive v_requestPrimitive := mw_createContentInstance;
					var ResponsePrimitive v_responsePrimitive;
					var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid CREATE Request for ContentInstance";
	
					//Test component configuration
					f_cf03Up();
	
					//send triggering primitive to SUT
					v_localResource := f_ae_generateLocalResource(valueof(m_primitiveContentContainer(m_contentCreateContainer)), vc_cSEBaseIndex, int3);
					v_containerIndex := f_setLocalResource(v_localResource, int3, vc_cSEBaseIndex);
					v_utRequest.requestPrimitive.to_ := f_getLocalResourceAddress(v_containerIndex, -, -);
					v_requestPrimitive.to_ := v_utRequest.requestPrimitive.to_;
					f_sendUtPrimitive(v_utRequest,v_action);
	
					//Test behavior
					tc_ac.start;
					alt{
	
						//receive MsgIn requestPrimitive
						[] mcaPortIn.receive(mw_request(v_requestPrimitive)) -> value v_request {
							tc_ac.stop;
							setverdict(pass, __SCOPE__, " : ContentInstance creation request is accepted!!");
							
							//set responseStatusCode back to SUT
							v_responsePrimitive := valueof(m_responsePrimitive(int2001, v_request.primitive.requestPrimitive.requestIdentifier, omit));
	
							//send back responsePrimitive
							mcaPortIn.send(m_response(v_responsePrimitive));
						}
	
						[] mcaPortIn.receive {
							tc_ac.stop;
							setverdict(fail, __SCOPE__, " : ContentInstance creation request is rejected due to not including mandatory attributes!!");
						}
	
						[] tc_ac.timeout{
							setverdict(fail, __SCOPE__, " : Timeout due to no response received from requested SUT!");
						}
					}
					
					// Postamble
					f_cf03Down();
				}
				
				/**
				 * @desc Check that the IUT sends a ContentInstance creation request with optional attribute ATTRIBUTE_NAME
				 */
				 
				 group g_AE_DMR_CRE_003 {
				 
					testcase TC_AE_DMR_CRE_003_CNF() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template UtTriggerPrimitive v_utRequest := m_utCreateContentInstance;
						var template RequestPrimitive v_request := mw_createContentInstance;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid CREATE Request for ContentInstance containing attribute ContentInfo";
						v_utRequest.requestPrimitive.primitiveContent.contentInstance.contentInfo := "UNINITIALIZED";
						v_request.primitiveContent.contentInstance.contentInfo := complement("UNINITIALIZED");
						v_cse1.start(f_AE_DMR_CRE_003(v_utRequest,v_request,v_action));
						v_cse1.done;
					}
					
					testcase TC_AE_DMR_CRE_003_RN() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template UtTriggerPrimitive v_utRequest := m_utCreateContentInstance;
						var template RequestPrimitive v_request := mw_createContentInstance;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid CREATE Request for ContentInstance containing attribute ResourceName";
						v_utRequest.requestPrimitive.primitiveContent.contentInstance.resourceName := "UNINITIALIZED";
						v_request.primitiveContent.contentInstance.resourceName := complement("UNINITIALIZED");
						v_cse1.start(f_AE_DMR_CRE_003(v_utRequest,v_request,v_action));
						v_cse1.done;
					}
					
					testcase TC_AE_DMR_CRE_003_ET() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template UtTriggerPrimitive v_utRequest := m_utCreateContentInstance;
						var template RequestPrimitive v_request := mw_createContentInstance;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid CREATE Request for ContentInstance containing attribute ExpirationTime";
						v_utRequest.requestPrimitive.primitiveContent.contentInstance.expirationTime := "20301231T012345";
						v_utRequest.forcedFields := {{name := "expirationTime", value_ := "UNINITIALIZED"}};
						v_request.primitiveContent.contentInstance.expirationTime := ?;//Check value other than "UNINITIALIZED", done by typing
						v_cse1.start(f_AE_DMR_CRE_003(v_utRequest,v_request,v_action));
						v_cse1.done;
					}
					
					testcase TC_AE_DMR_CRE_003_LBL() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template UtTriggerPrimitive v_utRequest := m_utCreateContentInstance;
						var template RequestPrimitive v_request := mw_createContentInstance;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid CREATE Request for ContentInstance containing attribute Labels";
						v_utRequest.requestPrimitive.primitiveContent.contentInstance.labels := {"UNINITIALIZED"};
						v_request.primitiveContent.contentInstance.labels := complement({*,"UNINITIALIZED",*});
						v_cse1.start(f_AE_DMR_CRE_003(v_utRequest,v_request,v_action));
						v_cse1.done;
					}
					
					testcase TC_AE_DMR_CRE_003_CR() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template UtTriggerPrimitive v_utRequest := m_utCreateContentInstance;
						var template RequestPrimitive v_request := mw_createContentInstance;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid CREATE Request for ContentInstance containing attribute Creator";
						v_utRequest.requestPrimitive.primitiveContent.contentInstance.creator := "UNINITIALIZED";
						v_request.primitiveContent.contentInstance.creator := complement("UNINITIALIZED");
						v_cse1.start(f_AE_DMR_CRE_003(v_utRequest,v_request,v_action));
						v_cse1.done;
					}
	
				 }//End of subgroup AE_DMR_CRE_003
				 
				 
				 				
				/**
				 * @desc Check that the IUT sends a Container creation request with optional attribute ATTRIBUTE_NAME when it is triggered
				 */
				 
				 group g_AE_DMR_CRE_004 {
				 
					testcase TC_AE_DMR_CRE_004_ACPI() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template UtTriggerPrimitive v_utRequest := m_utCreateContainer;
						var template RequestPrimitive v_request := mw_createContainer;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid CREATE Request for Container containing attribute AccessControlPolicyIDs";
						v_utRequest.requestPrimitive.primitiveContent.container.accessControlPolicyIDs := {"UNINITIALIZED"};
						v_request.primitiveContent.container.accessControlPolicyIDs := complement({*,"UNINITIALIZED",*});
						v_cse1.start(f_AE_DMR_CRE_004(v_utRequest,v_request,v_action));
						v_cse1.done;
					}
				 	
					testcase TC_AE_DMR_CRE_004_MNI() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template UtTriggerPrimitive v_utRequest := m_utCreateContainer;
						var template RequestPrimitive v_request := mw_createContainer;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid CREATE Request for Container containing attribute MaxNrOfInstances";
						v_utRequest.requestPrimitive.primitiveContent.container.maxNrOfInstances := 1;
						v_utRequest.forcedFields := {{name := "maxNrOfInstances", value_ := "UNINITIALIZED"}};
						v_request.primitiveContent.container.maxNrOfInstances := ?;//Check value other than "UNINITIALIZED", done by typing
						v_cse1.start(f_AE_DMR_CRE_004(v_utRequest,v_request,v_action));
						v_cse1.done;
					}
				 	
					testcase TC_AE_DMR_CRE_004_MBS() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template UtTriggerPrimitive v_utRequest := m_utCreateContainer;
						var template RequestPrimitive v_request := mw_createContainer;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid CREATE Request for Container containing attribute MaxByteSize";
						v_utRequest.requestPrimitive.primitiveContent.container.maxByteSize := 1;
						v_utRequest.forcedFields := {{name := "maxByteSize", value_ := "UNINITIALIZED"}};
						v_request.primitiveContent.container.maxByteSize := ?;//Check value other than "UNINITIALIZED", done by typing
						v_cse1.start(f_AE_DMR_CRE_004(v_utRequest,v_request,v_action));
						v_cse1.done;
					}
				 	
					testcase TC_AE_DMR_CRE_004_MIA() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template UtTriggerPrimitive v_utRequest := m_utCreateContainer;
						var template RequestPrimitive v_request := mw_createContainer;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid CREATE Request for Container containing attribute MaxInstanceAge";
						v_utRequest.requestPrimitive.primitiveContent.container.maxInstanceAge := 1;
						v_utRequest.forcedFields := {{name := "maxInstanceAge", value_ := "UNINITIALIZED"}};
						v_request.primitiveContent.container.maxInstanceAge := ?;//Check value other than "UNINITIALIZED", done by typing
						v_cse1.start(f_AE_DMR_CRE_004(v_utRequest,v_request,v_action));
						v_cse1.done;
					}
				 	
					testcase TC_AE_DMR_CRE_004_OR() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template UtTriggerPrimitive v_utRequest := m_utCreateContainer;
						var template RequestPrimitive v_request := mw_createContainer;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid CREATE Request for Container containing attribute OntologyRef";
						v_utRequest.requestPrimitive.primitiveContent.container.ontologyRef := "UNINITIALIZED";
						v_request.primitiveContent.container.ontologyRef := complement("UNINITIALIZED");
						v_cse1.start(f_AE_DMR_CRE_004(v_utRequest,v_request,v_action));
						v_cse1.done;
					}
					
					testcase TC_AE_DMR_CRE_004_RN() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template UtTriggerPrimitive v_utRequest := m_utCreateContainer;
						var template RequestPrimitive v_request := mw_createContainer;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid CREATE Request for Container containing attribute ResourceName";
						v_utRequest.requestPrimitive.primitiveContent.container.resourceName := "UNINITIALIZED";
						v_request.primitiveContent.container.resourceName := complement("UNINITIALIZED");
						v_cse1.start(f_AE_DMR_CRE_004(v_utRequest,v_request,v_action));
						v_cse1.done;
					}
					
					testcase TC_AE_DMR_CRE_004_ET() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template UtTriggerPrimitive v_utRequest := m_utCreateContainer;
						var template RequestPrimitive v_request := mw_createContainer;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid CREATE Request for Container containing attribute ExpirationTime";
						v_utRequest.requestPrimitive.primitiveContent.container.expirationTime := "20301231T012345";
						v_utRequest.forcedFields := {{name := "expirationTime", value_ := "UNINITIALIZED"}};
						v_request.primitiveContent.container.expirationTime := ?;//Check value other than "UNINITIALIZED", done by typing
						v_cse1.start(f_AE_DMR_CRE_004(v_utRequest,v_request,v_action));
						v_cse1.done;
					}
					
					testcase TC_AE_DMR_CRE_004_LBL() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template UtTriggerPrimitive v_utRequest := m_utCreateContainer;
						var template RequestPrimitive v_request := mw_createContainer;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid CREATE Request for Container containing attribute Labels";
						v_utRequest.requestPrimitive.primitiveContent.container.labels := {"UNINITIALIZED"};
						v_request.primitiveContent.container.labels := complement({*,"UNINITIALIZED",*});
						v_cse1.start(f_AE_DMR_CRE_004(v_utRequest,v_request,v_action));
						v_cse1.done;
					}
					
					testcase TC_AE_DMR_CRE_004_CR() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template UtTriggerPrimitive v_utRequest := m_utCreateContainer;
						var template RequestPrimitive v_request := mw_createContainer;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid CREATE Request for Container containing attribute Creator";
						v_utRequest.requestPrimitive.primitiveContent.container.creator := "UNINITIALIZED";
						v_request.primitiveContent.container.creator := complement("UNINITIALIZED");
						v_cse1.start(f_AE_DMR_CRE_004(v_utRequest,v_request,v_action));
						v_cse1.done;
					}
	
				 }//End of subgroup AE_DMR_CRE_004
				 
			}//End of subgroup Create
			
			group Update {
				
				group g_AE_DMR_UPD_001 {
					
					/**
					 * @desc Check that the IUT sends an UPDATE Request with the value of the attribute ATTRIBUTE_NAME of the AE resource 
					 */
	
					testcase TC_AE_DMR_UPD_001_ET() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;						
						
						var template RequestPrimitive v_expectedUpdateRequestAe;
						var universal charstring v_action := "Please, send a valid UPDATE Request for AE updating attribute expirationTime";
						var template UtTriggerPrimitive v_utRequest := m_utUpdateAe;
						
						v_utRequest.requestPrimitive.primitiveContent.aE.expirationTime := "20301231T012345";
						
						v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest;
						v_expectedUpdateRequestAe.primitiveContent.aE.expirationTime := ?;
												
						v_cse1.start(f_AE_DMR_UPD_001(v_utRequest, v_action, v_expectedUpdateRequestAe));
						v_cse1.done;
					}
					
					testcase TC_AE_DMR_UPD_001_LBL() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;						
						var template RequestPrimitive v_expectedUpdateRequestAe;
						var template UtTriggerPrimitive v_utRequest := m_utUpdateAe;
						var universal charstring v_action := "Please, send a valid UPDATE Request for AE updating attribute labels";
						
						v_utRequest.requestPrimitive.primitiveContent.aE.labels := {"UNINITIALIZED"};
						
						v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest;
						v_expectedUpdateRequestAe.primitiveContent.aE.labels := complement({*,"UNINITIALIZED",*});
					   
						
						v_cse1.start(f_AE_DMR_UPD_001(v_utRequest,v_action, v_expectedUpdateRequestAe));
						v_cse1.done;
					}
	
					testcase TC_AE_DMR_UPD_001_APN() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						var template RequestPrimitive v_expectedUpdateRequestAe;
						var template UtTriggerPrimitive v_utRequest := m_utUpdateAe;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid UPDATE Request for AE updating attribute appName";
						
						v_utRequest.requestPrimitive.primitiveContent.aE.appName := "UNINITIALIZED";

						v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest;
						v_expectedUpdateRequestAe.primitiveContent.aE.appName := complement("UNINITIALIZED");
						
						v_cse1.start(f_AE_DMR_UPD_001(v_utRequest,v_action, v_expectedUpdateRequestAe));
						v_cse1.done;
					}
	
					testcase TC_AE_DMR_UPD_001_POA() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						var template RequestPrimitive v_expectedUpdateRequestAe;
						var template UtTriggerPrimitive v_utRequest := m_utUpdateAe;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid UPDATE Request for AE updating attribute pointOfAccess";
						
						v_utRequest.requestPrimitive.primitiveContent.aE.pointOfAccess := {"UNINITIALIZED"};

						v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest;
						v_expectedUpdateRequestAe.primitiveContent.aE.pointOfAccess := complement({*,"UNINITIALIZED", *});
						
						v_cse1.start(f_AE_DMR_UPD_001(v_utRequest,v_action, v_expectedUpdateRequestAe));
						v_cse1.done;
					}
	
					testcase TC_AE_DMR_UPD_001_OR() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						var template RequestPrimitive v_expectedUpdateRequestAe;
						var template UtTriggerPrimitive v_utRequest := m_utUpdateAe;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid UPDATE Request for AE updating attribute ontologyRef";
						
						v_utRequest.requestPrimitive.primitiveContent.aE.ontologyRef := "UNINITIALIZED";

						v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest;
						v_expectedUpdateRequestAe.primitiveContent.aE.ontologyRef := complement("UNINITIALIZED");
						
						v_cse1.start(f_AE_DMR_UPD_001(v_utRequest,v_action, v_expectedUpdateRequestAe));
						v_cse1.done;
					}
	
					testcase TC_AE_DMR_UPD_001_NL() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						
						var template RequestPrimitive v_expectedUpdateRequestAe;
						var template UtTriggerPrimitive v_utRequest := m_utUpdateAe;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid UPDATE Request for AE updating attribute nodeLink";
						
						v_utRequest.requestPrimitive.primitiveContent.aE.nodeLink := "UNINITIALIZED";

						v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest;
						v_expectedUpdateRequestAe.primitiveContent.aE.nodeLink := complement("UNINITIALIZED");
						
						v_cse1.start(f_AE_DMR_UPD_001(v_utRequest,v_action, v_expectedUpdateRequestAe));
						v_cse1.done;
					}
	
					testcase TC_AE_DMR_UPD_001_RR() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template RequestPrimitive v_expectedUpdateRequestAe;
						var template UtTriggerPrimitive v_utRequest := m_utUpdateAe;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid UPDATE Request for AE updating attribute requestReachability";
						
						v_utRequest.requestPrimitive.primitiveContent.aE.requestReachability := true;
						v_utRequest.forcedFields := {{name := "requestReachability", value_ := "UNINITIALIZED"}};
						
						v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest;
						v_expectedUpdateRequestAe.primitiveContent.aE.requestReachability := ?;//Check value other than "UNINITIALIZED", done by typing
						
						v_cse1.start(f_AE_DMR_UPD_001(v_utRequest,v_action, v_expectedUpdateRequestAe));
						v_cse1.done;
					}
	
					testcase TC_AE_DMR_UPD_001_CSZ() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template RequestPrimitive v_expectedUpdateRequestAe;
						var template UtTriggerPrimitive v_utRequest := m_utUpdateAe;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid UPDATE Request for AE updating attribute contentSerialization";
						
						v_utRequest.requestPrimitive.primitiveContent.aE.contentSerialization := {applicationxml};
						v_utRequest.forcedFields := {{name := "contentSerialization", value_ := "UNINITIALIZED"}};
						
						v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest;
						v_expectedUpdateRequestAe.primitiveContent.aE.contentSerialization := ?;//Check value other than "UNINITIALIZED", done by typing
						
						v_cse1.start(f_AE_DMR_UPD_001(v_utRequest,v_action, v_expectedUpdateRequestAe));
						v_cse1.done;
					}
	
				}//End of subgroup AE_DMR_UPD_001
				
				group g_AE_DMR_UPD_002 {
					
					/**
					 * @desc Check that the IUT sends an UPDATE Request with the value of the attribute ATTRIBUTE_NAME of the <container> resource
					 */
					
					testcase TC_AE_DMR_UPD_002_ET() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template RequestPrimitive v_request := mw_updateContainer;
						var template UtTriggerPrimitive v_utRequest := m_utUpdateContainer;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid UPDATE Request for Container updating attribute expirationTime";
						v_utRequest.requestPrimitive.primitiveContent.container.expirationTime := "20301231T012345";
						v_request.primitiveContent.container.expirationTime := ?;
						v_cse1.start(f_AE_DMR_UPD_002(v_utRequest,v_request,v_action));
						v_cse1.done;
					}
					
					testcase TC_AE_DMR_UPD_002_LBL() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template RequestPrimitive v_request := mw_updateContainer;
						var template UtTriggerPrimitive v_utRequest := m_utUpdateContainer;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid UPDATE Request for Container updating attribute labels";
						v_utRequest.requestPrimitive.primitiveContent.container.labels := {"UNINITIALIZED"};
						v_request.primitiveContent.container.labels := complement({*,"UNINITIALIZED",*});
						v_cse1.start(f_AE_DMR_UPD_002(v_utRequest,v_request,v_action));
						v_cse1.done;
					}
					
					testcase TC_AE_DMR_UPD_002_MNI() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template RequestPrimitive v_request := mw_updateContainer;
						var template UtTriggerPrimitive v_utRequest := m_utUpdateContainer;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid UPDATE Request for Container updating attribute maxNrOfInstances";
						v_utRequest.requestPrimitive.primitiveContent.container.maxNrOfInstances := 1;
						v_utRequest.forcedFields := {{name := "maxNrOfInstances", value_ := "UNINITIALIZED"}};
						v_request.primitiveContent.container.maxNrOfInstances := ?;//Check value other than "UNINITIALIZED", done by typing
						v_cse1.start(f_AE_DMR_UPD_002(v_utRequest,v_request,v_action));
						v_cse1.done;
					}
					
					testcase TC_AE_DMR_UPD_002_MBS() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template RequestPrimitive v_request := mw_updateContainer;
						var template UtTriggerPrimitive v_utRequest := m_utUpdateContainer;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid UPDATE Request for Container updating attribute maxByteSize";
						v_utRequest.requestPrimitive.primitiveContent.container.maxByteSize := 1;
						v_utRequest.forcedFields := {{name := "maxByteSize", value_ := "UNINITIALIZED"}};
						v_request.primitiveContent.container.maxByteSize := ?;//Check value other than "UNINITIALIZED", done by typing
						v_cse1.start(f_AE_DMR_UPD_002(v_utRequest,v_request,v_action));
						v_cse1.done;
					}
					
					testcase TC_AE_DMR_UPD_002_MIA() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template RequestPrimitive v_request := mw_updateContainer;
						var template UtTriggerPrimitive v_utRequest := m_utUpdateContainer;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid UPDATE Request for Container updating attribute maxInstanceAge";
                        v_utRequest.requestPrimitive.primitiveContent.container.maxInstanceAge := 1;
						v_utRequest.forcedFields := {{name := "maxInstanceAge", value_ := "UNINITIALIZED"}};
						v_request.primitiveContent.container.maxInstanceAge := ?;//Check value other than "UNINITIALIZED", done by typing
						v_cse1.start(f_AE_DMR_UPD_002(v_utRequest,v_request,v_action));
						v_cse1.done;
					}

				}//End of subgroup AE_DMR_UPD_002
			
			}//End of subgroup Update

			group Retrieve {
				
				group g_AE_DMR_RET_001{
							
					/**
					 * @desc Check that the IUT sends a RETRIEVE Request on the TARGET_RESOURCE_ADDRESS to CSE
					 */
	
					testcase TC_AE_DMR_RET_001_CB() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid RETRIEVE Request for CSEBase";
						v_cse1.start(f_AE_DMR_RET_001(int5, m_primitiveContentCSEBase(m_contentCreateCSEBase),v_action));
						v_cse1.done;
					}
				 	
					testcase TC_AE_DMR_RET_001_AE() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid RETRIEVE Request for AE";
						v_cse1.start(f_AE_DMR_RET_001(int2, m_primitiveContentAe(m_contentCreateAe(omit, omit, omit, omit)),v_action));
						v_cse1.done;
					}
	
					testcase TC_AE_DMR_RET_001_CNT() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid RETRIEVE Request for Container";
						v_cse1.start(f_AE_DMR_RET_001(int3, m_primitiveContentContainer(m_contentCreateContainer()),v_action));
						v_cse1.done;
					}
	
				}//End of TC_AE_DMR_RET_001
				
				/**
				 * @desc Check that the IUT sends a RETRIEVE Request of oldest virtual resource.
				 */
	
				testcase TC_AE_DMR_RET_002() runs on Tester system AeSystem {
						
					var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
					
					v_cse1.start(f_AE_DMR_RET_002());
					
					v_cse1.done;
				}

				function f_AE_DMR_RET_002() runs on CseSimu {
	
					var integer v_auxInteger := -1;
					var PrimitiveContent v_localResource;
	
					//variables
					var template UtTriggerPrimitive v_utRequest := m_utRetrieve("NotInitialized");
					var MsgIn v_request;
					var ResponsePrimitive v_responsePrimitive;
					var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid RETRIEVE Request for retrieving the 'oldest' attribute from Container";
	
					//Test component configuration
					f_cf03Up();
	
					//send triggering primitive to SUT
					v_localResource := f_ae_generateLocalResource(valueof(m_primitiveContentContainer(m_contentCreateContainer)), vc_cSEBaseIndex, int3);
					v_auxInteger := f_setLocalResource(v_localResource, int3, vc_cSEBaseIndex);
					v_utRequest.requestPrimitive.to_ := f_getLocalResourceAddress(v_auxInteger) & "/" & c_resourceShortNameOldest;
					f_sendUtPrimitive(v_utRequest,v_action);
	
					//Test behavior
					tc_ac.start;
					alt{
						[] mcaPortIn.receive(mw_request(mw_retrieve(v_utRequest.requestPrimitive.to_ ))) -> value v_request {
							tc_ac.stop;
							setverdict(pass, __SCOPE__, " : retrieve attribute oldest request is accepted!");
	
							//set responseStatusCode back to SUT
							v_responsePrimitive := valueof(m_responsePrimitive(int2000, v_request.primitive.requestPrimitive.requestIdentifier, omit));
	
							//send back responsePrimitive
							mcaPortIn.send(m_response(v_responsePrimitive));
							tc_ac.stop;
						}
						[] mcaPortIn.receive {
							tc_ac.stop;
							setverdict(fail, __SCOPE__, " : error while retrieving attribute !");
						}
						[] tc_ac.timeout{
							setverdict(fail, __SCOPE__, " : Timeout due to no response received from requested SUT!");
						}
					}
	
					// Postamble
					f_cf03Down();
				}
				
				/**
				 * @desc Check that the IUT sends a RETRIEVE Request of latest virtual resource.
				 */
	
				testcase TC_AE_DMR_RET_003() runs on Tester system AeSystem {
						
					var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
					
					v_cse1.start(f_AE_DMR_RET_003());
					
					v_cse1.done;
				}

				function f_AE_DMR_RET_003() runs on CseSimu {
	
					var integer v_auxInteger := -1;
					var PrimitiveContent v_localResource;
	
					//variables
					var template UtTriggerPrimitive v_utRequest := m_utRetrieve("NotInitialized");
					var MsgIn v_request;
					var ResponsePrimitive v_responsePrimitive;
					var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid RETRIEVE Request for retrieving the 'latest' attribute from Container";
	
					//Test component configuration
					f_cf03Up();
	
					//send triggering primitive to SUT
					v_localResource := f_ae_generateLocalResource(valueof(m_primitiveContentContainer(m_contentCreateContainer)), vc_cSEBaseIndex, int3);
					v_auxInteger := f_setLocalResource(v_localResource, int3, vc_cSEBaseIndex);
					v_utRequest.requestPrimitive.to_ := f_getLocalResourceAddress(v_auxInteger) & "/" & c_resourceShortNameLatest;
					f_sendUtPrimitive(v_utRequest,v_action);
	
					//Test behavior
					tc_ac.start;
					alt{
						[] mcaPortIn.receive(mw_request(mw_retrieve(v_utRequest.requestPrimitive.to_))) -> value v_request {
							tc_ac.stop;
							setverdict(pass, __SCOPE__, " : retrieve attribute latest request is accepted!!");
	
							//set responseStatusCode back to SUT
							v_responsePrimitive := valueof(m_responsePrimitive(int2000, v_request.primitive.requestPrimitive.requestIdentifier, omit));
	
							//send back responsePrimitive
							mcaPortIn.send(m_response(v_responsePrimitive));
							tc_ac.stop;
						}
						[] mcaPortIn.receive {
							tc_ac.stop;
							setverdict(fail, __SCOPE__, " : error while retrieving attribute !");
						}
						[] tc_ac.timeout{
							setverdict(fail, __SCOPE__, " : Timeout due to no response received from requested SUT!");
						}
					}
	
					// Postamble
					f_cf03Down();
				}
				
				/**
				 * @desc Check that the IUT sends a <container> resource RETRIEVE Request to CSE
				 */
				
				testcase TC_AE_DMR_RET_004() runs on Tester system AeSystem {
						
					var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
					
					v_cse1.start(f_AE_DMR_RET_004());
					
					v_cse1.done;
				}

				function f_AE_DMR_RET_004() runs on CseSimu {
					
					var integer v_auxInteger := -1;
					var PrimitiveContent v_localResource;
		
					//variables
					var template UtTriggerPrimitive v_utRequest := m_utRetrieve("NotInitialized");
					var MsgIn v_request;
					var ResponsePrimitive v_responsePrimitive;
					var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid RETRIEVE Request for retrieving the Container";

					//Test component configuration
					f_cf03Up();

					//send triggering primitive to SUT
					v_localResource := f_ae_generateLocalResource(valueof(m_primitiveContentContainer(m_contentCreateContainer)), vc_cSEBaseIndex, int3);
					v_auxInteger := f_setLocalResource(v_localResource, int3, vc_cSEBaseIndex);
					v_utRequest.requestPrimitive.to_ := f_getLocalResourceAddress(v_auxInteger);
					f_sendUtPrimitive(v_utRequest,v_action);
	
					//Test behavior
					tc_ac.start;
					alt{
						[] mcaPortIn.receive(mw_request(mw_retrieve(v_utRequest.requestPrimitive.to_))) -> value v_request {
							tc_ac.stop;
							setverdict(pass, __SCOPE__, " : retrieve resource type request is accepted!!");
			
							//set responseStatusCode back to SUT
							v_responsePrimitive := valueof(m_responsePrimitive(int2000, v_request.primitive.requestPrimitive.requestIdentifier, omit));

							//send back responsePrimitive
							mcaPortIn.send(m_response(v_responsePrimitive));
							tc_ac.stop;
						}
						[] mcaPortIn.receive {
							tc_ac.stop;
							setverdict(fail, __SCOPE__, " : error while retrieving resource !");
						}
						[] tc_ac.timeout{
							setverdict(fail, __SCOPE__, " : Timeout due to no response received from requested SUT!");
						}
					}

					// Postamble
					f_cf03Down();
				}
				
				/**
				 * @desc Check that the IUT sends a <contentInstance> resource RETRIEVE Request to CSE
				 */

				testcase TC_AE_DMR_RET_005 () runs on Tester system AeSystem {
						
					var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
					
					v_cse1.start(f_AE_DMR_RET_005());
					
					v_cse1.done;
				}

				function f_AE_DMR_RET_005() runs on CseSimu {
	
					var integer v_auxInteger := -1;
					var PrimitiveContent v_localResource;

					//variables
					var template UtTriggerPrimitive v_utRequest := m_utRetrieve("NotInitialized");
					var MsgIn v_request;
					var ResponsePrimitive v_responsePrimitive;
					var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid RETRIEVE Request for retrieving the contentInstance";

					//Test component configuration
					f_cf03Up();

					//send triggering primitive to SUT
					v_localResource := f_ae_generateLocalResource(valueof(m_primitiveContentContentInstance(m_contentCreateContentInstance)), vc_cSEBaseIndex, int4);
					v_auxInteger := f_setLocalResource(v_localResource, int4, vc_cSEBaseIndex);
					v_utRequest.requestPrimitive.to_ := f_getLocalResourceAddress(v_auxInteger);
					f_sendUtPrimitive(v_utRequest,v_action);

					//Test behavior
					tc_ac.start;
					alt{
						[] mcaPortIn.receive(mw_request(mw_retrieve(v_utRequest.requestPrimitive.to_))) -> value v_request {
							tc_ac.stop;
							setverdict(pass, __SCOPE__, " : retrieve resource type request is accepted!!");

							//set responseStatusCode back to SUT
							v_responsePrimitive := valueof(m_responsePrimitive(int2000, v_request.primitive.requestPrimitive.requestIdentifier, omit));

							//send back responsePrimitive
							mcaPortIn.send(m_response(v_responsePrimitive));
							tc_ac.stop;
						}
						[] mcaPortIn.receive {
							tc_ac.stop;
							setverdict(fail, __SCOPE__, " : error while retrieving resource !");
						}
						[] tc_ac.timeout{
							setverdict(fail, __SCOPE__, " : Timeout due to no response received from requested SUT!");
						}
					}

					// Postamble
					f_cf03Down();
				}

			}//End of subgroup Retrieve
			
			group Delete {
			
				/**
				 * @desc Check that the IUT sends a DELETE Request of oldest virtual resource.
				 */

				testcase TC_AE_DMR_DEL_001() runs on Tester system AeSystem {
						
					var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
					
					v_cse1.start(f_AE_DMR_DEL_001());
					
					v_cse1.done;
				}

				function f_AE_DMR_DEL_001() runs on CseSimu {

					var integer v_auxInteger := -1;
					var PrimitiveContent v_localResource;
					
					//variables
					var template UtTriggerPrimitive v_utRequest := m_utDelete;
					var MsgIn v_request;
					var ResponsePrimitive v_responsePrimitive;
					var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid DELETE Request for deleting the 'oldest' attribute from contentInstance";

					//Test component configuration
					f_cf03Up();

					//send triggering primitive to SUT
					v_localResource := f_ae_generateLocalResource(valueof(m_primitiveContentContainer(m_contentCreateContainer)), vc_cSEBaseIndex, int3);
					v_auxInteger := f_setLocalResource(v_localResource, int3, vc_cSEBaseIndex);
					v_utRequest.requestPrimitive.to_ := f_getLocalResourceAddress(v_auxInteger) & "/" & c_resourceShortNameOldest;
					f_sendUtPrimitive(v_utRequest,v_action);

					//Test behavior
					tc_ac.start;
					alt{
						[] mcaPortIn.receive(mw_request(mw_delete(v_utRequest.requestPrimitive.to_))) -> value v_request {
							tc_ac.stop;
							setverdict(pass, __SCOPE__, " : delete attribute oldest request is accepted!!");

							//set responseStatusCode back to SUT
							v_responsePrimitive := valueof(m_responsePrimitive(int2002, v_request.primitive.requestPrimitive.requestIdentifier, omit));

							//send back responsePrimitive
							mcaPortIn.send(m_response(v_responsePrimitive));
							tc_ac.stop;
						}
						[] mcaPortIn.receive {
							tc_ac.stop;
							setverdict(fail, __SCOPE__, " : error while deleting attribute !");
						}
						[] tc_ac.timeout{
							setverdict(fail, __SCOPE__, " : Timeout due to no response received from requested SUT!");
						}
					}

					// Postamble
					f_cf03Down();
				}

				/**
				 * @desc Check that the IUT sends a DELETE Request of latest virtual resource.
				 */

				testcase TC_AE_DMR_DEL_002() runs on Tester system AeSystem {
						
					var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
					
					v_cse1.start(f_AE_DMR_DEL_002());
					
					v_cse1.done;
				}

				function f_AE_DMR_DEL_002() runs on CseSimu {

					var integer v_auxInteger := -1;
					var PrimitiveContent v_localResource;

					//variables
					var template UtTriggerPrimitive v_utRequest := m_utDelete;
					var MsgIn v_request;
					var ResponsePrimitive v_responsePrimitive;
					var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid DELETE Request for deleting the 'latest' attribute from contentInstance";

					//Test component configuration
					f_cf03Up();

					//send triggering primitive to SUT
					v_localResource := f_ae_generateLocalResource(valueof(m_primitiveContentContainer(m_contentCreateContainer)), vc_cSEBaseIndex, int3);
					v_auxInteger := f_setLocalResource(v_localResource, int3, vc_cSEBaseIndex);
					v_utRequest.requestPrimitive.to_ := f_getLocalResourceAddress(v_auxInteger) & "/" & c_resourceShortNameLatest;
					f_sendUtPrimitive(v_utRequest,v_action);

					//Test behavior
					tc_ac.start;
					alt{
						[] mcaPortIn.receive(mw_request(mw_delete(v_utRequest.requestPrimitive.to_))) -> value v_request {
							tc_ac.stop;
							setverdict(pass, __SCOPE__, " : delete attribute latest request is accepted!!");

							//set responseStatusCode back to SUT
							v_responsePrimitive := valueof(m_responsePrimitive(int2002, v_request.primitive.requestPrimitive.requestIdentifier, omit));

							//send back responsePrimitive
							mcaPortIn.send(m_response(v_responsePrimitive));
							tc_ac.stop;
						}
						[] mcaPortIn.receive {
							tc_ac.stop;
							setverdict(fail, __SCOPE__, " : error while deleting attribute !");
						}
						[] tc_ac.timeout{
							setverdict(fail, __SCOPE__, " : Timeout due to no response received from requested SUT!");
						}
					}

					// Postamble
					f_cf03Down();
				}

				/**
				 * @desc Check that the IUT sends a <container> resource DELETE request to CSE
				 */

				testcase TC_AE_DMR_DEL_003() runs on Tester system AeSystem {
						
					var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
					
					v_cse1.start(f_AE_DMR_DEL_003());
					
					v_cse1.done;
				}

				function f_AE_DMR_DEL_003() runs on CseSimu {
	
					var integer v_auxInteger := -1;
					var PrimitiveContent v_localResource;

					//variables
					var template UtTriggerPrimitive v_utRequest := m_utDelete;
					var MsgIn v_request;
					var ResponsePrimitive v_responsePrimitive;
					var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid DELETE Request for deleting the container resource";

					//Test component configuration
					f_cf03Up();

					//send triggering primitive to SUT
					v_localResource := f_ae_generateLocalResource(valueof(m_primitiveContentContainer(m_contentCreateContainer)), vc_cSEBaseIndex, int3);
					v_auxInteger := f_setLocalResource(v_localResource, int3, vc_cSEBaseIndex);
					v_utRequest.requestPrimitive.to_ := f_getLocalResourceAddress(v_auxInteger);
					f_sendUtPrimitive(v_utRequest,v_action);

					//Test behavior
					tc_ac.start;
					alt{
						[] mcaPortIn.receive(mw_request(mw_delete(v_utRequest.requestPrimitive.to_))) -> value v_request {
							tc_ac.stop;
							setverdict(pass, __SCOPE__, " : delete resource type request is accepted!!");

							//set responseStatusCode back to SUT
							v_responsePrimitive := valueof(m_responsePrimitive(int2002, v_request.primitive.requestPrimitive.requestIdentifier, omit));

							//send back responsePrimitive
							mcaPortIn.send(m_response(v_responsePrimitive));
							tc_ac.stop;
						}
						[] mcaPortIn.receive {
							tc_ac.stop;
							setverdict(fail, __SCOPE__, " : error while deleting resource !");
						}
						[] tc_ac.timeout{
							setverdict(fail, __SCOPE__, " : Timeout due to no response received from requested SUT!");
						}
					}

					// Postamble
					f_cf03Down();
				}

				/**
				 * @desc Check that the IUT sends a <contentInstance> resource DELETE Request to CSE
				 */

				testcase TC_AE_DMR_DEL_004 () runs on Tester system AeSystem {
						
					var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
					
					v_cse1.start(f_AE_DMR_DEL_004());
					
					v_cse1.done;
				}

				function f_AE_DMR_DEL_004() runs on CseSimu {

					var integer v_auxInteger := -1;
					var PrimitiveContent v_localResource;

					//variables
					var template UtTriggerPrimitive v_utRequest := m_utDelete;
					var MsgIn v_request;
					var ResponsePrimitive v_responsePrimitive;
					var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid DELETE Request for deleting the contentInstance resource";

					//Test component configuration
					f_cf03Up();

					//send triggering primitive to SUT
					v_localResource := f_ae_generateLocalResource(valueof(m_primitiveContentContentInstance(m_contentCreateContentInstance)), vc_cSEBaseIndex, int4);
					v_auxInteger := f_setLocalResource(v_localResource, int4, vc_cSEBaseIndex);
					v_utRequest.requestPrimitive.to_ := f_getLocalResourceAddress(v_auxInteger);
					f_sendUtPrimitive(v_utRequest,v_action);

					//Test behavior
					tc_ac.start;
					alt{
						[] mcaPortIn.receive(mw_request(mw_delete(v_utRequest.requestPrimitive.to_ ))) -> value v_request {
							tc_ac.stop;
							setverdict(pass, __SCOPE__, " : delete resource type request is accepted!!");

							//set responseStatusCode back to SUT
							v_responsePrimitive := valueof(m_responsePrimitive(int2002, v_request.primitive.requestPrimitive.requestIdentifier, omit));

							//send back responsePrimitive
							mcaPortIn.send(m_response(v_responsePrimitive));
							tc_ac.stop;
						}
						[] mcaPortIn.receive {
							tc_ac.stop;
							setverdict(fail, __SCOPE__, " : error while deleting resource !");
						}
						[] tc_ac.timeout{
							setverdict(fail, __SCOPE__, " : Timeout due to no response received from requested SUT!");
						}
					}

					// Postamble
					f_cf03Down();
				}
			
			}


		}//end DMR subgroup

		group Subscription_and_Notification {
			
			group Create {
				
				/**
				 * @desc Check that the IUT sends a subscription creation request
				 */

				testcase TC_AE_SUB_CRE_001() runs on Tester system AeSystem {
						
					var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
					
					v_cse1.start(f_AE_SUB_CRE_001());
					
					v_cse1.done;
				}

				function f_AE_SUB_CRE_001() runs on CseSimu {
				
					//variables
					var template UtTriggerPrimitive v_utRequest := m_utCreateSubscription;
					var MsgIn v_request;
					var ResponsePrimitive v_responsePrimitive;
					var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid subscription creation request";
				  	
				  	f_cf03Up();

					//send triggering primitive to SUT
					v_utRequest.requestPrimitive.to_ := f_getLocalResourceAddress();
					f_sendUtPrimitive(v_utRequest,v_action);
				  	
					//Test behavior
					tc_ac.start;
					alt{
						[] mcaPortIn.receive(mw_request(mw_createSubscription)) -> value v_request {
							tc_ac.stop;
							setverdict(pass, __SCOPE__, " : Subscription creation request is accepted!");

							//set responseStatusCode back to SUT
							v_responsePrimitive := valueof(m_responsePrimitive(int2001, v_request.primitive.requestPrimitive.requestIdentifier, omit));
		
							//send back responsePrimitive
							mcaPortIn.send(m_response(v_responsePrimitive));
						}
						[] mcaPortIn.receive {
							tc_ac.stop;
							setverdict(fail, __SCOPE__, " : Subscription creation request is rejected due to not including mandatory attributes!!");
						}
						[] tc_ac.timeout{
							setverdict(fail, __SCOPE__, " : Timeout due to no response received from requested SUT!");
						}
					}

					// Postamble
					f_cf03Down();
				}
				
				group g_AE_SUB_CRE_002 {
					
					/**
					 * @desc Check that the IUT sends a subscription creation request with optional attribute ATTRIBUTE_NAME when it is triggered
					 */
				
					testcase TC_AE_SUB_CRE_002_ACPI() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template UtTriggerPrimitive v_utRequest := m_utCreateSubscription;
						var template RequestPrimitive v_requestT := mw_createSubscription;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid subscription creation request with optional attribute accessControlPolicyIDs";
						v_utRequest.requestPrimitive.primitiveContent.subscription.notificationURI := {"UNINITIALIZED"};
						v_utRequest.requestPrimitive.primitiveContent.subscription.accessControlPolicyIDs := {"UNINITIALIZED"};
						v_requestT.primitiveContent.subscription.notificationURI := complement({*,"UNINITIALIZED",*});
						v_requestT.primitiveContent.subscription.accessControlPolicyIDs := ?;
	
						v_cse1.start(f_AE_SUB_CRE_002(v_utRequest, v_requestT, v_action));
						
						v_cse1.stop;
					}
					
					testcase TC_AE_SUB_CRE_002_ENC() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template UtTriggerPrimitive v_utRequest := m_utCreateSubscription;
						var template RequestPrimitive v_requestT := mw_createSubscription;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid subscription creation request with optional attribute createdBefore";
						v_utRequest.requestPrimitive.primitiveContent.subscription.notificationURI := {"UNINITIALIZED"};
						v_utRequest.requestPrimitive.primitiveContent.subscription.eventNotificationCriteria := m_eventNotificationCriteria();
						v_utRequest.requestPrimitive.primitiveContent.subscription.eventNotificationCriteria.createdBefore := "20301231T012345";
						v_utRequest.forcedFields := {{name := "createdBefore", value_ := "UNINITIALIZED"}};
						v_requestT.primitiveContent.subscription.notificationURI := complement({*,"UNINITIALIZED",*});
						v_requestT.primitiveContent.subscription.eventNotificationCriteria.createdBefore := ?;//Check value other than "UNINITIALIZED", done by typing
	
						v_cse1.start(f_AE_SUB_CRE_002(v_utRequest, v_requestT, v_action));
					
						v_cse1.stop;
					}
					
					testcase TC_AE_SUB_CRE_002_EXC() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template UtTriggerPrimitive v_utRequest := m_utCreateSubscription;
						var template RequestPrimitive v_requestT := mw_createSubscription;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid subscription creation request with optional attribute expirationCounter";

						v_utRequest.requestPrimitive.primitiveContent.subscription.notificationURI := {"UNINITIALIZED"};
						v_utRequest.requestPrimitive.primitiveContent.subscription.expirationCounter := 1;
						v_utRequest.forcedFields := {{name := "expirationCounter", value_ := "UNINITIALIZED"}};
						v_requestT.primitiveContent.subscription.notificationURI := complement({*,"UNINITIALIZED",*});
						v_requestT.primitiveContent.subscription.expirationCounter := ?;//Check value other than "UNINITIALIZED", done by typing
	
						v_cse1.start(f_AE_SUB_CRE_002(v_utRequest, v_requestT, v_action));
						
						v_cse1.stop;
					}
					
					testcase TC_AE_SUB_CRE_002_NFU() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template UtTriggerPrimitive v_utRequest := m_utCreateSubscription;
						var template RequestPrimitive v_requestT := mw_createSubscription;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid subscription creation request with optional attribute notificationForwardingURI";
						v_utRequest.requestPrimitive.primitiveContent.subscription.notificationURI := {"UNINITIALIZED"};
						v_utRequest.requestPrimitive.primitiveContent.subscription.notificationForwardingURI := "UNINITIALIZED";
						v_requestT.primitiveContent.subscription.notificationURI := complement({*,"UNINITIALIZED",*});
						v_requestT.primitiveContent.subscription.notificationForwardingURI := complement("UNINITIALIZED");
	
						v_cse1.start(f_AE_SUB_CRE_002(v_utRequest, v_requestT, v_action));
						
						v_cse1.stop;
					}
					
					testcase TC_AE_SUB_CRE_002_NCT() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template UtTriggerPrimitive v_utRequest := m_utCreateSubscription;
						var template RequestPrimitive v_requestT := mw_createSubscription;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid subscription creation request with optional attribute notificationContentType";
						v_utRequest.requestPrimitive.primitiveContent.subscription.notificationURI := {"UNINITIALIZED"};
						v_utRequest.requestPrimitive.primitiveContent.subscription.notificationContentType := int1;
						v_utRequest.forcedFields := {{name := "notificationContentType", value_ := "UNINITIALIZED"}};
						v_requestT.primitiveContent.subscription.notificationURI := complement({*,"UNINITIALIZED",*});
						v_requestT.primitiveContent.subscription.notificationContentType := ?;//Check value other than "UNINITIALIZED", done by typing
	
						v_cse1.start(f_AE_SUB_CRE_002(v_utRequest, v_requestT, v_action));
						
						v_cse1.stop;
					}
					 
					testcase TC_AE_SUB_CRE_002_NEC() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template UtTriggerPrimitive v_utRequest := m_utCreateSubscription;
						var template RequestPrimitive v_requestT := mw_createSubscription;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid subscription creation request with optional attribute notificationEventCat";
						v_utRequest.requestPrimitive.primitiveContent.subscription.notificationURI := {"UNINITIALIZED"};
						v_utRequest.requestPrimitive.primitiveContent.subscription.notificationEventCat.alt_1 := 100;
						v_utRequest.forcedFields := {{name := "alt_1", value_ := "UNINITIALIZED"}};
						v_requestT.primitiveContent.subscription.notificationURI := complement({*,"UNINITIALIZED",*});
						v_requestT.primitiveContent.subscription.notificationEventCat.alt_1 := 100;//Check value other than "UNINITIALIZED", done by typing
	
						v_cse1.start(f_AE_SUB_CRE_002(v_utRequest, v_requestT, v_action));
						
						v_cse1.stop;
					}
					
					testcase TC_AE_SUB_CRE_002_SU() runs on Tester system AeSystem {
						
						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
						var template UtTriggerPrimitive v_utRequest := m_utCreateSubscription;
						var template RequestPrimitive v_requestT := mw_createSubscription;
						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid subscription creation request with optional attribute subscriberURI";
						v_utRequest.requestPrimitive.primitiveContent.subscription.notificationURI := {"UNINITIALIZED"};
						v_utRequest.requestPrimitive.primitiveContent.subscription.subscriberURI := "UNINITIALIZED";
						v_requestT.primitiveContent.subscription.notificationURI := complement({*,"UNINITIALIZED",*});
						v_requestT.primitiveContent.subscription.subscriberURI := complement("UNINITIALIZED");
	
						v_cse1.start(f_AE_SUB_CRE_002(v_utRequest, v_requestT, v_action));
						
						v_cse1.stop;
					}

				}//End AE_SUB_CRE_002
			
			}//End Create Group
			
			group Notify {
				
				/**
				 * @desc Check that the IUT sends a Notify Response to the hosting CSE when receiving a Notify request containing a single notification
				 */

				testcase TC_AE_SUB_NTF_001() runs on Tester system AeSystem {
						
					var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
					
					v_cse1.start(f_AE_SUB_NTF_001());
					
					v_cse1.done;
				}

				function f_AE_SUB_NTF_001() runs on CseSimu {

					//variables
					var template UtTriggerPrimitive v_utRequest := m_utCreateAe;
					var MsgIn v_request;
					var ResponsePrimitive v_responsePrimitive;
					var PrimitiveContent v_localResource;
					var integer v_auxInteger := -1;
					var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid AE Registration CREATE Request";
  	
					f_cf03Up();

					//create Ae
					v_localResource := f_ae_generateLocalResource(valueof(m_primitiveContentAe(m_contentCreateAe(omit, omit, omit, omit))), vc_cSEBaseIndex, int2);
					v_auxInteger := f_setLocalResource(v_localResource, int2, vc_cSEBaseIndex);
					v_utRequest.requestPrimitive.to_ := f_getLocalResourceAddress();
					f_sendUtPrimitive(v_utRequest,v_action);

					tc_ac.start;
					alt{
						[] mcaPortIn.receive(mw_request(mw_createAe)) -> value v_request {
							tc_ac.stop;
							setverdict(pass, __SCOPE__, " : AE registration request is accepted!!");
							v_responsePrimitive := valueof(m_responsePrimitive(int2001, v_request.primitive.requestPrimitive.requestIdentifier, omit));
			
							//send back responsePrimitive
							mcaPortIn.send(m_response(v_responsePrimitive));
						}
						[] mcaPortIn.receive(mw_request(mw_createAe(*,?,m_contentCreateAe_Invalid))) -> value v_request {
							tc_ac.stop;
							setverdict(inconc, __SCOPE__, " : AE registration request is rejected due to not including mandatory attributes!!");
							stop;
						}
						[] tc_ac.timeout{
							setverdict(inconc, __SCOPE__, " : Timeout due to no response received from requested SUT!");
							stop;
						}

					}
					
					//create Subscription
					v_utRequest := m_utCreateSubscription;
					v_utRequest.requestPrimitive.to_ := f_getLocalResourceAddress(v_auxInteger);
					v_action := "Please, send a valid CREATE request for Subscription";
					f_sendUtPrimitive(v_utRequest,v_action);
					
					tc_ac.start;
					alt{
						[] mcaPortIn.receive(mw_request(mw_createSubscription)) -> value v_request {
							tc_ac.stop;
							setverdict(pass, __SCOPE__, " : Subscription creation request is accepted!");

							//set responseStatusCode back to SUT
							v_responsePrimitive := valueof(m_responsePrimitive(int2001, v_request.primitive.requestPrimitive.requestIdentifier, omit));

							//send back responsePrimitive
							mcaPortIn.send(m_response(v_responsePrimitive));
						}
						[] mcaPortIn.receive {
							tc_ac.stop;
							setverdict(inconc, __SCOPE__, " : Subscription creation request is rejected due to not including mandatory attributes!!");
						}
						[] tc_ac.timeout{
							setverdict(inconc, __SCOPE__, " : Timeout due to no response received from requested SUT!");
						}
					}
					

					//Test behavior
					mcaPortIn.send(m_request(m_notify));
					
					tc_ac.start;
					alt{
						[] mcaPortIn.receive(mw_response(mw_responsePrimitiveOK)) {
							tc_ac.stop;
							setverdict(pass, __SCOPE__, " : Notification response is accepted!");
						}
						[] mcaPortIn.receive {
							tc_ac.stop;
							setverdict(fail, __SCOPE__, " : Notification response is rejected due to not including mandatory attributes!");
						}
						[] tc_ac.timeout{
							setverdict(fail, __SCOPE__, " : Timeout due to no response received from requested SUT!");
						}
					}
 
					// Postamble
					f_cf03Down();
				}
				
				/**
				 * @desc Check that the IUT sends a Notify Response to the hosting CSE when receiving a Notify request containing aggregated notifications
				 */

				testcase TC_AE_SUB_NTF_002() runs on Tester system AeSystem {
						
					var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
					
					v_cse1.start(f_AE_SUB_NTF_002());
					
					v_cse1.done;
				}

				function f_AE_SUB_NTF_002() runs on CseSimu {

					//variables
					var template UtTriggerPrimitive v_utRequest := m_utCreateAe;
					var MsgIn v_request;
					var ResponsePrimitive v_responsePrimitive;
					var PrimitiveContent v_localResource;
					var integer v_auxInteger := -1;
					var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid AE Registration CREATE Request";
  	
					f_cf03Up();

					//create Ae
					v_localResource := f_ae_generateLocalResource(valueof(m_primitiveContentAe(m_contentCreateAe(omit, omit, omit, omit))), vc_cSEBaseIndex, int2);
					v_auxInteger := f_setLocalResource(v_localResource, int2, vc_cSEBaseIndex);
					v_utRequest.requestPrimitive.to_ := f_getLocalResourceAddress();
					f_sendUtPrimitive(v_utRequest,v_action);
					tc_ac.start;
					alt{
						[] mcaPortIn.receive(mw_request(mw_createAe)) -> value v_request {
							tc_ac.stop;
							setverdict(pass, __SCOPE__, " : AE registration request is accepted!!");
							v_responsePrimitive := valueof(m_responsePrimitive(int2001, v_request.primitive.requestPrimitive.requestIdentifier, omit));
			
							//send back responsePrimitive
							mcaPortIn.send(m_response(v_responsePrimitive));
						}
						[] mcaPortIn.receive(mw_request(mw_createAe(*,?,m_contentCreateAe_Invalid))) -> value v_request {
							tc_ac.stop;
							setverdict(inconc, __SCOPE__, " : AE registration request is rejected due to not including mandatory attributes!!");
							stop;
						}
						[] tc_ac.timeout{
							setverdict(inconc, __SCOPE__, " : Timeout due to no response received from requested SUT!");
							stop;
						}

					}
					
					//create Subscription
					v_utRequest := m_utCreateSubscription;
					v_utRequest.requestPrimitive.to_ := f_getLocalResourceAddress(v_auxInteger);
					v_action := "Please, send a valid CREATE request for Subscription";
					f_sendUtPrimitive(v_utRequest,v_action);
					
					tc_ac.start;
					alt{
						[] mcaPortIn.receive(mw_request(mw_createSubscription)) -> value v_request {
							tc_ac.stop;
							setverdict(pass, __SCOPE__, " : Subscription creation request is accepted!");

							//set responseStatusCode back to SUT
							v_responsePrimitive := valueof(m_responsePrimitive(int2001, v_request.primitive.requestPrimitive.requestIdentifier, omit));

							//send back responsePrimitive
							mcaPortIn.send(m_response(v_responsePrimitive));
						}
						[] mcaPortIn.receive {
							tc_ac.stop;
							setverdict(inconc, __SCOPE__, " : Subscription creation request is rejected due to not including mandatory attributes!!");
						}
						[] tc_ac.timeout{
							setverdict(inconc, __SCOPE__, " : Timeout due to no response received from requested SUT!");
						}
					}
					

					//Test behavior
					mcaPortIn.send(m_request(m_notifyAggregatedNotification));
					
					tc_ac.start;
					alt{
						[] mcaPortIn.receive(mw_response(mw_responsePrimitiveOK)) {
							tc_ac.stop;
							setverdict(pass, __SCOPE__, " : Notification response is accepted!");
						}
						[] mcaPortIn.receive {
							tc_ac.stop;
							setverdict(fail, __SCOPE__, " : Notification response is rejected due to not including mandatory attributes!");
						}
						[] tc_ac.timeout{
							setverdict(fail, __SCOPE__, " : Timeout due to no response received from requested SUT!");
						}
					}
 
					// Postamble
					f_cf03Down();
				}
				
			}//End of Notify group


		}//end SUB subgroup


	}//end group AE
	
	
	

	
}