From 1859e10fc79474a4a311da4ab86cd03fa0d7ba1d Mon Sep 17 00:00:00 2001
From: pkulkarni <pkulkarni75@gmail.com>
Date: Thu, 15 Jun 2017 14:42:21 +0200
Subject: [PATCH] Further improvements to DISCOVERY testcases

---
 LibOneM2M/OneM2M_Functions.ttcn | 132 ++++++++++++--------------------
 LibOneM2M/OneM2M_Templates.ttcn |   2 +-
 OneM2M_Testcases.ttcn           |   6 +-
 3 files changed, 54 insertions(+), 86 deletions(-)

diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index b49b3b2..f16bf95 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -868,102 +868,70 @@ module OneM2M_Functions {
     	
     		} //end f_cse_notifyProcedure
     		
-    		function f_cse_getResourceAddress_IsNonHierarchical(in template PrimitiveContent p_content) runs on CseTester return boolean {
-    			var boolean v_IsNonHierarchical := false;
+    		function f_isNonHierarchical(XSD.ID p_resourceAddress) runs on Tester return boolean {	
     			var integer i;
-    			var integer v_NoOfSlashes:= -1;
-    			var boolean v_CseScope := f_cse_getResourceAddress_IsScopeCseRelative();
-    			var boolean v_SpScope:= f_cse_getResourceAddress_IsScopeSpRelative();
-    			var boolean v_AbsScope:= f_cse_getResourceAddress_IsScopeAbsoluteRelative();
-    			 
-    			if(v_CseScope and PX_UNSTRUCTURED){
-    				for (i := 0; i < lengthof(p_content.uRIList); i:= i+1){
-    					if(match (p_content.uRIList[i], "/")){
-							v_NoOfSlashes:= v_NoOfSlashes+1;
-    					}
+    			var integer v_nbOfSlashes:= 0;
+    			
+				for (i := 0; i < lengthof(p_resourceAddress); i:= i+1){
+					if(match (p_resourceAddress[i], "/")){
+						v_nbOfSlashes:= v_nbOfSlashes+1;
+					}
+				}
+				
+    			if(f_isScopeCseRelative(p_resourceAddress)) {
+    				if(v_nbOfSlashes == 0 ) {
+    					return true;
+    				} else {
+    					return false;
     				}
-    			} else if (v_SpScope and PX_UNSTRUCTURED){
-					for (i := 0; i < lengthof(p_content.uRIList); i:= i+1){
-						if(match (p_content.uRIList[i], "/")){
-							v_NoOfSlashes:= v_NoOfSlashes+1;
-						}
+    				
+    			} else if (f_isScopeSpRelative(p_resourceAddress)){
+					if(v_nbOfSlashes == 2 ) {
+						return true;
+					} else {
+						return false;
 					}
-    			} else if (v_AbsScope and PX_UNSTRUCTURED){
-					for (i := 0; i < lengthof(p_content.uRIList); i:= i+1){
-						if(match (p_content.uRIList[i], "/")){
-							v_NoOfSlashes:= v_NoOfSlashes+1;
-						}
+    			} else if (f_isScopeAbsolute(p_resourceAddress)){
+					if(v_nbOfSlashes == 4 ) {
+						return true;
+					} else {
+						return false;
 					}
+    			} else {
+    			   return false;
     			}
-    			
-    			if ( (v_NoOfSlashes == 0) or (v_NoOfSlashes == 1) or (v_NoOfSlashes == 3)){
-					v_IsNonHierarchical := true;
-    			}
-    			
-    			return v_IsNonHierarchical;
     		}
     		
-    		function f_cse_getResourceAddress_IsHierarchical(in template PrimitiveContent p_content) runs on CseTester return boolean {
-				var boolean v_IsHierarchical := false;
-				var integer i;
-				var integer v_NoOfSlashes:= -1;
-				var boolean v_CseScope := f_cse_getResourceAddress_IsScopeCseRelative();
-				var boolean v_SpScope:= f_cse_getResourceAddress_IsScopeSpRelative();
-				var boolean v_AbsScope:= f_cse_getResourceAddress_IsScopeAbsoluteRelative();
-				
-				if(v_CseScope and (not (PX_UNSTRUCTURED))){
-					for (i := 0; i < lengthof(p_content.uRIList); i:= i+1){
-						if(match (p_content.uRIList[i], "/")){
-							v_NoOfSlashes:= v_NoOfSlashes+1;
-						}
-					}
-				} else if (v_SpScope and (not(PX_UNSTRUCTURED))){
-					for (i := 0; i < lengthof(p_content.uRIList); i:= i+1){
-						if(match (p_content.uRIList[i], "/")){
-							v_NoOfSlashes:= v_NoOfSlashes+1;
-						}
-					}
-				} else if (v_AbsScope and (not (PX_UNSTRUCTURED))){
-					for (i := 0; i < lengthof(p_content.uRIList); i:= i+1){
-						if(match (p_content.uRIList[i], "/")){
-							v_NoOfSlashes:= v_NoOfSlashes+1;
-						}
-					}
-				}
-
-				if ( (v_NoOfSlashes == 1) or (v_NoOfSlashes == 2) or (v_NoOfSlashes == 4)) {
-					v_IsHierarchical := true;
-				}
-
-				return v_IsHierarchical;
+    		function f_isHierarchical(XSD.ID p_resourceAddress) runs on Tester return boolean {
+				if(f_isNonHierarchical(p_resourceAddress)) {
+					return false;
+				} else {
+					return true;
+				}	
     		} 
 			
-			function f_cse_getResourceAddress_IsScopeCseRelative() runs on CseTester return boolean {
-			  var boolean v_CseScope:= false;
-			  
-			  if (PX_ADDRESSING_FORMAT == e_cseRelative){
-				v_CseScope := true; 
+			function f_isScopeCseRelative(XSD.ID p_resourceAddress) runs on Tester return boolean { 
+			  if (p_resourceAddress[0] != "/") {
+				return true;
+			  } else {
+			  	return false;
 			  }
-			  
-			  return v_CseScope;
 			}
 			
-			function f_cse_getResourceAddress_IsScopeSpRelative() runs on CseTester return boolean {
-			  var boolean v_SpScope:= false;
-			  if (PX_ADDRESSING_FORMAT == e_spRelative){
-			  	v_SpScope := true;
-			  }
-			  
-			  return v_SpScope;
+			function f_isScopeSpRelative(XSD.ID p_resourceAddress) runs on Tester return boolean {	
+			  	if ((p_resourceAddress[0] == "/") and (p_resourceAddress[1] != "/")){
+				  return true;
+				} else {
+				  return false;
+				}
 			}
 			
-			function f_cse_getResourceAddress_IsScopeAbsoluteRelative() runs on CseTester return boolean {
-			  var boolean v_AbsScope:= false;
-			  if(PX_ADDRESSING_FORMAT == e_absolute){
-			  	v_AbsScope := true;
-			  }
-			  
-			  return v_AbsScope;
+			function f_isScopeAbsolute(XSD.ID p_resourceAddress) runs on Tester return boolean {
+				if ((p_resourceAddress[0] == "/") and (p_resourceAddress[1] == "/")) {
+				  return true;
+				} else {
+				  return false;
+				}
 			}
 	
 		}//end group helpingFunctions
diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn
index 0f0d393..a9809ab 100644
--- a/LibOneM2M/OneM2M_Templates.ttcn
+++ b/LibOneM2M/OneM2M_Templates.ttcn
@@ -2788,7 +2788,7 @@ module OneM2M_Templates {
 		template ResponsePrimitive mw_responseDiscovery := {
 			responseStatusCode := int2000,
 			requestIdentifier := ?,
-			primitiveContent := ?,
+			primitiveContent := {uRIList := ?},
 			to_ := *,
 			from_ := *,
 			originatingTimestamp := *,
diff --git a/OneM2M_Testcases.ttcn b/OneM2M_Testcases.ttcn
index 9ce7f6b..5e5551b 100644
--- a/OneM2M_Testcases.ttcn
+++ b/OneM2M_Testcases.ttcn
@@ -10396,9 +10396,9 @@ module OneM2M_Testcases {
 					tc_ac.start;
 					alt {
 					
-						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2000))) -> value v_response {
+						[] mcaPort.receive(mw_response(mw_responseDiscovery)) -> value v_response {
 							tc_ac.stop;
-							if(not ischosen(v_response.primitive.responsePrimitive.primitiveContent.uRIList)){
+							if(sizeof(v_response.primitive.responsePrimitive.primitiveContent.uRIList) == 0){
 							  setverdict(pass, testcasename() & ": No Content is present");	
 							}
 							else
@@ -10455,7 +10455,7 @@ module OneM2M_Testcases {
 						
 						[] mcaPort.receive(mw_response(mw_responseDiscovery)) -> value v_response {
 							tc_ac.stop;
-							if (f_cse_getResourceAddress_IsNonHierarchical(v_response.primitive.responsePrimitive.primitiveContent)){
+							if (f_isNonHierarchical(v_response.primitive.responsePrimitive.primitiveContent.uRIList[0])){
 							  setverdict(pass, testcasename() & ": Unstructured addresses present in URIList representation");
 							} else {
 							  setverdict(fail, testcasename() & ": Unstructured addresses absent in URIList representation"); 
-- 
GitLab