Add unit tests
Description
Adds unit tests and tooling for them.
Resolves #8 (closed)
Type
Please delete options that are not relevant.
[x] Bug fix (non-breaking change which fixes an issue) [ ] New feature (non-breaking change which adds functionality) [x] Enhancement (non-breaking change which improves existing functionality) [ ] Breaking change (fix, feature, or enhancement that would cause existing functionality to not work as expected) [ ] This change requires a documentation update
Checklist:
[x] My code follows the style guidelines of this project [x] I have performed a self-review of my own code [x] I have commented my code, particularly in hard-to-understand areas [x] I have made corresponding changes to the documentation [x] My changes generate no new warnings [x] I have added tests that prove my fix is effective or that my feature works [x] New and existing unit tests pass locally with my changes