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

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