[WIP] Extract test functionality

i have seen the distinction between Test namespace used for base test cases and other things people are supposed to reuse, and Tests for the implementation specific tests stuff that you are not supposed to reuse. don't know how common that is, but if the intention is that people can reuse this, we could use the Test namespace and place things in src/ to make clear its intended to be reused.