Treat double/none differently from float/none
Refactor tests