added a ton of tests, using google testing framework