Functionality: In terms of functionality I would say I successfully implemented the cracking method and command line interface.
Object Oriented Programming: My project includes a super class of shift that enigma inherits. This class could be used to take in sets of input and encrypt or decrypt it. All classes are less than 100 lines of code. All lines of code are less than 80 characters. I have the key and date class using class methods. I believe my variable and method names are clear and express their purpose.
Test Driven Development: My tests all clearly indicate their purpose. I use mocks and stubs in more than one test in Enigma.
Version Control: I have at least 15 pull requests and 40 commits, all of which communicate the their purpose. Some commits include multiple pieces of functionality.