add Makefile && test cases