unit tests and functional tests