diff --git a/MISRA-C/test.c b/MISRA-C/test.c
new file mode 100644
index 0000000000000000000000000000000000000000..b52823d91c3a11acb6388ba0f8447458c1b9bd71
--- /dev/null
+++ b/MISRA-C/test.c
@@ -0,0 +1,243 @@
+#include <stdio.h>
+#include <stdlib.h>
+/* test code for input var */
+
+struct test_struct{
+
+	int a;
+	int b;
+	int c;
+
+}TEST_struct;
+
+
+int g_var1 = 0;
+
+void exFunc(int * var);
+int VoidPtrTest(void* arg);
+int inputVarTest(int a);
+int bitFunc(struct strc data);
+int  ArrayTest(int a[10], int b[20]);
+int definedFunc(int arg);
+void definedStubTest(int a);
+void funcCall();
+void localVarTest();
+int pointerTest(struct data *pData);
+
+
+int inputVarTest(int a){
+	int ret = 0;
+	
+	if (a == 100 && g_var1 == 10) {
+		ret = 100;
+	}else if(a == 50 && g_var1 ==5){
+		ret =50;
+	}else {
+		ret =-1;
+	}
+	
+	return ret;
+}
+struct strc{
+	unsigned char state;
+};
+
+int bitFunc(struct strc data){
+
+
+	struct strc data2;
+	if((data.state & 0x02) == 0x02){
+		printf("state1 = %X\n",2);
+		printf("state2 = %X\n",data.state);
+		printf("state3 = %d\n",data.state);
+	}else{
+		printf("state4 = %X\n",0x02 & 0x02);
+		printf("state5 = %X\n",data.state);
+		printf("state6 = %d\n",data.state);
+	}
+	return 0;
+}
+
+/* test code for undefined func Stub */
+int undefinedFunc(int arg);
+int definedFunc(int arg){
+	return (arg * 12) + (arg * 100);
+}
+
+void undefinedStubTest(int a)
+{
+	int j;
+	int	l;
+
+	j = undefinedFunc(l);
+	if(j == 100 ){
+		j=0;
+
+	}else{
+		j=1;
+	}
+}
+
+/* test code for defined func Stub */
+void definedStubTest(int a)
+{
+	int j, l;
+
+	j = definedFunc(a);
+	if(j == 112 ){
+		j=0;
+	}else if(j ==336){
+		j=1;
+	}else{
+		j=2;
+	}
+}
+
+
+/* Test code for void pointer */
+struct S {
+   int m1;
+   float m2;
+};
+
+int VoidPtrTest(void* arg)
+{
+   int ret = 0;
+   struct S *ptr = (struct S*)arg;
+   if (ptr->m1 == 0) {
+      ret = 0;
+   }else{
+      ret = 1;
+   }
+   return ret;
+}
+
+/* test code for static local var */
+void staticVarTest(){
+	static int a = 0;
+
+	if(a==0){
+		a++;
+		return;
+	}else if(a==1){
+		a=3;
+		return;
+	}else if(a==3){
+		a++;
+		return;
+	}
+	else
+	{
+		/* exception */
+	}
+
+	return;
+}
+
+void funcCall(){
+	testA();
+	testB();
+	testC();
+}
+/* test code for local var - call by reference */
+void localVarTest(){
+	int local_var =0;
+	int flag = 0;
+	exFunc(&local_var);
+	if(local_var == 1){
+		flag = 1;
+	}else if(local_var ==2){
+		flag = 2;
+	}else{
+		flag = 0;
+	}
+}
+
+/* test code for Null Check */
+struct data {
+	int a;
+	char *b;
+};
+
+int testMe(int a, int b , char c){
+	return 0;
+}
+int pointerTest(struct data *pData)
+{
+	if(pData == 0){
+		return -1;
+	}else if(pData->a == 0){
+		return 0;
+	}else if (pData->a == 1){
+		return 1;
+	}
+	else
+	{
+		/* exception */
+	}
+	pData->b = (char *)malloc(10);
+	strcpy(pData->b, "mwyun");
+}
+
+
+#ifdef UNIT_TARGET
+/* Test code for virtual memory */
+
+#define READ_REG(ADDR) (*(volatile unsigned long*)(ADDR))
+typedef struct strname{
+	int a;
+}AAA;
+#define REG_BASE_ADDR 0xFFE40000U
+#define (*(unsigned int *)AAA) 0xFFFF0230u
+typedef unsigned char	uint8_t;			// unsigned  8-bits : begins with 'b'
+typedef char			int8_t;			//   signed  8-bits : begins with 'c'
+typedef unsigned int	uint16_t;			// unsigned 16-bits : begins with 'w'
+typedef int				int16_t;			//   signed 16-bits : begins with 'i'
+typedef unsigned long	uint32_t;			// unsigned 32-bits : begins with 'u'
+typedef long			int32_t;			//   signed 32-bits : begins with 'l'
+typedef float           float32_t;			// single precision IEEE 754 32-bits : begins with Capital
+typedef double			int64_t;
+
+extern volatile uint32_t ulAdcColumnWriteIndex;
+int virtualMemoryTest1(){
+	*(uint8_t *) ((((uint32_t)0x68000000) + (((uint32_t)0x2340) * 2)) + (ulAdcColumnWriteIndex * ((uint32_t)8) )+ 0)=100;
+	/*if(READ_REG(REG_BASE_ADDR)==10){
+		return 10;
+	}*/
+	return -1;
+}
+
+
+void virtualMemoryTest2(void)
+{
+    if(AAA&0x01==0x01){}
+}
+
+/* test code for infinite loop */
+int infiniteLoopTest(int arg){
+	
+	while(1){
+		return arg;
+	}
+}
+
+#endif
+
+int  ArrayTest(int a[10], int b[20])
+{
+	if (a[5] == 0x3 && b[10]== 0x4)
+	{
+		return 0;
+	}else if( a[9]==0x1 || b[15] == 0x10)
+	{
+		return 0;
+	}
+	else
+	{
+		/* exception */
+	}
+
+	return 0;
+}
+
+