Huge refactor on test code (yay metaprogramming); will make adding more tests easier