I noticed that the test specifications for e.g. LAB use the same Abritrary instance as others:
instance (Elevator e, Random e, Illuminant i) => Arbitrary (Color (LAB (i :: k)) e) where
arbitrary = ColorLAB <$> arbitraryElevator <*> arbitraryElevator <*> arbitraryElevator
where arbitraryElevator gives either the full range of values (for discrete quanta like Word8) or the range [0,1] for Float and Double. However, LAB at least (and possibly others) uses a different range: L can go from 0 to 100, while a and b vary in a similar range, depending on L, and can also be negative. Thus, right now the spec tests are only checking colors very close to black. I'm not sure how this can be handled within QuickCheck.
I noticed that the test specifications for e.g.
LABuse the sameAbritraryinstance as others:where
arbitraryElevatorgives either the full range of values (for discrete quanta likeWord8) or the range [0,1] forFloatandDouble. However,LABat least (and possibly others) uses a different range:Lcan go from 0 to 100, whileaandbvary in a similar range, depending onL, and can also be negative. Thus, right now the spec tests are only checking colors very close to black. I'm not sure how this can be handled within QuickCheck.