build checks.x86_64-linux.mutation-really-safe-money

Reproduce this run
  1. 449.96 s [really-safe-money-gen] step a digit = Just $ a * 10 + fromIntegral digit
  2. 449.96 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:139:27-29
  3. 449.96 s [really-safe-money-gen] @@ -136,7 +136,7 @@
  4. 449.96 s [really-safe-money-gen] stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  5. 449.96 s [really-safe-money-gen]
  6. 449.96 s [really-safe-money-gen] step :: Natural -> Int -> Maybe Natural
  7. 449.96 s [really-safe-money-gen] -step a digit = Just $ a * 10 + fromIntegral digit
  8. 449.96 s [really-safe-money-gen] +step a digit = Just $ a * 0 + fromIntegral digit
  9. 449.96 s [really-safe-money-gen] {-# INLINE step #-}
  10. 449.96 s [really-safe-money-gen]
  11. 449.96 s [really-safe-money-gen] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  12. 449.96 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:136:39-41
  13. 449.96 s [really-safe-money-gen] @@ -133,7 +133,7 @@
  14. 449.96 s [really-safe-money-gen]
  15. 449.96 s [really-safe-money-gen] stepFraction :: (Natural, Word8) -> Int -> Maybe (Natural, Word8)
  16. 449.96 s [really-safe-money-gen] stepFraction (_, 255) _ = Nothing
  17. 449.97 s [really-safe-money-gen] -stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  18. 449.97 s [really-safe-money-gen] +stepFraction (m, e) digit = Just (m * 1 + fromIntegral digit, succ e)
  19. 449.97 s [really-safe-money-gen]
  20. 449.97 s [really-safe-money-gen] step :: Natural -> Int -> Maybe Natural
  21. 449.97 s [really-safe-money-gen] step a digit = Just $ a * 10 + fromIntegral digit
  22. 449.97 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-30
  23. 449.97 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  24. 449.97 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  25. 449.97 s [really-safe-money-gen] decimalLiteralP = do
  26. 449.97 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  27. 449.97 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  28. 449.97 s [really-safe-money-gen] + isSignChar c = False || c == '+'
  29. 449.97 s [really-safe-money-gen]
  30. 449.97 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  31. 449.97 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  32. 449.97 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:119:22-30
  33. 449.97 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  34. 449.97 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  35. 449.97 s [really-safe-money-gen] decimalLiteralP = do
  36. 449.97 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  37. 449.97 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  38. 449.97 s [really-safe-money-gen] + isSignChar c = not (c == '-') || c == '+'
  39. 449.97 s [really-safe-money-gen]
  40. 449.97 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  41. 449.97 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  42. 449.97 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-30
  43. 449.97 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  44. 449.97 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  45. 449.97 s [really-safe-money-gen] decimalLiteralP = do
  46. 449.97 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  47. 449.97 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  48. 449.97 s [really-safe-money-gen] + isSignChar c = True || c == '+'
  49. 449.97 s [really-safe-money-gen]
  50. 449.97 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  51. 449.97 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  52. 449.97 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:34-42
  53. 449.97 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  54. 449.97 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  55. 449.97 s [really-safe-money-gen] decimalLiteralP = do
  56. 449.97 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  57. 449.98 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  58. 449.98 s [really-safe-money-gen] + isSignChar c = c == '-' || True
  59. 449.98 s [really-safe-money-gen]
  60. 449.98 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  61. 449.98 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  62. 449.98 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:34-42
  63. 449.98 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  64. 449.98 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  65. 449.98 s [really-safe-money-gen] decimalLiteralP = do
  66. 449.98 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  67. 449.98 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  68. 449.98 s [really-safe-money-gen] + isSignChar c = c == '-' || False
  69. 449.98 s [really-safe-money-gen]
  70. 449.98 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  71. 449.98 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  72. 449.98 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:119:34-42
  73. 449.98 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  74. 449.98 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  75. 449.98 s [really-safe-money-gen] decimalLiteralP = do
  76. 449.98 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  77. 449.98 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  78. 449.98 s [really-safe-money-gen] + isSignChar c = c == '-' || not (c == '+')
  79. 449.98 s [really-safe-money-gen]
  80. 449.98 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  81. 449.98 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  82. 449.98 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-42
  83. 449.98 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  84. 449.98 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  85. 449.98 s [really-safe-money-gen] decimalLiteralP = do
  86. 449.98 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  87. 449.98 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  88. 449.98 s [really-safe-money-gen] + isSignChar c = True
  89. 449.98 s [really-safe-money-gen]
  90. 449.98 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  91. 449.98 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  92. 449.98 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-42
  93. 449.98 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  94. 449.98 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  95. 449.98 s [really-safe-money-gen] decimalLiteralP = do
  96. 449.98 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  97. 449.98 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  98. 449.98 s [really-safe-money-gen] + isSignChar c = False
  99. 449.98 s [really-safe-money-gen]
  100. 449.98 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  101. 449.98 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  102. 449.98 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:119:22-42
  103. 449.98 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  104. 449.98 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  105. 449.98 s [really-safe-money-gen] decimalLiteralP = do
  106. 449.98 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  107. 449.98 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  108. 449.98 s [really-safe-money-gen] + isSignChar c = not (c == '-' || c == '+')
  109. 449.99 s [really-safe-money-gen]
  110. 449.99 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  111. 449.99 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  112. 449.99 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:123:19-34
  113. 449.99 s [really-safe-money-gen] @@ -120,7 +120,7 @@
  114. 449.99 s [really-safe-money-gen]
  115. 449.99 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  116. 449.99 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  117. 449.99 s [really-safe-money-gen] - pure $ Just $ signChar == '+'
  118. 449.99 s [really-safe-money-gen] + pure $ Just $ True
  119. 449.99 s [really-safe-money-gen]
  120. 449.99 s [really-safe-money-gen] units <- parseDigits step 0
  121. 449.99 s [really-safe-money-gen]
  122. 449.99 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:123:19-34
  123. 449.99 s [really-safe-money-gen] @@ -120,7 +120,7 @@
  124. 449.99 s [really-safe-money-gen]
  125. 449.99 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  126. 449.99 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  127. 449.99 s [really-safe-money-gen] - pure $ Just $ signChar == '+'
  128. 449.99 s [really-safe-money-gen] + pure $ Just $ False
  129. 449.99 s [really-safe-money-gen]
  130. 449.99 s [really-safe-money-gen] units <- parseDigits step 0
  131. 449.99 s [really-safe-money-gen]
  132. 449.99 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:123:19-34
  133. 449.99 s [really-safe-money-gen] @@ -120,7 +120,7 @@
  134. 449.99 s [really-safe-money-gen]
  135. 449.99 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  136. 449.99 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  137. 449.99 s [really-safe-money-gen] - pure $ Just $ signChar == '+'
  138. 449.99 s [really-safe-money-gen] + pure $ Just $ not (signChar == '+')
  139. 449.99 s [really-safe-money-gen]
  140. 449.99 s [really-safe-money-gen] units <- parseDigits step 0
  141. 449.99 s [really-safe-money-gen]
  142. 449.99 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:125:29-30
  143. 449.99 s [really-safe-money-gen] @@ -122,7 +122,7 @@
  144. 449.99 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  145. 449.99 s [really-safe-money-gen] pure $ Just $ signChar == '+'
  146. 449.99 s [really-safe-money-gen]
  147. 449.99 s [really-safe-money-gen] - units <- parseDigits step 0
  148. 449.99 s [really-safe-money-gen] + units <- parseDigits step 1
  149. 449.99 s [really-safe-money-gen]
  150. 449.99 s [really-safe-money-gen] ReadP.option (DecimalLiteral mSign units 0) $ do
  151. 449.99 s [really-safe-money-gen] _ <- ReadP.satisfy (== '.')
  152. 449.99 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:127:44-45
  153. 449.99 s [really-safe-money-gen] @@ -124,7 +124,7 @@
  154. 449.99 s [really-safe-money-gen]
  155. 449.99 s [really-safe-money-gen] units <- parseDigits step 0
  156. 449.99 s [really-safe-money-gen]
  157. 449.99 s [really-safe-money-gen] - ReadP.option (DecimalLiteral mSign units 0) $ do
  158. 449.99 s [really-safe-money-gen] + ReadP.option (DecimalLiteral mSign units 1) $ do
  159. 449.99 s [really-safe-money-gen] _ <- ReadP.satisfy (== '.')
  160. 449.99 s [really-safe-money-gen]
  161. 449.99 s [really-safe-money-gen] (m, e) <- parseDigits stepFraction (units, 0)
  162. 449.99 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:130:48-49
  163. 449.99 s [really-safe-money-gen] @@ -127,7 +127,7 @@
  164. 449.99 s [really-safe-money-gen] ReadP.option (DecimalLiteral mSign units 0) $ do
  165. 449.99 s [really-safe-money-gen] _ <- ReadP.satisfy (== '.')
  166. 449.99 s [really-safe-money-gen]
  167. 449.99 s [really-safe-money-gen] - (m, e) <- parseDigits stepFraction (units, 0)
  168. 449.99 s [really-safe-money-gen] + (m, e) <- parseDigits stepFraction (units, 1)
  169. 449.99 s [really-safe-money-gen]
  170. 449.99 s [really-safe-money-gen] pure $ DecimalLiteral mSign m e
  171. 449.99 s [really-safe-money-gen]
  172. 449.99 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:801:36-38
  173. 449.99 s [really-safe-money-gen] @@ -798,7 +798,7 @@
  174. 449.99 s [really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
  175. 449.99 s [really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor qf) =
  176. 449.99 s [really-safe-money-gen] let decimals :: Int
  177. 449.99 s [really-safe-money-gen] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
  178. 449.99 s [really-safe-money-gen] + decimals = ceiling $ logBase 0 (fromIntegral qf :: Float)
  179. 449.99 s [really-safe-money-gen] in printf "%%0.%df" decimals
  180. 449.99 s [really-safe-money-gen]
  181. 449.99 s [really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  182. 449.99 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:801:36-38
  183. 449.99 s [really-safe-money-gen] @@ -798,7 +798,7 @@
  184. 449.99 s [really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
  185. 449.99 s [really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor qf) =
  186. 449.99 s [really-safe-money-gen] let decimals :: Int
  187. 450.00 s [really-safe-money-gen] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
  188. 451.44 s [really-safe-money-gen] + decimals = ceiling $ logBase 1 (fromIntegral qf :: Float)
  189. 451.44 s [really-safe-money-gen] in printf "%%0.%df" decimals
  190. 451.44 s [really-safe-money-gen]
  191. 451.44 s [really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  192. 451.44 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:801:36-38
  193. 451.44 s [really-safe-money-gen] @@ -798,7 +798,7 @@
  194. 451.44 s [really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
  195. 451.44 s [really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor qf) =
  196. 451.44 s [really-safe-money-gen] let decimals :: Int
  197. 451.44 s [really-safe-money-gen] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
  198. 451.44 s [really-safe-money-gen] + decimals = ceiling $ logBase -10 (fromIntegral qf :: Float)
  199. 451.44 s [really-safe-money-gen] in printf "%%0.%df" decimals
  200. 451.44 s [really-safe-money-gen]
  201. 451.44 s [really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  202. 451.44 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:569:18-19
  203. 451.44 s [really-safe-money-gen] @@ -566,7 +566,7 @@
  204. 451.44 s [really-safe-money-gen] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  205. 451.44 s [really-safe-money-gen] smallerChunk :: Amount
  206. 451.44 s [really-safe-money-gen] smallerChunk = Amount smallerChunkSize
  207. 451.44 s [really-safe-money-gen] - in if rest == 0
  208. 451.44 s [really-safe-money-gen] + in if rest == 1
  209. 451.44 s [really-safe-money-gen] then DistributedIntoEqualChunks f smallerChunk
  210. 451.44 s [really-safe-money-gen] else
  211. 451.44 s [really-safe-money-gen] let -- This 'fromIntegral' is theoretically not safe, but it's
  212. 451.44 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:569:10-19
  213. 451.44 s [really-safe-money-gen] @@ -566,7 +566,7 @@
  214. 451.44 s [really-safe-money-gen] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  215. 451.44 s [really-safe-money-gen] smallerChunk :: Amount
  216. 451.44 s [really-safe-money-gen] smallerChunk = Amount smallerChunkSize
  217. 451.44 s [really-safe-money-gen] - in if rest == 0
  218. 451.44 s [really-safe-money-gen] + in if True
  219. 451.44 s [really-safe-money-gen] then DistributedIntoEqualChunks f smallerChunk
  220. 451.44 s [really-safe-money-gen] else
  221. 451.44 s [really-safe-money-gen] let -- This 'fromIntegral' is theoretically not safe, but it's
  222. 451.44 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:569:10-19
  223. 451.44 s [really-safe-money-gen] @@ -566,7 +566,7 @@
  224. 451.44 s [really-safe-money-gen] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  225. 451.44 s [really-safe-money-gen] smallerChunk :: Amount
  226. 451.44 s [really-safe-money-gen] smallerChunk = Amount smallerChunkSize
  227. 451.44 s [really-safe-money-gen] - in if rest == 0
  228. 451.44 s [really-safe-money-gen] + in if False
  229. 451.44 s [really-safe-money-gen] then DistributedIntoEqualChunks f smallerChunk
  230. 451.44 s [really-safe-money-gen] else
  231. 451.44 s [really-safe-money-gen] let -- This 'fromIntegral' is theoretically not safe, but it's
  232. 451.45 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:569:10-19
  233. 451.45 s [really-safe-money-gen] @@ -566,7 +566,7 @@
  234. 451.45 s [really-safe-money-gen] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  235. 451.45 s [really-safe-money-gen] smallerChunk :: Amount
  236. 451.45 s [really-safe-money-gen] smallerChunk = Amount smallerChunkSize
  237. 451.45 s [really-safe-money-gen] - in if rest == 0
  238. 451.45 s [really-safe-money-gen] + in if not (rest == 0)
  239. 451.45 s [really-safe-money-gen] then DistributedIntoEqualChunks f smallerChunk
  240. 451.45 s [really-safe-money-gen] else
  241. 451.45 s [really-safe-money-gen] let -- This 'fromIntegral' is theoretically not safe, but it's
  242. 451.45 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:569:7-29
  243. 451.45 s [really-safe-money-gen] @@ -566,22 +566,22 @@
  244. 451.45 s [really-safe-money-gen] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  245. 451.45 s [really-safe-money-gen] smallerChunk :: Amount
  246. 451.45 s [really-safe-money-gen] smallerChunk = Amount smallerChunkSize
  247. 451.45 s [really-safe-money-gen] - in if rest == 0
  248. 451.45 s [really-safe-money-gen] - then DistributedIntoEqualChunks f smallerChunk
  249. 451.45 s [really-safe-money-gen] - else
  250. 451.45 s [really-safe-money-gen] - let -- This 'fromIntegral' is theoretically not safe, but it's
  251. 451.45 s [really-safe-money-gen] - -- necessarily smaller than f so it will fit.
  252. 451.45 s [really-safe-money-gen] - numberOfLargerChunks :: Word32
  253. 451.45 s [really-safe-money-gen] - numberOfLargerChunks = (fromIntegral :: Word64 -> Word32) rest
  254. 451.45 s [really-safe-money-gen] - numberOfSmallerChunks :: Word32
  255. 451.45 s [really-safe-money-gen] - numberOfSmallerChunks = f - numberOfLargerChunks
  256. 451.45 s [really-safe-money-gen] - largerChunk :: Amount
  257. 451.45 s [really-safe-money-gen] - largerChunk = Amount $ succ smallerChunkSize
  258. 451.45 s [really-safe-money-gen] - in DistributedIntoUnequalChunks
  259. 451.45 s [really-safe-money-gen] - numberOfLargerChunks
  260. 451.45 s [really-safe-money-gen] - largerChunk
  261. 451.45 s [really-safe-money-gen] - numberOfSmallerChunks
  262. 451.45 s [really-safe-money-gen] - smallerChunk
  263. 451.45 s [really-safe-money-gen] + in if rest == 0
  264. 451.45 s [really-safe-money-gen] + then DistributedIntoEqualChunks f smallerChunk
  265. 451.45 s [really-safe-money-gen] + else
  266. 451.45 s [really-safe-money-gen] + let -- This 'fromIntegral' is theoretically not safe, but it's
  267. 451.45 s [really-safe-money-gen] + -- necessarily smaller than f so it will fit.
  268. 451.45 s [really-safe-money-gen] + numberOfLargerChunks :: Word32
  269. 451.45 s [really-safe-money-gen] + numberOfLargerChunks = (fromIntegral :: Word64 -> Word32) rest
  270. 451.45 s [really-safe-money-gen] + numberOfSmallerChunks :: Word32
  271. 451.45 s [really-safe-money-gen] + numberOfSmallerChunks = f - numberOfLargerChunks
  272. 451.45 s [really-safe-money-gen] + largerChunk :: Amount
  273. 451.45 s [really-safe-money-gen] + largerChunk = Amount $ succ smallerChunkSize
  274. 451.45 s [really-safe-money-gen] + in DistributedIntoUnequalChunks
  275. 451.45 s [really-safe-money-gen] + numberOfLargerChunks
  276. 451.45 s [really-safe-money-gen] + largerChunk
  277. 451.45 s [really-safe-money-gen] + numberOfSmallerChunks
  278. 451.45 s [really-safe-money-gen] + smallerChunk
  279. 451.45 s [really-safe-money-gen]
  280. 451.45 s [really-safe-money-gen] -- | The result of 'distribute'
  281. 451.45 s [really-safe-money-gen] type AmountDistribution = Distribution Amount
  282. 451.45 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:544:10-23
  283. 451.45 s [really-safe-money-gen] @@ -541,7 +541,7 @@
  284. 451.45 s [really-safe-money-gen] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  285. 451.45 s [really-safe-money-gen] r :: Integer
  286. 451.45 s [really-safe-money-gen] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  287. 451.45 s [really-safe-money-gen] - in if r > maxBoundI
  288. 451.45 s [really-safe-money-gen] + in if True
  289. 451.45 s [really-safe-money-gen] then Nothing
  290. 451.45 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  291. 451.45 s [really-safe-money-gen]
  292. 451.45 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:544:10-23
  293. 451.45 s [really-safe-money-gen] @@ -541,7 +541,7 @@
  294. 451.45 s [really-safe-money-gen] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  295. 451.45 s [really-safe-money-gen] r :: Integer
  296. 451.45 s [really-safe-money-gen] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  297. 451.45 s [really-safe-money-gen] - in if r > maxBoundI
  298. 451.45 s [really-safe-money-gen] + in if False
  299. 451.45 s [really-safe-money-gen] then Nothing
  300. 451.46 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  301. 451.46 s [really-safe-money-gen]
  302. 451.46 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:544:10-23
  303. 451.46 s [really-safe-money-gen] @@ -541,7 +541,7 @@
  304. 451.46 s [really-safe-money-gen] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  305. 451.46 s [really-safe-money-gen] r :: Integer
  306. 451.46 s [really-safe-money-gen] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  307. 451.46 s [really-safe-money-gen] - in if r > maxBoundI
  308. 451.46 s [really-safe-money-gen] + in if not (r > maxBoundI)
  309. 451.46 s [really-safe-money-gen] then Nothing
  310. 451.46 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  311. 451.46 s [really-safe-money-gen]
  312. 451.46 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:544:7-66
  313. 451.46 s [really-safe-money-gen] @@ -541,9 +541,9 @@
  314. 451.46 s [really-safe-money-gen] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  315. 451.46 s [really-safe-money-gen] r :: Integer
  316. 451.46 s [really-safe-money-gen] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  317. 451.46 s [really-safe-money-gen] - in if r > maxBoundI
  318. 451.46 s [really-safe-money-gen] - then Nothing
  319. 451.46 s [really-safe-money-gen] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  320. 451.46 s [really-safe-money-gen] + in if r > maxBoundI
  321. 451.46 s [really-safe-money-gen] + then Nothing
  322. 451.46 s [really-safe-money-gen] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  323. 451.46 s [really-safe-money-gen]
  324. 451.46 s [really-safe-money-gen] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  325. 451.46 s [really-safe-money-gen] --
  326. 451.46 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:518:14-15
  327. 451.46 s [really-safe-money-gen] @@ -515,7 +515,7 @@
  328. 451.46 s [really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
  329. 451.46 s [really-safe-money-gen] r :: Integer
  330. 451.46 s [really-safe-money-gen] r = i1 - i2
  331. 451.46 s [really-safe-money-gen] - in if r < 0
  332. 451.46 s [really-safe-money-gen] + in if r < 1
  333. 451.46 s [really-safe-money-gen] then Nothing
  334. 451.46 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  335. 451.46 s [really-safe-money-gen]
  336. 451.46 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:518:10-15
  337. 451.46 s [really-safe-money-gen] @@ -515,7 +515,7 @@
  338. 451.46 s [really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
  339. 451.46 s [really-safe-money-gen] r :: Integer
  340. 451.46 s [really-safe-money-gen] r = i1 - i2
  341. 451.46 s [really-safe-money-gen] - in if r < 0
  342. 451.46 s [really-safe-money-gen] + in if True
  343. 451.46 s [really-safe-money-gen] then Nothing
  344. 451.46 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  345. 451.46 s [really-safe-money-gen]
  346. 451.46 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:518:10-15
  347. 451.46 s [really-safe-money-gen] @@ -515,7 +515,7 @@
  348. 451.46 s [really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
  349. 451.46 s [really-safe-money-gen] r :: Integer
  350. 451.46 s [really-safe-money-gen] r = i1 - i2
  351. 451.46 s [really-safe-money-gen] - in if r < 0
  352. 451.46 s [really-safe-money-gen] + in if False
  353. 451.46 s [really-safe-money-gen] then Nothing
  354. 451.46 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  355. 451.46 s [really-safe-money-gen]
  356. 451.46 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:518:10-15
  357. 451.46 s [really-safe-money-gen] @@ -515,7 +515,7 @@
  358. 451.46 s [really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
  359. 451.46 s [really-safe-money-gen] r :: Integer
  360. 451.46 s [really-safe-money-gen] r = i1 - i2
  361. 451.46 s [really-safe-money-gen] - in if r < 0
  362. 451.46 s [really-safe-money-gen] + in if not (r < 0)
  363. 451.46 s [really-safe-money-gen] then Nothing
  364. 451.46 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  365. 451.46 s [really-safe-money-gen]
  366. 451.46 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:518:7-66
  367. 451.46 s [really-safe-money-gen] @@ -515,9 +515,9 @@
  368. 451.46 s [really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
  369. 451.46 s [really-safe-money-gen] r :: Integer
  370. 451.46 s [really-safe-money-gen] r = i1 - i2
  371. 451.46 s [really-safe-money-gen] - in if r < 0
  372. 451.46 s [really-safe-money-gen] - then Nothing
  373. 451.47 s [really-safe-money-gen] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  374. 451.47 s [really-safe-money-gen] + in if r < 0
  375. 451.47 s [really-safe-money-gen] + then Nothing
  376. 451.47 s [really-safe-money-gen] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  377. 451.47 s [really-safe-money-gen]
  378. 451.47 s [really-safe-money-gen] -- | Multiply an amount of money by an integer scalar
  379. 451.47 s [really-safe-money-gen] --
  380. 451.47 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:476:10-23
  381. 451.47 s [really-safe-money-gen] @@ -473,7 +473,7 @@
  382. 451.47 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  383. 451.47 s [really-safe-money-gen] r :: Integer
  384. 451.47 s [really-safe-money-gen] r = i1 + i2
  385. 451.47 s [really-safe-money-gen] - in if r > maxBoundI
  386. 451.47 s [really-safe-money-gen] + in if True
  387. 451.47 s [really-safe-money-gen] then Nothing
  388. 451.47 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  389. 451.47 s [really-safe-money-gen]
  390. 451.47 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:476:10-23
  391. 451.47 s [really-safe-money-gen] @@ -473,7 +473,7 @@
  392. 451.47 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  393. 451.47 s [really-safe-money-gen] r :: Integer
  394. 451.47 s [really-safe-money-gen] r = i1 + i2
  395. 451.47 s [really-safe-money-gen] - in if r > maxBoundI
  396. 451.47 s [really-safe-money-gen] + in if False
  397. 451.47 s [really-safe-money-gen] then Nothing
  398. 451.47 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  399. 451.47 s [really-safe-money-gen]
  400. 451.47 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:476:10-23
  401. 451.47 s [really-safe-money-gen] @@ -473,7 +473,7 @@
  402. 454.47 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  403. 454.47 s [really-safe-money-gen] r :: Integer
  404. 454.47 s [really-safe-money-gen] r = i1 + i2
  405. 454.47 s [really-safe-money-gen] - in if r > maxBoundI
  406. 454.47 s [really-safe-money-gen] + in if not (r > maxBoundI)
  407. 454.47 s [really-safe-money-gen] then Nothing
  408. 454.47 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  409. 454.47 s [really-safe-money-gen]
  410. 454.47 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:476:7-66
  411. 454.47 s [really-safe-money-gen] @@ -473,9 +473,9 @@
  412. 454.47 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  413. 454.47 s [really-safe-money-gen] r :: Integer
  414. 454.47 s [really-safe-money-gen] r = i1 + i2
  415. 454.47 s [really-safe-money-gen] - in if r > maxBoundI
  416. 454.47 s [really-safe-money-gen] - then Nothing
  417. 454.47 s [really-safe-money-gen] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  418. 454.47 s [really-safe-money-gen] + in if r > maxBoundI
  419. 454.47 s [really-safe-money-gen] + then Nothing
  420. 454.47 s [really-safe-money-gen] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  421. 454.47 s [really-safe-money-gen]
  422. 454.47 s [really-safe-money-gen] -- | Add a number of amounts of money together.
  423. 454.47 s [really-safe-money-gen] --
  424. 454.47 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:388:5-16
  425. 454.47 s [really-safe-money-gen] @@ -385,7 +385,7 @@
  426. 454.47 s [really-safe-money-gen] -- Nothing
  427. 454.47 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  428. 454.48 s [really-safe-money-gen] fromRational (QuantisationFactor qf) r
  429. 454.48 s [really-safe-money-gen] - | isInvalid r = Nothing
  430. 454.48 s [really-safe-money-gen] + | True = Nothing
  431. 454.48 s [really-safe-money-gen] | r < 0 = Nothing
  432. 454.48 s [really-safe-money-gen] | otherwise =
  433. 454.48 s [really-safe-money-gen] let resultRational :: Rational
  434. 454.48 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:388:5-16
  435. 454.48 s [really-safe-money-gen] @@ -385,7 +385,7 @@
  436. 454.48 s [really-safe-money-gen] -- Nothing
  437. 454.48 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  438. 454.48 s [really-safe-money-gen] fromRational (QuantisationFactor qf) r
  439. 454.48 s [really-safe-money-gen] - | isInvalid r = Nothing
  440. 454.48 s [really-safe-money-gen] + | not (isInvalid r) = Nothing
  441. 454.48 s [really-safe-money-gen] | r < 0 = Nothing
  442. 454.48 s [really-safe-money-gen] | otherwise =
  443. 454.48 s [really-safe-money-gen] let resultRational :: Rational
  444. 454.48 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:389:5-10
  445. 454.48 s [really-safe-money-gen] @@ -386,7 +386,7 @@
  446. 454.48 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  447. 454.48 s [really-safe-money-gen] fromRational (QuantisationFactor qf) r
  448. 454.48 s [really-safe-money-gen] | isInvalid r = Nothing
  449. 454.48 s [really-safe-money-gen] - | r < 0 = Nothing
  450. 454.48 s [really-safe-money-gen] + | True = Nothing
  451. 454.48 s [really-safe-money-gen] | otherwise =
  452. 454.48 s [really-safe-money-gen] let resultRational :: Rational
  453. 454.48 s [really-safe-money-gen] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
  454. 454.48 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:389:5-10
  455. 454.48 s [really-safe-money-gen] @@ -386,7 +386,7 @@
  456. 454.48 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  457. 454.48 s [really-safe-money-gen] fromRational (QuantisationFactor qf) r
  458. 454.48 s [really-safe-money-gen] | isInvalid r = Nothing
  459. 454.48 s [really-safe-money-gen] - | r < 0 = Nothing
  460. 454.48 s [really-safe-money-gen] + | not (r < 0) = Nothing
  461. 454.48 s [really-safe-money-gen] | otherwise =
  462. 454.48 s [really-safe-money-gen] let resultRational :: Rational
  463. 454.48 s [really-safe-money-gen] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
  464. 454.48 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:397:14-31
  465. 454.48 s [really-safe-money-gen] @@ -394,7 +394,7 @@
  466. 454.48 s [really-safe-money-gen] ceiled = (ceiling :: Rational -> Natural) resultRational
  467. 454.48 s [really-safe-money-gen] floored :: Natural
  468. 454.48 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  469. 454.48 s [really-safe-money-gen] - in if ceiled == floored
  470. 454.48 s [really-safe-money-gen] + in if True
  471. 454.48 s [really-safe-money-gen] then
  472. 454.48 s [really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  473. 454.48 s [really-safe-money-gen] then Nothing
  474. 454.48 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:397:14-31
  475. 454.48 s [really-safe-money-gen] @@ -394,7 +394,7 @@
  476. 454.48 s [really-safe-money-gen] ceiled = (ceiling :: Rational -> Natural) resultRational
  477. 454.48 s [really-safe-money-gen] floored :: Natural
  478. 454.48 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  479. 454.49 s [really-safe-money-gen] - in if ceiled == floored
  480. 454.49 s [really-safe-money-gen] + in if False
  481. 454.49 s [really-safe-money-gen] then
  482. 454.49 s [really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  483. 454.49 s [really-safe-money-gen] then Nothing
  484. 454.49 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:397:14-31
  485. 454.49 s [really-safe-money-gen] @@ -394,7 +394,7 @@
  486. 454.49 s [really-safe-money-gen] ceiled = (ceiling :: Rational -> Natural) resultRational
  487. 454.49 s [really-safe-money-gen] floored :: Natural
  488. 454.49 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  489. 454.49 s [really-safe-money-gen] - in if ceiled == floored
  490. 454.49 s [really-safe-money-gen] + in if not (ceiled == floored)
  491. 454.49 s [really-safe-money-gen] then
  492. 454.49 s [really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  493. 454.49 s [really-safe-money-gen] then Nothing
  494. 454.49 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:399:18-83
  495. 454.49 s [really-safe-money-gen] @@ -396,7 +396,7 @@
  496. 454.49 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  497. 454.49 s [really-safe-money-gen] in if ceiled == floored
  498. 454.49 s [really-safe-money-gen] then
  499. 454.49 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  500. 454.49 s [really-safe-money-gen] + if True
  501. 454.49 s [really-safe-money-gen] then Nothing
  502. 454.49 s [really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
  503. 454.49 s [really-safe-money-gen] else Nothing
  504. 454.49 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:399:18-83
  505. 454.49 s [really-safe-money-gen] @@ -396,7 +396,7 @@
  506. 454.49 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  507. 454.49 s [really-safe-money-gen] in if ceiled == floored
  508. 454.49 s [really-safe-money-gen] then
  509. 454.49 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  510. 454.49 s [really-safe-money-gen] + if False
  511. 454.49 s [really-safe-money-gen] then Nothing
  512. 454.49 s [really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
  513. 454.49 s [really-safe-money-gen] else Nothing
  514. 454.49 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:399:18-83
  515. 454.49 s [really-safe-money-gen] @@ -396,7 +396,7 @@
  516. 454.49 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  517. 454.49 s [really-safe-money-gen] in if ceiled == floored
  518. 454.49 s [really-safe-money-gen] then
  519. 454.49 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  520. 454.49 s [really-safe-money-gen] + if not (ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64))
  521. 454.49 s [really-safe-money-gen] then Nothing
  522. 454.49 s [really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
  523. 454.49 s [really-safe-money-gen] else Nothing
  524. 454.49 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:389:9-10
  525. 454.49 s [really-safe-money-gen] @@ -386,7 +386,7 @@
  526. 454.49 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  527. 454.49 s [really-safe-money-gen] fromRational (QuantisationFactor qf) r
  528. 454.49 s [really-safe-money-gen] | isInvalid r = Nothing
  529. 454.49 s [really-safe-money-gen] - | r < 0 = Nothing
  530. 454.49 s [really-safe-money-gen] + | r < 1 = Nothing
  531. 454.49 s [really-safe-money-gen] | otherwise =
  532. 454.49 s [really-safe-money-gen] let resultRational :: Rational
  533. 454.49 s [really-safe-money-gen] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
  534. 454.49 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:397:11-25
  535. 454.49 s [really-safe-money-gen] @@ -394,12 +394,12 @@
  536. 454.49 s [really-safe-money-gen] ceiled = (ceiling :: Rational -> Natural) resultRational
  537. 454.49 s [really-safe-money-gen] floored :: Natural
  538. 454.49 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  539. 454.49 s [really-safe-money-gen] - in if ceiled == floored
  540. 454.49 s [really-safe-money-gen] - then
  541. 454.49 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  542. 454.49 s [really-safe-money-gen] - then Nothing
  543. 454.49 s [really-safe-money-gen] - else Just $ Amount (fromIntegral ceiled)
  544. 454.49 s [really-safe-money-gen] - else Nothing
  545. 454.49 s [really-safe-money-gen] + in if ceiled == floored
  546. 454.49 s [really-safe-money-gen] + then
  547. 454.49 s [really-safe-money-gen] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  548. 454.49 s [really-safe-money-gen] + then Nothing
  549. 454.49 s [really-safe-money-gen] + else Just $ Amount (fromIntegral ceiled)
  550. 454.49 s [really-safe-money-gen] + else Nothing
  551. 454.50 s [really-safe-money-gen]
  552. 454.50 s [really-safe-money-gen] -- | Turn an amount of money into a 'Rational'.
  553. 454.50 s [really-safe-money-gen] --
  554. 454.50 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:399:15-57
  555. 454.50 s [really-safe-money-gen] @@ -396,9 +396,9 @@
  556. 454.50 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  557. 454.50 s [really-safe-money-gen] in if ceiled == floored
  558. 454.50 s [really-safe-money-gen] then
  559. 454.50 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  560. 454.50 s [really-safe-money-gen] - then Nothing
  561. 454.50 s [really-safe-money-gen] - else Just $ Amount (fromIntegral ceiled)
  562. 454.50 s [really-safe-money-gen] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  563. 454.50 s [really-safe-money-gen] + then Nothing
  564. 454.50 s [really-safe-money-gen] + else Just $ Amount (fromIntegral ceiled)
  565. 454.50 s [really-safe-money-gen] else Nothing
  566. 454.50 s [really-safe-money-gen]
  567. 454.50 s [really-safe-money-gen] -- | Turn an amount of money into a 'Rational'.
  568. 454.50 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:320:9-10
  569. 454.50 s [really-safe-money-gen] @@ -317,7 +317,7 @@
  570. 454.50 s [really-safe-money-gen] Double ->
  571. 454.50 s [really-safe-money-gen] Maybe Amount
  572. 454.50 s [really-safe-money-gen] fromDouble (QuantisationFactor qf) d
  573. 454.50 s [really-safe-money-gen] - | d < 0 = Nothing
  574. 454.50 s [really-safe-money-gen] + | d < 1 = Nothing
  575. 454.50 s [really-safe-money-gen] | otherwise =
  576. 454.50 s [really-safe-money-gen] let resultDouble :: Double
  577. 454.50 s [really-safe-money-gen] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
  578. 454.50 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:327:9-16
  579. 454.50 s [really-safe-money-gen] @@ -324,7 +324,7 @@
  580. 454.50 s [really-safe-money-gen] in go resultDouble
  581. 454.50 s [really-safe-money-gen] where
  582. 454.50 s [really-safe-money-gen] go resultDouble
  583. 454.50 s [really-safe-money-gen] - | isNaN d = Nothing
  584. 454.50 s [really-safe-money-gen] + | True = Nothing
  585. 454.50 s [really-safe-money-gen] | isInfinite d = Nothing
  586. 454.50 s [really-safe-money-gen] | otherwise =
  587. 454.50 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  588. 454.50 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:327:9-16
  589. 454.50 s [really-safe-money-gen] @@ -324,7 +324,7 @@
  590. 454.50 s [really-safe-money-gen] in go resultDouble
  591. 454.50 s [really-safe-money-gen] where
  592. 454.50 s [really-safe-money-gen] go resultDouble
  593. 454.50 s [really-safe-money-gen] - | isNaN d = Nothing
  594. 454.50 s [really-safe-money-gen] + | not (isNaN d) = Nothing
  595. 454.50 s [really-safe-money-gen] | isInfinite d = Nothing
  596. 454.50 s [really-safe-money-gen] | otherwise =
  597. 454.50 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  598. 454.50 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:328:9-21
  599. 454.50 s [really-safe-money-gen] @@ -325,7 +325,7 @@
  600. 454.50 s [really-safe-money-gen] where
  601. 454.50 s [really-safe-money-gen] go resultDouble
  602. 454.50 s [really-safe-money-gen] | isNaN d = Nothing
  603. 454.50 s [really-safe-money-gen] - | isInfinite d = Nothing
  604. 454.50 s [really-safe-money-gen] + | True = Nothing
  605. 454.50 s [really-safe-money-gen] | otherwise =
  606. 454.50 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  607. 454.50 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  608. 454.50 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:328:9-21
  609. 454.50 s [really-safe-money-gen] @@ -325,7 +325,7 @@
  610. 454.50 s [really-safe-money-gen] where
  611. 454.50 s [really-safe-money-gen] go resultDouble
  612. 454.50 s [really-safe-money-gen] | isNaN d = Nothing
  613. 454.50 s [really-safe-money-gen] - | isInfinite d = Nothing
  614. 454.50 s [really-safe-money-gen] + | not (isInfinite d) = Nothing
  615. 454.50 s [really-safe-money-gen] | otherwise =
  616. 454.50 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  617. 454.50 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  618. 454.50 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:320:5-10
  619. 454.50 s [really-safe-money-gen] @@ -317,7 +317,7 @@
  620. 454.50 s [really-safe-money-gen] Double ->
  621. 456.87 s [really-safe-money-gen] Maybe Amount
  622. 456.87 s [really-safe-money-gen] fromDouble (QuantisationFactor qf) d
  623. 456.87 s [really-safe-money-gen] - | d < 0 = Nothing
  624. 456.98 s [really-safe-money-gen] + | True = Nothing
  625. 456.98 s [really-safe-money-gen] | otherwise =
  626. 456.98 s [really-safe-money-gen] let resultDouble :: Double
  627. 456.98 s [really-safe-money-gen] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
  628. 456.98 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:320:5-10
  629. 456.98 s [really-safe-money-gen] @@ -317,7 +317,7 @@
  630. 456.98 s [really-safe-money-gen] Double ->
  631. 456.98 s [really-safe-money-gen] Maybe Amount
  632. 456.98 s [really-safe-money-gen] fromDouble (QuantisationFactor qf) d
  633. 456.98 s [really-safe-money-gen] - | d < 0 = Nothing
  634. 456.98 s [really-safe-money-gen] + | not (d < 0) = Nothing
  635. 456.98 s [really-safe-money-gen] | otherwise =
  636. 456.98 s [really-safe-money-gen] let resultDouble :: Double
  637. 456.98 s [really-safe-money-gen] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
  638. 456.98 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:332:38-40
  639. 456.98 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  640. 456.98 s [really-safe-money-gen] | otherwise =
  641. 456.98 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  642. 456.98 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  643. 456.98 s [really-safe-money-gen] - if exponent resultDouble > 65
  644. 456.98 s [really-safe-money-gen] + if exponent resultDouble > 0
  645. 456.98 s [really-safe-money-gen] then Nothing
  646. 456.98 s [really-safe-money-gen] else
  647. 456.98 s [really-safe-money-gen] let ceiled :: Natural
  648. 456.98 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:332:38-40
  649. 456.98 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  650. 456.98 s [really-safe-money-gen] | otherwise =
  651. 456.98 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  652. 456.98 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  653. 456.98 s [really-safe-money-gen] - if exponent resultDouble > 65
  654. 456.98 s [really-safe-money-gen] + if exponent resultDouble > 1
  655. 456.98 s [really-safe-money-gen] then Nothing
  656. 456.98 s [really-safe-money-gen] else
  657. 456.98 s [really-safe-money-gen] let ceiled :: Natural
  658. 456.98 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:332:38-40
  659. 456.98 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  660. 456.99 s [really-safe-money-gen] | otherwise =
  661. 456.99 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  662. 456.99 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  663. 456.99 s [really-safe-money-gen] - if exponent resultDouble > 65
  664. 456.99 s [really-safe-money-gen] + if exponent resultDouble > -65
  665. 456.99 s [really-safe-money-gen] then Nothing
  666. 456.99 s [really-safe-money-gen] else
  667. 456.99 s [really-safe-money-gen] let ceiled :: Natural
  668. 456.99 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:332:14-40
  669. 456.99 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  670. 456.99 s [really-safe-money-gen] | otherwise =
  671. 456.99 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  672. 456.99 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  673. 456.99 s [really-safe-money-gen] - if exponent resultDouble > 65
  674. 456.99 s [really-safe-money-gen] + if True
  675. 456.99 s [really-safe-money-gen] then Nothing
  676. 456.99 s [really-safe-money-gen] else
  677. 456.99 s [really-safe-money-gen] let ceiled :: Natural
  678. 456.99 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:332:14-40
  679. 456.99 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  680. 456.99 s [really-safe-money-gen] | otherwise =
  681. 456.99 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  682. 456.99 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  683. 456.99 s [really-safe-money-gen] - if exponent resultDouble > 65
  684. 456.99 s [really-safe-money-gen] + if False
  685. 456.99 s [really-safe-money-gen] then Nothing
  686. 456.99 s [really-safe-money-gen] else
  687. 456.99 s [really-safe-money-gen] let ceiled :: Natural
  688. 456.99 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:332:14-40
  689. 456.99 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  690. 456.99 s [really-safe-money-gen] | otherwise =
  691. 456.99 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  692. 456.99 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  693. 456.99 s [really-safe-money-gen] - if exponent resultDouble > 65
  694. 456.99 s [really-safe-money-gen] + if not (exponent resultDouble > 65)
  695. 456.99 s [really-safe-money-gen] then Nothing
  696. 456.99 s [really-safe-money-gen] else
  697. 456.99 s [really-safe-money-gen] let ceiled :: Natural
  698. 456.99 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:339:22-39
  699. 456.99 s [really-safe-money-gen] @@ -336,7 +336,7 @@
  700. 456.99 s [really-safe-money-gen] ceiled = (ceiling :: Double -> Natural) resultDouble
  701. 456.99 s [really-safe-money-gen] floored :: Natural
  702. 456.99 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  703. 456.99 s [really-safe-money-gen] - in if ceiled == floored
  704. 456.99 s [really-safe-money-gen] + in if False
  705. 456.99 s [really-safe-money-gen] then
  706. 456.99 s [really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  707. 456.99 s [really-safe-money-gen] then Nothing
  708. 456.99 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:339:22-39
  709. 456.99 s [really-safe-money-gen] @@ -336,7 +336,7 @@
  710. 456.99 s [really-safe-money-gen] ceiled = (ceiling :: Double -> Natural) resultDouble
  711. 456.99 s [really-safe-money-gen] floored :: Natural
  712. 456.99 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  713. 456.99 s [really-safe-money-gen] - in if ceiled == floored
  714. 456.99 s [really-safe-money-gen] + in if not (ceiled == floored)
  715. 456.99 s [really-safe-money-gen] then
  716. 456.99 s [really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  717. 456.99 s [really-safe-money-gen] then Nothing
  718. 456.99 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:339:22-39
  719. 456.99 s [really-safe-money-gen] @@ -336,7 +336,7 @@
  720. 456.99 s [really-safe-money-gen] ceiled = (ceiling :: Double -> Natural) resultDouble
  721. 456.99 s [really-safe-money-gen] floored :: Natural
  722. 456.99 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  723. 456.99 s [really-safe-money-gen] - in if ceiled == floored
  724. 456.99 s [really-safe-money-gen] + in if True
  725. 456.99 s [really-safe-money-gen] then
  726. 456.99 s [really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  727. 456.99 s [really-safe-money-gen] then Nothing
  728. 456.99 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:341:26-91
  729. 456.99 s [really-safe-money-gen] @@ -338,7 +338,7 @@
  730. 456.99 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  731. 456.99 s [really-safe-money-gen] in if ceiled == floored
  732. 456.99 s [really-safe-money-gen] then
  733. 456.99 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  734. 457.00 s [really-safe-money-gen] + if True
  735. 457.00 s [really-safe-money-gen] then Nothing
  736. 457.00 s [really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
  737. 457.00 s [really-safe-money-gen] else Nothing
  738. 457.00 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:341:26-91
  739. 457.00 s [really-safe-money-gen] @@ -338,7 +338,7 @@
  740. 457.00 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  741. 457.00 s [really-safe-money-gen] in if ceiled == floored
  742. 457.00 s [really-safe-money-gen] then
  743. 457.00 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  744. 457.00 s [really-safe-money-gen] + if False
  745. 457.00 s [really-safe-money-gen] then Nothing
  746. 457.00 s [really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
  747. 457.00 s [really-safe-money-gen] else Nothing
  748. 457.00 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:341:26-91
  749. 457.00 s [really-safe-money-gen] @@ -338,7 +338,7 @@
  750. 457.00 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  751. 457.00 s [really-safe-money-gen] in if ceiled == floored
  752. 457.00 s [really-safe-money-gen] then
  753. 457.00 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  754. 457.00 s [really-safe-money-gen] + if not (ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64))
  755. 457.00 s [really-safe-money-gen] then Nothing
  756. 457.00 s [really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
  757. 457.00 s [really-safe-money-gen] else Nothing
  758. 457.00 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:341:23-65
  759. 457.00 s [really-safe-money-gen] @@ -338,9 +338,9 @@
  760. 457.00 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  761. 457.00 s [really-safe-money-gen] in if ceiled == floored
  762. 457.00 s [really-safe-money-gen] then
  763. 457.00 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  764. 457.00 s [really-safe-money-gen] - then Nothing
  765. 457.00 s [really-safe-money-gen] - else Just $ Amount (fromIntegral ceiled)
  766. 457.00 s [really-safe-money-gen] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  767. 457.00 s [really-safe-money-gen] + then Nothing
  768. 457.00 s [really-safe-money-gen] + else Just $ Amount (fromIntegral ceiled)
  769. 457.00 s [really-safe-money-gen] else Nothing
  770. 457.00 s [really-safe-money-gen]
  771. 457.00 s [really-safe-money-gen] -- | Turn an amount of money into a 'Double'.
  772. 457.00 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:339:19-33
  773. 457.00 s [really-safe-money-gen] @@ -336,12 +336,12 @@
  774. 457.00 s [really-safe-money-gen] ceiled = (ceiling :: Double -> Natural) resultDouble
  775. 457.00 s [really-safe-money-gen] floored :: Natural
  776. 457.00 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  777. 457.00 s [really-safe-money-gen] - in if ceiled == floored
  778. 457.00 s [really-safe-money-gen] - then
  779. 457.00 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  780. 457.00 s [really-safe-money-gen] - then Nothing
  781. 457.00 s [really-safe-money-gen] - else Just $ Amount (fromIntegral ceiled)
  782. 457.00 s [really-safe-money-gen] - else Nothing
  783. 457.00 s [really-safe-money-gen] + in if ceiled == floored
  784. 457.00 s [really-safe-money-gen] + then
  785. 457.00 s [really-safe-money-gen] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  786. 457.00 s [really-safe-money-gen] + then Nothing
  787. 457.00 s [really-safe-money-gen] + else Just $ Amount (fromIntegral ceiled)
  788. 457.00 s [really-safe-money-gen] + else Nothing
  789. 457.00 s [really-safe-money-gen]
  790. 457.00 s [really-safe-money-gen] -- | Turn an amount of money into a 'Double'.
  791. 457.00 s [really-safe-money-gen] --
  792. 457.00 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:332:11-33
  793. 457.00 s [really-safe-money-gen] @@ -329,19 +329,19 @@
  794. 457.00 s [really-safe-money-gen] | otherwise =
  795. 457.00 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  796. 457.00 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  797. 457.00 s [really-safe-money-gen] - if exponent resultDouble > 65
  798. 457.00 s [really-safe-money-gen] - then Nothing
  799. 457.00 s [really-safe-money-gen] - else
  800. 457.00 s [really-safe-money-gen] - let ceiled :: Natural
  801. 457.00 s [really-safe-money-gen] - ceiled = (ceiling :: Double -> Natural) resultDouble
  802. 457.00 s [really-safe-money-gen] - floored :: Natural
  803. 457.00 s [really-safe-money-gen] - floored = (floor :: Double -> Natural) resultDouble
  804. 457.00 s [really-safe-money-gen] - in if ceiled == floored
  805. 457.00 s [really-safe-money-gen] - then
  806. 457.00 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  807. 458.71 s [really-safe-money-gen] - then Nothing
  808. 458.71 s [really-safe-money-gen] - else Just $ Amount (fromIntegral ceiled)
  809. 458.71 s [really-safe-money-gen] - else Nothing
  810. 458.71 s [really-safe-money-gen] + if exponent resultDouble > 65
  811. 458.71 s [really-safe-money-gen] + then Nothing
  812. 458.71 s [really-safe-money-gen] + else
  813. 458.71 s [really-safe-money-gen] + let ceiled :: Natural
  814. 458.71 s [really-safe-money-gen] + ceiled = (ceiling :: Double -> Natural) resultDouble
  815. 458.71 s [really-safe-money-gen] + floored :: Natural
  816. 458.71 s [really-safe-money-gen] + floored = (floor :: Double -> Natural) resultDouble
  817. 458.71 s [really-safe-money-gen] + in if ceiled == floored
  818. 458.71 s [really-safe-money-gen] + then
  819. 458.71 s [really-safe-money-gen] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  820. 458.71 s [really-safe-money-gen] + then Nothing
  821. 458.71 s [really-safe-money-gen] + else Just $ Amount (fromIntegral ceiled)
  822. 458.71 s [really-safe-money-gen] + else Nothing
  823. 458.71 s [really-safe-money-gen]
  824. 458.71 s [really-safe-money-gen] -- | Turn an amount of money into a 'Double'.
  825. 458.71 s [really-safe-money-gen] --
  826. 458.71 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:290:79-80
  827. 458.71 s [really-safe-money-gen] @@ -287,7 +287,7 @@
  828. 458.71 s [really-safe-money-gen] -- >>> toRatio (QuantisationFactor 100) (Amount 1)
  829. 458.71 s [really-safe-money-gen] -- 1 % 100
  830. 458.71 s [really-safe-money-gen] toRatio :: QuantisationFactor -> Amount -> Ratio Natural
  831. 458.71 s [really-safe-money-gen] -toRatio (QuantisationFactor 0) a = fromIntegral (toMinimalQuantisations a) :% 0
  832. 458.71 s [really-safe-money-gen] +toRatio (QuantisationFactor 0) a = fromIntegral (toMinimalQuantisations a) :% 1
  833. 458.71 s [really-safe-money-gen] toRatio (QuantisationFactor quantisationFactor) a =
  834. 458.71 s [really-safe-money-gen] (fromIntegral :: Word64 -> Natural) (toMinimalQuantisations a)
  835. 458.71 s [really-safe-money-gen] % (fromIntegral :: Word32 -> Natural) quantisationFactor
  836. 458.71 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:494:96-97
  837. 458.71 s [really-safe-money-gen] @@ -491,7 +491,7 @@
  838. 458.71 s [really-safe-money-gen] let maxBoundI :: Integer
  839. 458.71 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  840. 458.71 s [really-safe-money-gen] r :: Integer
  841. 458.71 s [really-safe-money-gen] - r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  842. 458.71 s [really-safe-money-gen] + r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 1 l
  843. 458.71 s [really-safe-money-gen] in if r > maxBoundI
  844. 458.71 s [really-safe-money-gen] then Nothing
  845. 458.71 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  846. 458.71 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:495:10-23
  847. 458.71 s [really-safe-money-gen] @@ -492,7 +492,7 @@
  848. 458.71 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  849. 458.71 s [really-safe-money-gen] r :: Integer
  850. 458.71 s [really-safe-money-gen] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  851. 458.71 s [really-safe-money-gen] - in if r > maxBoundI
  852. 458.71 s [really-safe-money-gen] + in if False
  853. 458.71 s [really-safe-money-gen] then Nothing
  854. 458.72 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  855. 458.72 s [really-safe-money-gen]
  856. 458.72 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:495:10-23
  857. 458.72 s [really-safe-money-gen] @@ -492,7 +492,7 @@
  858. 458.72 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  859. 458.72 s [really-safe-money-gen] r :: Integer
  860. 458.72 s [really-safe-money-gen] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  861. 458.72 s [really-safe-money-gen] - in if r > maxBoundI
  862. 458.72 s [really-safe-money-gen] + in if not (r > maxBoundI)
  863. 458.72 s [really-safe-money-gen] then Nothing
  864. 458.72 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  865. 458.72 s [really-safe-money-gen]
  866. 458.72 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:495:7-66
  867. 458.72 s [really-safe-money-gen] @@ -492,9 +492,9 @@
  868. 458.72 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  869. 458.72 s [really-safe-money-gen] r :: Integer
  870. 458.72 s [really-safe-money-gen] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  871. 458.72 s [really-safe-money-gen] - in if r > maxBoundI
  872. 458.72 s [really-safe-money-gen] - then Nothing
  873. 458.72 s [really-safe-money-gen] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  874. 458.72 s [really-safe-money-gen] + in if r > maxBoundI
  875. 458.72 s [really-safe-money-gen] + then Nothing
  876. 458.72 s [really-safe-money-gen] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  877. 458.72 s [really-safe-money-gen]
  878. 458.72 s [really-safe-money-gen] -- | Add two amounts of money.
  879. 458.72 s [really-safe-money-gen] --
  880. 458.72 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:250:15-16
  881. 458.72 s [really-safe-money-gen] @@ -247,7 +247,7 @@
  882. 458.72 s [really-safe-money-gen] -- >>> zero
  883. 458.72 s [really-safe-money-gen] -- Amount 0
  884. 458.72 s [really-safe-money-gen] zero :: Amount
  885. 458.72 s [really-safe-money-gen] -zero = Amount 0
  886. 458.72 s [really-safe-money-gen] +zero = Amount 1
  887. 458.72 s [really-safe-money-gen]
  888. 458.72 s [really-safe-money-gen] -- | Turn an amount into a number of minimal quantisations.
  889. 458.72 s [really-safe-money-gen] --
  890. 458.72 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:661:30-31
  891. 458.72 s [really-safe-money-gen] @@ -658,7 +658,7 @@
  892. 458.72 s [really-safe-money-gen] -- | The amount and the real rate that was used, considering the 'Rounding'
  893. 458.72 s [really-safe-money-gen] (Maybe Amount, Ratio Natural)
  894. 458.72 s [really-safe-money-gen] fraction _ (Amount 0) f = (Just zero, f)
  895. 458.72 s [really-safe-money-gen] -fraction _ _ 0 = (Just zero, 0)
  896. 458.72 s [really-safe-money-gen] +fraction _ _ 0 = (Just zero, 1)
  897. 458.72 s [really-safe-money-gen] fraction r (Amount a) f =
  898. 458.72 s [really-safe-money-gen] let amountAsRatio :: Ratio Natural
  899. 458.72 s [really-safe-money-gen] amountAsRatio = (fromIntegral :: Word64 -> Ratio Natural) a
  900. 458.72 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:681:12-37
  901. 458.72 s [really-safe-money-gen] @@ -678,7 +678,7 @@
  902. 458.72 s [really-safe-money-gen] maxBoundN :: Natural
  903. 458.72 s [really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
  904. 458.72 s [really-safe-money-gen] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  905. 458.72 s [really-safe-money-gen] - in ( if roundedResult > maxBoundN
  906. 458.72 s [really-safe-money-gen] + in ( if True
  907. 458.72 s [really-safe-money-gen] then Nothing
  908. 458.72 s [really-safe-money-gen] else Just result,
  909. 458.72 s [really-safe-money-gen] actualRate
  910. 458.72 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:681:12-37
  911. 458.72 s [really-safe-money-gen] @@ -678,7 +678,7 @@
  912. 458.72 s [really-safe-money-gen] maxBoundN :: Natural
  913. 458.72 s [really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
  914. 458.72 s [really-safe-money-gen] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  915. 458.72 s [really-safe-money-gen] - in ( if roundedResult > maxBoundN
  916. 458.72 s [really-safe-money-gen] + in ( if False
  917. 458.72 s [really-safe-money-gen] then Nothing
  918. 458.72 s [really-safe-money-gen] else Just result,
  919. 458.72 s [really-safe-money-gen] actualRate
  920. 458.72 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:681:12-37
  921. 458.72 s [really-safe-money-gen] @@ -678,7 +678,7 @@
  922. 458.72 s [really-safe-money-gen] maxBoundN :: Natural
  923. 458.72 s [really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
  924. 458.72 s [really-safe-money-gen] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  925. 458.72 s [really-safe-money-gen] - in ( if roundedResult > maxBoundN
  926. 458.72 s [really-safe-money-gen] + in ( if not (roundedResult > maxBoundN)
  927. 458.72 s [really-safe-money-gen] then Nothing
  928. 458.72 s [really-safe-money-gen] else Just result,
  929. 458.72 s [really-safe-money-gen] actualRate
  930. 458.72 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:681:9-27
  931. 458.72 s [really-safe-money-gen] @@ -678,9 +678,9 @@
  932. 458.72 s [really-safe-money-gen] maxBoundN :: Natural
  933. 458.72 s [really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
  934. 458.72 s [really-safe-money-gen] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  935. 458.72 s [really-safe-money-gen] - in ( if roundedResult > maxBoundN
  936. 458.72 s [really-safe-money-gen] - then Nothing
  937. 458.72 s [really-safe-money-gen] - else Just result,
  938. 458.72 s [really-safe-money-gen] + in ( if roundedResult > maxBoundN
  939. 458.72 s [really-safe-money-gen] + then Nothing
  940. 458.72 s [really-safe-money-gen] + else Just result,
  941. 458.72 s [really-safe-money-gen] actualRate
  942. 458.72 s [really-safe-money-gen] )
  943. 458.72 s [really-safe-money-gen]
  944. 458.72 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:806:79-92
  945. 458.72 s [really-safe-money-gen] @@ -803,4 +803,4 @@
  946. 458.72 s [really-safe-money-gen]
  947. 458.72 s [really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  948. 458.72 s [really-safe-money-gen] validateStrictlyPositive :: Amount -> Validation
  949. 458.72 s [really-safe-money-gen] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
  950. 458.72 s [really-safe-money-gen] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ True
  951. 458.72 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:806:79-92
  952. 458.72 s [really-safe-money-gen] @@ -803,4 +803,4 @@
  953. 458.72 s [really-safe-money-gen]
  954. 458.72 s [really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  955. 458.72 s [really-safe-money-gen] validateStrictlyPositive :: Amount -> Validation
  956. 458.72 s [really-safe-money-gen] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
  957. 458.72 s [really-safe-money-gen] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ False
  958. 458.72 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:806:79-92
  959. 458.72 s [really-safe-money-gen] @@ -803,4 +803,4 @@
  960. 458.72 s [really-safe-money-gen]
  961. 458.72 s [really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  962. 458.72 s [really-safe-money-gen] validateStrictlyPositive :: Amount -> Validation
  963. 458.72 s [really-safe-money-gen] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
  964. 458.72 s [really-safe-money-gen] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ not (amount > zero)
  965. 458.72 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:607:15-22
  966. 458.72 s [really-safe-money-gen] @@ -604,7 +604,7 @@
  967. 458.72 s [really-safe-money-gen] case ad of
  968. 458.72 s [really-safe-money-gen] DistributedIntoUnequalChunks _ a1 _ a2 ->
  969. 458.72 s [really-safe-money-gen] declare "The larger chunks are larger" $
  970. 458.72 s [really-safe-money-gen] - a1 > a2
  971. 458.73 s [really-safe-money-gen] + True
  972. 458.73 s [really-safe-money-gen] _ -> valid
  973. 458.73 s [really-safe-money-gen] ]
  974. 458.73 s [really-safe-money-gen]
  975. 458.73 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:607:15-22
  976. 458.73 s [really-safe-money-gen] @@ -604,7 +604,7 @@
  977. 458.73 s [really-safe-money-gen] case ad of
  978. 458.73 s [really-safe-money-gen] DistributedIntoUnequalChunks _ a1 _ a2 ->
  979. 458.73 s [really-safe-money-gen] declare "The larger chunks are larger" $
  980. 458.73 s [really-safe-money-gen] - a1 > a2
  981. 458.73 s [really-safe-money-gen] + False
  982. 458.73 s [really-safe-money-gen] _ -> valid
  983. 458.73 s [really-safe-money-gen] ]
  984. 458.73 s [really-safe-money-gen]
  985. 458.73 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:607:15-22
  986. 458.73 s [really-safe-money-gen] @@ -604,7 +604,7 @@
  987. 458.73 s [really-safe-money-gen] case ad of
  988. 458.73 s [really-safe-money-gen] DistributedIntoUnequalChunks _ a1 _ a2 ->
  989. 458.73 s [really-safe-money-gen] declare "The larger chunks are larger" $
  990. 458.73 s [really-safe-money-gen] - a1 > a2
  991. 458.73 s [really-safe-money-gen] + not (a1 > a2)
  992. 458.73 s [really-safe-money-gen] _ -> valid
  993. 458.73 s [really-safe-money-gen] ]
  994. 458.73 s [really-safe-money-gen]
  995. 458.73 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount.hs:603:7-8
  996. 458.73 s [really-safe-money-gen] @@ -600,13 +600,7 @@
  997. 458.73 s [really-safe-money-gen] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
  998. 458.73 s [really-safe-money-gen] validate ad =
  999. 458.73 s [really-safe-money-gen] mconcat
  1000. 458.73 s [really-safe-money-gen] - [ genericValidate ad,
  1001. 458.73 s [really-safe-money-gen] - case ad of
  1002. 458.73 s [really-safe-money-gen] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  1003. 458.73 s [really-safe-money-gen] - declare "The larger chunks are larger" $
  1004. 458.73 s [really-safe-money-gen] - a1 > a2
  1005. 458.73 s [really-safe-money-gen] - _ -> valid
  1006. 458.73 s [really-safe-money-gen] - ]
  1007. 458.73 s [really-safe-money-gen] + []
  1008. 458.73 s [really-safe-money-gen]
  1009. 458.73 s [really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
  1010. 458.73 s [really-safe-money-gen]
  1011. 458.73 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount.hs:603:7-8
  1012. 458.73 s [really-safe-money-gen] @@ -600,13 +600,13 @@
  1013. 458.73 s [really-safe-money-gen] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
  1014. 458.73 s [really-safe-money-gen] validate ad =
  1015. 458.73 s [really-safe-money-gen] mconcat
  1016. 458.73 s [really-safe-money-gen] - [ genericValidate ad,
  1017. 458.73 s [really-safe-money-gen] - case ad of
  1018. 458.73 s [really-safe-money-gen] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  1019. 458.73 s [really-safe-money-gen] - declare "The larger chunks are larger" $
  1020. 458.73 s [really-safe-money-gen] - a1 > a2
  1021. 458.73 s [really-safe-money-gen] - _ -> valid
  1022. 458.73 s [really-safe-money-gen] - ]
  1023. 461.71 s [really-safe-money-gen] + [ genericValidate ad,
  1024. 461.71 s [really-safe-money-gen] + case ad of
  1025. 461.71 s [really-safe-money-gen] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  1026. 461.71 s [really-safe-money-gen] + declare "The larger chunks are larger" $
  1027. 461.71 s [really-safe-money-gen] + a1 > a2
  1028. 461.71 s [really-safe-money-gen] + _ -> valid
  1029. 461.71 s [really-safe-money-gen] + ]
  1030. 461.71 s [really-safe-money-gen]
  1031. 461.71 s [really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
  1032. 461.71 s [really-safe-money-gen]
  1033. 461.71 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:87:27-28
  1034. 461.71 s [really-safe-money-gen] @@ -84,7 +84,7 @@
  1035. 461.72 s [really-safe-money-gen] fromDecimalLiteral dl = do
  1036. 461.72 s [really-safe-money-gen] irat <-
  1037. 461.72 s [really-safe-money-gen] let r = DecimalLiteral.toRational dl
  1038. 461.72 s [really-safe-money-gen] - in if numerator r == 0
  1039. 461.72 s [really-safe-money-gen] + in if numerator r == 1
  1040. 461.72 s [really-safe-money-gen] then Nothing
  1041. 461.72 s [really-safe-money-gen] else pure r
  1042. 461.72 s [really-safe-money-gen]
  1043. 461.72 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:87:12-28
  1044. 461.72 s [really-safe-money-gen] @@ -84,7 +84,7 @@
  1045. 461.72 s [really-safe-money-gen] fromDecimalLiteral dl = do
  1046. 461.72 s [really-safe-money-gen] irat <-
  1047. 461.72 s [really-safe-money-gen] let r = DecimalLiteral.toRational dl
  1048. 461.72 s [really-safe-money-gen] - in if numerator r == 0
  1049. 461.72 s [really-safe-money-gen] + in if True
  1050. 461.72 s [really-safe-money-gen] then Nothing
  1051. 461.72 s [really-safe-money-gen] else pure r
  1052. 461.72 s [really-safe-money-gen]
  1053. 461.72 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:87:12-28
  1054. 461.72 s [really-safe-money-gen] @@ -84,7 +84,7 @@
  1055. 461.72 s [really-safe-money-gen] fromDecimalLiteral dl = do
  1056. 461.72 s [really-safe-money-gen] irat <-
  1057. 461.72 s [really-safe-money-gen] let r = DecimalLiteral.toRational dl
  1058. 461.72 s [really-safe-money-gen] - in if numerator r == 0
  1059. 461.72 s [really-safe-money-gen] + in if False
  1060. 461.72 s [really-safe-money-gen] then Nothing
  1061. 461.72 s [really-safe-money-gen] else pure r
  1062. 461.72 s [really-safe-money-gen]
  1063. 461.72 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:92:13-14
  1064. 461.72 s [really-safe-money-gen] @@ -89,7 +89,7 @@
  1065. 461.72 s [really-safe-money-gen] else pure r
  1066. 461.72 s [really-safe-money-gen]
  1067. 461.72 s [really-safe-money-gen] rat <-
  1068. 461.72 s [really-safe-money-gen] - let r = 1 / irat
  1069. 461.72 s [really-safe-money-gen] + let r = 0 / irat
  1070. 461.72 s [really-safe-money-gen] in if r < 0
  1071. 461.72 s [really-safe-money-gen] then Nothing
  1072. 461.72 s [really-safe-money-gen] else Just r
  1073. 461.72 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/QuantisationFactor.hs:87:9-22
  1074. 461.72 s [really-safe-money-gen] @@ -84,9 +84,9 @@
  1075. 461.72 s [really-safe-money-gen] fromDecimalLiteral dl = do
  1076. 461.72 s [really-safe-money-gen] irat <-
  1077. 461.72 s [really-safe-money-gen] let r = DecimalLiteral.toRational dl
  1078. 461.72 s [really-safe-money-gen] - in if numerator r == 0
  1079. 461.72 s [really-safe-money-gen] - then Nothing
  1080. 461.72 s [really-safe-money-gen] - else pure r
  1081. 461.72 s [really-safe-money-gen] + in if numerator r == 0
  1082. 461.72 s [really-safe-money-gen] + then Nothing
  1083. 461.72 s [really-safe-money-gen] + else pure r
  1084. 461.72 s [really-safe-money-gen]
  1085. 461.72 s [really-safe-money-gen] rat <-
  1086. 461.72 s [really-safe-money-gen] let r = 1 / irat
  1087. 461.72 s [really-safe-money-gen] Testing mutation Negate at src/Money/QuantisationFactor.hs:87:12-28
  1088. 461.72 s [really-safe-money-gen] @@ -84,7 +84,7 @@
  1089. 461.72 s [really-safe-money-gen] fromDecimalLiteral dl = do
  1090. 461.72 s [really-safe-money-gen] irat <-
  1091. 461.72 s [really-safe-money-gen] let r = DecimalLiteral.toRational dl
  1092. 461.72 s [really-safe-money-gen] - in if numerator r == 0
  1093. 461.72 s [really-safe-money-gen] + in if not (numerator r == 0)
  1094. 461.72 s [really-safe-money-gen] then Nothing
  1095. 461.72 s [really-safe-money-gen] else pure r
  1096. 461.72 s [really-safe-money-gen]
  1097. 461.72 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:93:16-17
  1098. 461.72 s [really-safe-money-gen] @@ -90,7 +90,7 @@
  1099. 461.72 s [really-safe-money-gen]
  1100. 461.72 s [really-safe-money-gen] rat <-
  1101. 461.73 s [really-safe-money-gen] let r = 1 / irat
  1102. 461.73 s [really-safe-money-gen] - in if r < 0
  1103. 461.73 s [really-safe-money-gen] + in if r < 1
  1104. 461.73 s [really-safe-money-gen] then Nothing
  1105. 461.73 s [really-safe-money-gen] else Just r
  1106. 461.73 s [really-safe-money-gen]
  1107. 461.73 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:93:12-17
  1108. 461.73 s [really-safe-money-gen] @@ -90,7 +90,7 @@
  1109. 461.73 s [really-safe-money-gen]
  1110. 461.73 s [really-safe-money-gen] rat <-
  1111. 461.73 s [really-safe-money-gen] let r = 1 / irat
  1112. 461.73 s [really-safe-money-gen] - in if r < 0
  1113. 461.73 s [really-safe-money-gen] + in if True
  1114. 461.73 s [really-safe-money-gen] then Nothing
  1115. 461.73 s [really-safe-money-gen] else Just r
  1116. 461.73 s [really-safe-money-gen]
  1117. 461.73 s [really-safe-money-gen] Testing mutation Negate at src/Money/QuantisationFactor.hs:93:12-17
  1118. 461.73 s [really-safe-money-gen] @@ -90,7 +90,7 @@
  1119. 461.73 s [really-safe-money-gen]
  1120. 461.73 s [really-safe-money-gen] rat <-
  1121. 461.73 s [really-safe-money-gen] let r = 1 / irat
  1122. 461.73 s [really-safe-money-gen] - in if r < 0
  1123. 461.73 s [really-safe-money-gen] + in if not (r < 0)
  1124. 461.73 s [really-safe-money-gen] then Nothing
  1125. 461.73 s [really-safe-money-gen] else Just r
  1126. 461.73 s [really-safe-money-gen]
  1127. 461.73 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:93:12-17
  1128. 461.73 s [really-safe-money-gen] @@ -90,7 +90,7 @@
  1129. 461.73 s [really-safe-money-gen]
  1130. 461.73 s [really-safe-money-gen] rat <-
  1131. 461.73 s [really-safe-money-gen] let r = 1 / irat
  1132. 461.73 s [really-safe-money-gen] - in if r < 0
  1133. 461.73 s [really-safe-money-gen] + in if False
  1134. 461.73 s [really-safe-money-gen] then Nothing
  1135. 461.73 s [really-safe-money-gen] else Just r
  1136. 461.73 s [really-safe-money-gen]
  1137. 461.73 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/QuantisationFactor.hs:93:9-22
  1138. 461.73 s [really-safe-money-gen] @@ -90,9 +90,9 @@
  1139. 461.73 s [really-safe-money-gen]
  1140. 461.73 s [really-safe-money-gen] rat <-
  1141. 461.73 s [really-safe-money-gen] let r = 1 / irat
  1142. 461.73 s [really-safe-money-gen] - in if r < 0
  1143. 461.73 s [really-safe-money-gen] - then Nothing
  1144. 461.73 s [really-safe-money-gen] - else Just r
  1145. 461.73 s [really-safe-money-gen] + in if r < 0
  1146. 461.73 s [really-safe-money-gen] + then Nothing
  1147. 461.73 s [really-safe-money-gen] + else Just r
  1148. 461.73 s [really-safe-money-gen]
  1149. 461.73 s [really-safe-money-gen] fac <-
  1150. 461.73 s [really-safe-money-gen] if denominator rat == 1
  1151. 461.73 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:98:27-28
  1152. 461.73 s [really-safe-money-gen] @@ -95,7 +95,7 @@
  1153. 461.73 s [really-safe-money-gen] else Just r
  1154. 461.73 s [really-safe-money-gen]
  1155. 461.73 s [really-safe-money-gen] fac <-
  1156. 461.73 s [really-safe-money-gen] - if denominator rat == 1
  1157. 461.73 s [really-safe-money-gen] + if denominator rat == 0
  1158. 461.73 s [really-safe-money-gen] then Just (numerator rat)
  1159. 461.73 s [really-safe-money-gen] else Nothing
  1160. 461.73 s [really-safe-money-gen]
  1161. 461.73 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:98:27-28
  1162. 461.73 s [really-safe-money-gen] @@ -95,7 +95,7 @@
  1163. 461.73 s [really-safe-money-gen] else Just r
  1164. 461.73 s [really-safe-money-gen]
  1165. 461.73 s [really-safe-money-gen] fac <-
  1166. 461.73 s [really-safe-money-gen] - if denominator rat == 1
  1167. 461.73 s [really-safe-money-gen] + if denominator rat == -1
  1168. 461.73 s [really-safe-money-gen] then Just (numerator rat)
  1169. 461.73 s [really-safe-money-gen] else Nothing
  1170. 461.73 s [really-safe-money-gen]
  1171. 461.73 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:98:8-28
  1172. 461.73 s [really-safe-money-gen] @@ -95,7 +95,7 @@
  1173. 461.73 s [really-safe-money-gen] else Just r
  1174. 461.73 s [really-safe-money-gen]
  1175. 461.73 s [really-safe-money-gen] fac <-
  1176. 461.73 s [really-safe-money-gen] - if denominator rat == 1
  1177. 461.73 s [really-safe-money-gen] + if False
  1178. 461.73 s [really-safe-money-gen] then Just (numerator rat)
  1179. 461.73 s [really-safe-money-gen] else Nothing
  1180. 461.73 s [really-safe-money-gen]
  1181. 461.73 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/QuantisationFactor.hs:98:5-19
  1182. 461.73 s [really-safe-money-gen] @@ -95,9 +95,9 @@
  1183. 461.73 s [really-safe-money-gen] else Just r
  1184. 461.73 s [really-safe-money-gen]
  1185. 461.73 s [really-safe-money-gen] fac <-
  1186. 461.73 s [really-safe-money-gen] - if denominator rat == 1
  1187. 461.73 s [really-safe-money-gen] - then Just (numerator rat)
  1188. 461.73 s [really-safe-money-gen] - else Nothing
  1189. 461.73 s [really-safe-money-gen] + if denominator rat == 1
  1190. 461.73 s [really-safe-money-gen] + then Just (numerator rat)
  1191. 461.73 s [really-safe-money-gen] + else Nothing
  1192. 461.73 s [really-safe-money-gen]
  1193. 461.73 s [really-safe-money-gen] if fac <= fromIntegral (maxBound :: Word32)
  1194. 461.73 s [really-safe-money-gen] then Just (QuantisationFactor (fromIntegral fac))
  1195. 461.73 s [really-safe-money-gen] Testing mutation Negate at src/Money/QuantisationFactor.hs:98:8-28
  1196. 461.73 s [really-safe-money-gen] @@ -95,7 +95,7 @@
  1197. 461.74 s [really-safe-money-gen] else Just r
  1198. 461.74 s [really-safe-money-gen]
  1199. 461.74 s [really-safe-money-gen] fac <-
  1200. 461.74 s [really-safe-money-gen] - if denominator rat == 1
  1201. 461.74 s [really-safe-money-gen] + if not (denominator rat == 1)
  1202. 461.74 s [really-safe-money-gen] then Just (numerator rat)
  1203. 461.74 s [really-safe-money-gen] else Nothing
  1204. 461.74 s [really-safe-money-gen]
  1205. 461.74 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:102:6-46
  1206. 461.74 s [really-safe-money-gen] @@ -99,6 +99,6 @@
  1207. 461.74 s [really-safe-money-gen] then Just (numerator rat)
  1208. 461.74 s [really-safe-money-gen] else Nothing
  1209. 461.74 s [really-safe-money-gen]
  1210. 461.74 s [really-safe-money-gen] - if fac <= fromIntegral (maxBound :: Word32)
  1211. 461.74 s [really-safe-money-gen] + if True
  1212. 461.74 s [really-safe-money-gen] then Just (QuantisationFactor (fromIntegral fac))
  1213. 461.74 s [really-safe-money-gen] else Nothing
  1214. 461.74 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:92:13-14
  1215. 461.74 s [really-safe-money-gen] @@ -89,7 +89,7 @@
  1216. 461.74 s [really-safe-money-gen] else pure r
  1217. 461.74 s [really-safe-money-gen]
  1218. 461.74 s [really-safe-money-gen] rat <-
  1219. 461.74 s [really-safe-money-gen] - let r = 1 / irat
  1220. 461.74 s [really-safe-money-gen] + let r = -1 / irat
  1221. 461.74 s [really-safe-money-gen] in if r < 0
  1222. 461.74 s [really-safe-money-gen] then Nothing
  1223. 461.74 s [really-safe-money-gen] else Just r
  1224. 461.74 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:102:6-46
  1225. 461.74 s [really-safe-money-gen] @@ -99,6 +99,6 @@
  1226. 461.74 s [really-safe-money-gen] then Just (numerator rat)
  1227. 461.74 s [really-safe-money-gen] else Nothing
  1228. 461.74 s [really-safe-money-gen]
  1229. 461.74 s [really-safe-money-gen] - if fac <= fromIntegral (maxBound :: Word32)
  1230. 461.74 s [really-safe-money-gen] + if False
  1231. 461.74 s [really-safe-money-gen] then Just (QuantisationFactor (fromIntegral fac))
  1232. 461.74 s [really-safe-money-gen] else Nothing
  1233. 461.74 s [really-safe-money-gen] Testing mutation Negate at src/Money/QuantisationFactor.hs:102:6-46
  1234. 461.74 s [really-safe-money-gen] @@ -99,6 +99,6 @@
  1235. 461.74 s [really-safe-money-gen] then Just (numerator rat)
  1236. 461.74 s [really-safe-money-gen] else Nothing
  1237. 461.74 s [really-safe-money-gen]
  1238. 461.74 s [really-safe-money-gen] - if fac <= fromIntegral (maxBound :: Word32)
  1239. 461.74 s [really-safe-money-gen] + if not (fac <= fromIntegral (maxBound :: Word32))
  1240. 461.74 s [really-safe-money-gen] then Just (QuantisationFactor (fromIntegral fac))
  1241. 461.74 s [really-safe-money-gen] else Nothing
  1242. 461.74 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:495:10-23
  1243. 461.74 s [really-safe-money-gen] @@ -492,7 +492,7 @@
  1244. 461.74 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  1245. 461.74 s [really-safe-money-gen] r :: Integer
  1246. 461.74 s [really-safe-money-gen] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  1247. 461.74 s [really-safe-money-gen] - in if r > maxBoundI
  1248. 461.74 s [really-safe-money-gen] + in if True
  1249. 461.74 s [really-safe-money-gen] then Nothing
  1250. 461.74 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1251. 461.74 s [really-safe-money-gen]
  1252. 461.74 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:67:67-68
  1253. 461.74 s [really-safe-money-gen] @@ -64,7 +64,7 @@
  1254. 461.74 s [really-safe-money-gen] -- Just (DecimalLiteral Nothing 1 0)
  1255. 461.74 s [really-safe-money-gen] toDecimalLiteral :: QuantisationFactor -> Maybe DecimalLiteral
  1256. 461.74 s [really-safe-money-gen] toDecimalLiteral (QuantisationFactor qfw) =
  1257. 461.74 s [really-safe-money-gen] - DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (1 % fromIntegral qfw)
  1258. 461.74 s [really-safe-money-gen] + DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (-1 % fromIntegral qfw)
  1259. 461.74 s [really-safe-money-gen]
  1260. 461.74 s [really-safe-money-gen] -- | Parse a 'QuantisationFactor' from a 'DecimalLiteral' that represents the smallest unit
  1261. 461.74 s [really-safe-money-gen] -- TODO explain that it's the inverse.
  1262. 461.74 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:40:62-63
  1263. 461.74 s [really-safe-money-gen] @@ -37,7 +37,7 @@
  1264. 461.74 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  1265. 461.74 s [really-safe-money-gen] mconcat
  1266. 461.74 s [really-safe-money-gen] [ genericValidate qf,
  1267. 461.74 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  1268. 461.74 s [really-safe-money-gen] + declare "The quantisation factor is not zero" $ w /= 1
  1269. 461.74 s [really-safe-money-gen] ]
  1270. 461.74 s [really-safe-money-gen]
  1271. 461.74 s [really-safe-money-gen] instance NFData QuantisationFactor
  1272. 461.74 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:40:57-63
  1273. 461.74 s [really-safe-money-gen] @@ -37,7 +37,7 @@
  1274. 461.74 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  1275. 461.74 s [really-safe-money-gen] mconcat
  1276. 461.74 s [really-safe-money-gen] [ genericValidate qf,
  1277. 461.74 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  1278. 461.74 s [really-safe-money-gen] + declare "The quantisation factor is not zero" $ True
  1279. 461.74 s [really-safe-money-gen] ]
  1280. 461.74 s [really-safe-money-gen]
  1281. 461.74 s [really-safe-money-gen] instance NFData QuantisationFactor
  1282. 461.74 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:98:8-28
  1283. 461.74 s [really-safe-money-gen] @@ -95,7 +95,7 @@
  1284. 461.74 s [really-safe-money-gen] else Just r
  1285. 461.74 s [really-safe-money-gen]
  1286. 461.74 s [really-safe-money-gen] fac <-
  1287. 461.74 s [really-safe-money-gen] - if denominator rat == 1
  1288. 461.74 s [really-safe-money-gen] + if True
  1289. 461.74 s [really-safe-money-gen] then Just (numerator rat)
  1290. 461.74 s [really-safe-money-gen] else Nothing
  1291. 461.74 s [really-safe-money-gen]
  1292. 461.74 s [really-safe-money-gen] Testing mutation Negate at src/Money/QuantisationFactor.hs:40:57-63
  1293. 461.74 s [really-safe-money-gen] @@ -37,7 +37,7 @@
  1294. 461.74 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  1295. 461.74 s [really-safe-money-gen] mconcat
  1296. 461.75 s [really-safe-money-gen] [ genericValidate qf,
  1297. 461.75 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  1298. 461.75 s [really-safe-money-gen] + declare "The quantisation factor is not zero" $ not (w /= 0)
  1299. 461.75 s [really-safe-money-gen] ]
  1300. 461.75 s [really-safe-money-gen]
  1301. 461.75 s [really-safe-money-gen] instance NFData QuantisationFactor
  1302. 461.75 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:40:57-63
  1303. 461.75 s [really-safe-money-gen] @@ -37,7 +37,7 @@
  1304. 461.75 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  1305. 461.75 s [really-safe-money-gen] mconcat
  1306. 461.75 s [really-safe-money-gen] [ genericValidate qf,
  1307. 461.75 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  1308. 461.75 s [really-safe-money-gen] + declare "The quantisation factor is not zero" $ False
  1309. 461.75 s [really-safe-money-gen] ]
  1310. 461.75 s [really-safe-money-gen]
  1311. 461.75 s [really-safe-money-gen] instance NFData QuantisationFactor
  1312. 461.75 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:67:67-68
  1313. 461.75 s [really-safe-money-gen] @@ -64,7 +64,7 @@
  1314. 461.75 s [really-safe-money-gen] -- Just (DecimalLiteral Nothing 1 0)
  1315. 463.60 s [really-safe-money-gen] toDecimalLiteral :: QuantisationFactor -> Maybe DecimalLiteral
  1316. 463.69 s [really-safe-money-gen] toDecimalLiteral (QuantisationFactor qfw) =
  1317. 463.69 s [really-safe-money-gen] - DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (1 % fromIntegral qfw)
  1318. 463.69 s [really-safe-money-gen] + DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (0 % fromIntegral qfw)
  1319. 463.69 s [really-safe-money-gen]
  1320. 463.69 s [really-safe-money-gen] -- | Parse a 'QuantisationFactor' from a 'DecimalLiteral' that represents the smallest unit
  1321. 463.69 s [really-safe-money-gen] -- TODO explain that it's the inverse.
  1322. 463.69 s [really-safe-money-gen] Testing mutation ListLit at src/Money/QuantisationFactor.hs:39:7-8
  1323. 463.69 s [really-safe-money-gen] @@ -36,9 +36,7 @@
  1324. 463.69 s [really-safe-money-gen] instance Validity QuantisationFactor where
  1325. 463.69 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  1326. 463.69 s [really-safe-money-gen] mconcat
  1327. 463.69 s [really-safe-money-gen] - [ genericValidate qf,
  1328. 463.69 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  1329. 463.69 s [really-safe-money-gen] - ]
  1330. 463.69 s [really-safe-money-gen] + []
  1331. 463.69 s [really-safe-money-gen]
  1332. 463.69 s [really-safe-money-gen] instance NFData QuantisationFactor
  1333. 463.69 s [really-safe-money-gen]
  1334. 463.69 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:451:14-23
  1335. 463.69 s [really-safe-money-gen] @@ -448,7 +448,7 @@
  1336. 463.69 s [really-safe-money-gen] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  1337. 463.69 s [really-safe-money-gen] DistributedZero -> DistributedZero
  1338. 463.69 s [really-safe-money-gen] DistributedIntoEqualChunks numberOfChunks chunk ->
  1339. 463.69 s [really-safe-money-gen] - if a >= zero
  1340. 463.69 s [really-safe-money-gen] + if False
  1341. 463.69 s [really-safe-money-gen] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  1342. 463.69 s [really-safe-money-gen] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  1343. 463.69 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  1344. 463.69 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:421:32-33
  1345. 463.69 s [really-safe-money-gen] @@ -418,7 +418,7 @@
  1346. 463.69 s [really-safe-money-gen] multiply :: Int32 -> Account -> Maybe Account
  1347. 463.69 s [really-safe-money-gen] multiply factor account =
  1348. 463.69 s [really-safe-money-gen] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  1349. 463.69 s [really-safe-money-gen] - f = case (compare factor 0, compare account zero) of
  1350. 463.69 s [really-safe-money-gen] + f = case (compare factor 1, compare account zero) of
  1351. 463.69 s [really-safe-money-gen] (EQ, _) -> const zero
  1352. 463.69 s [really-safe-money-gen] (_, EQ) -> const zero
  1353. 463.69 s [really-safe-money-gen] (GT, GT) -> Positive
  1354. 463.69 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:455:14-23
  1355. 463.69 s [really-safe-money-gen] @@ -452,7 +452,7 @@
  1356. 463.69 s [really-safe-money-gen] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  1357. 463.69 s [really-safe-money-gen] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  1358. 463.69 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  1359. 463.69 s [really-safe-money-gen] - if a >= zero
  1360. 463.69 s [really-safe-money-gen] + if False
  1361. 463.69 s [really-safe-money-gen] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  1362. 463.70 s [really-safe-money-gen] else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  1363. 463.70 s [really-safe-money-gen]
  1364. 463.70 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:495:12-18
  1365. 463.70 s [really-safe-money-gen] @@ -492,7 +492,7 @@
  1366. 463.70 s [really-safe-money-gen] fraction rounding account f =
  1367. 463.70 s [really-safe-money-gen] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  1368. 463.70 s [really-safe-money-gen] ro =
  1369. 463.70 s [really-safe-money-gen] - if f >= 0
  1370. 463.70 s [really-safe-money-gen] + if False
  1371. 463.70 s [really-safe-money-gen] then rounding
  1372. 463.70 s [really-safe-money-gen] else case rounding of
  1373. 463.70 s [really-safe-money-gen] RoundUp -> RoundDown
  1374. 463.70 s [really-safe-money-gen] Testing mutation ListLit at src/Money/QuantisationFactor.hs:39:7-8
  1375. 463.70 s [really-safe-money-gen] @@ -36,9 +36,9 @@
  1376. 463.70 s [really-safe-money-gen] instance Validity QuantisationFactor where
  1377. 463.70 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  1378. 463.70 s [really-safe-money-gen] mconcat
  1379. 463.70 s [really-safe-money-gen] - [ genericValidate qf,
  1380. 463.70 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  1381. 463.70 s [really-safe-money-gen] - ]
  1382. 463.70 s [really-safe-money-gen] + [ genericValidate qf,
  1383. 463.70 s [really-safe-money-gen] + declare "The quantisation factor is not zero" $ w /= 0
  1384. 463.70 s [really-safe-money-gen] + ]
  1385. 463.70 s [really-safe-money-gen]
  1386. 463.70 s [really-safe-money-gen] instance NFData QuantisationFactor
  1387. 463.70 s [really-safe-money-gen]
  1388. 463.70 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:451:14-23
  1389. 463.70 s [really-safe-money-gen] @@ -448,7 +448,7 @@
  1390. 463.70 s [really-safe-money-gen] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  1391. 463.70 s [really-safe-money-gen] DistributedZero -> DistributedZero
  1392. 463.70 s [really-safe-money-gen] DistributedIntoEqualChunks numberOfChunks chunk ->
  1393. 463.70 s [really-safe-money-gen] - if a >= zero
  1394. 463.70 s [really-safe-money-gen] + if True
  1395. 463.70 s [really-safe-money-gen] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  1396. 463.70 s [really-safe-money-gen] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  1397. 463.70 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  1398. 463.70 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:451:14-23
  1399. 463.70 s [really-safe-money-gen] @@ -448,7 +448,7 @@
  1400. 463.70 s [really-safe-money-gen] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  1401. 463.70 s [really-safe-money-gen] DistributedZero -> DistributedZero
  1402. 463.70 s [really-safe-money-gen] DistributedIntoEqualChunks numberOfChunks chunk ->
  1403. 463.70 s [really-safe-money-gen] - if a >= zero
  1404. 463.70 s [really-safe-money-gen] + if not (a >= zero)
  1405. 463.70 s [really-safe-money-gen] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  1406. 463.70 s [really-safe-money-gen] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  1407. 463.70 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  1408. 463.70 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:455:14-23
  1409. 463.70 s [really-safe-money-gen] @@ -452,7 +452,7 @@
  1410. 463.70 s [really-safe-money-gen] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  1411. 463.70 s [really-safe-money-gen] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  1412. 463.70 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  1413. 463.70 s [really-safe-money-gen] - if a >= zero
  1414. 463.70 s [really-safe-money-gen] + if not (a >= zero)
  1415. 463.70 s [really-safe-money-gen] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  1416. 463.70 s [really-safe-money-gen] else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  1417. 463.70 s [really-safe-money-gen]
  1418. 463.70 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:451:11-76
  1419. 463.70 s [really-safe-money-gen] @@ -448,9 +448,9 @@
  1420. 463.70 s [really-safe-money-gen] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  1421. 463.70 s [really-safe-money-gen] DistributedZero -> DistributedZero
  1422. 463.70 s [really-safe-money-gen] DistributedIntoEqualChunks numberOfChunks chunk ->
  1423. 463.70 s [really-safe-money-gen] - if a >= zero
  1424. 463.70 s [really-safe-money-gen] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  1425. 463.70 s [really-safe-money-gen] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  1426. 463.70 s [really-safe-money-gen] + if a >= zero
  1427. 463.70 s [really-safe-money-gen] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  1428. 463.70 s [really-safe-money-gen] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  1429. 463.70 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  1430. 463.70 s [really-safe-money-gen] if a >= zero
  1431. 463.70 s [really-safe-money-gen] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  1432. 463.70 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:495:12-18
  1433. 463.70 s [really-safe-money-gen] @@ -492,7 +492,7 @@
  1434. 463.70 s [really-safe-money-gen] fraction rounding account f =
  1435. 463.70 s [really-safe-money-gen] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  1436. 463.70 s [really-safe-money-gen] ro =
  1437. 463.70 s [really-safe-money-gen] - if f >= 0
  1438. 463.70 s [really-safe-money-gen] + if True
  1439. 463.70 s [really-safe-money-gen] then rounding
  1440. 463.70 s [really-safe-money-gen] else case rounding of
  1441. 463.70 s [really-safe-money-gen] RoundUp -> RoundDown
  1442. 463.70 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:495:9-41
  1443. 463.70 s [really-safe-money-gen] @@ -492,12 +492,12 @@
  1444. 463.70 s [really-safe-money-gen] fraction rounding account f =
  1445. 463.70 s [really-safe-money-gen] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  1446. 463.70 s [really-safe-money-gen] ro =
  1447. 463.70 s [really-safe-money-gen] - if f >= 0
  1448. 463.70 s [really-safe-money-gen] - then rounding
  1449. 463.70 s [really-safe-money-gen] - else case rounding of
  1450. 463.70 s [really-safe-money-gen] - RoundUp -> RoundDown
  1451. 463.70 s [really-safe-money-gen] - RoundDown -> RoundUp
  1452. 463.70 s [really-safe-money-gen] - RoundNearest -> RoundNearest
  1453. 463.70 s [really-safe-money-gen] + if f >= 0
  1454. 463.70 s [really-safe-money-gen] + then rounding
  1455. 463.71 s [really-safe-money-gen] + else case rounding of
  1456. 463.71 s [really-safe-money-gen] + RoundUp -> RoundDown
  1457. 463.71 s [really-safe-money-gen] + RoundDown -> RoundUp
  1458. 463.71 s [really-safe-money-gen] + RoundNearest -> RoundNearest
  1459. 463.71 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  1460. 463.71 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  1461. 463.71 s [really-safe-money-gen] in if f >= 0
  1462. 463.71 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:503:15-16
  1463. 463.71 s [really-safe-money-gen] @@ -500,7 +500,7 @@
  1464. 463.71 s [really-safe-money-gen] RoundNearest -> RoundNearest
  1465. 463.71 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  1466. 463.71 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  1467. 463.71 s [really-safe-money-gen] - in if f >= 0
  1468. 463.71 s [really-safe-money-gen] + in if f >= 1
  1469. 463.71 s [really-safe-money-gen] then (ma, r)
  1470. 463.71 s [really-safe-money-gen] else (negate <$> ma, -r)
  1471. 463.71 s [really-safe-money-gen]
  1472. 463.71 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:503:10-16
  1473. 463.71 s [really-safe-money-gen] @@ -500,7 +500,7 @@
  1474. 463.71 s [really-safe-money-gen] RoundNearest -> RoundNearest
  1475. 463.71 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  1476. 463.71 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  1477. 463.71 s [really-safe-money-gen] - in if f >= 0
  1478. 463.71 s [really-safe-money-gen] + in if True
  1479. 463.71 s [really-safe-money-gen] then (ma, r)
  1480. 463.71 s [really-safe-money-gen] else (negate <$> ma, -r)
  1481. 463.71 s [really-safe-money-gen]
  1482. 463.71 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:503:10-16
  1483. 463.71 s [really-safe-money-gen] @@ -500,7 +500,7 @@
  1484. 463.71 s [really-safe-money-gen] RoundNearest -> RoundNearest
  1485. 463.71 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  1486. 463.71 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  1487. 463.71 s [really-safe-money-gen] - in if f >= 0
  1488. 463.71 s [really-safe-money-gen] + in if False
  1489. 463.71 s [really-safe-money-gen] then (ma, r)
  1490. 463.71 s [really-safe-money-gen] else (negate <$> ma, -r)
  1491. 463.71 s [really-safe-money-gen]
  1492. 463.71 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:503:10-16
  1493. 463.71 s [really-safe-money-gen] @@ -500,7 +500,7 @@
  1494. 463.71 s [really-safe-money-gen] RoundNearest -> RoundNearest
  1495. 463.71 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  1496. 463.71 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  1497. 463.71 s [really-safe-money-gen] - in if f >= 0
  1498. 463.71 s [really-safe-money-gen] + in if not (f >= 0)
  1499. 463.71 s [really-safe-money-gen] then (ma, r)
  1500. 463.71 s [really-safe-money-gen] else (negate <$> ma, -r)
  1501. 463.71 s [really-safe-money-gen]
  1502. 463.71 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:233:14-20
  1503. 466.28 s [really-safe-money-gen] @@ -230,7 +230,7 @@
  1504. 466.28 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  1505. 466.28 s [really-safe-money-gen] fromRational quantisationFactor r =
  1506. 466.28 s [really-safe-money-gen] let r' = Prelude.abs r
  1507. 466.28 s [really-safe-money-gen] - f = if r >= 0 then Positive else Negative
  1508. 466.28 s [really-safe-money-gen] + f = if True then Positive else Negative
  1509. 466.28 s [really-safe-money-gen] in f <$> Amount.fromRational quantisationFactor r'
  1510. 466.28 s [really-safe-money-gen]
  1511. 466.28 s [really-safe-money-gen] -- | Turn a 'Rational' into an amount of money.
  1512. 466.28 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:233:11-48
  1513. 466.28 s [really-safe-money-gen] @@ -230,7 +230,7 @@
  1514. 466.28 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  1515. 466.28 s [really-safe-money-gen] fromRational quantisationFactor r =
  1516. 466.28 s [really-safe-money-gen] let r' = Prelude.abs r
  1517. 466.28 s [really-safe-money-gen] - f = if r >= 0 then Positive else Negative
  1518. 466.28 s [really-safe-money-gen] + f = if r >= 0 then Positive else Negative
  1519. 466.28 s [really-safe-money-gen] in f <$> Amount.fromRational quantisationFactor r'
  1520. 466.28 s [really-safe-money-gen]
  1521. 466.28 s [really-safe-money-gen] -- | Turn a 'Rational' into an amount of money.
  1522. 466.28 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:123:10-23
  1523. 466.28 s [really-safe-money-gen] @@ -120,7 +120,7 @@
  1524. 466.28 s [really-safe-money-gen] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  1525. 466.28 s [really-safe-money-gen] a :: Integer
  1526. 466.28 s [really-safe-money-gen] a = (Prelude.abs :: Integer -> Integer) i
  1527. 466.28 s [really-safe-money-gen] - in if a > maxBoundI
  1528. 466.28 s [really-safe-money-gen] + in if True
  1529. 466.28 s [really-safe-money-gen] then Nothing
  1530. 466.28 s [really-safe-money-gen] else
  1531. 466.28 s [really-safe-money-gen] let w :: Word64
  1532. 466.28 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:197:14-20
  1533. 466.28 s [really-safe-money-gen] @@ -194,7 +194,7 @@
  1534. 466.28 s [really-safe-money-gen] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  1535. 466.28 s [really-safe-money-gen] fromDouble quantisationFactor d =
  1536. 466.28 s [really-safe-money-gen] let d' = Prelude.abs d
  1537. 466.28 s [really-safe-money-gen] - f = if d >= 0 then Positive else Negative
  1538. 466.28 s [really-safe-money-gen] + f = if True then Positive else Negative
  1539. 466.28 s [really-safe-money-gen] in f <$> Amount.fromDouble quantisationFactor d'
  1540. 466.28 s [really-safe-money-gen]
  1541. 466.28 s [really-safe-money-gen] -- | Turn an amount of money into a 'Rational'.
  1542. 466.28 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:197:14-20
  1543. 466.28 s [really-safe-money-gen] @@ -194,7 +194,7 @@
  1544. 466.28 s [really-safe-money-gen] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  1545. 466.28 s [really-safe-money-gen] fromDouble quantisationFactor d =
  1546. 466.28 s [really-safe-money-gen] let d' = Prelude.abs d
  1547. 466.28 s [really-safe-money-gen] - f = if d >= 0 then Positive else Negative
  1548. 466.28 s [really-safe-money-gen] + f = if False then Positive else Negative
  1549. 466.28 s [really-safe-money-gen] in f <$> Amount.fromDouble quantisationFactor d'
  1550. 466.28 s [really-safe-money-gen]
  1551. 466.28 s [really-safe-money-gen] -- | Turn an amount of money into a 'Rational'.
  1552. 466.28 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:455:14-23
  1553. 466.28 s [really-safe-money-gen] @@ -452,7 +452,7 @@
  1554. 466.28 s [really-safe-money-gen] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  1555. 466.28 s [really-safe-money-gen] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  1556. 466.28 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  1557. 466.28 s [really-safe-money-gen] - if a >= zero
  1558. 466.28 s [really-safe-money-gen] + if True
  1559. 466.28 s [really-safe-money-gen] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  1560. 466.28 s [really-safe-money-gen] else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  1561. 466.29 s [really-safe-money-gen]
  1562. 466.29 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:233:14-20
  1563. 466.29 s [really-safe-money-gen] @@ -230,7 +230,7 @@
  1564. 466.29 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  1565. 466.29 s [really-safe-money-gen] fromRational quantisationFactor r =
  1566. 466.29 s [really-safe-money-gen] let r' = Prelude.abs r
  1567. 466.29 s [really-safe-money-gen] - f = if r >= 0 then Positive else Negative
  1568. 466.29 s [really-safe-money-gen] + f = if not (r >= 0) then Positive else Negative
  1569. 466.29 s [really-safe-money-gen] in f <$> Amount.fromRational quantisationFactor r'
  1570. 466.29 s [really-safe-money-gen]
  1571. 466.29 s [really-safe-money-gen] -- | Turn a 'Rational' into an amount of money.
  1572. 466.29 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:503:7-33
  1573. 466.29 s [really-safe-money-gen] @@ -500,9 +500,9 @@
  1574. 466.29 s [really-safe-money-gen] RoundNearest -> RoundNearest
  1575. 466.29 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  1576. 466.29 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  1577. 466.29 s [really-safe-money-gen] - in if f >= 0
  1578. 466.29 s [really-safe-money-gen] - then (ma, r)
  1579. 466.29 s [really-safe-money-gen] - else (negate <$> ma, -r)
  1580. 466.29 s [really-safe-money-gen] + in if f >= 0
  1581. 466.29 s [really-safe-money-gen] + then (ma, r)
  1582. 466.29 s [really-safe-money-gen] + else (negate <$> ma, -r)
  1583. 466.29 s [really-safe-money-gen]
  1584. 466.29 s [really-safe-money-gen] -- | Fractional multiplication with a positive fraction, see 'Amount.fraction' and 'Account.fraction'.
  1585. 466.29 s [really-safe-money-gen] --
  1586. 466.29 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:495:12-18
  1587. 466.29 s [really-safe-money-gen] @@ -492,7 +492,7 @@
  1588. 466.29 s [really-safe-money-gen] fraction rounding account f =
  1589. 466.29 s [really-safe-money-gen] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  1590. 466.29 s [really-safe-money-gen] ro =
  1591. 466.29 s [really-safe-money-gen] - if f >= 0
  1592. 466.29 s [really-safe-money-gen] + if not (f >= 0)
  1593. 466.29 s [really-safe-money-gen] then rounding
  1594. 466.29 s [really-safe-money-gen] else case rounding of
  1595. 466.29 s [really-safe-money-gen] RoundUp -> RoundDown
  1596. 466.29 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:233:19-20
  1597. 466.29 s [really-safe-money-gen] @@ -230,7 +230,7 @@
  1598. 466.29 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  1599. 466.29 s [really-safe-money-gen] fromRational quantisationFactor r =
  1600. 466.29 s [really-safe-money-gen] let r' = Prelude.abs r
  1601. 466.29 s [really-safe-money-gen] - f = if r >= 0 then Positive else Negative
  1602. 466.29 s [really-safe-money-gen] + f = if r >= 1 then Positive else Negative
  1603. 466.29 s [really-safe-money-gen] in f <$> Amount.fromRational quantisationFactor r'
  1604. 466.29 s [really-safe-money-gen]
  1605. 466.29 s [really-safe-money-gen] -- | Turn a 'Rational' into an amount of money.
  1606. 466.29 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:455:11-136
  1607. 466.29 s [really-safe-money-gen] @@ -452,9 +452,9 @@
  1608. 466.29 s [really-safe-money-gen] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  1609. 466.29 s [really-safe-money-gen] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  1610. 466.29 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  1611. 466.29 s [really-safe-money-gen] - if a >= zero
  1612. 466.29 s [really-safe-money-gen] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  1613. 466.29 s [really-safe-money-gen] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  1614. 466.29 s [really-safe-money-gen] + if a >= zero
  1615. 466.29 s [really-safe-money-gen] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  1616. 466.29 s [really-safe-money-gen] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  1617. 466.29 s [really-safe-money-gen]
  1618. 466.29 s [really-safe-money-gen] type AccountDistribution = Amount.Distribution Account
  1619. 466.29 s [really-safe-money-gen]
  1620. 466.29 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:197:14-20
  1621. 466.29 s [really-safe-money-gen] @@ -194,7 +194,7 @@
  1622. 466.29 s [really-safe-money-gen] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  1623. 466.29 s [really-safe-money-gen] fromDouble quantisationFactor d =
  1624. 466.29 s [really-safe-money-gen] let d' = Prelude.abs d
  1625. 466.29 s [really-safe-money-gen] - f = if d >= 0 then Positive else Negative
  1626. 466.29 s [really-safe-money-gen] + f = if not (d >= 0) then Positive else Negative
  1627. 466.29 s [really-safe-money-gen] in f <$> Amount.fromDouble quantisationFactor d'
  1628. 466.29 s [really-safe-money-gen]
  1629. 466.29 s [really-safe-money-gen] -- | Turn an amount of money into a 'Rational'.
  1630. 466.29 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:197:11-48
  1631. 466.29 s [really-safe-money-gen] @@ -194,7 +194,7 @@
  1632. 466.29 s [really-safe-money-gen] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  1633. 466.29 s [really-safe-money-gen] fromDouble quantisationFactor d =
  1634. 466.29 s [really-safe-money-gen] let d' = Prelude.abs d
  1635. 466.29 s [really-safe-money-gen] - f = if d >= 0 then Positive else Negative
  1636. 466.29 s [really-safe-money-gen] + f = if d >= 0 then Positive else Negative
  1637. 466.29 s [really-safe-money-gen] in f <$> Amount.fromDouble quantisationFactor d'
  1638. 466.29 s [really-safe-money-gen]
  1639. 466.29 s [really-safe-money-gen] -- | Turn an amount of money into a 'Rational'.
  1640. 466.29 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:123:10-23
  1641. 466.29 s [really-safe-money-gen] @@ -120,7 +120,7 @@
  1642. 466.29 s [really-safe-money-gen] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  1643. 466.29 s [really-safe-money-gen] a :: Integer
  1644. 466.29 s [really-safe-money-gen] a = (Prelude.abs :: Integer -> Integer) i
  1645. 466.29 s [really-safe-money-gen] - in if a > maxBoundI
  1646. 466.29 s [really-safe-money-gen] + in if False
  1647. 466.29 s [really-safe-money-gen] then Nothing
  1648. 466.29 s [really-safe-money-gen] else
  1649. 466.29 s [really-safe-money-gen] let w :: Word64
  1650. 466.29 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:47:33-75
  1651. 466.29 s [really-safe-money-gen] @@ -44,7 +44,7 @@
  1652. 466.29 s [really-safe-money-gen] where
  1653. 466.29 s [really-safe-money-gen] f :: String -> Either String Amount
  1654. 466.29 s [really-safe-money-gen] f s = case readMaybe s of
  1655. 466.29 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  1656. 466.29 s [really-safe-money-gen] + Nothing -> Left $ unwords []
  1657. 466.29 s [really-safe-money-gen] Just i ->
  1658. 466.29 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  1659. 466.29 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  1660. 466.29 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:123:10-23
  1661. 466.29 s [really-safe-money-gen] @@ -120,7 +120,7 @@
  1662. 466.29 s [really-safe-money-gen] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  1663. 466.29 s [really-safe-money-gen] a :: Integer
  1664. 466.29 s [really-safe-money-gen] a = (Prelude.abs :: Integer -> Integer) i
  1665. 466.29 s [really-safe-money-gen] - in if a > maxBoundI
  1666. 466.29 s [really-safe-money-gen] + in if not (a > maxBoundI)
  1667. 466.29 s [really-safe-money-gen] then Nothing
  1668. 466.29 s [really-safe-money-gen] else
  1669. 466.29 s [really-safe-money-gen] let w :: Word64
  1670. 466.29 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:131:20-26
  1671. 466.29 s [really-safe-money-gen] @@ -128,7 +128,7 @@
  1672. 466.29 s [really-safe-money-gen] amount :: Amount
  1673. 466.29 s [really-safe-money-gen] amount = Amount.fromMinimalQuantisations w
  1674. 466.29 s [really-safe-money-gen] in Just $
  1675. 466.29 s [really-safe-money-gen] - if i >= 0
  1676. 466.29 s [really-safe-money-gen] + if True
  1677. 466.29 s [really-safe-money-gen] then Positive amount
  1678. 466.29 s [really-safe-money-gen] else Negative amount
  1679. 466.29 s [really-safe-money-gen]
  1680. 466.29 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:131:20-26
  1681. 466.29 s [really-safe-money-gen] @@ -128,7 +128,7 @@
  1682. 466.29 s [really-safe-money-gen] amount :: Amount
  1683. 466.29 s [really-safe-money-gen] amount = Amount.fromMinimalQuantisations w
  1684. 466.29 s [really-safe-money-gen] in Just $
  1685. 466.29 s [really-safe-money-gen] - if i >= 0
  1686. 466.29 s [really-safe-money-gen] + if False
  1687. 466.29 s [really-safe-money-gen] then Positive amount
  1688. 466.29 s [really-safe-money-gen] else Negative amount
  1689. 466.30 s [really-safe-money-gen]
  1690. 466.30 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:131:17-39
  1691. 466.30 s [really-safe-money-gen] @@ -128,9 +128,9 @@
  1692. 466.30 s [really-safe-money-gen] amount :: Amount
  1693. 466.30 s [really-safe-money-gen] amount = Amount.fromMinimalQuantisations w
  1694. 466.30 s [really-safe-money-gen] in Just $
  1695. 466.30 s [really-safe-money-gen] - if i >= 0
  1696. 466.30 s [really-safe-money-gen] - then Positive amount
  1697. 466.30 s [really-safe-money-gen] - else Negative amount
  1698. 466.30 s [really-safe-money-gen] + if i >= 0
  1699. 466.30 s [really-safe-money-gen] + then Positive amount
  1700. 466.30 s [really-safe-money-gen] + else Negative amount
  1701. 466.30 s [really-safe-money-gen]
  1702. 466.49 s [really-safe-money-gen] -- | Turn an amount into a positive account
  1703. 466.49 s [really-safe-money-gen] --
  1704. 466.49 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:123:7-39
  1705. 466.49 s [really-safe-money-gen] @@ -120,17 +120,17 @@
  1706. 466.49 s [really-safe-money-gen] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  1707. 466.49 s [really-safe-money-gen] a :: Integer
  1708. 466.49 s [really-safe-money-gen] a = (Prelude.abs :: Integer -> Integer) i
  1709. 466.49 s [really-safe-money-gen] - in if a > maxBoundI
  1710. 466.49 s [really-safe-money-gen] - then Nothing
  1711. 466.49 s [really-safe-money-gen] - else
  1712. 466.49 s [really-safe-money-gen] - let w :: Word64
  1713. 466.49 s [really-safe-money-gen] - w = (fromIntegral :: Integer -> Word64) a
  1714. 466.49 s [really-safe-money-gen] - amount :: Amount
  1715. 466.49 s [really-safe-money-gen] - amount = Amount.fromMinimalQuantisations w
  1716. 466.49 s [really-safe-money-gen] - in Just $
  1717. 466.49 s [really-safe-money-gen] - if i >= 0
  1718. 466.49 s [really-safe-money-gen] - then Positive amount
  1719. 466.49 s [really-safe-money-gen] - else Negative amount
  1720. 466.49 s [really-safe-money-gen] + in if a > maxBoundI
  1721. 466.49 s [really-safe-money-gen] + then Nothing
  1722. 466.49 s [really-safe-money-gen] + else
  1723. 466.49 s [really-safe-money-gen] + let w :: Word64
  1724. 466.49 s [really-safe-money-gen] + w = (fromIntegral :: Integer -> Word64) a
  1725. 466.49 s [really-safe-money-gen] + amount :: Amount
  1726. 466.49 s [really-safe-money-gen] + amount = Amount.fromMinimalQuantisations w
  1727. 466.49 s [really-safe-money-gen] + in Just $
  1728. 466.49 s [really-safe-money-gen] + if i >= 0
  1729. 466.49 s [really-safe-money-gen] + then Positive amount
  1730. 466.49 s [really-safe-money-gen] + else Negative amount
  1731. 466.49 s [really-safe-money-gen]
  1732. 466.49 s [really-safe-money-gen] -- | Turn an amount into a positive account
  1733. 466.49 s [really-safe-money-gen] --
  1734. 466.49 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:233:14-20
  1735. 466.49 s [really-safe-money-gen] @@ -230,7 +230,7 @@
  1736. 466.49 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  1737. 466.49 s [really-safe-money-gen] fromRational quantisationFactor r =
  1738. 466.49 s [really-safe-money-gen] let r' = Prelude.abs r
  1739. 466.49 s [really-safe-money-gen] - f = if r >= 0 then Positive else Negative
  1740. 466.49 s [really-safe-money-gen] + f = if False then Positive else Negative
  1741. 466.49 s [really-safe-money-gen] in f <$> Amount.fromRational quantisationFactor r'
  1742. 466.49 s [really-safe-money-gen]
  1743. 466.50 s [really-safe-money-gen] -- | Turn a 'Rational' into an amount of money.
  1744. 466.50 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount/Codec.hs:49:12-59
  1745. 466.50 s [really-safe-money-gen] @@ -46,7 +46,7 @@
  1746. 466.50 s [really-safe-money-gen] f s = case readMaybe s of
  1747. 466.50 s [really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  1748. 466.50 s [really-safe-money-gen] Just i ->
  1749. 466.50 s [really-safe-money-gen] - if (i :: Integer) < toInteger (minBound :: Word64)
  1750. 466.50 s [really-safe-money-gen] + if False
  1751. 466.50 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  1752. 466.50 s [really-safe-money-gen] else
  1753. 466.50 s [really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
  1754. 466.50 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount/Codec.hs:49:12-59
  1755. 466.50 s [really-safe-money-gen] @@ -46,7 +46,7 @@
  1756. 466.50 s [really-safe-money-gen] f s = case readMaybe s of
  1757. 466.50 s [really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  1758. 466.50 s [really-safe-money-gen] Just i ->
  1759. 466.50 s [really-safe-money-gen] - if (i :: Integer) < toInteger (minBound :: Word64)
  1760. 466.50 s [really-safe-money-gen] + if not ((i :: Integer) < toInteger (minBound :: Word64))
  1761. 466.50 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  1762. 466.50 s [really-safe-money-gen] else
  1763. 466.50 s [really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
  1764. 466.50 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:53:35-90
  1765. 466.50 s [really-safe-money-gen] @@ -50,7 +50,7 @@
  1766. 466.50 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  1767. 466.50 s [really-safe-money-gen] else
  1768. 466.50 s [really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
  1769. 466.50 s [really-safe-money-gen] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  1770. 466.50 s [really-safe-money-gen] + then Left $ unwords []
  1771. 466.50 s [really-safe-money-gen] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  1772. 466.50 s [really-safe-money-gen] g :: Amount -> String
  1773. 466.50 s [really-safe-money-gen] g = show . Amount.toMinimalQuantisations
  1774. 466.50 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:53:35-90
  1775. 466.50 s [really-safe-money-gen] @@ -50,7 +50,7 @@
  1776. 466.50 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  1777. 466.50 s [really-safe-money-gen] else
  1778. 466.50 s [really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
  1779. 466.50 s [really-safe-money-gen] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  1780. 466.50 s [really-safe-money-gen] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  1781. 466.50 s [really-safe-money-gen] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  1782. 466.50 s [really-safe-money-gen] g :: Amount -> String
  1783. 466.50 s [really-safe-money-gen] g = show . Amount.toMinimalQuantisations
  1784. 466.50 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount/Codec.hs:49:9-86
  1785. 466.50 s [really-safe-money-gen] @@ -46,12 +46,12 @@
  1786. 466.50 s [really-safe-money-gen] f s = case readMaybe s of
  1787. 466.50 s [really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  1788. 466.50 s [really-safe-money-gen] Just i ->
  1789. 466.50 s [really-safe-money-gen] - if (i :: Integer) < toInteger (minBound :: Word64)
  1790. 466.50 s [really-safe-money-gen] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  1791. 466.50 s [really-safe-money-gen] - else
  1792. 466.50 s [really-safe-money-gen] - if (i :: Integer) > toInteger (maxBound :: Word64)
  1793. 466.50 s [really-safe-money-gen] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  1794. 466.50 s [really-safe-money-gen] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  1795. 466.50 s [really-safe-money-gen] + if (i :: Integer) < toInteger (minBound :: Word64)
  1796. 466.50 s [really-safe-money-gen] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  1797. 466.50 s [really-safe-money-gen] + else
  1798. 466.50 s [really-safe-money-gen] + if (i :: Integer) > toInteger (maxBound :: Word64)
  1799. 466.50 s [really-safe-money-gen] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  1800. 466.51 s [really-safe-money-gen] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  1801. 466.51 s [really-safe-money-gen] g :: Amount -> String
  1802. 466.51 s [really-safe-money-gen] g = show . Amount.toMinimalQuantisations
  1803. 466.51 s [really-safe-money-gen]
  1804. 466.51 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:50:31-84
  1805. 466.51 s [really-safe-money-gen] @@ -47,7 +47,7 @@
  1806. 466.51 s [really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  1807. 466.51 s [really-safe-money-gen] Just i ->
  1808. 466.51 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  1809. 466.51 s [really-safe-money-gen] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  1810. 466.51 s [really-safe-money-gen] + then Left $ unwords []
  1811. 466.51 s [really-safe-money-gen] else
  1812. 466.51 s [really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
  1813. 466.51 s [really-safe-money-gen] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  1814. 466.51 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount/Codec.hs:52:16-63
  1815. 466.51 s [really-safe-money-gen] @@ -49,7 +49,7 @@
  1816. 466.51 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  1817. 466.51 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  1818. 466.51 s [really-safe-money-gen] else
  1819. 466.51 s [really-safe-money-gen] - if (i :: Integer) > toInteger (maxBound :: Word64)
  1820. 466.51 s [really-safe-money-gen] + if False
  1821. 466.51 s [really-safe-money-gen] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  1822. 466.51 s [really-safe-money-gen] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  1823. 466.51 s [really-safe-money-gen] g :: Amount -> String
  1824. 466.51 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Account/Codec.hs:51:33-76
  1825. 466.51 s [really-safe-money-gen] @@ -48,7 +48,7 @@
  1826. 466.51 s [really-safe-money-gen] where
  1827. 466.51 s [really-safe-money-gen] f :: String -> Either String Account
  1828. 466.51 s [really-safe-money-gen] f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  1829. 466.51 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  1830. 466.51 s [really-safe-money-gen] + Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  1831. 466.51 s [really-safe-money-gen] Just a -> Right a
  1832. 466.51 s [really-safe-money-gen] g :: Account -> String
  1833. 466.51 s [really-safe-money-gen] g = show . Account.toMinimalQuantisations
  1834. 466.51 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount/Codec.hs:52:16-63
  1835. 466.51 s [really-safe-money-gen] @@ -49,7 +49,7 @@
  1836. 466.51 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  1837. 466.51 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  1838. 466.51 s [really-safe-money-gen] else
  1839. 466.51 s [really-safe-money-gen] - if (i :: Integer) > toInteger (maxBound :: Word64)
  1840. 466.51 s [really-safe-money-gen] + if not ((i :: Integer) > toInteger (maxBound :: Word64))
  1841. 466.51 s [really-safe-money-gen] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  1842. 466.51 s [really-safe-money-gen] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  1843. 466.51 s [really-safe-money-gen] g :: Amount -> String
  1844. 466.51 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount/Codec.hs:52:13-86
  1845. 466.51 s [really-safe-money-gen] @@ -49,9 +49,9 @@
  1846. 466.51 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  1847. 466.51 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  1848. 466.51 s [really-safe-money-gen] else
  1849. 466.51 s [really-safe-money-gen] - if (i :: Integer) > toInteger (maxBound :: Word64)
  1850. 466.51 s [really-safe-money-gen] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  1851. 466.51 s [really-safe-money-gen] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  1852. 466.51 s [really-safe-money-gen] + if (i :: Integer) > toInteger (maxBound :: Word64)
  1853. 466.51 s [really-safe-money-gen] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  1854. 466.51 s [really-safe-money-gen] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  1855. 466.51 s [really-safe-money-gen] g :: Amount -> String
  1856. 466.51 s [really-safe-money-gen] g = show . Amount.toMinimalQuantisations
  1857. 466.51 s [really-safe-money-gen]
  1858. 466.51 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount/Codec.hs:49:12-59
  1859. 466.51 s [really-safe-money-gen] @@ -46,7 +46,7 @@
  1860. 466.51 s [really-safe-money-gen] f s = case readMaybe s of
  1861. 466.51 s [really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  1862. 466.51 s [really-safe-money-gen] Just i ->
  1863. 466.51 s [really-safe-money-gen] - if (i :: Integer) < toInteger (minBound :: Word64)
  1864. 466.51 s [really-safe-money-gen] + if True
  1865. 466.51 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  1866. 466.51 s [really-safe-money-gen] else
  1867. 466.51 s [really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
  1868. 466.51 s [really-safe-money-gen] Testing mutation ListLit at src/Numeric/DecimalLiteral/Codec.hs:40:33-82
  1869. 466.51 s [really-safe-money-gen] @@ -37,5 +37,5 @@
  1870. 466.51 s [really-safe-money-gen] where
  1871. 466.51 s [really-safe-money-gen] f :: String -> Either String DecimalLiteral
  1872. 466.51 s [really-safe-money-gen] f s = case DecimalLiteral.fromString s of
  1873. 514.56 s [really-safe-money-gen] - Nothing -> Left $ unwords ["CouKilled: 240
  1874. 514.57 s [really-safe-money-gen] Survived: 34
  1875. 514.57 s [really-safe-money-gen] Uncovered: 21
  1876. 514.57 s [really-safe-money-gen]
  1877. 514.57 s [really-safe-money-gen] Surviving mutations:
  1878. 514.57 s [really-safe-money-gen]
  1879. 514.57 s [really-safe-money-gen] IntLit at src/Money/Account.hs:131:25-26
  1880. 514.57 s [really-safe-money-gen] @@ -128,7 +128,7 @@
  1881. 514.57 s [really-safe-money-gen] amount :: Amount
  1882. 514.57 s [really-safe-money-gen] amount = Amount.fromMinimalQuantisations w
  1883. 514.57 s [really-safe-money-gen] in Just $
  1884. 514.57 s [really-safe-money-gen] - if i >= 0
  1885. 514.57 s [really-safe-money-gen] + if i >= 1
  1886. 514.57 s [really-safe-money-gen] then Positive amount
  1887. 514.57 s [really-safe-money-gen] else Negative amount
  1888. 514.57 s [really-safe-money-gen]
  1889. 514.57 s [really-safe-money-gen]
  1890. 514.57 s [really-safe-money-gen] ConstBool at src/Money/Account.hs:123:10-23
  1891. 514.57 s [really-safe-money-gen] @@ -120,7 +120,7 @@
  1892. 514.57 s [really-safe-money-gen] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  1893. 514.57 s [really-safe-money-gen] a :: Integer
  1894. 514.58 s [really-safe-money-gen] a = (Prelude.abs :: Integer -> Integer) i
  1895. 514.58 s [really-safe-money-gen] - in if a > maxBoundI
  1896. 514.58 s [really-safe-money-gen] + in if False
  1897. 514.58 s [really-safe-money-gen] then Nothing
  1898. 514.58 s [really-safe-money-gen] else
  1899. 514.58 s [really-safe-money-gen] let w :: Word64
  1900. 514.58 s [really-safe-money-gen]
  1901. 514.58 s [really-safe-money-gen] ListLit at src/Money/QuantisationFactor.hs:39:7-8
  1902. 514.58 s [really-safe-money-gen] @@ -36,9 +36,9 @@
  1903. 514.58 s [really-safe-money-gen] instance Validity QuantisationFactor where
  1904. 514.58 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  1905. 514.58 s [really-safe-money-gen] mconcat
  1906. 514.58 s [really-safe-money-gen] - [ genericValidate qf,
  1907. 514.58 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  1908. 514.58 s [really-safe-money-gen] - ]
  1909. 514.58 s [really-safe-money-gen] + [ genericValidate qf,
  1910. 514.58 s [really-safe-money-gen] + declare "The quantisation factor is not zero" $ w /= 0
  1911. 514.58 s [really-safe-money-gen] + ]
  1912. 514.58 s [really-safe-money-gen]
  1913. 514.58 s [really-safe-money-gen] instance NFData QuantisationFactor
  1914. 514.58 s [really-safe-money-gen]
  1915. 514.58 s [really-safe-money-gen]
  1916. 514.58 s [really-safe-money-gen] ListLit at src/Money/QuantisationFactor.hs:39:7-8
  1917. 514.58 s [really-safe-money-gen] @@ -36,9 +36,7 @@
  1918. 514.58 s [really-safe-money-gen] instance Validity QuantisationFactor where
  1919. 514.58 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  1920. 514.58 s [really-safe-money-gen] mconcat
  1921. 514.58 s [really-safe-money-gen] - [ genericValidate qf,
  1922. 514.58 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  1923. 514.58 s [really-safe-money-gen] - ]
  1924. 514.58 s [really-safe-money-gen] + []
  1925. 514.58 s [really-safe-money-gen]
  1926. 514.58 s [really-safe-money-gen] instance NFData QuantisationFactor
  1927. 514.58 s [really-safe-money-gen]
  1928. 514.58 s [really-safe-money-gen]
  1929. 514.58 s [really-safe-money-gen] ConstBool at src/Money/QuantisationFactor.hs:40:57-63
  1930. 514.58 s [really-safe-money-gen] @@ -37,7 +37,7 @@
  1931. 514.58 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  1932. 514.58 s [really-safe-money-gen] mconcat
  1933. 514.58 s [really-safe-money-gen] [ genericValidate qf,
  1934. 514.58 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  1935. 514.58 s [really-safe-money-gen] + declare "The quantisation factor is not zero" $ True
  1936. 514.58 s [really-safe-money-gen] ]
  1937. 514.58 s [really-safe-money-gen]
  1938. 514.58 s [really-safe-money-gen] instance NFData QuantisationFactor
  1939. 514.58 s [really-safe-money-gen]
  1940. 514.58 s [really-safe-money-gen] IntLit at src/Money/QuantisationFactor.hs:93:16-17
  1941. 514.58 s [really-safe-money-gen] @@ -90,7 +90,7 @@
  1942. 514.58 s [really-safe-money-gen]
  1943. 514.58 s [really-safe-money-gen] rat <-
  1944. 514.58 s [really-safe-money-gen] let r = 1 / irat
  1945. 514.58 s [really-safe-money-gen] - in if r < 0
  1946. 514.58 s [really-safe-money-gen] + in if r < 1
  1947. 514.58 s [really-safe-money-gen] then Nothing
  1948. 514.58 s [really-safe-money-gen] else Just r
  1949. 514.58 s [really-safe-money-gen]
  1950. 514.58 s [really-safe-money-gen]
  1951. 514.58 s [really-safe-money-gen] ListLit at src/Money/Amount.hs:603:7-8
  1952. 514.58 s [really-safe-money-gen] @@ -600,13 +600,13 @@
  1953. 514.58 s [really-safe-money-gen] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
  1954. 514.58 s [really-safe-money-gen] validate ad =
  1955. 514.58 s [really-safe-money-gen] mconcat
  1956. 514.58 s [really-safe-money-gen] - [ genericValidate ad,
  1957. 514.58 s [really-safe-money-gen] - case ad of
  1958. 514.58 s [really-safe-money-gen] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  1959. 514.58 s [really-safe-money-gen] - declare "The larger chunks are larger" $
  1960. 514.58 s [really-safe-money-gen] - a1 > a2
  1961. 514.58 s [really-safe-money-gen] - _ -> valid
  1962. 514.58 s [really-safe-money-gen] - ]
  1963. 514.58 s [really-safe-money-gen] + [ genericValidate ad,
  1964. 514.58 s [really-safe-money-gen] + case ad of
  1965. 514.58 s [really-safe-money-gen] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  1966. 514.58 s [really-safe-money-gen] + declare "The larger chunks are larger" $
  1967. 514.58 s [really-safe-money-gen] + a1 > a2
  1968. 514.58 s [really-safe-money-gen] + _ -> valid
  1969. 514.58 s [really-safe-money-gen] + ]
  1970. 514.58 s [really-safe-money-gen]
  1971. 514.58 s [really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
  1972. 514.58 s [really-safe-money-gen]
  1973. 514.58 s [really-safe-money-gen]
  1974. 514.58 s [really-safe-money-gen] ListLit at src/Money/Amount.hs:603:7-8
  1975. 514.58 s [really-safe-money-gen] @@ -600,13 +600,7 @@
  1976. 514.58 s [really-safe-money-gen] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
  1977. 514.58 s [really-safe-money-gen] validate ad =
  1978. 514.58 s [really-safe-money-gen] mconcat
  1979. 514.58 s [really-safe-money-gen] - [ genericValidate ad,
  1980. 514.58 s [really-safe-money-gen] - case ad of
  1981. 514.58 s [really-safe-money-gen] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  1982. 514.58 s [really-safe-money-gen] - declare "The larger chunks are larger" $
  1983. 514.58 s [really-safe-money-gen] - a1 > a2
  1984. 514.58 s [really-safe-money-gen] - _ -> valid
  1985. 514.58 s [really-safe-money-gen] - ]
  1986. 514.58 s [really-safe-money-gen] + []
  1987. 514.58 s [really-safe-money-gen]
  1988. 514.58 s [really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
  1989. 514.58 s [really-safe-money-gen]
  1990. 514.58 s [really-safe-money-gen]
  1991. 514.58 s [really-safe-money-gen] ConstBool at src/Money/Amount.hs:607:15-22
  1992. 514.58 s [really-safe-money-gen] @@ -604,7 +604,7 @@
  1993. 514.58 s [really-safe-money-gen] case ad of
  1994. 514.58 s [really-safe-money-gen] DistributedIntoUnequalChunks _ a1 _ a2 ->
  1995. 514.58 s [really-safe-money-gen] declare "The larger chunks are larger" $
  1996. 514.58 s [really-safe-money-gen] - a1 > a2
  1997. 514.58 s [really-safe-money-gen] + True
  1998. 514.58 s [really-safe-money-gen] _ -> valid
  1999. 514.58 s [really-safe-money-gen] ]
  2000. 514.58 s [really-safe-money-gen]
  2001. 514.58 s [really-safe-money-gen]
  2002. 514.58 s [really-safe-money-gen] ConstBool at src/Money/Amount.hs:332:14-40
  2003. 514.58 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  2004. 514.58 s [really-safe-money-gen] | otherwise =
  2005. 514.58 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  2006. 514.58 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  2007. 514.58 s [really-safe-money-gen] - if exponent resultDouble > 65
  2008. 514.58 s [really-safe-money-gen] + if False
  2009. 514.58 s [really-safe-money-gen] then Nothing
  2010. 514.58 s [really-safe-money-gen] else
  2011. 514.58 s [really-safe-money-gen] let ceiled :: Natural
  2012. 514.58 s [really-safe-money-gen]
  2013. 514.58 s [really-safe-money-gen] ConstBool at src/Money/Amount.hs:518:10-15
  2014. 514.58 s [really-safe-money-gen] @@ -515,7 +515,7 @@
  2015. 514.58 s [really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
  2016. 514.58 s [really-safe-money-gen] r :: Integer
  2017. 514.58 s [really-safe-money-gen] r = i1 - i2
  2018. 514.58 s [really-safe-money-gen] - in if r < 0
  2019. 514.58 s [really-safe-money-gen] + in if True
  2020. 514.58 s [really-safe-money-gen] then Nothing
  2021. 514.58 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  2022. 514.58 s [really-safe-money-gen]
  2023. 514.58 s [really-safe-money-gen]
  2024. 514.58 s [really-safe-money-gen] IntLit at src/Money/Amount.hs:518:14-15
  2025. 514.58 s [really-safe-money-gen] @@ -515,7 +515,7 @@
  2026. 514.58 s [really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
  2027. 514.58 s [really-safe-money-gen] r :: Integer
  2028. 514.58 s [really-safe-money-gen] r = i1 - i2
  2029. 514.58 s [really-safe-money-gen] - in if r < 0
  2030. 514.58 s [really-safe-money-gen] + in if r < 1
  2031. 514.58 s [really-safe-money-gen] then Nothing
  2032. 514.58 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  2033. 514.58 s [really-safe-money-gen]
  2034. 514.58 s [really-safe-money-gen]
  2035. 514.58 s [really-safe-money-gen] IntLit at src/Numeric/DecimalLiteral.hs:208:9-10
  2036. 514.58 s [really-safe-money-gen] @@ -205,7 +205,7 @@
  2037. 514.58 s [really-safe-money-gen] -- Nothing
  2038. 514.58 s [really-safe-money-gen] fromRational :: Rational -> Maybe DecimalLiteral
  2039. 514.58 s [really-safe-money-gen] fromRational (n :% d)
  2040. 514.58 s [really-safe-money-gen] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  2041. 514.58 s [really-safe-money-gen] + | n < 1 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  2042. 514.58 s [really-safe-money-gen] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  2043. 514.58 s [really-safe-money-gen]
  2044. 514.58 s [really-safe-money-gen] -- | Turn a 'DecimalLiteral' into a 'Rational'
  2045. 514.58 s [really-safe-money-gen]
  2046. 514.58 s [really-safe-money-gen] IntLit at src/Numeric/DecimalLiteral.hs:289:33-35
  2047. 514.58 s [really-safe-money-gen] @@ -286,7 +286,7 @@
  2048. 514.58 s [really-safe-money-gen] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  2049. 514.58 s [really-safe-money-gen] toRatio (DecimalLiteral mSign m e) = case mSign of
  2050. 514.58 s [really-safe-money-gen] Just False -> Nothing
  2051. 514.58 s [really-safe-money-gen] - _ -> Just $ fromIntegral m / (10 ^ e)
  2052. 514.58 s [really-safe-money-gen] + _ -> Just $ fromIntegral m / (1 ^ e)
  2053. 514.58 s [really-safe-money-gen]
  2054. 514.58 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Word'
  2055. 514.58 s [really-safe-money-gen] fromWord :: Word -> DecimalLiteral
  2056. 514.58 s [really-safe-money-gen]
  2057. 514.58 s [really-safe-money-gen] ConstBool at src/Numeric/DecimalLiteral.hs:299:11-47
  2058. 514.58 s [really-safe-money-gen] @@ -296,7 +296,7 @@
  2059. 514.58 s [really-safe-money-gen] toWord :: DecimalLiteral -> Maybe Word
  2060. 514.58 s [really-safe-money-gen] toWord dl = do
  2061. 514.58 s [really-safe-money-gen] n <- toNatural dl
  2062. 514.58 s [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Word)
  2063. 514.58 s [really-safe-money-gen] + guard $ True
  2064. 514.58 s [really-safe-money-gen] pure $ fromIntegral n
  2065. 514.58 s [really-safe-money-gen]
  2066. 514.58 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Natural'
  2067. 514.58 s [really-safe-money-gen]
  2068. 514.58 s [really-safe-money-gen] ConstBool at src/Numeric/DecimalLiteral.hs:333:11-46
  2069. 514.58 s [really-safe-money-gen] @@ -330,7 +330,7 @@
  2070. 514.58 s [really-safe-money-gen] toInt dl = do
  2071. 514.58 s [really-safe-money-gen] n <- toInteger dl
  2072. 514.58 s [really-safe-money-gen] guard $ n <= fromIntegral (maxBound :: Int)
  2073. 514.58 s [really-safe-money-gen] - guard $ n >= fromIntegral (minBound :: Int)
  2074. 514.58 s [really-safe-money-gen] + guard $ True
  2075. 514.58 s [really-safe-money-gen] pure $ fromIntegral n
  2076. 514.58 s [really-safe-money-gen]
  2077. 514.58 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  2078. 514.58 s [really-safe-money-gen]
  2079. 514.58 s [really-safe-money-gen] ConstBool at src/Numeric/DecimalLiteral.hs:332:11-46
  2080. 514.58 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  2081. 514.58 s [really-safe-money-gen] toInt :: DecimalLiteral -> Maybe Int
  2082. 514.58 s [really-safe-money-gen] toInt dl = do
  2083. 514.58 s [really-safe-money-gen] n <- toInteger dl
  2084. 514.58 s [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Int)
  2085. 514.58 s [really-safe-money-gen] + guard $ True
  2086. 514.58 s [really-safe-money-gen] guard $ n >= fromIntegral (minBound :: Int)
  2087. 514.58 s [really-safe-money-gen] pure $ fromIntegral n
  2088. 514.58 s [really-safe-money-gen]
  2089. 514.58 s [really-safe-money-gen]
  2090. 514.58 s [really-safe-money-gen] IntLit at src/Numeric/DecimalLiteral.hs:337:21-22
  2091. 514.58 s [really-safe-money-gen] @@ -334,7 +334,7 @@
  2092. 514.58 s [really-safe-money-gen] pure $ fromIntegral n
  2093. 514.58 s [really-safe-money-gen]
  2094. 514.58 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  2095. 514.58 s [really-safe-money-gen] -numSign a = if a >= 0 then Nothing else Just False
  2096. 514.58 s [really-safe-money-gen] +numSign a = if a >= 1 then Nothing else Just False
  2097. 514.58 s [really-safe-money-gen]
  2098. 514.58 s [really-safe-money-gen] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  2099. 514.58 s [really-safe-money-gen] signSignum = \case
  2100. 514.58 s [really-safe-money-gen]
  2101. 514.58 s [really-safe-money-gen] ListLit at src/Money/MultiAmount.hs:63:7-8
  2102. 514.58 s [really-safe-money-gen] @@ -60,11 +60,11 @@
  2103. 514.58 s [really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where
  2104. 514.58 s [really-safe-money-gen] validate ma@(MultiAmount m) =
  2105. 514.58 s [really-safe-money-gen] mconcat
  2106. 514.58 s [really-safe-money-gen] - [ genericValidate ma,
  2107. 514.58 s [really-safe-money-gen] - decorateMap m $ \_ a ->
  2108. 514.58 s [really-safe-money-gen] - declare "The amount is not zero" $
  2109. 514.58 s [really-safe-money-gen] - a /= Amount.zero
  2110. 514.58 s [really-safe-money-gen] - ]
  2111. 514.58 s [really-safe-money-gen] + [ genericValidate ma,
  2112. 514.58 s [really-safe-money-gen] + decorateMap m $ \_ a ->
  2113. 514.58 s [really-safe-money-gen] + declare "The amount is not zero" $
  2114. 514.58 s [really-safe-money-gen] + a /= Amount.zero
  2115. 514.58 s [really-safe-money-gen] + ]
  2116. 514.58 s [really-safe-money-gen]
  2117. 514.58 s [really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
  2118. 514.58 s [really-safe-money-gen]
  2119. 514.58 s [really-safe-money-gen]
  2120. 514.58 s [really-safe-money-gen] ListLit at src/Money/MultiAmount.hs:63:7-8
  2121. 514.58 s [really-safe-money-gen] @@ -60,11 +60,7 @@
  2122. 514.58 s [really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where
  2123. 514.58 s [really-safe-money-gen] validate ma@(MultiAmount m) =
  2124. 514.58 s [really-safe-money-gen] mconcat
  2125. 514.58 s [really-safe-money-gen] - [ genericValidate ma,
  2126. 514.58 s [really-safe-money-gen] - decorateMap m $ \_ a ->
  2127. 514.58 s [really-safe-money-gen] - declare "The amount is not zero" $
  2128. 514.58 s [really-safe-money-gen] - a /= Amount.zero
  2129. 514.58 s [really-safe-money-gen] - ]
  2130. 514.58 s [really-safe-money-gen] + []
  2131. 514.58 s [really-safe-money-gen]
  2132. 514.58 s [really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
  2133. 514.58 s [really-safe-money-gen]
  2134. 514.58 s [really-safe-money-gen]
  2135. 514.59 s [really-safe-money-gen] ConstBool at src/Money/MultiAmount.hs:66:13-29
  2136. 514.59 s [really-safe-money-gen] @@ -63,7 +63,7 @@
  2137. 514.59 s [really-safe-money-gen] [ genericValidate ma,
  2138. 514.59 s [really-safe-money-gen] decorateMap m $ \_ a ->
  2139. 514.59 s [really-safe-money-gen] declare "The amount is not zero" $
  2140. 514.59 s [really-safe-money-gen] - a /= Amount.zero
  2141. 514.59 s [really-safe-money-gen] + True
  2142. 514.59 s [really-safe-money-gen] ]
  2143. 514.59 s [really-safe-money-gen]
  2144. 514.59 s [really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
  2145. 514.59 s [really-safe-money-gen]
  2146. 514.59 s [really-safe-money-gen] ConstBool at src/Money/MultiAmount.hs:106:12-28
  2147. 514.59 s [really-safe-money-gen] @@ -103,7 +103,7 @@
  2148. 514.59 s [really-safe-money-gen] Just a -> do
  2149. 514.59 s [really-safe-money-gen] r <- Amount.add a amount
  2150. 514.59 s [really-safe-money-gen] Just $
  2151. 514.59 s [really-safe-money-gen] - if r == Amount.zero
  2152. 514.59 s [really-safe-money-gen] + if False
  2153. 514.59 s [really-safe-money-gen] then M.delete currency m
  2154. 514.59 s [really-safe-money-gen] else M.insert currency r m
  2155. 514.59 s [really-safe-money-gen]
  2156. 514.59 s [really-safe-money-gen]
  2157. 514.59 s [really-safe-money-gen] CondFlip at src/Money/MultiAmount.hs:119:9-37
  2158. 514.59 s [really-safe-money-gen] @@ -116,9 +116,9 @@
  2159. 514.59 s [really-safe-money-gen] Just a -> do
  2160. 514.59 s [really-safe-money-gen] r <- Amount.subtract a amount
  2161. 514.59 s [really-safe-money-gen] Just $
  2162. 514.59 s [really-safe-money-gen] - if r == Amount.zero
  2163. 514.59 s [really-safe-money-gen] - then M.delete currency m
  2164. 514.59 s [really-safe-money-gen] - else M.insert currency r m
  2165. 514.59 s [really-safe-money-gen] + if r == Amount.zero
  2166. 514.59 s [really-safe-money-gen] + then M.delete currency m
  2167. 514.59 s [really-safe-money-gen] + else M.insert currency r m
  2168. 514.59 s [really-safe-money-gen] ld not read string as a DecimalLiteral:", s]
  2169. 514.59 s [really-safe-money-gen] + Nothing -> Left $ unwords []
  2170. 514.59 s [really-safe-money-gen] Just a -> Right a
  2171. 514.59 s [really-safe-money-gen] Testing mutation ListLit at src/Numeric/DecimalLiteral/Codec.hs:40:33-82
  2172. 514.59 s [really-safe-money-gen] @@ -37,5 +37,5 @@
  2173. 514.59 s [really-safe-money-gen] where
  2174. 514.59 s [really-safe-money-gen] f :: String -> Either String DecimalLiteral
  2175. 514.59 s [really-safe-money-gen] f s = case DecimalLiteral.fromString s of
  2176. 514.59 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  2177. 514.59 s [really-safe-money-gen] + Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  2178. 514.59 s [really-safe-money-gen] Just a -> Right a
  2179. 514.59 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Account/Codec.hs:51:33-76
  2180. 514.59 s [really-safe-money-gen] @@ -48,7 +48,7 @@
  2181. 514.59 s [really-safe-money-gen] where
  2182. 514.59 s [really-safe-money-gen] f :: String -> Either String Account
  2183. 514.59 s [really-safe-money-gen] f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  2184. 514.59 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  2185. 514.59 s [really-safe-money-gen] + Nothing -> Left $ unwords []
  2186. 514.59 s [really-safe-money-gen] Just a -> Right a
  2187. 514.59 s [really-safe-money-gen] g :: Account -> String
  2188. 514.59 s [really-safe-money-gen] g = show . Account.toMinimalQuantisations
  2189. 514.59 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:47:33-75
  2190. 514.59 s [really-safe-money-gen] @@ -44,7 +44,7 @@
  2191. 514.59 s [really-safe-money-gen] where
  2192. 514.59 s [really-safe-money-gen] f :: String -> Either String Amount
  2193. 514.59 s [really-safe-money-gen] f s = case readMaybe s of
  2194. 514.59 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  2195. 514.59 s [really-safe-money-gen] + Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  2196. 514.59 s [really-safe-money-gen] Just i ->
  2197. 514.59 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  2198. 514.59 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  2199. 514.59 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:131:20-26
  2200. 514.59 s [really-safe-money-gen] @@ -128,7 +128,7 @@
  2201. 514.59 s [really-safe-money-gen] amount :: Amount
  2202. 514.59 s [really-safe-money-gen] amount = Amount.fromMinimalQuantisations w
  2203. 514.59 s [really-safe-money-gen] in Just $
  2204. 514.59 s [really-safe-money-gen] - if i >= 0
  2205. 514.59 s [really-safe-money-gen] + if not (i >= 0)
  2206. 514.59 s [really-safe-money-gen] then Positive amount
  2207. 514.59 s [really-safe-money-gen] else Negative amount
  2208. 514.59 s [really-safe-money-gen]
  2209. 514.59 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:50:31-84
  2210. 514.59 s [really-safe-money-gen] @@ -47,7 +47,7 @@
  2211. 514.59 s [really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  2212. 514.59 s [really-safe-money-gen] Just i ->
  2213. 514.59 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  2214. 514.59 s [really-safe-money-gen] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  2215. 514.59 s [really-safe-money-gen] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  2216. 514.59 s [really-safe-money-gen] else
  2217. 514.59 s [really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
  2218. 514.59 s [really-safe-money-gen] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  2219. 514.59 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:131:25-26
  2220. 514.59 s [really-safe-money-gen] @@ -128,7 +128,7 @@
  2221. 514.59 s [really-safe-money-gen] amount :: Amount
  2222. 514.59 s [really-safe-money-gen] amount = Amount.fromMinimalQuantisations w
  2223. 514.59 s [really-safe-money-gen] in Just $
  2224. 514.59 s [really-safe-money-gen] - if i >= 0
  2225. 514.59 s [really-safe-money-gen] + if i >= 1
  2226. 514.59 s [really-safe-money-gen] then Positive amount
  2227. 514.59 s [really-safe-money-gen] else Negative amount
  2228. 514.59 s [really-safe-money-gen]
  2229. 514.59 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount/Codec.hs:52:16-63
  2230. 514.59 s [really-safe-money-gen] @@ -49,7 +49,7 @@
  2231. 514.59 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  2232. 514.59 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  2233. 514.59 s [really-safe-money-gen] else
  2234. 514.59 s [really-safe-money-gen] - if (i :: Integer) > toInteger (maxBound :: Word64)
  2235. 514.59 s [really-safe-money-gen] + if True
  2236. 514.59 s [really-safe-money-gen] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  2237. 514.59 s [really-safe-money-gen] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  2238. 514.59 s [really-safe-money-gen] g :: Amount -> String
  2239. 514.59 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:495:17-18
  2240. 514.59 s [really-safe-money-gen] @@ -492,7 +492,7 @@
  2241. 514.59 s [really-safe-money-gen] fraction rounding account f =
  2242. 514.59 s [really-safe-money-gen] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  2243. 514.59 s [really-safe-money-gen] ro =
  2244. 514.59 s [really-safe-money-gen] - if f >= 0
  2245. 514.59 s [really-safe-money-gen] + if f >= 1
  2246. 514.59 s [really-safe-money-gen] then rounding
  2247. 514.59 s [really-safe-money-gen] else case rounding of
  2248. 514.59 s [really-safe-money-gen] RoundUp -> RoundDown
  2249. 514.59 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:197:19-20
  2250. 514.59 s [really-safe-money-gen] @@ -194,7 +194,7 @@
  2251. 514.59 s [really-safe-money-gen] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  2252. 514.59 s [really-safe-money-gen] fromDouble quantisationFactor d =
  2253. 514.59 s [really-safe-money-gen] let d' = Prelude.abs d
  2254. 514.59 s [really-safe-money-gen] - f = if d >= 0 then Positive else Negative
  2255. 514.59 s [really-safe-money-gen] + f = if d >= 1 then Positive else Negative
  2256. 514.59 s [really-safe-money-gen] in f <$> Amount.fromDouble quantisationFactor d'
  2257. 514.59 s [really-safe-money-gen]
  2258. 514.59 s [really-safe-money-gen] -- | Turn an amount of money into a 'Rational'.
  2259. 514.59 s [really-safe-money-gen]
  2260. 514.59 s [really-safe-money-gen] -- | Try to convert every amount to one currency.
  2261. 514.59 s [really-safe-money-gen] --
  2262. 514.59 s [really-safe-money-gen]
  2263. 514.59 s [really-safe-money-gen] Negate at src/Money/MultiAmount.hs:119:12-28
  2264. 514.59 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  2265. 514.59 s [really-safe-money-gen] Just a -> do
  2266. 514.59 s [really-safe-money-gen] r <- Amount.subtract a amount
  2267. 514.59 s [really-safe-money-gen] Just $
  2268. 514.59 s [really-safe-money-gen] - if r == Amount.zero
  2269. 514.59 s [really-safe-money-gen] + if not (r == Amount.zero)
  2270. 514.59 s [really-safe-money-gen] then M.delete currency m
  2271. 514.59 s [really-safe-money-gen] else M.insert currency r m
  2272. 514.59 s [really-safe-money-gen]
  2273. 514.59 s [really-safe-money-gen]
  2274. 514.59 s [really-safe-money-gen] ConstBool at src/Money/MultiAmount.hs:119:12-28
  2275. 514.59 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  2276. 514.59 s [really-safe-money-gen] Just a -> do
  2277. 514.59 s [really-safe-money-gen] r <- Amount.subtract a amount
  2278. 514.59 s [really-safe-money-gen] Just $
  2279. 514.59 s [really-safe-money-gen] - if r == Amount.zero
  2280. 514.59 s [really-safe-money-gen] + if False
  2281. 514.59 s [really-safe-money-gen] then M.delete currency m
  2282. 514.59 s [really-safe-money-gen] else M.insert currency r m
  2283. 514.59 s [really-safe-money-gen]
  2284. 514.59 s [really-safe-money-gen]
  2285. 514.59 s [really-safe-money-gen] ConstBool at src/Money/MultiAmount.hs:119:12-28
  2286. 514.59 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  2287. 514.59 s [really-safe-money-gen] Just a -> do
  2288. 514.59 s [really-safe-money-gen] r <- Amount.subtract a amount
  2289. 514.59 s [really-safe-money-gen] Just $
  2290. 514.59 s [really-safe-money-gen] - if r == Amount.zero
  2291. 514.59 s [really-safe-money-gen] + if True
  2292. 514.59 s [really-safe-money-gen] then M.delete currency m
  2293. 514.59 s [really-safe-money-gen] else M.insert currency r m
  2294. 514.59 s [really-safe-money-gen]
  2295. 514.59 s [really-safe-money-gen]
  2296. 514.59 s [really-safe-money-gen] ListLit at src/Money/ConversionRate.hs:37:7-8
  2297. 514.59 s [really-safe-money-gen] @@ -34,9 +34,9 @@
  2298. 514.59 s [really-safe-money-gen] instance Validity ConversionRate where
  2299. 514.59 s [really-safe-money-gen] validate cr@(ConversionRate r) =
  2300. 514.59 s [really-safe-money-gen] mconcat
  2301. 514.59 s [really-safe-money-gen] - [ genericValidate cr,
  2302. 514.59 s [really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
  2303. 514.59 s [really-safe-money-gen] - ]
  2304. 514.59 s [really-safe-money-gen] + [ genericValidate cr,
  2305. 514.59 s [really-safe-money-gen] + declare "The rate is nonzero" $ numerator r /= 0
  2306. 514.59 s [really-safe-money-gen] + ]
  2307. 514.59 s [really-safe-money-gen]
  2308. 514.59 s [really-safe-money-gen] instance NFData ConversionRate
  2309. 514.59 s [really-safe-money-gen]
  2310. 514.59 s [really-safe-money-gen]
  2311. 514.59 s [really-safe-money-gen] ListLit at src/Money/ConversionRate.hs:37:7-8
  2312. 514.59 s [really-safe-money-gen] @@ -34,9 +34,7 @@
  2313. 514.60 s [really-safe-money-gen] instance Validity ConversionRate where
  2314. 514.60 s [really-safe-money-gen] validate cr@(ConversionRate r) =
  2315. 514.60 s [really-safe-money-gen] mconcat
  2316. 514.60 s [really-safe-money-gen] - [ genericValidate cr,
  2317. 514.60 s [really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
  2318. 514.60 s [really-safe-money-gen] - ]
  2319. 514.60 s [really-safe-money-gen] + []
  2320. 514.60 s [really-safe-money-gen]
  2321. 514.60 s [really-safe-money-gen] instance NFData ConversionRate
  2322. 514.60 s [really-safe-money-gen]
  2323. 514.60 s [really-safe-money-gen]
  2324. 514.60 s [really-safe-money-gen] ConstBool at src/Money/ConversionRate.hs:38:41-57
  2325. 514.60 s [really-safe-money-gen] @@ -35,7 +35,7 @@
  2326. 514.60 s [really-safe-money-gen] validate cr@(ConversionRate r) =
  2327. 514.60 s [really-safe-money-gen] mconcat
  2328. 514.60 s [really-safe-money-gen] [ genericValidate cr,
  2329. 514.60 s [really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
  2330. 514.60 s [really-safe-money-gen] + declare "The rate is nonzero" $ True
  2331. 514.60 s [really-safe-money-gen] ]
  2332. 514.60 s [really-safe-money-gen]
  2333. 514.60 s [really-safe-money-gen] instance NFData ConversionRate
  2334. 514.60 s [really-safe-money-gen]
  2335. 514.60 s [really-safe-money-gen] IntLit at src/Money/ConversionRate.hs:109:27-28
  2336. 514.60 s [really-safe-money-gen] @@ -106,7 +106,7 @@
  2337. 514.60 s [really-safe-money-gen]
  2338. 514.60 s [really-safe-money-gen] -- | One-to-one conversion rate
  2339. 514.60 s [really-safe-money-gen] oneToOne :: ConversionRate
  2340. 514.60 s [really-safe-money-gen] -oneToOne = ConversionRate 1
  2341. 514.60 s [really-safe-money-gen] +oneToOne = ConversionRate 0
  2342. 514.60 s [really-safe-money-gen]
  2343. 514.60 s [really-safe-money-gen] -- | Invert a 'ConversionRate', to convert in the other direction.
  2344. 514.60 s [really-safe-money-gen] --
  2345. 514.60 s [really-safe-money-gen]
  2346. 514.60 s [really-safe-money-gen] ListLit at src/Money/MultiAccount.hs:66:7-8
  2347. 514.60 s [really-safe-money-gen] @@ -63,11 +63,11 @@
  2348. 514.60 s [really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where
  2349. 514.60 s [really-safe-money-gen] validate ma@(MultiAccount m) =
  2350. 514.60 s [really-safe-money-gen] mconcat
  2351. 514.60 s [really-safe-money-gen] - [ genericValidate ma,
  2352. 514.60 s [really-safe-money-gen] - decorateMap m $ \_ a ->
  2353. 514.60 s [really-safe-money-gen] - declare "The account is not zero" $
  2354. 514.60 s [really-safe-money-gen] - a /= Account.zero
  2355. 514.60 s [really-safe-money-gen] - ]
  2356. 514.60 s [really-safe-money-gen] + [ genericValidate ma,
  2357. 514.60 s [really-safe-money-gen] + decorateMap m $ \_ a ->
  2358. 514.60 s [really-safe-money-gen] + declare "The account is not zero" $
  2359. 514.60 s [really-safe-money-gen] + a /= Account.zero
  2360. 514.60 s [really-safe-money-gen] + ]
  2361. 514.60 s [really-safe-money-gen]
  2362. 514.60 s [really-safe-money-gen] -- TODO no empty currencies
  2363. 514.60 s [really-safe-money-gen]
  2364. 514.60 s [really-safe-money-gen]
  2365. 514.60 s [really-safe-money-gen] ListLit at src/Money/MultiAccount.hs:66:7-8
  2366. 514.60 s [really-safe-money-gen] @@ -63,11 +63,7 @@
  2367. 514.60 s [really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where
  2368. 514.60 s [really-safe-money-gen] validate ma@(MultiAccount m) =
  2369. 514.60 s [really-safe-money-gen] mconcat
  2370. 514.60 s [really-safe-money-gen] - [ genericValidate ma,
  2371. 514.60 s [really-safe-money-gen] - decorateMap m $ \_ a ->
  2372. 514.60 s [really-safe-money-gen] - declare "The account is not zero" $
  2373. 514.60 s [really-safe-money-gen] - a /= Account.zero
  2374. 514.60 s [really-safe-money-gen] - ]
  2375. 514.60 s [really-safe-money-gen] + []
  2376. 514.60 s [really-safe-money-gen]
  2377. 514.60 s [really-safe-money-gen] -- TODO no empty currencies
  2378. 514.60 s [really-safe-money-gen]
  2379. 514.60 s [really-safe-money-gen]
  2380. 514.60 s [really-safe-money-gen] ConstBool at src/Money/MultiAccount.hs:69:13-30
  2381. 514.60 s [really-safe-money-gen] @@ -66,7 +66,7 @@
  2382. 514.60 s [really-safe-money-gen] [ genericValidate ma,
  2383. 514.60 s [really-safe-money-gen] decorateMap m $ \_ a ->
  2384. 514.60 s [really-safe-money-gen] declare "The account is not zero" $
  2385. 514.60 s [really-safe-money-gen] - a /= Account.zero
  2386. 514.60 s [really-safe-money-gen] + True
  2387. 514.60 s [really-safe-money-gen] ]
  2388. 514.60 s [really-safe-money-gen]
  2389. 514.60 s [really-safe-money-gen] -- TODO no empty currencies
  2390. 514.60 s [really-safe-money-gen]
  2391. 514.60 s [really-safe-money-gen] ConstBool at src/Money/MultiAccount.hs:78:6-28
  2392. 514.60 s [really-safe-money-gen] @@ -75,7 +75,7 @@
  2393. 514.60 s [really-safe-money-gen]
  2394. 514.60 s [really-safe-money-gen] fromAccount :: currency -> Account -> MultiAccount currency
  2395. 514.60 s [really-safe-money-gen] fromAccount currency amount =
  2396. 514.60 s [really-safe-money-gen] - if amount == Account.zero
  2397. 514.60 s [really-safe-money-gen] + if True
  2398. 514.60 s [really-safe-money-gen] then zero
  2399. 514.60 s [really-safe-money-gen] else MultiAccount $ M.singleton currency amount
  2400. 514.60 s [really-safe-money-gen]
  2401. 514.60 s [really-safe-money-gen] checkPhase completed in 5 minutes 45 seconds
  2402. 514.60 s [really-safe-money-gen] Phase: haddockPhase
  2403. 514.75 s [really-safe-money-gen] Preprocessing library for really-safe-money-gen-0.0.0.0...
  2404. 514.75 s [really-safe-money-gen] Running Haddock on library for really-safe-money-gen-0.0.0.0...
  2405. 514.75 s [really-safe-money-gen] Warning: The documentation for the following packages are not installed. No
  2406. 514.75 s [really-safe-money-gen] links will be generated to these packages: really-safe-money-0.0.0.0
  2407. 514.96 s [really-safe-money-gen] [ 1 of 13] Compiling Money.Amount.Gen ( src/Money/Amount/Gen.hs, nothing )
  2408. 515.07 s [really-safe-money-gen] [ 2 of 13] Compiling Money.Account.Gen ( src/Money/Account/Gen.hs, nothing )
  2409. 515.07 s [really-safe-money-gen] [ 3 of 13] Compiling Money.AccountOf.Gen ( src/Money/AccountOf/Gen.hs, nothing )
  2410. 515.08 s [really-safe-money-gen] [ 4 of 13] Compiling Money.AmountOf.Gen ( src/Money/AmountOf/Gen.hs, nothing )
  2411. 515.09 s [really-safe-money-gen] [ 5 of 13] Compiling Money.ConversionRate.Gen ( src/Money/ConversionRate/Gen.hs, nothing )
  2412. 515.10 s [really-safe-money-gen] [ 6 of 13] Compiling Money.ConversionRateOf.Gen ( src/Money/ConversionRateOf/Gen.hs, nothing )
  2413. 515.10 s [really-safe-money-gen] [ 7 of 13] Compiling Money.QuantisationFactor.Gen ( src/Money/QuantisationFactor/Gen.hs, nothing )
  2414. 515.11 s [really-safe-money-gen] [ 8 of 13] Compiling Money.Currency.Gen ( src/Money/Currency/Gen.hs, nothing )
  2415. 515.11 s [really-safe-money-gen] [ 9 of 13] Compiling Money.MultiAmount.Gen ( src/Money/MultiAmount/Gen.hs, nothing )
  2416. 515.13 s [really-safe-money-gen] [10 of 13] Compiling Money.MultiAccount.Gen ( src/Money/MultiAccount/Gen.hs, nothing )
  2417. 515.14 s [really-safe-money-gen] [11 of 13] Compiling Money.Gen ( src/Money/Gen.hs, nothing )
  2418. 515.14 s [really-safe-money-gen] [12 of 13] Compiling Numeric.DecimalLiteral.Gen ( src/Numeric/DecimalLiteral/Gen.hs, nothing )
  2419. 515.15 s [really-safe-money-gen] [13 of 13] Compiling Paths_really_safe_money_gen ( dist/build/autogen/Paths_really_safe_money_gen.hs, nothing )
  2420. 515.18 s [really-safe-money-gen] Haddock coverage:
  2421. 515.18 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.Amount.Gen'
  2422. 515.18 s [really-safe-money-gen] Missing documentation for:
  2423. 515.18 s [really-safe-money-gen] Module header
  2424. 515.18 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.Account.Gen'
  2425. 515.18 s [really-safe-money-gen] Missing documentation for:
  2426. 515.18 s [really-safe-money-gen] Module header
  2427. 515.18 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.AccountOf.Gen'
  2428. 515.18 s [really-safe-money-gen] Missing documentation for:
  2429. 515.18 s [really-safe-money-gen] Module header
  2430. 515.18 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.AmountOf.Gen'
  2431. 515.18 s [really-safe-money-gen] Missing documentation for:
  2432. 515.18 s [really-safe-money-gen] Module header
  2433. 515.18 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.ConversionRate.Gen'
  2434. 515.18 s [really-safe-money-gen] Missing documentation for:
  2435. 515.18 s [really-safe-money-gen] Module header
  2436. 515.18 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.ConversionRateOf.Gen'
  2437. 515.18 s [really-safe-money-gen] Missing documentation for:
  2438. 515.18 s [really-safe-money-gen] Module header
  2439. 515.18 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.QuantisationFactor.Gen'
  2440. 515.18 s [really-safe-money-gen] Missing documentation for:
  2441. 515.18 s [really-safe-money-gen] Module header
  2442. 515.18 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.Currency.Gen'
  2443. 515.18 s [really-safe-money-gen] Missing documentation for:
  2444. 515.18 s [really-safe-money-gen] Module header
  2445. 515.18 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.MultiAmount.Gen'
  2446. 515.18 s [really-safe-money-gen] Missing documentation for:
  2447. 515.18 s [really-safe-money-gen] Module header
  2448. 515.18 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.MultiAccount.Gen'
  2449. 515.18 s [really-safe-money-gen] Missing documentation for:
  2450. 515.18 s [really-safe-money-gen] Module header
  2451. 515.18 s [really-safe-money-gen] Warning: Money.Gen: Could not find documentation for exported module: Money.Gen
  2452. 515.18 s [really-safe-money-gen] 90% ( 10 / 11) in 'Money.Gen'
  2453. 515.18 s [really-safe-money-gen] Missing documentation for:
  2454. 515.18 s [really-safe-money-gen] Module header
  2455. 515.18 s [really-safe-money-gen] 0% ( 0 / 2) in 'Numeric.DecimalLiteral.Gen'
  2456. 515.18 s [really-safe-money-gen] Missing documentation for:
  2457. 515.18 s [really-safe-money-gen] Module header
  2458. 515.18 s [really-safe-money-gen] shrinkSign (src/Numeric/DecimalLiteral/Gen.hs:16)
  2459. 515.27 s [really-safe-money-gen] Warning: Money.Amount.Gen: could not find link destinations for:
  2460. 515.27 s [really-safe-money-gen] - Money.Amount.Amount
  2461. 515.27 s [really-safe-money-gen] - Money.Amount.Distribution
  2462. 515.27 s [really-safe-money-gen] - Money.Amount.Rounding
  2463. 515.27 s [really-safe-money-gen] Warning: Money.Account.Gen: could not find link destinations for:
  2464. 515.27 s [really-safe-money-gen] - Money.Account.Account
  2465. 515.27 s [really-safe-money-gen] Warning: Money.AccountOf.Gen: could not find link destinations for:
  2466. 515.27 s [really-safe-money-gen] - Money.AccountOf.AccountOf
  2467. 515.27 s [really-safe-money-gen] Warning: Money.AmountOf.Gen: could not find link destinations for:
  2468. 515.27 s [really-safe-money-gen] - Money.AmountOf.AmountOf
  2469. 515.27 s [really-safe-money-gen] Warning: Money.ConversionRate.Gen: could not find link destinations for:
  2470. 515.27 s [really-safe-money-gen] - Money.ConversionRate.ConversionRate
  2471. 515.27 s [really-safe-money-gen] Warning: Money.ConversionRateOf.Gen: could not find link destinations for:
  2472. 515.27 s [really-safe-money-gen] - Money.ConversionRateOf.ConversionRateOf
  2473. 515.27 s [really-safe-money-gen] Warning: Money.QuantisationFactor.Gen: could not find link destinations for:
  2474. 515.27 s [really-safe-money-gen] - Money.QuantisationFactor.QuantisationFactor
  2475. 515.27 s [really-safe-money-gen] Warning: Money.Currency.Gen: could not find link destinations for:
  2476. 515.27 s [really-safe-money-gen] - Money.Currency.Currency
  2477. 515.27 s [really-safe-money-gen] Warning: Money.MultiAmount.Gen: could not find link destinations for:
  2478. 515.27 s [really-safe-money-gen] - Money.MultiAmount.MultiAmount
  2479. 515.27 s [really-safe-money-gen] Warning: Money.MultiAccount.Gen: could not find link destinations for:
  2480. 515.27 s [really-safe-money-gen] - Money.MultiAccount.MultiAccount
  2481. 515.27 s [really-safe-money-gen] Warning: Numeric.DecimalLiteral.Gen: could not find link destinations for:
  2482. 515.27 s [really-safe-money-gen] - Numeric.DecimalLiteral.DecimalLiteral
  2483. 519.65 s [really-safe-money-gen] Documentation created: dist/doc/html/really-safe-money-gen/,
  2484. 519.65 s [really-safe-money-gen] dist/doc/html/really-safe-money-gen/really-safe-money-gen.txt
  2485. 519.74 s [really-safe-money-gen] Preprocessing test suite 'really-safe-money-test' for really-safe-money-gen-0.0.0.0...
  2486. 519.74 s [really-safe-money-gen] Phase: installPhase
  2487. 519.81 s [really-safe-money-gen] Installing library in /nix/store/jbb1diq6a708496dvvcall823vbysrxd-really-safe-money-gen-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h
  2488. 520.12 s [really-safe-money-gen] Phase: fixupPhase
  2489. 520.14 s [really-safe-money-gen] shrinking RPATHs of ELF executables and libraries in /nix/store/jbb1diq6a708496dvvcall823vbysrxd-really-safe-money-gen-0.0.0.0
  2490. 520.15 s [really-safe-money-gen] shrinking /nix/store/jbb1diq6a708496dvvcall823vbysrxd-really-safe-money-gen-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/libHSreally-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h-ghc9.10.3.so
  2491. 520.16 s [really-safe-money-gen] checking for references to /build/ in /nix/store/jbb1diq6a708496dvvcall823vbysrxd-really-safe-money-gen-0.0.0.0...
  2492. 520.18 s [really-safe-money-gen] patching script interpreter paths in /nix/store/jbb1diq6a708496dvvcall823vbysrxd-really-safe-money-gen-0.0.0.0
  2493. 520.19 s [really-safe-money-gen] stripping (with command strip and flags -S -p) in /nix/store/jbb1diq6a708496dvvcall823vbysrxd-really-safe-money-gen-0.0.0.0/lib
  2494. 520.24 s [really-safe-money-gen] shrinking RPATHs of ELF executables and libraries in /nix/store/sjb64qh17vx2zg2hn92lp46n5dnpapk7-really-safe-money-gen-0.0.0.0-doc
  2495. 520.25 s [really-safe-money-gen] checking for references to /build/ in /nix/store/sjb64qh17vx2zg2hn92lp46n5dnpapk7-really-safe-money-gen-0.0.0.0-doc...
  2496. 520.27 s [really-safe-money-gen] patching script interpreter paths in /nix/store/sjb64qh17vx2zg2hn92lp46n5dnpapk7-really-safe-money-gen-0.0.0.0-doc
  2497. 520.27 s [really-safe-money-gen] shrinking RPATHs of ELF executables and libraries in /nix/store/vg6f0y05y5k8w3rnrxizrh8zi7pbr6cx-really-safe-money-gen-0.0.0.0-report
  2498. 520.28 s [really-safe-money-gen] checking for references to /build/ in /nix/store/vg6f0y05y5k8w3rnrxizrh8zi7pbr6cx-really-safe-money-gen-0.0.0.0-report...
  2499. 520.30 s [really-safe-money-gen] patching script interpreter paths in /nix/store/vg6f0y05y5k8w3rnrxizrh8zi7pbr6cx-really-safe-money-gen-0.0.0.0-report
  2500. 520.42 s Progress: 12 of 13 built