Exercise-9.1: Unit test of APIs
- Based on below table create unit test functions for positive cases and negative cases 
- Example : Positive cases - module_1_decl_4_test_1( ) –> char x[10] = “bangalore”; fun(x); 
- module_1_decl_4_test_2( ) –> char x[10] = “b”; fun(x); 
- module_1_decl_4_test_3( ) –> char x[10] = “”; fun(x); 
- module_1_decl_4_test_4( ) –> char x[10] = “\0”; fun(x); 
- module_1_decl_4_test_5( ) –> char x[10] = “banga\0lore”; fun(x); 
- module_1_decl_4_test_6( ) –> char x[10] = “\0bangalore”; fun(x); 
 
| module_1 | Test Cases without structures | Snippet | 
| decl_1 | Input to an API is simple variable | char x; fun(x); | 
| decl_2 | Input to an API is address of simple variable | char x; fun(&x); | 
| decl_3 | Input to an API is pointer pointing to a simple variable | char x; *p; p = &x; fun(p); | 
| decl_4 | Input to an API is a single dimension array | char x[10]; fun(x); | 
| decl_5 | Input to an API is a pointer pointing to a single dimension array | char x[10]; *p; p = x; fun(p); | 
| decl_6 | Input to an API is a single dimension array which is part of two dimensional array | char x[2][3]; fun(x[1]); | 
| decl_7 | Input to an API is a pointer pointing to a single dimension array which is part of two dimensional array | char x[2][3]; *p; p = x[1]; fun(p); | 
| decl_8 | Input to an API is a pointer pointing to a memory block in heap - Single Pointer - Allocated using malloc | char *p=malloc(); fun(p); | 
| decl_9 | Input to an API is a pointer pointing to a memory block in heap - Double Pointer - Allocated using malloc | char **p=malloc(); *p=malloc(); fun(*p); | 
| decl_10 | Input to an API is a pointer pointing to a memory block in heap - Triple Pointer - Allocated using malloc | char ***p=malloc(); **p=malloc(); *p=malloc(); fun(*p); | 
| decl_11 | Input to an API is a pointer pointing to a memory block in heap - Single Pointer - Allocated using calloc | char *p=calloc(); fun(p); | 
| decl_12 | Input to an API is a pointer pointing to a memory block in heap - Double Pointer - Allocated using calloc | char **p=calloc(); *p=calloc(); fun(*p); | 
| decl_13 | Input to an API is a pointer pointing to a memory block in heap - Triple Pointer - Allocated using calloc | char ***p=calloc(); **p=calloc(); *p=calloc(); fun(*p); | 
| decl_14 | Input to an API is a pointer pointing to a memory block in heap - Single Pointer - Allocated using realloc | char *p=realloc(); fun(p); | 
| decl_15 | Input to an API is a pointer pointing to a memory block in heap - Double Pointer - Allocated using realloc | char **p=realloc(); *p=realloc(); fun(*p) | 
| decl_16 | Input to an API is a pointer pointing to a memory block in heap - Triple Pointer - Allocated using realloc | char ***p=realloc(); **p=realloc(); *p=realloc(); fun(*p); | 
| module_2 | Test Cases with structure instance | Snippet | 
| decl_1 | Input to an API is simple variable - Accessed using a structure instance | struct ABC {char x;} Q; | 
| decl_2 | Input to an API is address of simple variable - Accessed using a structure instance | struct ABC {char x;} Q; | 
| decl_3 | Input to an API is pointer pointing to a simple variable - Accessed using a structure instance | struct ABC {char x,*p;} Q; | 
| decl_4 | Input to an API is a single dimension array - Accessed using a structure instance | struct ABC {char x[10];} Q; | 
| decl_5 | Input to an API is a pointer pointing to a single dimension array - Accessed using a structure instance | struct ABC {char x[10], *p;} Q; | 
| decl_6 | Input to an API is a single dimension array which is part of two dimensional array - Accessed using a structure instance | struct ABC {char x[2][3];} Q; | 
| decl_7 | Input to an API is a pointer pointing to a single dimension array which is part of two dimensional array - Accessed using a structure instance | struct ABC {char x[2][3], *p;} Q; | 
| decl_8 | Input to an API is a pointer pointing to a memory block in heap - Single Pointer - Allocated using malloc - Accessed using a structure instance | struct ABC {char *p;} Q; | 
| decl_9 | Input to an API is a pointer pointing to a memory block in heap - Double Pointer - Allocated using malloc - Accessed using a structure instance | struct ABC {char **p;} Q; | 
| decl_10 | Input to an API is a pointer pointing to a memory block in heap - Triple Pointer - Allocated using malloc - Accessed using a structure instance | struct ABC {char ***p;} Q; | 
| decl_11 | Input to an API is a pointer pointing to a memory block in heap - Single Pointer - Allocated using calloc - Accessed using a structure instance | struct ABC {char *p;} Q; | 
| decl_12 | Input to an API is a pointer pointing to a memory block in heap - Double Pointer - Allocated using calloc - Accessed using a structure instance | struct ABC {char **p;} Q; | 
| decl_13 | Input to an API is a pointer pointing to a memory block in heap - Triple Pointer - Allocated using calloc - Accessed using a structure instance | struct ABC {char ***p;} Q; | 
| decl_14 | Input to an API is a pointer pointing to a memory block in heap - Single Pointer - Allocated using realloc - Accessed using a structure instance | struct ABC {char *p;} Q; | 
| decl_15 | Input to an API is a pointer pointing to a memory block in heap - Double Pointer - Allocated using realloc - Accessed using a structure instance | struct ABC {char **p;} Q; | 
| decl_16 | Input to an API is a pointer pointing to a memory block in heap - Triple Pointer - Allocated using realloc - Accessed using a structure instance | struct ABC {char ***p;} Q; | 
| module_3 | Test Cases with structure single pointer | Snippet | 
| decl_1 | Input to an API is simple variable - Accessed using a structure single pointer | struct ABC {char x;} *Q; | 
| decl_2 | Input to an API is address of simple variable - Accessed using a structure single pointer | struct ABC {char x;} *Q; | 
| decl_3 | Input to an API is pointer pointing to a simple variable - Accessed using a structure single pointer | struct ABC {char x,*p;} *Q; | 
| decl_4 | Input to an API is a single dimension array - Accessed using a structure single pointer | struct ABC {char x[10];} *Q; | 
| decl_5 | Input to an API is a pointer pointing to a single dimension array - Accessed using a structure single pointer | struct ABC {char x[10], *p;} *Q; | 
| decl_6 | Input to an API is a single dimension array which is part of two dimensional array - Accessed using a structure single pointer | struct ABC {char x[2][3];} *Q; | 
| decl_7 | Input to an API is a pointer pointing to a single dimension array which is part of two dimensional array - Accessed using a structure single pointer | struct ABC {char x[2][3], *p;} *Q; | 
| decl_8 | Input to an API is a pointer pointing to a memory block in heap - Single Pointer - Allocated using malloc - Accessed using a structure single pointer | struct ABC {char *p;} *Q; | 
| decl_9 | Input to an API is a pointer pointing to a memory block in heap - Double Pointer - Allocated using malloc - Accessed using a structure single pointer | struct ABC {char **p;} *Q; | 
| decl_10 | Input to an API is a pointer pointing to a memory block in heap - Triple Pointer - Allocated using malloc - Accessed using a structure single pointer | struct ABC {char ***p;} *Q; | 
| decl_11 | Input to an API is a pointer pointing to a memory block in heap - Single Pointer - Allocated using calloc - Accessed using a structure single pointer | struct ABC {char *p;} *Q; | 
| decl_12 | Input to an API is a pointer pointing to a memory block in heap - Double Pointer - Allocated using calloc - Accessed using a structure single pointer | struct ABC {char **p;} *Q; | 
| decl_13 | Input to an API is a pointer pointing to a memory block in heap - Triple Pointer - Allocated using calloc - Accessed using a structure single pointer | struct ABC {char ***p;} *Q; | 
| decl_14 | Input to an API is a pointer pointing to a memory block in heap - Single Pointer - Allocated using realloc - Accessed using a structure single pointer | struct ABC {char *p;} *Q; | 
| decl_15 | Input to an API is a pointer pointing to a memory block in heap - Double Pointer - Allocated using realloc - Accessed using a structure single pointer | struct ABC {char **p;} *Q; | 
| decl_16 | Input to an API is a pointer pointing to a memory block in heap - Triple Pointer - Allocated using realloc - Accessed using a structure single pointer | struct ABC {char ***p;} *Q; | 
| module_4 | Test Cases with structure double pointer | Snippet | 
| decl_1 | Input to an API is simple variable - Accessed using a structure double pointer | struct ABC {char x;} **Q; | 
| decl_2 | Input to an API is address of simple variable - Accessed using a structure double pointer | struct ABC {char x;} **Q; | 
| decl_3 | Input to an API is pointer pointing to a simple variable - Accessed using a structure double pointer | struct ABC {char x, *p;} **Q; | 
| decl_4 | Input to an API is a single dimension array - Accessed using a structure double pointer | struct ABC {char x[10];} **Q; | 
| decl_5 | Input to an API is a pointer pointing to a double dimension array - Accessed using a structure double pointer | struct ABC {char x[10], *p;} **Q; | 
| decl_6 | Input to an API is a double dimension array which is part of two dimensional array - Accessed using a structure double pointer | struct ABC {char x[2][3];} **Q; | 
| decl_7 | Input to an API is a pointer pointing to a double dimension array which is part of two dimensional array - Accessed using a structure double pointer | struct ABC {char x[2][3], *p;} **Q; | 
| decl_8 | Input to an API is a pointer pointing to a memory block in heap - Single Pointer - Allocated using malloc - Accessed using a structure double pointer | struct ABC {char *p;} **Q; | 
| decl_9 | Input to an API is a pointer pointing to a memory block in heap - Double Pointer - Allocated using malloc - Accessed using a structure double pointer | struct ABC {char **p;} **Q; | 
| decl_10 | Input to an API is a pointer pointing to a memory block in heap - Triple Pointer - Allocated using malloc - Accessed using a structure double pointer | struct ABC {char ***p;} **Q; | 
| decl_11 | Input to an API is a pointer pointing to a memory block in heap - Single Pointer - Allocated using calloc - Accessed using a structure double pointer | struct ABC {char *p;} **Q; | 
| decl_12 | Input to an API is a pointer pointing to a memory block in heap - Double Pointer - Allocated using calloc - Accessed using a structure double pointer | struct ABC {char **p;} **Q; | 
| decl_13 | Input to an API is a pointer pointing to a memory block in heap - Triple Pointer - Allocated using calloc - Accessed using a structure double pointer | struct ABC {char ***p;} **Q; | 
| decl_14 | Input to an API is a pointer pointing to a memory block in heap - Single Pointer - Allocated using realloc - Accessed using a structure double pointer | struct ABC {char *p;} **Q; | 
| decl_15 | Input to an API is a pointer pointing to a memory block in heap - Double Pointer - Allocated using realloc - Accessed using a structure double pointer | struct ABC {char **p;} **Q; | 
| decl_16 | Input to an API is a pointer pointing to a memory block in heap - Triple Pointer - Allocated using realloc - Accessed using a structure double pointer | struct ABC {char ***p;} **Q; | 
| module_5 | Test Cases with structure triple pointer | Snippet | 
| decl_1 | Input to an API is simple variable - Accessed using a structure triple pointer | struct ABC {char x;} ***Q; | 
| decl_2 | Input to an API is address of simple variable - Accessed using a structure triple pointer | struct ABC {char x;} ***Q; | 
| decl_3 | Input to an API is pointer pointing to a simple variable - Accessed using a structure triple pointer | struct ABC {char x, *p;} ***Q; | 
| decl_4 | Input to an API is a single dimension array - Accessed using a structure triple pointer | struct ABC {char x[10];} ***Q; | 
| decl_5 | Input to an API is a pointer pointing to a triple dimension array - Accessed using a structure triple pointer | struct ABC {char x[10], *p;} ***Q; | 
| decl_6 | Input to an API is a triple dimension array which is part of two dimensional array - Accessed using a structure triple pointer | struct ABC {char x[2][3];} ***Q; | 
| decl_7 | Input to an API is a pointer pointing to a triple dimension array which is part of two dimensional array - Accessed using a structure triple pointer | struct ABC {char x[2][3], *p;} ***Q; | 
| decl_8 | Input to an API is a pointer pointing to a memory block in heap - Single Pointer - Allocated using malloc - Accessed using a structure triple pointer | struct ABC {char *p;} ***Q; | 
| decl_9 | Input to an API is a pointer pointing to a memory block in heap - Double Pointer - Allocated using malloc - Accessed using a structure triple pointer | struct ABC {char **p;} ***Q; | 
| decl_10 | Input to an API is a pointer pointing to a memory block in heap - Triple Pointer - Allocated using malloc - Accessed using a structure triple pointer | struct ABC {char ***p;} ***Q; | 
| decl_11 | Input to an API is a pointer pointing to a memory block in heap - Single Pointer - Allocated using calloc - Accessed using a structure triple pointer | struct ABC {char *p;} ***Q; | 
| decl_12 | Input to an API is a pointer pointing to a memory block in heap - Double Pointer - Allocated using calloc - Accessed using a structure triple pointer | struct ABC {char **p;} ***Q; | 
| decl_13 | Input to an API is a pointer pointing to a memory block in heap - Triple Pointer - Allocated using calloc - Accessed using a structure triple pointer | struct ABC {char ***p;} ***Q; | 
| decl_14 | Input to an API is a pointer pointing to a memory block in heap - Single Pointer - Allocated using realloc - Accessed using a structure triple pointer | struct ABC {char *p;} ***Q; | 
| decl_15 | Input to an API is a pointer pointing to a memory block in heap - Double Pointer - Allocated using realloc - Accessed using a structure triple pointer | struct ABC {char **p;} ***Q; | 
| decl_16 | Input to an API is a pointer pointing to a memory block in heap - Triple Pointer - Allocated using realloc - Accessed using a structure triple pointer | struct ABC {char ***p;} ***Q; |