diff --git a/evdevtest/juice_evtest.c b/evdevtest/juice_evtest.c
index f421a61..d33dda8 100644
--- a/evdevtest/juice_evtest.c
+++ b/evdevtest/juice_evtest.c
@@ -190,34 +190,34 @@
 	printf("Starting evdev ioctl cmd EVIOCGSUSPENDBLOCK/EVIOCCSUSPENDBLOCK test:\n");
 	/* Read lock command */
 	if (ioctl(fd, EVIOCGSUSPENDBLOCK, &lockvalue)) 
-		printf("[EVDEV EVIOCGSUSPENDBLOCK READ TEST1] FAIL\n");
+		printf("[EVDEV EVIOCGSUSPENDBLOCK READ TEST1]: test failed\n");
 	else 
-		printf("[EVDEV EVIOCGSUSPENDBLOCK READ TEST1] PASS\n");
+		printf("[EVDEV EVIOCGSUSPENDBLOCK READ TEST1]: test passed\n");
 
 	if (0 == lockvalue)  /*default lock value*/
-		printf("[EVDEV TEST2] PASS\n");
+		printf("[EVDEV TEST2]: test passed\n");
 	else 
-		printf("[EVDEV TEST2] FAIL\n");
+		printf("[EVDEV TEST2]: test failed\n");
 
 	/*Set user_wake_lock*/
 	if (ioctl(fd, EVIOCSSUSPENDBLOCK, enable_lock)) 
-		printf("[EVDEV EVIOCSSUSPENDBLOCK SET TEST3] FAIL\n");
+		printf("[EVDEV EVIOCSSUSPENDBLOCK SET TEST3]: test failed\n");
 	else 
-		printf("[EVDEV EVIOCSSUSPENDBLOCK SET TEST3] PASS\n");	
+		printf("[EVDEV EVIOCSSUSPENDBLOCK SET TEST3]: test passed\n");
 	
 	/*Verfify the lock value equals what we set before*/
 	if (ioctl(fd, EVIOCGSUSPENDBLOCK, &lockvalue)) 
-		perror("[EVDEV READ user_wake_lock value] FAIL\n");
+		perror("[EVDEV READ user_wake_lock value]: test failed\n");
 	
 	if (enable_lock == lockvalue)
-		printf("[EVDEV TEST4] PASS\n");
+		printf("[EVDEV TEST4]: test passed\n");
 	else {
-		printf("[EVDEV TEST4] FAIL\n");
+		printf("[EVDEV TEST4]: test failed\n");
 		goto para_test;
 	}
 
 	if ((fd_evdev_run = open("/sys/juice_input/run", O_WRONLY)) < 0) {
-		perror("[EVDEV OPEN SYS RUN] FAIL\n");
+		perror("[EVDEV OPEN SYS RUN]: test failed\n");
 		perror("Please check input kernel test module!\n");
 		goto para_test;
 	} else {
@@ -232,27 +232,27 @@
 	/*Judge the system can not be suspend*/	
 	ret = suspend_resume_test(DELAY);
 	if (1 == ret)
-		printf("[EVDEV CMD DISABLE SUSPEND TEST5] PASS\n");
+		printf("[EVDEV CMD DISABLE SUSPEND TEST5]: test passed\n");
 	else 
-		printf("[EVDEV CMD DISABLE SUSPEND TEST5] FAIL\n"); 
+		printf("[EVDEV CMD DISABLE SUSPEND TEST5]: test failed\n");
 	
 	/*Disable evdev usr_wake_lock*/
 	ioctl(fd, EVIOCSSUSPENDBLOCK, disable_lock);
 	ioctl(fd, EVIOCGSUSPENDBLOCK, &lockvalue);
 	if ( disable_lock == lockvalue)
-		printf("[EVDEV TEST6] PASS\n");
+		printf("[EVDEV TEST6]: test passed\n");
 	else 
-		printf("[EVDEV TEST6] FAIL\n");
+		printf("[EVDEV TEST6]: test failed\n");
 
 	/*Judge the system can be suspend resume*/
 	ret = suspend_resume_test(DELAY);
 	if (0 == ret)
-		printf("[EVDEV ENABLE SUSPEND/RESUME TEST7] PASS\n");
+		printf("[EVDEV ENABLE SUSPEND/RESUME TEST7]: test passed\n");
 	else 
-		printf("[EVDEV ENABLE SUSPEND/RESUME TEST7] FAIL\n"); 
+		printf("[EVDEV ENABLE SUSPEND/RESUME TEST7]: test failed\n");
 
 	if ((fd_evdev_run = open("/sys/juice_input/run", O_WRONLY)) < 0) {
-		perror("[EVDEV OPEN SYS RUN] FAIL\n");
+		perror("[EVDEV OPEN SYS RUN]: test failed\n");
 		goto para_test;
 	} else {
 		sprintf(buf, "%d\n", 0);
@@ -271,54 +271,54 @@
 	printf("Starting test EVIOCGSUSPENDBLOCK/EVIOCSSUSPENDBLOCK with different parameters:\n");
 	ret = ioctl(fd, EVIOCGSUSPENDBLOCK);
 	if (ret == -1)
-		printf("[EVDEV TEST8] PASS\n");
+		printf("[EVDEV TEST8]: test passed\n");
 	else 
-		printf("[EVDEV TEST8] FAIL\n");
+		printf("[EVDEV TEST8]: test failed\n");
 	
 	ret = ioctl(fd, EVIOCSSUSPENDBLOCK);
 	if (!ret) 
-		printf("[EVDEV TEST9] PASS\n");
+		printf("[EVDEV TEST9]: test passed\n");
 	else 
-		printf("[EVDEV TEST9] FAIL\n");
+		printf("[EVDEV TEST9]: test failed\n");
 
 	/* byte parameters test*/
 	ret = ioctl(fd, EVIOCGSUSPENDBLOCK, &parameter1);
 	if (!ret) 
-		printf("[EVDEV TEST10] PASS\n");
+		printf("[EVDEV TEST10]: test passed\n");
 	else 
-		printf("[EVDEV TEST10] FAIL\n");
+		printf("[EVDEV TEST10]: test failed\n");
 
 	ret = ioctl(fd, EVIOCSSUSPENDBLOCK, parameter1);
 	if (!ret) 
-		printf("[EVDEV TEST11] PASS\n");
+		printf("[EVDEV TEST11]: test passed\n");
 	else 
-		printf("[EVDEV TEST11] FAIL\n");
+		printf("[EVDEV TEST11]: test failed\n");
 
 	/* int parameters test*/
 	ret = ioctl(fd, EVIOCGSUSPENDBLOCK, &parameter2);
 	if (!ret) 
-		printf("[EVDEV TEST12] PASS\n");
+		printf("[EVDEV TEST12]: test passed\n");
 	else 
-		printf("[EVDEV TEST12] FAIL\n");
+		printf("[EVDEV TEST12]: test failed\n");
 	
 	ret = ioctl(fd, EVIOCSSUSPENDBLOCK, parameter2);
 	if (!ret) 
-		printf("[EVDEV TEST13] PASS\n");
+		printf("[EVDEV TEST13]: test passed\n");
 	else 
-		printf("[EVDEV TEST13] FAIL\n");
+		printf("[EVDEV TEST13]: test failed\n");
 
 	/* 64bit parameters test*/
 	ret = ioctl(fd, EVIOCGSUSPENDBLOCK, &parameter3);
 	if (!ret) 
-		printf("[EVDEV TEST14] PASS\n");
+		printf("[EVDEV TEST14]: test passed\n");
 	else 
-		printf("[EVDEV TEST14] FAIL\n");
+		printf("[EVDEV TEST14]: test failed\n");
 
 	ret = ioctl(fd, EVIOCSSUSPENDBLOCK, parameter3);
 	if (!ret) 
-		printf("[EVDEV TEST15] PASS\n");
+		printf("[EVDEV TEST15]: test passed\n");
 	else 
-		printf("[EVDEV TEST15] FAIL\n");
+		printf("[EVDEV TEST15]: test failed\n");
 
 
 /*EVIOCSCLOCKID test*/
@@ -326,33 +326,33 @@
 	clk = CLOCK_REALTIME_ALARM;
 	ret = ioctl(fd, EVIOCSCLOCKID, &clk);
 	if (ret < 0)
-		printf("[EVDEV TEST16] PASS\n");
+		printf("[EVDEV TEST16]: test passed\n");
 	else 
-		printf("[EVDEV TEST16] FAIL\n");
+		printf("[EVDEV TEST16]: test failed\n");
 	clk = CLOCK_BOOTTIME;
 	ret = ioctl(fd, EVIOCSCLOCKID, &clk);
 	if (ret < 0)
-		printf("[EVDEV TEST17] PASS\n");
+		printf("[EVDEV TEST17]: test passed\n");
 	else 
-		printf("[EVDEV TEST17] FAIL\n");
+		printf("[EVDEV TEST17]: test failed\n");
 
 	ret = ioctl(fd, EVIOCSCLOCKID);
 	if (ret < 0)
-		printf("[EVDEV TEST18] PASS\n");
+		printf("[EVDEV TEST18]: test passed\n");
 	else 
-		printf("[EVDEV TEST18] FAIL\n");
+		printf("[EVDEV TEST18]: test failed\n");
 
 /*EVIOCSCLOCKID & CLOCK_REALTIME test*/
 	clk = CLOCK_REALTIME;
 	ret = ioctl(fd, EVIOCSCLOCKID, &clk);
 	if (ret < 0)
-		printf("[EVDEV TEST19] FAIL\n");
+		printf("[EVDEV TEST19]: test failed\n");
 	else 
-		printf("[EVDEV TEST19] PASS\n");
+		printf("[EVDEV TEST19]: test passed\n");
 
 	/*Start generate event here!*/
 	if ((fd_evdev_run = open("/sys/juice_input/run", O_WRONLY)) < 0) {
-		perror("[EVDEV OPEN SYS RUN] FAIL\n");
+		perror("[EVDEV OPEN SYS RUN]: test failed\n");
 		goto finish;
 	} else {
 		sprintf(buf, "%d\n", 1);
@@ -378,12 +378,12 @@
 		perror("Clock MONOTONIC gettime2 FAILED\n");
 	
 	if (tp1.tv_sec <= ev[0].time.tv_sec && ev[0].time.tv_sec <= tp2.tv_sec)
-		printf("[EVDEV TEST20] PASS\n");
+		printf("[EVDEV TEST20]: test passed\n");
 	else 
-		printf("[EVDEV TEST20] FAIL\n");
+		printf("[EVDEV TEST20]: test failed\n");
 
 	if ((fd_evdev_run = open("/sys/juice_input/run", O_WRONLY)) < 0) {
-		perror("[EVDEV OPEN SYS RUN] FAIL\n");
+		perror("[EVDEV OPEN SYS RUN]: test failed\n");
 		goto finish;
 	} else {
 		sprintf(buf, "%d\n", 0);
@@ -404,12 +404,12 @@
 	clk = CLOCK_MONOTONIC;
 	ret = ioctl(fd, EVIOCSCLOCKID, &clk);
 	if (ret < 0) 
-		printf("[EVDEV TEST21] FAIL\n");
+		printf("[EVDEV TEST21]: test failed\n");
 	else 
-		printf("[EVDEV TEST21] PASS\n");
+		printf("[EVDEV TEST21]: test passed\n");
 
 	if ((fd_evdev_run = open("/sys/juice_input/run", O_WRONLY)) < 0) {
-		perror("[EVDEV OPEN SYS RUN] FAIL\n");
+		perror("[EVDEV OPEN SYS RUN]: test failed\n");
 		goto finish;
 	} else {
 		sprintf(buf, "%d\n", 1);
@@ -434,13 +434,13 @@
 		perror("Clock MONOTONIC gettime2 FAILED\n");
 	
 	if (tp1.tv_sec <= ev[0].time.tv_sec && ev[0].time.tv_sec<= tp2.tv_sec)
-		printf("[EVDEV TEST22] PASS\n");
+		printf("[EVDEV TEST22]: test passed\n");
 	else 
-		printf("[EVDEV TEST22] FAIL\n");
+		printf("[EVDEV TEST22]: test failed\n");
 
 	/*Stop generate input dev event here!*/
 	if ((fd_evdev_run = open("/sys/juice_input/run", O_WRONLY)) < 0) {
-		perror("[EVDEV OPEN SYS RUN] FAIL\n");
+		perror("[EVDEV OPEN SYS RUN]: test failed\n");
 		goto finish;
 	} else {
 		sprintf(buf, "%d\n", 0);
