added unit tests and travis ci buiding script