https://sheremetov.com/oop/test-driven-development/