rewrite all tests

Rewrote all tests to make them logical. I think I've covered all our features, but I'll look at this in the daylight before merging. 

@Snugug - anything I missed?