- For functionality in my project I was able to reach cracking method and command line interface
- For OOP I was able implement 1 module where there are methods that two classes share. The module I made is called shiftable. Where all my offsets and keys are combined to make my shifts. I broke down my project in four classes: Encryption, Decryption, Cracking, and Enigma.
- For ruby convention I was able to make classes that made sense and used correct syntax and indentation. Most enumerables that I chose made sense on why I used them. The only time I used a hash is when I created.
- For TDD I was able to use stubs. The stubs I used were for date generator and key generator since they both resulted in randomness everytime I tested. I also tested obvious edge caseses like capitaliziation and the implementaion of special characters or with and without date or keys. My test coverage result is 100% with 256/256 lines covered.
- For version control I was able to make 89 commits which is far more enough than the required. I also made 10 pull requests which was a lot more than the required. I organized my project in 5 different parts : Encryption, Decryption, Cracking, Enigma and Command Line Interface. Each part represents a class or a step working towards the interaction pattern. This helped me keep in line of how I wanted to approach this project in the correct manner.