diff --git a/tests/scripts/generate_code.py b/tests/scripts/generate_code.py
index 7af6fdf..f81ec91 100644
--- a/tests/scripts/generate_code.py
+++ b/tests/scripts/generate_code.py
@@ -427,16 +427,15 @@
     noT, dep = ('!', dep[1:]) if dep[0] == '!' else ('', dep)
     assert len(dep) > 0, "Dependency should not be an empty string."
     dep_check = '''
-if ( dep_id == {id} )
-{{
-#if {noT}defined({macro})
-    return( DEPENDENCY_SUPPORTED );
-#else
-    return( DEPENDENCY_NOT_SUPPORTED );
-#endif
-}}
-else
-'''.format(noT=noT, macro=dep, id=dep_id)
+        case {id}:
+            {{
+            #if {noT}defined({macro})
+                ret = DEPENDENCY_SUPPORTED;
+            #else
+                ret = DEPENDENCY_NOT_SUPPORTED;
+            #endif
+            }}
+            break;'''.format(noT=noT, macro=dep, id=dep_id)
     return dep_check
 
 
@@ -451,12 +450,11 @@
     assert exp_id > -1, "Expression Id should be a positive integer."
     assert len(exp) > 0, "Expression should not be an empty string."
     exp_code = '''
-if ( exp_id == {exp_id} )
-{{
-    *out_value = {expression};
-}}
-else
-'''.format(exp_id=exp_id, expression=exp)
+        case {exp_id}:
+            {{
+                *out_value = {expression};
+            }}
+            break;'''.format(exp_id=exp_id, expression=exp)
     return exp_code
 
 
@@ -527,28 +525,16 @@
     :param expression_code: 
     :return: 
     """
-    # void unused params
-    if len(dep_check_code) == 0:
-        dep_check_code = '(void) dep_id;\n'
-    if len(expression_code) == 0:
-        expression_code = '(void) exp_id;\n'
-        expression_code += '(void) out_value;\n'
-
     if len(suite_deps):
         ifdef = gen_deps_one_line(suite_deps)
         dep_check_code = '''
 {ifdef}
 {code}
-#else
-(void) dep_id;
 #endif
 '''.format(ifdef=ifdef, code=dep_check_code)
         expression_code = '''
 {ifdef}
 {code}
-#else
-(void) exp_id;
-(void) out_value;
 #endif
 '''.format(ifdef=ifdef, code=expression_code)
     return dep_check_code, expression_code
diff --git a/tests/suites/main_test.function b/tests/suites/main_test.function
index e294e36..93b32cc 100644
--- a/tests/suites/main_test.function
+++ b/tests/suites/main_test.function
@@ -63,12 +63,22 @@
  */
 int get_expression( int32_t exp_id, int32_t * out_value )
 {{
+    int ret = KEY_VALUE_MAPPING_FOUND;
+
+    (void) exp_id;
+    (void) out_value;
+
+    switch( exp_id )
+    {{
 {expression_code}
 #line {line_no} "suites/main_test.function"
-    {{
-        return( KEY_VALUE_MAPPING_NOT_FOUND );
+        default:
+           {{
+                ret = KEY_VALUE_MAPPING_NOT_FOUND;
+           }}
+           break;
     }}
-    return( KEY_VALUE_MAPPING_FOUND );
+    return( ret );
 }}
 
 
@@ -85,11 +95,18 @@
  */
 int dep_check( int dep_id )
 {{
+    int ret = DEPENDENCY_NOT_SUPPORTED;
+
+    (void) dep_id;
+
+    switch( dep_id )
+    {{
 {dep_check_code}
 #line {line_no} "suites/main_test.function"
-    {{
-         return( DEPENDENCY_NOT_SUPPORTED );
+        default:
+            break;
     }}
+    return( ret );
 }}
 
 
