Please let me know if there are any formatting corrections I should know about.
I used the column-row naming convention from Amit's guide but conflicting with the offsetX-offsetY convention in the offsetToCube converters. I thought column and row was more intuitive. Should I change this?
I used three separate coordinates in the test functions. I thought it would be best to test positive, negative, odd and even values. I'm not sure if using an array as I did is the best approach. Another alternative would be to just add more test methods for each value, but that would blow up a lot boilerplate code. Or I could just test a single value like the other test functions.
The OffsetToCube converters use a simplifying assumption that the offset coordinates can never be negative. I don't believe I can do the same thing for CubeToOffset since some cube coordinates will be negative in a rectangular grid.