compilation and test