on master help sign in
Further generalise the formatRealFloat tests (gh-105)
commit4f7664a316baf3cdb23d6ccba1eb7bee3f91145d authorBryan O'Sullivan <bos@serpentine.com> dateFri 12 Dec 2014, 13:20 (12 years ago) parent7e66b81
2 files changed+19−10
tests/Tests/Properties.hs+14−9 tests/Tests/QuickCheckUtils.hs+5−1
tests/Tests/Properties.hs+14−9
@@ -24,7 +24,7 @@ import Data.Text.Internal.Search (indices)
2424import Data.Text.Lazy.Read as TL
2525import Data.Text.Read as T
2626import Data.Word (Word, Word8, Word16, Word32, Word64)
27−import Numeric (showGFloat, showHex)
27+import Numeric (showEFloat, showFFloat, showGFloat, showHex)
2828import Prelude hiding (replicate)
2929import Test.Framework (Test, testGroup)
3030import Test.Framework.Providers.QuickCheck2 (testProperty)
@@ -779,14 +779,19 @@ tb_realfloat = (TB.toLazyText . TB.realFloat) `eq` (TL.pack . show)
779779tb_realfloat_float (a::Float) = tb_realfloat a
780780tb_realfloat_double (a::Double) = tb_realfloat a
781781
782−tb_formatRealFloat_G :: (RealFloat a, Show a) => a -> Precision a -> Property
783−tb_formatRealFloat_G a prec =
784− TB.formatRealFloat TB.Generic p a ===
785− TB.fromString (showGFloat p a "")
782+showFloat :: (RealFloat a) => TB.FPFormat -> Maybe Int -> a -> ShowS
783+showFloat TB.Exponent = showEFloat
784+showFloat TB.Fixed = showFFloat
785+showFloat TB.Generic = showGFloat
786+
787+tb_formatRealFloat :: (RealFloat a, Show a) => a -> TB.FPFormat -> Precision a -> Property
788+tb_formatRealFloat a fmt prec =
789+ TB.formatRealFloat fmt p a ===
790+ TB.fromString (showFloat fmt p a "")
786791 where p = precision a prec
787792
788−tb_formatRealFloat_G_float (a::Float) = tb_formatRealFloat_G a
789−tb_formatRealFloat_G_double (a::Double) = tb_formatRealFloat_G a
793+tb_formatRealFloat_float (a::Float) = tb_formatRealFloat a
794+tb_formatRealFloat_double (a::Double) = tb_formatRealFloat a
790795
791796-- Reading.
792797
@@ -1294,8 +1299,8 @@ tests =
12941299 testGroup "realfloat" [
12951300 testProperty "tb_realfloat_double" tb_realfloat_double,
12961301 testProperty "tb_realfloat_float" tb_realfloat_float,
1297− testProperty "tb_formatRealFloat_G_float" tb_formatRealFloat_G_float,
1298− testProperty "tb_formatRealFloat_G_double" tb_formatRealFloat_G_double
1302+ testProperty "tb_formatRealFloat_float" tb_formatRealFloat_float,
1303+ testProperty "tb_formatRealFloat_double" tb_formatRealFloat_double
12991304 ],
13001305 testProperty "tb_fromText" tb_fromText,
13011306 testProperty "tb_singleton" tb_singleton
tests/Tests/QuickCheckUtils.hs+5−1
@@ -40,10 +40,11 @@ import Control.DeepSeq (NFData (..), deepseq)
4040import Control.Exception (bracket)
4141import Data.String (IsString, fromString)
4242import Data.Text.Foreign (I16)
43+import Data.Text.Lazy.Builder.RealFloat (FPFormat(..))
4344import Data.Word (Word8, Word16)
4445import Debug.Trace (trace)
4546import System.Random (Random (..), RandomGen)
46−import Test.QuickCheck hiding (Small (..), (.&.))
47+import Test.QuickCheck hiding (Fixed(..), Small (..), (.&.))
4748import Test.QuickCheck.Monadic (assert, monadicIO, run)
4849import Test.QuickCheck.Unicode (string)
4950import Tests.Utils
@@ -266,6 +267,9 @@ eqP f g s w = eql "orig" (f s) (g t) &&
266267 | a =^= b = True
267268 | otherwise = trace (d ++ ": " ++ show a ++ " /= " ++ show b) False
268269
270+instance Arbitrary FPFormat where
271+ arbitrary = elements [Exponent, Fixed, Generic]
272+
269273newtype Precision a = Precision (Maybe Int)
270274 deriving (Eq, Show)
271275