Minor existing comment: I find this style of testing produces very cryptic failures.  When something breaks all you are going to get is `4 does not equal 8`. Furthermore, because the failure is in a loop the stacktrace also won't be helpful in figuring out which datatype is wrong.  Finally, the correct answer for `GENERIC` is 10 lines aways from the check, making it unnecessarily hard to read the test and see what the expected answers are.

I think something like this would be clearer, and the same number of lines of code:
```scala
def checkActualSize[A](t: ColumnType[A], v: A, expectedSize: Int) =
  if(t.actualSize(v) != expectedSize) { 
    fail(s"Wrong actualSize for $t, actual: ${t.actualSize(t)}, expected: $expected") 
  }

checkActualSize(INT, Int.MaxValue, 4)
...
```