build checks.x86_64-linux.mutation-really-safe-money
407.13 s
[really-safe-money-gen] +fromRational r = if True then Nothing else fromRatio (realToFrac r)
407.13 s
[really-safe-money-gen]
407.13 s
[really-safe-money-gen] -- | Turn a 'ConversionRate' back into a 'Rational'
407.13 s
[really-safe-money-gen] --
407.13 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/ConversionRate.hs:72:21-26
407.13 s
[really-safe-money-gen] @@ -69,7 +69,7 @@
407.13 s
[really-safe-money-gen] -- >>> fromRational (0 % 1)
407.13 s
[really-safe-money-gen] -- Nothing
407.13 s
[really-safe-money-gen] fromRational :: Rational -> Maybe ConversionRate
407.13 s
[really-safe-money-gen] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
407.13 s
[really-safe-money-gen] +fromRational r = if False then Nothing else fromRatio (realToFrac r)
407.13 s
[really-safe-money-gen]
407.13 s
[really-safe-money-gen] -- | Turn a 'ConversionRate' back into a 'Rational'
407.13 s
[really-safe-money-gen] --
407.13 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/ConversionRate.hs:38:56-57
407.13 s
[really-safe-money-gen] @@ -35,7 +35,7 @@
407.13 s
[really-safe-money-gen] validate cr@(ConversionRate r) =
407.13 s
[really-safe-money-gen] mconcat
407.13 s
[really-safe-money-gen] [ genericValidate cr,
407.13 s
[really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
407.13 s
[really-safe-money-gen] + declare "The rate is nonzero" $ numerator r /= 1
407.13 s
[really-safe-money-gen] ]
407.13 s
[really-safe-money-gen]
407.13 s
[really-safe-money-gen] instance NFData ConversionRate
407.13 s
[really-safe-money-gen] Testing mutation Negate at src/Money/ConversionRate.hs:72:21-26
407.13 s
[really-safe-money-gen] @@ -69,7 +69,7 @@
407.13 s
[really-safe-money-gen] -- >>> fromRational (0 % 1)
407.13 s
[really-safe-money-gen] -- Nothing
407.13 s
[really-safe-money-gen] fromRational :: Rational -> Maybe ConversionRate
407.13 s
[really-safe-money-gen] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
407.14 s
[really-safe-money-gen] +fromRational r = if not r < 0 then Nothing else fromRatio (realToFrac r)
407.14 s
[really-safe-money-gen]
407.14 s
[really-safe-money-gen] -- | Turn a 'ConversionRate' back into a 'Rational'
407.14 s
[really-safe-money-gen] --
407.14 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/ConversionRate.hs:38:41-57
407.14 s
[really-safe-money-gen] @@ -35,7 +35,7 @@
407.14 s
[really-safe-money-gen] validate cr@(ConversionRate r) =
407.14 s
[really-safe-money-gen] mconcat
407.14 s
[really-safe-money-gen] [ genericValidate cr,
407.14 s
[really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
407.14 s
[really-safe-money-gen] + declare "The rate is nonzero" $ True
407.14 s
[really-safe-money-gen] ]
407.14 s
[really-safe-money-gen]
407.14 s
[really-safe-money-gen] instance NFData ConversionRate
407.14 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/ConversionRate.hs:38:41-57
407.14 s
[really-safe-money-gen] @@ -35,7 +35,7 @@
407.14 s
[really-safe-money-gen] validate cr@(ConversionRate r) =
407.14 s
[really-safe-money-gen] mconcat
407.14 s
[really-safe-money-gen] [ genericValidate cr,
407.14 s
[really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
407.14 s
[really-safe-money-gen] + declare "The rate is nonzero" $ False
407.14 s
[really-safe-money-gen] ]
407.14 s
[really-safe-money-gen]
407.14 s
[really-safe-money-gen] instance NFData ConversionRate
407.14 s
[really-safe-money-gen] Testing mutation Negate at src/Money/ConversionRate.hs:38:41-57
407.14 s
[really-safe-money-gen] @@ -35,7 +35,7 @@
407.14 s
[really-safe-money-gen] validate cr@(ConversionRate r) =
407.14 s
[really-safe-money-gen] mconcat
407.14 s
[really-safe-money-gen] [ genericValidate cr,
407.14 s
[really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
407.14 s
[really-safe-money-gen] + declare "The rate is nonzero" $ not numerator r /= 0
407.14 s
[really-safe-money-gen] ]
407.14 s
[really-safe-money-gen]
407.14 s
[really-safe-money-gen] instance NFData ConversionRate
407.14 s
[really-safe-money-gen] Testing mutation ListLit at src/Money/ConversionRate.hs:37:7-8
407.14 s
[really-safe-money-gen] @@ -34,9 +34,7 @@
407.14 s
[really-safe-money-gen] instance Validity ConversionRate where
407.14 s
[really-safe-money-gen] validate cr@(ConversionRate r) =
407.14 s
[really-safe-money-gen] mconcat
407.14 s
[really-safe-money-gen] - [ genericValidate cr,
407.14 s
[really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
407.14 s
[really-safe-money-gen] ]
407.14 s
[really-safe-money-gen]
407.14 s
[really-safe-money-gen] instance NFData ConversionRate
407.14 s
[really-safe-money-gen]
407.14 s
[really-safe-money-gen] Testing mutation ListLit at src/Money/ConversionRate.hs:37:7-8
407.14 s
[really-safe-money-gen] @@ -34,9 +34,8 @@
407.14 s
[really-safe-money-gen] instance Validity ConversionRate where
407.14 s
[really-safe-money-gen] validate cr@(ConversionRate r) =
407.14 s
[really-safe-money-gen] mconcat
407.14 s
[really-safe-money-gen] - [ genericValidate cr,
407.14 s
[really-safe-money-gen] declare "The rate is nonzero" $ numerator r /= 0
407.14 s
[really-safe-money-gen] ]
407.14 s
[really-safe-money-gen]
407.14 s
[really-safe-money-gen] instance NFData ConversionRate
407.14 s
[really-safe-money-gen]
407.14 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:87:27-28
407.14 s
[really-safe-money-gen] @@ -84,7 +84,7 @@
407.14 s
[really-safe-money-gen] fromDecimalLiteral dl = do
407.14 s
[really-safe-money-gen] irat <-
407.14 s
[really-safe-money-gen] let r = DecimalLiteral.toRational dl
407.14 s
[really-safe-money-gen] - in if numerator r == 0
407.14 s
[really-safe-money-gen] + in if numerator r == 1
407.14 s
[really-safe-money-gen] then Nothing
407.14 s
[really-safe-money-gen] else pure r
407.14 s
[really-safe-money-gen]
407.14 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:87:12-28
407.14 s
[really-safe-money-gen] @@ -84,7 +84,7 @@
407.14 s
[really-safe-money-gen] fromDecimalLiteral dl = do
407.14 s
[really-safe-money-gen] irat <-
407.14 s
[really-safe-money-gen] let r = DecimalLiteral.toRational dl
407.14 s
[really-safe-money-gen] - in if numerator r == 0
407.14 s
[really-safe-money-gen] + in if True
407.14 s
[really-safe-money-gen] then Nothing
407.14 s
[really-safe-money-gen] else pure r
407.14 s
[really-safe-money-gen]
407.14 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:87:12-28
407.14 s
[really-safe-money-gen] @@ -84,7 +84,7 @@
407.15 s
[really-safe-money-gen] fromDecimalLiteral dl = do
407.15 s
[really-safe-money-gen] irat <-
407.15 s
[really-safe-money-gen] let r = DecimalLiteral.toRational dl
407.15 s
[really-safe-money-gen] - in if numerator r == 0
407.15 s
[really-safe-money-gen] + in if False
407.15 s
[really-safe-money-gen] then Nothing
407.15 s
[really-safe-money-gen] else pure r
407.15 s
[really-safe-money-gen]
407.15 s
[really-safe-money-gen] Testing mutation Negate at src/Money/QuantisationFactor.hs:87:12-28
407.15 s
[really-safe-money-gen] @@ -84,7 +84,7 @@
407.15 s
[really-safe-money-gen] fromDecimalLiteral dl = do
407.15 s
[really-safe-money-gen] irat <-
407.15 s
[really-safe-money-gen] let r = DecimalLiteral.toRational dl
407.15 s
[really-safe-money-gen] - in if numerator r == 0
407.15 s
[really-safe-money-gen] + in if not numerator r == 0
407.15 s
[really-safe-money-gen] then Nothing
407.15 s
[really-safe-money-gen] else pure r
407.15 s
[really-safe-money-gen]
407.15 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:92:13-14
407.15 s
[really-safe-money-gen] @@ -89,7 +89,7 @@
407.15 s
[really-safe-money-gen] else pure r
407.15 s
[really-safe-money-gen]
407.15 s
[really-safe-money-gen] rat <-
407.15 s
[really-safe-money-gen] - let r = 1 / irat
407.15 s
[really-safe-money-gen] + let r = 0 / irat
407.15 s
[really-safe-money-gen] in if r < 0
407.15 s
[really-safe-money-gen] then Nothing
407.15 s
[really-safe-money-gen] else Just r
407.15 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:92:13-14
407.15 s
[really-safe-money-gen] @@ -89,7 +89,7 @@
407.15 s
[really-safe-money-gen] else pure r
407.15 s
[really-safe-money-gen]
407.15 s
[really-safe-money-gen] rat <-
407.15 s
[really-safe-money-gen] - let r = 1 / irat
407.15 s
[really-safe-money-gen] + let r = -1 / irat
407.15 s
[really-safe-money-gen] in if r < 0
407.15 s
[really-safe-money-gen] then Nothing
407.15 s
[really-safe-money-gen] else Just r
407.15 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:93:16-17
407.16 s
[really-safe-money-gen] @@ -90,7 +90,7 @@
407.16 s
[really-safe-money-gen]
407.16 s
[really-safe-money-gen] rat <-
407.16 s
[really-safe-money-gen] let r = 1 / irat
407.16 s
[really-safe-money-gen] - in if r < 0
407.16 s
[really-safe-money-gen] + in if r < 1
407.16 s
[really-safe-money-gen] then Nothing
407.16 s
[really-safe-money-gen] else Just r
407.16 s
[really-safe-money-gen]
407.16 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:93:12-17
407.16 s
[really-safe-money-gen] @@ -90,7 +90,7 @@
407.16 s
[really-safe-money-gen]
407.16 s
[really-safe-money-gen] rat <-
407.16 s
[really-safe-money-gen] let r = 1 / irat
407.16 s
[really-safe-money-gen] - in if r < 0
407.16 s
[really-safe-money-gen] + in if False
407.16 s
[really-safe-money-gen] then Nothing
407.16 s
[really-safe-money-gen] else Just r
407.16 s
[really-safe-money-gen]
407.16 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:93:12-17
407.16 s
[really-safe-money-gen] @@ -90,7 +90,7 @@
407.16 s
[really-safe-money-gen]
407.16 s
[really-safe-money-gen] rat <-
407.16 s
[really-safe-money-gen] let r = 1 / irat
407.16 s
[really-safe-money-gen] - in if r < 0
407.16 s
[really-safe-money-gen] + in if True
407.16 s
[really-safe-money-gen] then Nothing
407.16 s
[really-safe-money-gen] else Just r
407.16 s
[really-safe-money-gen]
407.16 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:98:27-28
407.16 s
[really-safe-money-gen] @@ -95,7 +95,7 @@
407.16 s
[really-safe-money-gen] else Just r
407.16 s
[really-safe-money-gen]
407.16 s
[really-safe-money-gen] fac <-
407.16 s
[really-safe-money-gen] - if denominator rat == 1
407.16 s
[really-safe-money-gen] + if denominator rat == 0
407.16 s
[really-safe-money-gen] then Just (numerator rat)
407.16 s
[really-safe-money-gen] else Nothing
407.16 s
[really-safe-money-gen]
407.16 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:98:27-28
407.16 s
[really-safe-money-gen] @@ -95,7 +95,7 @@
407.16 s
[really-safe-money-gen] else Just r
407.16 s
[really-safe-money-gen]
407.16 s
[really-safe-money-gen] fac <-
407.16 s
[really-safe-money-gen] - if denominator rat == 1
407.16 s
[really-safe-money-gen] + if denominator rat == -1
407.16 s
[really-safe-money-gen] then Just (numerator rat)
407.16 s
[really-safe-money-gen] else Nothing
407.16 s
[really-safe-money-gen]
407.16 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:98:8-28
407.16 s
[really-safe-money-gen] @@ -95,7 +95,7 @@
407.16 s
[really-safe-money-gen] else Just r
407.16 s
[really-safe-money-gen]
407.16 s
[really-safe-money-gen] fac <-
407.16 s
[really-safe-money-gen] - if denominator rat == 1
407.16 s
[really-safe-money-gen] + if True
407.16 s
[really-safe-money-gen] then Just (numerator rat)
407.16 s
[really-safe-money-gen] else Nothing
407.16 s
[really-safe-money-gen]
407.16 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:98:8-28
407.16 s
[really-safe-money-gen] @@ -95,7 +95,7 @@
407.16 s
[really-safe-money-gen] else Just r
407.16 s
[really-safe-money-gen]
407.16 s
[really-safe-money-gen] fac <-
407.16 s
[really-safe-money-gen] - if denominator rat == 1
407.16 s
[really-safe-money-gen] + if False
407.16 s
[really-safe-money-gen] then Just (numerator rat)
407.16 s
[really-safe-money-gen] else Nothing
407.16 s
[really-safe-money-gen]
407.16 s
[really-safe-money-gen] Testing mutation Negate at src/Money/QuantisationFactor.hs:98:8-28
407.16 s
[really-safe-money-gen] @@ -95,7 +95,7 @@
407.16 s
[really-safe-money-gen] else Just r
407.16 s
[really-safe-money-gen]
407.16 s
[really-safe-money-gen] fac <-
407.17 s
[really-safe-money-gen] - if denominator rat == 1
407.17 s
[really-safe-money-gen] + if not denominator rat == 1
407.17 s
[really-safe-money-gen] then Just (numerator rat)
407.17 s
[really-safe-money-gen] else Nothing
407.17 s
[really-safe-money-gen]
407.17 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:102:6-46
409.21 s
[really-safe-money-gen] @@ -99,6 +99,6 @@
409.21 s
[really-safe-money-gen] then Just (numerator rat)
409.21 s
[really-safe-money-gen] else Nothing
409.31 s
[really-safe-money-gen]
409.31 s
[really-safe-money-gen] - if fac <= fromIntegral (maxBound :: Word32)
409.31 s
[really-safe-money-gen] + if True
409.31 s
[really-safe-money-gen] then Just (QuantisationFactor (fromIntegral fac))
409.31 s
[really-safe-money-gen] else Nothing
409.31 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:102:6-46
409.31 s
[really-safe-money-gen] @@ -99,6 +99,6 @@
409.31 s
[really-safe-money-gen] then Just (numerator rat)
409.31 s
[really-safe-money-gen] else Nothing
409.31 s
[really-safe-money-gen]
409.31 s
[really-safe-money-gen] - if fac <= fromIntegral (maxBound :: Word32)
409.31 s
[really-safe-money-gen] + if False
409.31 s
[really-safe-money-gen] then Just (QuantisationFactor (fromIntegral fac))
409.31 s
[really-safe-money-gen] else Nothing
409.31 s
[really-safe-money-gen] Testing mutation Negate at src/Money/QuantisationFactor.hs:102:6-46
409.31 s
[really-safe-money-gen] @@ -99,6 +99,6 @@
409.31 s
[really-safe-money-gen] then Just (numerator rat)
409.31 s
[really-safe-money-gen] else Nothing
409.31 s
[really-safe-money-gen]
409.31 s
[really-safe-money-gen] - if fac <= fromIntegral (maxBound :: Word32)
409.31 s
[really-safe-money-gen] + if not fac <= fromIntegral (maxBound :: Word32)
409.31 s
[really-safe-money-gen] then Just (QuantisationFactor (fromIntegral fac))
409.31 s
[really-safe-money-gen] else Nothing
409.31 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:67:67-68
409.31 s
[really-safe-money-gen] @@ -64,7 +64,7 @@
409.31 s
[really-safe-money-gen] -- Just (DecimalLiteral Nothing 1 0)
409.31 s
[really-safe-money-gen] toDecimalLiteral :: QuantisationFactor -> Maybe DecimalLiteral
409.31 s
[really-safe-money-gen] toDecimalLiteral (QuantisationFactor qfw) =
409.31 s
[really-safe-money-gen] - DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (1 % fromIntegral qfw)
409.31 s
[really-safe-money-gen] + DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (0 % fromIntegral qfw)
409.31 s
[really-safe-money-gen]
409.31 s
[really-safe-money-gen] -- | Parse a 'QuantisationFactor' from a 'DecimalLiteral' that represents the smallest unit
409.31 s
[really-safe-money-gen] -- TODO explain that it's the inverse.
409.32 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:67:67-68
409.32 s
[really-safe-money-gen] @@ -64,7 +64,7 @@
409.32 s
[really-safe-money-gen] -- Just (DecimalLiteral Nothing 1 0)
409.32 s
[really-safe-money-gen] toDecimalLiteral :: QuantisationFactor -> Maybe DecimalLiteral
409.32 s
[really-safe-money-gen] toDecimalLiteral (QuantisationFactor qfw) =
409.32 s
[really-safe-money-gen] - DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (1 % fromIntegral qfw)
409.32 s
[really-safe-money-gen] + DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (-1 % fromIntegral qfw)
409.32 s
[really-safe-money-gen]
409.32 s
[really-safe-money-gen] -- | Parse a 'QuantisationFactor' from a 'DecimalLiteral' that represents the smallest unit
409.32 s
[really-safe-money-gen] -- TODO explain that it's the inverse.
409.32 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:40:62-63
409.32 s
[really-safe-money-gen] @@ -37,7 +37,7 @@
409.32 s
[really-safe-money-gen] validate qf@(QuantisationFactor w) =
409.32 s
[really-safe-money-gen] mconcat
409.32 s
[really-safe-money-gen] [ genericValidate qf,
409.32 s
[really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
409.32 s
[really-safe-money-gen] + declare "The quantisation factor is not zero" $ w /= 1
409.32 s
[really-safe-money-gen] ]
409.32 s
[really-safe-money-gen]
409.32 s
[really-safe-money-gen] instance NFData QuantisationFactor
409.32 s
[really-safe-money-gen] Testing mutation Negate at src/Money/QuantisationFactor.hs:93:12-17
409.32 s
[really-safe-money-gen] @@ -90,7 +90,7 @@
409.32 s
[really-safe-money-gen]
409.32 s
[really-safe-money-gen] rat <-
409.32 s
[really-safe-money-gen] let r = 1 / irat
409.32 s
[really-safe-money-gen] - in if r < 0
409.32 s
[really-safe-money-gen] + in if not r < 0
409.32 s
[really-safe-money-gen] then Nothing
409.32 s
[really-safe-money-gen] else Just r
409.32 s
[really-safe-money-gen]
409.32 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:40:57-63
409.32 s
[really-safe-money-gen] @@ -37,7 +37,7 @@
409.32 s
[really-safe-money-gen] validate qf@(QuantisationFactor w) =
409.32 s
[really-safe-money-gen] mconcat
409.32 s
[really-safe-money-gen] [ genericValidate qf,
409.32 s
[really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
409.32 s
[really-safe-money-gen] + declare "The quantisation factor is not zero" $ False
409.32 s
[really-safe-money-gen] ]
409.32 s
[really-safe-money-gen]
409.32 s
[really-safe-money-gen] instance NFData QuantisationFactor
409.32 s
[really-safe-money-gen] Testing mutation Negate at src/Money/QuantisationFactor.hs:40:57-63
409.32 s
[really-safe-money-gen] @@ -37,7 +37,7 @@
409.32 s
[really-safe-money-gen] validate qf@(QuantisationFactor w) =
409.32 s
[really-safe-money-gen] mconcat
409.32 s
[really-safe-money-gen] [ genericValidate qf,
409.32 s
[really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
409.32 s
[really-safe-money-gen] + declare "The quantisation factor is not zero" $ not w /= 0
409.32 s
[really-safe-money-gen] ]
409.32 s
[really-safe-money-gen]
409.32 s
[really-safe-money-gen] instance NFData QuantisationFactor
409.32 s
[really-safe-money-gen] Testing mutation ListLit at src/Money/QuantisationFactor.hs:39:7-8
409.32 s
[really-safe-money-gen] @@ -36,9 +36,7 @@
409.32 s
[really-safe-money-gen] instance Validity QuantisationFactor where
409.32 s
[really-safe-money-gen] validate qf@(QuantisationFactor w) =
409.32 s
[really-safe-money-gen] mconcat
409.32 s
[really-safe-money-gen] - [ genericValidate qf,
409.32 s
[really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
409.32 s
[really-safe-money-gen] ]
409.32 s
[really-safe-money-gen]
409.32 s
[really-safe-money-gen] instance NFData QuantisationFactor
409.32 s
[really-safe-money-gen]
409.32 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:801:36-38
409.32 s
[really-safe-money-gen] @@ -798,7 +798,7 @@
409.32 s
[really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
409.32 s
[really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor qf) =
409.32 s
[really-safe-money-gen] let decimals :: Int
409.32 s
[really-safe-money-gen] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
409.32 s
[really-safe-money-gen] + decimals = ceiling $ logBase 0 (fromIntegral qf :: Float)
409.32 s
[really-safe-money-gen] in printf "%%0.%df" decimals
409.32 s
[really-safe-money-gen]
409.32 s
[really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
409.32 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:801:36-38
409.32 s
[really-safe-money-gen] @@ -798,7 +798,7 @@
409.32 s
[really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
409.32 s
[really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor qf) =
409.32 s
[really-safe-money-gen] let decimals :: Int
409.32 s
[really-safe-money-gen] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
409.32 s
[really-safe-money-gen] + decimals = ceiling $ logBase 1 (fromIntegral qf :: Float)
409.32 s
[really-safe-money-gen] in printf "%%0.%df" decimals
409.32 s
[really-safe-money-gen]
409.32 s
[really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
409.32 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:40:57-63
409.32 s
[really-safe-money-gen] @@ -37,7 +37,7 @@
409.32 s
[really-safe-money-gen] validate qf@(QuantisationFactor w) =
409.32 s
[really-safe-money-gen] mconcat
409.32 s
[really-safe-money-gen] [ genericValidate qf,
409.32 s
[really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
409.32 s
[really-safe-money-gen] + declare "The quantisation factor is not zero" $ True
409.32 s
[really-safe-money-gen] ]
409.32 s
[really-safe-money-gen]
409.32 s
[really-safe-money-gen] instance NFData QuantisationFactor
409.32 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:801:36-38
409.32 s
[really-safe-money-gen] @@ -798,7 +798,7 @@
409.32 s
[really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
409.32 s
[really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor qf) =
409.32 s
[really-safe-money-gen] let decimals :: Int
409.32 s
[really-safe-money-gen] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
409.32 s
[really-safe-money-gen] + decimals = ceiling $ logBase -10 (fromIntegral qf :: Float)
409.32 s
[really-safe-money-gen] in printf "%%0.%df" decimals
409.32 s
[really-safe-money-gen]
409.32 s
[really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
409.32 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:569:18-19
409.32 s
[really-safe-money-gen] @@ -566,7 +566,7 @@
409.32 s
[really-safe-money-gen] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
409.32 s
[really-safe-money-gen] smallerChunk :: Amount
409.32 s
[really-safe-money-gen] smallerChunk = Amount smallerChunkSize
409.32 s
[really-safe-money-gen] - in if rest == 0
409.32 s
[really-safe-money-gen] + in if rest == 1
409.32 s
[really-safe-money-gen] then DistributedIntoEqualChunks f smallerChunk
409.32 s
[really-safe-money-gen] else
409.32 s
[really-safe-money-gen] let -- This 'fromIntegral' is theoretically not safe, but it's
409.32 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:569:10-19
409.32 s
[really-safe-money-gen] @@ -566,7 +566,7 @@
409.32 s
[really-safe-money-gen] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
409.32 s
[really-safe-money-gen] smallerChunk :: Amount
409.32 s
[really-safe-money-gen] smallerChunk = Amount smallerChunkSize
409.32 s
[really-safe-money-gen] - in if rest == 0
409.32 s
[really-safe-money-gen] + in if False
409.32 s
[really-safe-money-gen] then DistributedIntoEqualChunks f smallerChunk
409.32 s
[really-safe-money-gen] else
409.32 s
[really-safe-money-gen] let -- This 'fromIntegral' is theoretically not safe, but it's
409.32 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:569:10-19
409.32 s
[really-safe-money-gen] @@ -566,7 +566,7 @@
409.33 s
[really-safe-money-gen] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
409.33 s
[really-safe-money-gen] smallerChunk :: Amount
409.33 s
[really-safe-money-gen] smallerChunk = Amount smallerChunkSize
409.33 s
[really-safe-money-gen] - in if rest == 0
409.33 s
[really-safe-money-gen] + in if True
409.33 s
[really-safe-money-gen] then DistributedIntoEqualChunks f smallerChunk
409.33 s
[really-safe-money-gen] else
409.33 s
[really-safe-money-gen] let -- This 'fromIntegral' is theoretically not safe, but it's
409.33 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:544:10-23
409.33 s
[really-safe-money-gen] @@ -541,7 +541,7 @@
409.33 s
[really-safe-money-gen] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
409.33 s
[really-safe-money-gen] r :: Integer
409.33 s
[really-safe-money-gen] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
409.33 s
[really-safe-money-gen] - in if r > maxBoundI
409.33 s
[really-safe-money-gen] + in if True
409.33 s
[really-safe-money-gen] then Nothing
409.33 s
[really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
409.33 s
[really-safe-money-gen]
409.33 s
[really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:569:10-19
409.33 s
[really-safe-money-gen] @@ -566,7 +566,7 @@
409.33 s
[really-safe-money-gen] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
409.33 s
[really-safe-money-gen] smallerChunk :: Amount
409.33 s
[really-safe-money-gen] smallerChunk = Amount smallerChunkSize
409.33 s
[really-safe-money-gen] - in if rest == 0
409.33 s
[really-safe-money-gen] + in if not rest == 0
409.33 s
[really-safe-money-gen] then DistributedIntoEqualChunks f smallerChunk
409.33 s
[really-safe-money-gen] else
409.33 s
[really-safe-money-gen] let -- This 'fromIntegral' is theoretically not safe, but it's
409.33 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:544:10-23
409.33 s
[really-safe-money-gen] @@ -541,7 +541,7 @@
409.33 s
[really-safe-money-gen] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
409.33 s
[really-safe-money-gen] r :: Integer
409.33 s
[really-safe-money-gen] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
409.33 s
[really-safe-money-gen] - in if r > maxBoundI
409.33 s
[really-safe-money-gen] + in if False
409.33 s
[really-safe-money-gen] then Nothing
409.33 s
[really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
409.33 s
[really-safe-money-gen]
409.33 s
[really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:544:10-23
411.39 s
[really-safe-money-gen] @@ -541,7 +541,7 @@
411.39 s
[really-safe-money-gen] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
411.39 s
[really-safe-money-gen] r :: Integer
411.39 s
[really-safe-money-gen] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
411.39 s
[really-safe-money-gen] - in if r > maxBoundI
411.39 s
[really-safe-money-gen] + in if not r > maxBoundI
411.39 s
[really-safe-money-gen] then Nothing
411.39 s
[really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
411.39 s
[really-safe-money-gen]
411.39 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:518:10-15
411.39 s
[really-safe-money-gen] @@ -515,7 +515,7 @@
411.39 s
[really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
411.39 s
[really-safe-money-gen] r :: Integer
411.39 s
[really-safe-money-gen] r = i1 - i2
411.39 s
[really-safe-money-gen] - in if r < 0
411.39 s
[really-safe-money-gen] + in if True
411.39 s
[really-safe-money-gen] then Nothing
411.40 s
[really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
411.40 s
[really-safe-money-gen]
411.40 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:518:10-15
411.40 s
[really-safe-money-gen] @@ -515,7 +515,7 @@
411.40 s
[really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
411.40 s
[really-safe-money-gen] r :: Integer
411.40 s
[really-safe-money-gen] r = i1 - i2
411.40 s
[really-safe-money-gen] - in if r < 0
411.40 s
[really-safe-money-gen] + in if False
411.40 s
[really-safe-money-gen] then Nothing
411.40 s
[really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
411.40 s
[really-safe-money-gen]
411.40 s
[really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:518:10-15
411.40 s
[really-safe-money-gen] @@ -515,7 +515,7 @@
411.40 s
[really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
411.40 s
[really-safe-money-gen] r :: Integer
411.40 s
[really-safe-money-gen] r = i1 - i2
411.40 s
[really-safe-money-gen] - in if r < 0
411.40 s
[really-safe-money-gen] + in if not r < 0
411.40 s
[really-safe-money-gen] then Nothing
411.40 s
[really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
411.40 s
[really-safe-money-gen]
411.40 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:476:10-23
411.40 s
[really-safe-money-gen] @@ -473,7 +473,7 @@
411.40 s
[really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
411.40 s
[really-safe-money-gen] r :: Integer
411.40 s
[really-safe-money-gen] r = i1 + i2
411.40 s
[really-safe-money-gen] - in if r > maxBoundI
411.40 s
[really-safe-money-gen] + in if False
411.40 s
[really-safe-money-gen] then Nothing
411.40 s
[really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
411.40 s
[really-safe-money-gen]
411.40 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:476:10-23
411.40 s
[really-safe-money-gen] @@ -473,7 +473,7 @@
411.40 s
[really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
411.40 s
[really-safe-money-gen] r :: Integer
411.40 s
[really-safe-money-gen] r = i1 + i2
411.40 s
[really-safe-money-gen] - in if r > maxBoundI
411.40 s
[really-safe-money-gen] + in if True
411.40 s
[really-safe-money-gen] then Nothing
411.40 s
[really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
411.40 s
[really-safe-money-gen]
411.40 s
[really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:476:10-23
411.40 s
[really-safe-money-gen] @@ -473,7 +473,7 @@
411.40 s
[really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
411.40 s
[really-safe-money-gen] r :: Integer
411.40 s
[really-safe-money-gen] r = i1 + i2
411.40 s
[really-safe-money-gen] - in if r > maxBoundI
411.40 s
[really-safe-money-gen] + in if not r > maxBoundI
411.40 s
[really-safe-money-gen] then Nothing
411.40 s
[really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
411.40 s
[really-safe-money-gen]
411.40 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:388:5-16
411.40 s
[really-safe-money-gen] @@ -385,7 +385,7 @@
411.40 s
[really-safe-money-gen] -- Nothing
411.40 s
[really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
411.40 s
[really-safe-money-gen] fromRational (QuantisationFactor qf) r
411.40 s
[really-safe-money-gen] - | isInvalid r = Nothing
411.40 s
[really-safe-money-gen] + | True = Nothing
411.40 s
[really-safe-money-gen] | r < 0 = Nothing
411.40 s
[really-safe-money-gen] | otherwise =
411.40 s
[really-safe-money-gen] let resultRational :: Rational
411.40 s
[really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:388:5-16
411.40 s
[really-safe-money-gen] @@ -385,7 +385,7 @@
411.40 s
[really-safe-money-gen] -- Nothing
411.40 s
[really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
411.40 s
[really-safe-money-gen] fromRational (QuantisationFactor qf) r
411.40 s
[really-safe-money-gen] - | isInvalid r = Nothing
411.40 s
[really-safe-money-gen] + | not isInvalid r = Nothing
411.40 s
[really-safe-money-gen] | r < 0 = Nothing
411.40 s
[really-safe-money-gen] | otherwise =
411.40 s
[really-safe-money-gen] let resultRational :: Rational
411.40 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:389:9-10
411.40 s
[really-safe-money-gen] @@ -386,7 +386,7 @@
411.40 s
[really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
411.40 s
[really-safe-money-gen] fromRational (QuantisationFactor qf) r
411.40 s
[really-safe-money-gen] | isInvalid r = Nothing
411.40 s
[really-safe-money-gen] - | r < 0 = Nothing
411.40 s
[really-safe-money-gen] + | r < 1 = Nothing
411.41 s
[really-safe-money-gen] | otherwise =
411.41 s
[really-safe-money-gen] let resultRational :: Rational
411.41 s
[really-safe-money-gen] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
411.41 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:389:5-10
411.41 s
[really-safe-money-gen] @@ -386,7 +386,7 @@
411.41 s
[really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
411.41 s
[really-safe-money-gen] fromRational (QuantisationFactor qf) r
411.41 s
[really-safe-money-gen] | isInvalid r = Nothing
411.41 s
[really-safe-money-gen] - | r < 0 = Nothing
411.41 s
[really-safe-money-gen] + | True = Nothing
411.41 s
[really-safe-money-gen] | otherwise =
411.41 s
[really-safe-money-gen] let resultRational :: Rational
411.41 s
[really-safe-money-gen] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
411.41 s
[really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:389:5-10
411.41 s
[really-safe-money-gen] @@ -386,7 +386,7 @@
411.41 s
[really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
411.41 s
[really-safe-money-gen] fromRational (QuantisationFactor qf) r
411.41 s
[really-safe-money-gen] | isInvalid r = Nothing
411.41 s
[really-safe-money-gen] - | r < 0 = Nothing
411.41 s
[really-safe-money-gen] + | not r < 0 = Nothing
411.41 s
[really-safe-money-gen] | otherwise =
411.41 s
[really-safe-money-gen] let resultRational :: Rational
411.41 s
[really-safe-money-gen] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
411.41 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:397:14-31
411.41 s
[really-safe-money-gen] @@ -394,7 +394,7 @@
411.41 s
[really-safe-money-gen] ceiled = (ceiling :: Rational -> Natural) resultRational
411.41 s
[really-safe-money-gen] floored :: Natural
411.41 s
[really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
411.41 s
[really-safe-money-gen] - in if ceiled == floored
411.41 s
[really-safe-money-gen] + in if False
411.41 s
[really-safe-money-gen] then
411.41 s
[really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
411.41 s
[really-safe-money-gen] then Nothing
411.41 s
[really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:397:14-31
411.41 s
[really-safe-money-gen] @@ -394,7 +394,7 @@
411.41 s
[really-safe-money-gen] ceiled = (ceiling :: Rational -> Natural) resultRational
411.41 s
[really-safe-money-gen] floored :: Natural
411.41 s
[really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
411.41 s
[really-safe-money-gen] - in if ceiled == floored
411.41 s
[really-safe-money-gen] + in if not ceiled == floored
411.41 s
[really-safe-money-gen] then
411.41 s
[really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
411.41 s
[really-safe-money-gen] then Nothing
411.41 s
[really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:399:18-83
411.41 s
[really-safe-money-gen] @@ -396,7 +396,7 @@
411.41 s
[really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
411.41 s
[really-safe-money-gen] in if ceiled == floored
411.41 s
[really-safe-money-gen] then
411.41 s
[really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
411.41 s
[really-safe-money-gen] + if not ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
411.41 s
[really-safe-money-gen] then Nothing
411.41 s
[really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
411.41 s
[really-safe-money-gen] else Nothing
411.41 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:399:18-83
411.41 s
[really-safe-money-gen] @@ -396,7 +396,7 @@
411.41 s
[really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
411.41 s
[really-safe-money-gen] in if ceiled == floored
411.41 s
[really-safe-money-gen] then
411.41 s
[really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
411.41 s
[really-safe-money-gen] + if False
411.41 s
[really-safe-money-gen] then Nothing
411.41 s
[really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
411.41 s
[really-safe-money-gen] else Nothing
411.41 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:320:9-10
411.41 s
[really-safe-money-gen] @@ -317,7 +317,7 @@
411.41 s
[really-safe-money-gen] Double ->
411.41 s
[really-safe-money-gen] Maybe Amount
411.41 s
[really-safe-money-gen] fromDouble (QuantisationFactor qf) d
411.41 s
[really-safe-money-gen] - | d < 0 = Nothing
411.41 s
[really-safe-money-gen] + | d < 1 = Nothing
411.41 s
[really-safe-money-gen] | otherwise =
411.41 s
[really-safe-money-gen] let resultDouble :: Double
411.41 s
[really-safe-money-gen] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
411.41 s
[really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:320:5-10
411.41 s
[really-safe-money-gen] @@ -317,7 +317,7 @@
411.41 s
[really-safe-money-gen] Double ->
411.41 s
[really-safe-money-gen] Maybe Amount
411.41 s
[really-safe-money-gen] fromDouble (QuantisationFactor qf) d
411.41 s
[really-safe-money-gen] - | d < 0 = Nothing
411.41 s
[really-safe-money-gen] + | not d < 0 = Nothing
411.41 s
[really-safe-money-gen] | otherwise =
411.41 s
[really-safe-money-gen] let resultDouble :: Double
411.41 s
[really-safe-money-gen] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
411.41 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:399:18-83
411.41 s
[really-safe-money-gen] @@ -396,7 +396,7 @@
411.41 s
[really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
411.41 s
[really-safe-money-gen] in if ceiled == floored
411.41 s
[really-safe-money-gen] then
411.41 s
[really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
411.41 s
[really-safe-money-gen] + if True
411.42 s
[really-safe-money-gen] then Nothing
411.42 s
[really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
411.42 s
[really-safe-money-gen] else Nothing
411.42 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:397:14-31
411.42 s
[really-safe-money-gen] @@ -394,7 +394,7 @@
411.42 s
[really-safe-money-gen] ceiled = (ceiling :: Rational -> Natural) resultRational
411.42 s
[really-safe-money-gen] floored :: Natural
411.42 s
[really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
411.42 s
[really-safe-money-gen] - in if ceiled == floored
411.42 s
[really-safe-money-gen] + in if True
411.42 s
[really-safe-money-gen] then
411.42 s
[really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
411.42 s
[really-safe-money-gen] then Nothing
411.42 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:320:5-10
411.42 s
[really-safe-money-gen] @@ -317,7 +317,7 @@
411.42 s
[really-safe-money-gen] Double ->
411.42 s
[really-safe-money-gen] Maybe Amount
411.42 s
[really-safe-money-gen] fromDouble (QuantisationFactor qf) d
411.42 s
[really-safe-money-gen] - | d < 0 = Nothing
411.42 s
[really-safe-money-gen] + | True = Nothing
411.42 s
[really-safe-money-gen] | otherwise =
411.42 s
[really-safe-money-gen] let resultDouble :: Double
411.42 s
[really-safe-money-gen] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
411.42 s
[really-safe-money-gen] Testing mutation ListLit at src/Money/QuantisationFactor.hs:39:7-8
411.42 s
[really-safe-money-gen] @@ -36,9 +36,8 @@
411.42 s
[really-safe-money-gen] instance Validity QuantisationFactor where
411.42 s
[really-safe-money-gen] validate qf@(QuantisationFactor w) =
411.42 s
[really-safe-money-gen] mconcat
411.42 s
[really-safe-money-gen] - [ genericValidate qf,
413.91 s
[really-safe-money-gen] declare "The quantisation factor is not zero" $ w /= 0
413.91 s
[really-safe-money-gen] ]
413.91 s
[really-safe-money-gen]
413.91 s
[really-safe-money-gen] instance NFData QuantisationFactor
413.91 s
[really-safe-money-gen]
413.91 s
[really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:327:9-16
413.91 s
[really-safe-money-gen] @@ -324,7 +324,7 @@
413.91 s
[really-safe-money-gen] in go resultDouble
413.91 s
[really-safe-money-gen] where
413.91 s
[really-safe-money-gen] go resultDouble
413.91 s
[really-safe-money-gen] - | isNaN d = Nothing
413.91 s
[really-safe-money-gen] + | not isNaN d = Nothing
413.91 s
[really-safe-money-gen] | isInfinite d = Nothing
413.91 s
[really-safe-money-gen] | otherwise =
413.91 s
[really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
413.91 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:328:9-21
413.91 s
[really-safe-money-gen] @@ -325,7 +325,7 @@
413.91 s
[really-safe-money-gen] where
413.91 s
[really-safe-money-gen] go resultDouble
413.91 s
[really-safe-money-gen] | isNaN d = Nothing
413.91 s
[really-safe-money-gen] - | isInfinite d = Nothing
413.91 s
[really-safe-money-gen] + | True = Nothing
413.91 s
[really-safe-money-gen] | otherwise =
413.91 s
[really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
413.91 s
[really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
413.91 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:327:9-16
413.91 s
[really-safe-money-gen] @@ -324,7 +324,7 @@
413.91 s
[really-safe-money-gen] in go resultDouble
413.91 s
[really-safe-money-gen] where
413.91 s
[really-safe-money-gen] go resultDouble
413.92 s
[really-safe-money-gen] - | isNaN d = Nothing
413.92 s
[really-safe-money-gen] + | True = Nothing
413.92 s
[really-safe-money-gen] | isInfinite d = Nothing
413.92 s
[really-safe-money-gen] | otherwise =
413.92 s
[really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
413.92 s
[really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:328:9-21
413.92 s
[really-safe-money-gen] @@ -325,7 +325,7 @@
413.92 s
[really-safe-money-gen] where
413.92 s
[really-safe-money-gen] go resultDouble
413.92 s
[really-safe-money-gen] | isNaN d = Nothing
413.92 s
[really-safe-money-gen] - | isInfinite d = Nothing
413.92 s
[really-safe-money-gen] + | not isInfinite d = Nothing
413.92 s
[really-safe-money-gen] | otherwise =
413.92 s
[really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
413.92 s
[really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
413.92 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:332:38-40
413.92 s
[really-safe-money-gen] @@ -329,7 +329,7 @@
413.92 s
[really-safe-money-gen] | otherwise =
413.92 s
[really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
413.92 s
[really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
413.92 s
[really-safe-money-gen] - if exponent resultDouble > 65
413.92 s
[really-safe-money-gen] + if exponent resultDouble > 0
413.92 s
[really-safe-money-gen] then Nothing
413.92 s
[really-safe-money-gen] else
413.92 s
[really-safe-money-gen] let ceiled :: Natural
413.92 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:332:38-40
413.92 s
[really-safe-money-gen] @@ -329,7 +329,7 @@
413.92 s
[really-safe-money-gen] | otherwise =
413.92 s
[really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
413.92 s
[really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
413.92 s
[really-safe-money-gen] - if exponent resultDouble > 65
413.92 s
[really-safe-money-gen] + if exponent resultDouble > 1
413.92 s
[really-safe-money-gen] then Nothing
413.92 s
[really-safe-money-gen] else
413.92 s
[really-safe-money-gen] let ceiled :: Natural
413.92 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:332:38-40
413.92 s
[really-safe-money-gen] @@ -329,7 +329,7 @@
413.92 s
[really-safe-money-gen] | otherwise =
413.92 s
[really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
413.92 s
[really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
413.92 s
[really-safe-money-gen] - if exponent resultDouble > 65
413.92 s
[really-safe-money-gen] + if exponent resultDouble > -65
413.92 s
[really-safe-money-gen] then Nothing
413.92 s
[really-safe-money-gen] else
413.92 s
[really-safe-money-gen] let ceiled :: Natural
413.92 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:332:14-40
413.92 s
[really-safe-money-gen] @@ -329,7 +329,7 @@
413.92 s
[really-safe-money-gen] | otherwise =
413.92 s
[really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
413.92 s
[really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
413.92 s
[really-safe-money-gen] - if exponent resultDouble > 65
413.92 s
[really-safe-money-gen] + if True
413.92 s
[really-safe-money-gen] then Nothing
413.92 s
[really-safe-money-gen] else
413.92 s
[really-safe-money-gen] let ceiled :: Natural
413.92 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:332:14-40
413.92 s
[really-safe-money-gen] @@ -329,7 +329,7 @@
413.92 s
[really-safe-money-gen] | otherwise =
413.92 s
[really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
413.92 s
[really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
413.92 s
[really-safe-money-gen] - if exponent resultDouble > 65
413.92 s
[really-safe-money-gen] + if False
413.92 s
[really-safe-money-gen] then Nothing
413.93 s
[really-safe-money-gen] else
413.93 s
[really-safe-money-gen] let ceiled :: Natural
413.93 s
[really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:332:14-40
413.93 s
[really-safe-money-gen] @@ -329,7 +329,7 @@
413.93 s
[really-safe-money-gen] | otherwise =
413.93 s
[really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
413.93 s
[really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
413.93 s
[really-safe-money-gen] - if exponent resultDouble > 65
413.93 s
[really-safe-money-gen] + if not exponent resultDouble > 65
413.93 s
[really-safe-money-gen] then Nothing
413.93 s
[really-safe-money-gen] else
413.93 s
[really-safe-money-gen] let ceiled :: Natural
413.93 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:339:22-39
413.93 s
[really-safe-money-gen] @@ -336,7 +336,7 @@
413.93 s
[really-safe-money-gen] ceiled = (ceiling :: Double -> Natural) resultDouble
413.93 s
[really-safe-money-gen] floored :: Natural
413.93 s
[really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
413.93 s
[really-safe-money-gen] - in if ceiled == floored
413.93 s
[really-safe-money-gen] + in if False
413.93 s
[really-safe-money-gen] then
413.93 s
[really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
413.93 s
[really-safe-money-gen] then Nothing
413.93 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:339:22-39
413.93 s
[really-safe-money-gen] @@ -336,7 +336,7 @@
413.93 s
[really-safe-money-gen] ceiled = (ceiling :: Double -> Natural) resultDouble
413.93 s
[really-safe-money-gen] floored :: Natural
413.93 s
[really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
413.93 s
[really-safe-money-gen] - in if ceiled == floored
413.93 s
[really-safe-money-gen] + in if True
413.93 s
[really-safe-money-gen] then
413.93 s
[really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
413.93 s
[really-safe-money-gen] then Nothing
413.93 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:518:14-15
413.93 s
[really-safe-money-gen] @@ -515,7 +515,7 @@
413.93 s
[really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
413.93 s
[really-safe-money-gen] r :: Integer
413.93 s
[really-safe-money-gen] r = i1 - i2
413.93 s
[really-safe-money-gen] - in if r < 0
413.93 s
[really-safe-money-gen] + in if r < 1
413.93 s
[really-safe-money-gen] then Nothing
413.93 s
[really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
413.93 s
[really-safe-money-gen]
413.93 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:341:26-91
413.93 s
[really-safe-money-gen] @@ -338,7 +338,7 @@
413.93 s
[really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
413.93 s
[really-safe-money-gen] in if ceiled == floored
413.93 s
[really-safe-money-gen] then
413.93 s
[really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
413.93 s
[really-safe-money-gen] + if True
413.93 s
[really-safe-money-gen] then Nothing
413.93 s
[really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
413.93 s
[really-safe-money-gen] else Nothing
413.93 s
[really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:341:26-91
413.93 s
[really-safe-money-gen] @@ -338,7 +338,7 @@
413.93 s
[really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
413.93 s
[really-safe-money-gen] in if ceiled == floored
413.93 s
[really-safe-money-gen] then
413.93 s
[really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
413.93 s
[really-safe-money-gen] + if not ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
413.93 s
[really-safe-money-gen] then Nothing
413.93 s
[really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
413.93 s
[really-safe-money-gen] else Nothing
413.93 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:341:26-91
413.93 s
[really-safe-money-gen] @@ -338,7 +338,7 @@
413.93 s
[really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
413.93 s
[really-safe-money-gen] in if ceiled == floored
413.93 s
[really-safe-money-gen] then
413.93 s
[really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
413.93 s
[really-safe-money-gen] + if False
413.93 s
[really-safe-money-gen] then Nothing
413.93 s
[really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
413.93 s
[really-safe-money-gen] else Nothing
413.93 s
[really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:339:22-39
413.93 s
[really-safe-money-gen] @@ -336,7 +336,7 @@
413.93 s
[really-safe-money-gen] ceiled = (ceiling :: Double -> Natural) resultDouble
413.93 s
[really-safe-money-gen] floored :: Natural
413.93 s
[really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
413.93 s
[really-safe-money-gen] - in if ceiled == floored
413.93 s
[really-safe-money-gen] + in if not ceiled == floored
413.93 s
[really-safe-money-gen] then
413.93 s
[really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
413.93 s
[really-safe-money-gen] then Nothing
413.93 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:495:10-23
413.93 s
[really-safe-money-gen] @@ -492,7 +492,7 @@
413.93 s
[really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
413.93 s
[really-safe-money-gen] r :: Integer
413.93 s
[really-safe-money-gen] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
413.93 s
[really-safe-money-gen] - in if r > maxBoundI
413.93 s
[really-safe-money-gen] + in if True
413.93 s
[really-safe-money-gen] then Nothing
413.93 s
[really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
413.93 s
[really-safe-money-gen]
413.93 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:495:10-23
413.93 s
[really-safe-money-gen] @@ -492,7 +492,7 @@
413.93 s
[really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
413.93 s
[really-safe-money-gen] r :: Integer
413.93 s
[really-safe-money-gen] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
413.94 s
[really-safe-money-gen] - in if r > maxBoundI
413.94 s
[really-safe-money-gen] + in if False
415.28 s
[really-safe-money-gen] then Nothing
415.38 s
[really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
415.38 s
[really-safe-money-gen]
415.38 s
[really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:495:10-23
415.38 s
[really-safe-money-gen] @@ -492,7 +492,7 @@
415.38 s
[really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
415.38 s
[really-safe-money-gen] r :: Integer
415.38 s
[really-safe-money-gen] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
415.38 s
[really-safe-money-gen] - in if r > maxBoundI
415.38 s
[really-safe-money-gen] + in if not r > maxBoundI
415.38 s
[really-safe-money-gen] then Nothing
415.38 s
[really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
415.38 s
[really-safe-money-gen]
415.38 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:250:15-16
415.38 s
[really-safe-money-gen] @@ -247,7 +247,7 @@
415.38 s
[really-safe-money-gen] -- >>> zero
415.38 s
[really-safe-money-gen] -- Amount 0
415.38 s
[really-safe-money-gen] zero :: Amount
415.38 s
[really-safe-money-gen] -zero = Amount 0
415.38 s
[really-safe-money-gen] +zero = Amount 1
415.38 s
[really-safe-money-gen]
415.38 s
[really-safe-money-gen] -- | Turn an amount into a number of minimal quantisations.
415.38 s
[really-safe-money-gen] --
415.38 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:661:30-31
415.38 s
[really-safe-money-gen] @@ -658,7 +658,7 @@
415.38 s
[really-safe-money-gen] -- | The amount and the real rate that was used, considering the 'Rounding'
415.38 s
[really-safe-money-gen] (Maybe Amount, Ratio Natural)
415.38 s
[really-safe-money-gen] fraction _ (Amount 0) f = (Just zero, f)
415.38 s
[really-safe-money-gen] -fraction _ _ 0 = (Just zero, 0)
415.38 s
[really-safe-money-gen] +fraction _ _ 0 = (Just zero, 1)
415.38 s
[really-safe-money-gen] fraction r (Amount a) f =
415.38 s
[really-safe-money-gen] let amountAsRatio :: Ratio Natural
415.38 s
[really-safe-money-gen] amountAsRatio = (fromIntegral :: Word64 -> Ratio Natural) a
415.38 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/Amount.hs:668:17-30
415.38 s
[really-safe-money-gen] @@ -665,10 +665,9 @@
415.38 s
[really-safe-money-gen] theoreticalResult :: Ratio Natural
415.38 s
[really-safe-money-gen] theoreticalResult = amountAsRatio * f
415.38 s
[really-safe-money-gen] rounder :: Ratio Natural -> Natural
415.38 s
[really-safe-money-gen] rounder = case r of
415.38 s
[really-safe-money-gen] - RoundUp -> ceiling
415.38 s
[really-safe-money-gen] RoundDown -> floor
415.38 s
[really-safe-money-gen] RoundNearest -> round
415.39 s
[really-safe-money-gen] roundedResult :: Natural
415.39 s
[really-safe-money-gen] roundedResult = rounder theoreticalResult
415.39 s
[really-safe-money-gen] actualRate :: Ratio Natural
415.39 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/Amount.hs:668:17-30
415.39 s
[really-safe-money-gen] @@ -665,10 +665,9 @@
415.39 s
[really-safe-money-gen] theoreticalResult :: Ratio Natural
415.39 s
[really-safe-money-gen] theoreticalResult = amountAsRatio * f
415.39 s
[really-safe-money-gen] rounder :: Ratio Natural -> Natural
415.39 s
[really-safe-money-gen] rounder = case r of
415.39 s
[really-safe-money-gen] RoundUp -> ceiling
415.39 s
[really-safe-money-gen] - RoundDown -> floor
415.39 s
[really-safe-money-gen] RoundNearest -> round
415.39 s
[really-safe-money-gen] roundedResult :: Natural
415.39 s
[really-safe-money-gen] roundedResult = rounder theoreticalResult
415.39 s
[really-safe-money-gen] actualRate :: Ratio Natural
415.39 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:681:12-37
415.39 s
[really-safe-money-gen] @@ -678,7 +678,7 @@
415.39 s
[really-safe-money-gen] maxBoundN :: Natural
415.39 s
[really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
415.39 s
[really-safe-money-gen] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
415.39 s
[really-safe-money-gen] - in ( if roundedResult > maxBoundN
415.39 s
[really-safe-money-gen] + in ( if False
415.39 s
[really-safe-money-gen] then Nothing
415.39 s
[really-safe-money-gen] else Just result,
415.39 s
[really-safe-money-gen] actualRate
415.39 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/Amount.hs:668:17-30
415.39 s
[really-safe-money-gen] @@ -665,10 +665,9 @@
415.39 s
[really-safe-money-gen] theoreticalResult :: Ratio Natural
415.39 s
[really-safe-money-gen] theoreticalResult = amountAsRatio * f
415.39 s
[really-safe-money-gen] rounder :: Ratio Natural -> Natural
415.39 s
[really-safe-money-gen] rounder = case r of
415.39 s
[really-safe-money-gen] RoundUp -> ceiling
415.39 s
[really-safe-money-gen] RoundDown -> floor
415.39 s
[really-safe-money-gen] - RoundNearest -> round
415.39 s
[really-safe-money-gen] roundedResult :: Natural
415.39 s
[really-safe-money-gen] roundedResult = rounder theoreticalResult
415.39 s
[really-safe-money-gen] actualRate :: Ratio Natural
415.39 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:681:12-37
415.39 s
[really-safe-money-gen] @@ -678,7 +678,7 @@
415.39 s
[really-safe-money-gen] maxBoundN :: Natural
415.39 s
[really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
415.39 s
[really-safe-money-gen] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
415.39 s
[really-safe-money-gen] - in ( if roundedResult > maxBoundN
415.39 s
[really-safe-money-gen] + in ( if True
415.39 s
[really-safe-money-gen] then Nothing
415.39 s
[really-safe-money-gen] else Just result,
415.39 s
[really-safe-money-gen] actualRate
415.39 s
[really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:681:12-37
415.39 s
[really-safe-money-gen] @@ -678,7 +678,7 @@
415.39 s
[really-safe-money-gen] maxBoundN :: Natural
415.39 s
[really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
415.39 s
[really-safe-money-gen] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
415.39 s
[really-safe-money-gen] - in ( if roundedResult > maxBoundN
415.39 s
[really-safe-money-gen] + in ( if not roundedResult > maxBoundN
415.39 s
[really-safe-money-gen] then Nothing
415.39 s
[really-safe-money-gen] else Just result,
415.39 s
[really-safe-money-gen] actualRate
415.39 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:806:79-92
415.39 s
[really-safe-money-gen] @@ -803,4 +803,4 @@
415.39 s
[really-safe-money-gen]
415.39 s
[really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
415.39 s
[really-safe-money-gen] validateStrictlyPositive :: Amount -> Validation
415.39 s
[really-safe-money-gen] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
415.39 s
[really-safe-money-gen] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ True
415.39 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:806:79-92
415.39 s
[really-safe-money-gen] @@ -803,4 +803,4 @@
415.39 s
[really-safe-money-gen]
415.39 s
[really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
415.39 s
[really-safe-money-gen] validateStrictlyPositive :: Amount -> Validation
415.39 s
[really-safe-money-gen] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
415.39 s
[really-safe-money-gen] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ False
415.39 s
[really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:806:79-92
415.39 s
[really-safe-money-gen] @@ -803,4 +803,4 @@
415.39 s
[really-safe-money-gen]
415.39 s
[really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
415.39 s
[really-safe-money-gen] validateStrictlyPositive :: Amount -> Validation
415.39 s
[really-safe-money-gen] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
415.39 s
[really-safe-money-gen] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ not amount > zero
415.39 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:290:79-80
415.39 s
[really-safe-money-gen] @@ -287,7 +287,7 @@
415.39 s
[really-safe-money-gen] -- >>> toRatio (QuantisationFactor 100) (Amount 1)
415.39 s
[really-safe-money-gen] -- 1 % 100
415.39 s
[really-safe-money-gen] toRatio :: QuantisationFactor -> Amount -> Ratio Natural
415.39 s
[really-safe-money-gen] -toRatio (QuantisationFactor 0) a = fromIntegral (toMinimalQuantisations a) :% 0
415.39 s
[really-safe-money-gen] +toRatio (QuantisationFactor 0) a = fromIntegral (toMinimalQuantisations a) :% 1
415.39 s
[really-safe-money-gen] toRatio (QuantisationFactor quantisationFactor) a =
415.39 s
[really-safe-money-gen] (fromIntegral :: Word64 -> Natural) (toMinimalQuantisations a)
415.39 s
[really-safe-money-gen] % (fromIntegral :: Word32 -> Natural) quantisationFactor
415.39 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:607:15-22
415.39 s
[really-safe-money-gen] @@ -604,7 +604,7 @@
415.39 s
[really-safe-money-gen] case ad of
415.39 s
[really-safe-money-gen] DistributedIntoUnequalChunks _ a1 _ a2 ->
415.39 s
[really-safe-money-gen] declare "The larger chunks are larger" $
415.39 s
[really-safe-money-gen] - a1 > a2
415.39 s
[really-safe-money-gen] + True
415.39 s
[really-safe-money-gen] _ -> valid
415.39 s
[really-safe-money-gen] ]
415.39 s
[really-safe-money-gen]
415.39 s
[really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:494:96-97
415.39 s
[really-safe-money-gen] @@ -491,7 +491,7 @@
415.39 s
[really-safe-money-gen] let maxBoundI :: Integer
415.39 s
[really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
415.39 s
[really-safe-money-gen] r :: Integer
415.39 s
[really-safe-money-gen] - r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
415.39 s
[really-safe-money-gen] + r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 1 l
415.39 s
[really-safe-money-gen] in if r > maxBoundI
415.39 s
[really-safe-money-gen] then Nothing
415.39 s
[really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
415.39 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:607:15-22
415.39 s
[really-safe-money-gen] @@ -604,7 +604,7 @@
415.39 s
[really-safe-money-gen] case ad of
415.39 s
[really-safe-money-gen] DistributedIntoUnequalChunks _ a1 _ a2 ->
415.39 s
[really-safe-money-gen] declare "The larger chunks are larger" $
415.39 s
[really-safe-money-gen] - a1 > a2
415.39 s
[really-safe-money-gen] + False
415.39 s
[really-safe-money-gen] _ -> valid
415.39 s
[really-safe-money-gen] ]
415.39 s
[really-safe-money-gen]
415.39 s
[really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:607:15-22
415.39 s
[really-safe-money-gen] @@ -604,7 +604,7 @@
415.39 s
[really-safe-money-gen] case ad of
415.39 s
[really-safe-money-gen] DistributedIntoUnequalChunks _ a1 _ a2 ->
415.40 s
[really-safe-money-gen] declare "The larger chunks are larger" $
415.40 s
[really-safe-money-gen] - a1 > a2
415.40 s
[really-safe-money-gen] + not a1 > a2
415.40 s
[really-safe-money-gen] _ -> valid
415.40 s
[really-safe-money-gen] ]
415.40 s
[really-safe-money-gen]
415.40 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/Amount.hs:604:9-21
415.40 s
[really-safe-money-gen] @@ -601,11 +601,8 @@
415.40 s
[really-safe-money-gen] validate ad =
415.40 s
[really-safe-money-gen] mconcat
415.40 s
[really-safe-money-gen] [ genericValidate ad,
415.40 s
[really-safe-money-gen] case ad of
415.40 s
[really-safe-money-gen] - DistributedIntoUnequalChunks _ a1 _ a2 ->
415.40 s
[really-safe-money-gen] - declare "The larger chunks are larger" $
415.40 s
[really-safe-money-gen] - a1 > a2
415.40 s
[really-safe-money-gen] _ -> valid
415.40 s
[really-safe-money-gen] ]
415.40 s
[really-safe-money-gen]
415.40 s
[really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
415.40 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/Amount.hs:604:9-21
415.40 s
[really-safe-money-gen] @@ -601,11 +601,10 @@
415.40 s
[really-safe-money-gen] validate ad =
415.40 s
[really-safe-money-gen] mconcat
415.40 s
[really-safe-money-gen] [ genericValidate ad,
415.40 s
[really-safe-money-gen] case ad of
415.40 s
[really-safe-money-gen] DistributedIntoUnequalChunks _ a1 _ a2 ->
415.40 s
[really-safe-money-gen] declare "The larger chunks are larger" $
415.40 s
[really-safe-money-gen] a1 > a2
415.40 s
[really-safe-money-gen] - _ -> valid
415.40 s
[really-safe-money-gen] ]
415.40 s
[really-safe-money-gen]
415.40 s
[really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
415.40 s
[really-safe-money-gen] Testing mutation ListLit at src/Money/Amount.hs:603:7-8
415.40 s
[really-safe-money-gen] @@ -600,13 +600,7 @@
415.40 s
[really-safe-money-gen] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
415.40 s
[really-safe-money-gen] validate ad =
415.40 s
[really-safe-money-gen] mconcat
415.40 s
[really-safe-money-gen] - [ genericValidate ad,
415.40 s
[really-safe-money-gen] - case ad of
415.40 s
[really-safe-money-gen] - DistributedIntoUnequalChunks _ a1 _ a2 ->
415.40 s
[really-safe-money-gen] - declare "The larger chunks are larger" $
417.15 s
[really-safe-money-gen] - a1 > a2
417.15 s
[really-safe-money-gen] - _ -> valid
417.15 s
[really-safe-money-gen] ]
417.15 s
[really-safe-money-gen]
417.15 s
[really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
417.15 s
[really-safe-money-gen]
417.15 s
[really-safe-money-gen] Testing mutation ListLit at src/Money/Amount.hs:603:7-8
417.15 s
[really-safe-money-gen] @@ -600,13 +600,12 @@
417.15 s
[really-safe-money-gen] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
417.15 s
[really-safe-money-gen] validate ad =
417.15 s
[really-safe-money-gen] mconcat
417.15 s
[really-safe-money-gen] - [ genericValidate ad,
417.15 s
[really-safe-money-gen] case ad of
417.15 s
[really-safe-money-gen] DistributedIntoUnequalChunks _ a1 _ a2 ->
417.15 s
[really-safe-money-gen] declare "The larger chunks are larger" $
417.15 s
[really-safe-money-gen] a1 > a2
417.15 s
[really-safe-money-gen] _ -> valid
417.16 s
[really-safe-money-gen] ]
417.16 s
[really-safe-money-gen]
417.16 s
[really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
417.16 s
[really-safe-money-gen]
417.16 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:159:25-38
417.16 s
[really-safe-money-gen] @@ -156,10 +156,9 @@
417.16 s
[really-safe-money-gen] fmap
417.16 s
[really-safe-money-gen] ( ( \theoreticalResult ->
417.16 s
[really-safe-money-gen] let rounder :: Ratio Natural -> Natural
417.16 s
[really-safe-money-gen] rounder = case r of
417.16 s
[really-safe-money-gen] - RoundUp -> ceiling
417.16 s
[really-safe-money-gen] RoundDown -> floor
417.16 s
[really-safe-money-gen] RoundNearest -> round
417.16 s
[really-safe-money-gen] roundedResult :: Natural
417.16 s
[really-safe-money-gen] roundedResult = rounder theoreticalResult
417.16 s
[really-safe-money-gen] maxBoundN :: Natural
417.16 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:159:25-38
417.16 s
[really-safe-money-gen] @@ -156,10 +156,9 @@
417.16 s
[really-safe-money-gen] fmap
417.16 s
[really-safe-money-gen] ( ( \theoreticalResult ->
417.16 s
[really-safe-money-gen] let rounder :: Ratio Natural -> Natural
417.16 s
[really-safe-money-gen] rounder = case r of
417.16 s
[really-safe-money-gen] RoundUp -> ceiling
417.16 s
[really-safe-money-gen] - RoundDown -> floor
417.16 s
[really-safe-money-gen] RoundNearest -> round
417.16 s
[really-safe-money-gen] roundedResult :: Natural
417.16 s
[really-safe-money-gen] roundedResult = rounder theoreticalResult
417.16 s
[really-safe-money-gen] maxBoundN :: Natural
417.16 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:159:25-38
417.16 s
[really-safe-money-gen] @@ -156,10 +156,9 @@
417.16 s
[really-safe-money-gen] fmap
417.16 s
[really-safe-money-gen] ( ( \theoreticalResult ->
417.16 s
[really-safe-money-gen] let rounder :: Ratio Natural -> Natural
417.16 s
[really-safe-money-gen] rounder = case r of
417.16 s
[really-safe-money-gen] RoundUp -> ceiling
417.16 s
[really-safe-money-gen] RoundDown -> floor
417.16 s
[really-safe-money-gen] - RoundNearest -> round
417.16 s
[really-safe-money-gen] roundedResult :: Natural
417.16 s
[really-safe-money-gen] roundedResult = rounder theoreticalResult
417.16 s
[really-safe-money-gen] maxBoundN :: Natural
417.16 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:168:20-45
417.16 s
[really-safe-money-gen] @@ -165,7 +165,7 @@
417.16 s
[really-safe-money-gen] maxBoundN :: Natural
417.16 s
[really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
417.16 s
[really-safe-money-gen] actualResult =
417.16 s
[really-safe-money-gen] - if roundedResult > maxBoundN
417.16 s
[really-safe-money-gen] + if True
417.16 s
[really-safe-money-gen] then Nothing
417.16 s
[really-safe-money-gen] else Just (fromIntegral roundedResult)
417.16 s
[really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
417.16 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:168:20-45
417.16 s
[really-safe-money-gen] @@ -165,7 +165,7 @@
417.16 s
[really-safe-money-gen] maxBoundN :: Natural
417.16 s
[really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
417.16 s
[really-safe-money-gen] actualResult =
417.16 s
[really-safe-money-gen] - if roundedResult > maxBoundN
417.16 s
[really-safe-money-gen] + if False
417.16 s
[really-safe-money-gen] then Nothing
417.16 s
[really-safe-money-gen] else Just (fromIntegral roundedResult)
417.16 s
[really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
417.16 s
[really-safe-money-gen] Testing mutation Negate at src/Money/MultiAmount.hs:168:20-45
417.16 s
[really-safe-money-gen] @@ -165,7 +165,7 @@
417.16 s
[really-safe-money-gen] maxBoundN :: Natural
417.16 s
[really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
417.16 s
[really-safe-money-gen] actualResult =
417.16 s
[really-safe-money-gen] - if roundedResult > maxBoundN
417.16 s
[really-safe-money-gen] + if not roundedResult > maxBoundN
417.16 s
[really-safe-money-gen] then Nothing
417.16 s
[really-safe-money-gen] else Just (fromIntegral roundedResult)
417.16 s
[really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
417.17 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:171:25-32
417.17 s
[really-safe-money-gen] @@ -168,10 +168,9 @@
417.17 s
[really-safe-money-gen] if roundedResult > maxBoundN
417.17 s
[really-safe-money-gen] then Nothing
417.17 s
[really-safe-money-gen] else Just (fromIntegral roundedResult)
417.17 s
[really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
417.17 s
[really-safe-money-gen] LT -> RoundedDown
417.17 s
[really-safe-money-gen] - EQ -> DidNotRound
417.17 s
[really-safe-money-gen] GT -> RoundedUp
417.17 s
[really-safe-money-gen] in (Amount.fromMinimalQuantisations <$> actualResult, rounded)
417.17 s
[really-safe-money-gen] )
417.17 s
[really-safe-money-gen] . Prelude.sum
417.17 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:171:25-32
417.17 s
[really-safe-money-gen] @@ -168,10 +168,9 @@
417.17 s
[really-safe-money-gen] if roundedResult > maxBoundN
417.17 s
[really-safe-money-gen] then Nothing
417.17 s
[really-safe-money-gen] else Just (fromIntegral roundedResult)
417.17 s
[really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
417.17 s
[really-safe-money-gen] - LT -> RoundedDown
417.17 s
[really-safe-money-gen] EQ -> DidNotRound
417.17 s
[really-safe-money-gen] GT -> RoundedUp
417.17 s
[really-safe-money-gen] in (Amount.fromMinimalQuantisations <$> actualResult, rounded)
417.17 s
[really-safe-money-gen] )
417.17 s
[really-safe-money-gen] . Prelude.sum
417.17 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:119:12-28
417.17 s
[really-safe-money-gen] @@ -116,7 +116,7 @@
417.17 s
[really-safe-money-gen] Just a -> do
417.17 s
[really-safe-money-gen] r <- Amount.subtract a amount
417.17 s
[really-safe-money-gen] Just $
417.17 s
[really-safe-money-gen] - if r == Amount.zero
417.17 s
[really-safe-money-gen] + if True
417.17 s
[really-safe-money-gen] then M.delete currency m
417.17 s
[really-safe-money-gen] else M.insert currency r m
417.17 s
[really-safe-money-gen]
417.17 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:171:25-32
417.17 s
[really-safe-money-gen] @@ -168,10 +168,9 @@
417.17 s
[really-safe-money-gen] if roundedResult > maxBoundN
417.17 s
[really-safe-money-gen] then Nothing
417.17 s
[really-safe-money-gen] else Just (fromIntegral roundedResult)
417.17 s
[really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
417.17 s
[really-safe-money-gen] LT -> RoundedDown
417.17 s
[really-safe-money-gen] EQ -> DidNotRound
417.17 s
[really-safe-money-gen] - GT -> RoundedUp
417.17 s
[really-safe-money-gen] in (Amount.fromMinimalQuantisations <$> actualResult, rounded)
417.17 s
[really-safe-money-gen] )
417.17 s
[really-safe-money-gen] . Prelude.sum
417.17 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:119:12-28
417.17 s
[really-safe-money-gen] @@ -116,7 +116,7 @@
417.17 s
[really-safe-money-gen] Just a -> do
417.17 s
[really-safe-money-gen] r <- Amount.subtract a amount
417.17 s
[really-safe-money-gen] Just $
417.17 s
[really-safe-money-gen] - if r == Amount.zero
417.17 s
[really-safe-money-gen] + if False
417.17 s
[really-safe-money-gen] then M.delete currency m
417.17 s
[really-safe-money-gen] else M.insert currency r m
417.17 s
[really-safe-money-gen]
417.17 s
[really-safe-money-gen] Testing mutation Negate at src/Money/MultiAmount.hs:119:12-28
417.17 s
[really-safe-money-gen] @@ -116,7 +116,7 @@
417.17 s
[really-safe-money-gen] Just a -> do
417.17 s
[really-safe-money-gen] r <- Amount.subtract a amount
417.17 s
[really-safe-money-gen] Just $
417.17 s
[really-safe-money-gen] - if r == Amount.zero
417.17 s
[really-safe-money-gen] + if not r == Amount.zero
417.17 s
[really-safe-money-gen] then M.delete currency m
417.17 s
[really-safe-money-gen] else M.insert currency r m
417.17 s
[really-safe-money-gen]
417.17 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:114:22-37
417.17 s
[really-safe-money-gen] @@ -111,14 +111,13 @@
417.17 s
[really-safe-money-gen] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
417.17 s
[really-safe-money-gen] subtractAmount m _ (Amount 0) = Just m
417.17 s
[really-safe-money-gen] subtractAmount (MultiAmount m) currency amount =
417.18 s
[really-safe-money-gen] fmap MultiAmount $ case M.lookup currency m of
417.18 s
[really-safe-money-gen] - Nothing -> Nothing -- Can't go below zero
417.18 s
[really-safe-money-gen] Just a -> do
417.18 s
[really-safe-money-gen] r <- Amount.subtract a amount
417.18 s
[really-safe-money-gen] Just $
417.18 s
[really-safe-money-gen] if r == Amount.zero
417.18 s
[really-safe-money-gen] then M.delete currency m
417.18 s
[really-safe-money-gen] else M.insert currency r m
417.18 s
[really-safe-money-gen]
417.18 s
[really-safe-money-gen] -- | Try to convert every amount to one currency.
417.18 s
[really-safe-money-gen] --
417.18 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:114:22-37
417.18 s
[really-safe-money-gen] @@ -111,14 +111,8 @@
417.18 s
[really-safe-money-gen] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
417.18 s
[really-safe-money-gen] subtractAmount m _ (Amount 0) = Just m
417.18 s
[really-safe-money-gen] subtractAmount (MultiAmount m) currency amount =
417.18 s
[really-safe-money-gen] fmap MultiAmount $ case M.lookup currency m of
417.18 s
[really-safe-money-gen] Nothing -> Nothing -- Can't go below zero
417.18 s
[really-safe-money-gen] - Just a -> do
417.18 s
[really-safe-money-gen] - r <- Amount.subtract a amount
417.18 s
[really-safe-money-gen] - Just $
417.18 s
[really-safe-money-gen] - if r == Amount.zero
417.18 s
[really-safe-money-gen] - then M.delete currency m
417.18 s
[really-safe-money-gen] - else M.insert currency r m
417.18 s
[really-safe-money-gen]
417.18 s
[really-safe-money-gen] -- | Try to convert every amount to one currency.
417.18 s
[really-safe-money-gen] --
417.18 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:106:12-28
417.18 s
[really-safe-money-gen] @@ -103,7 +103,7 @@
417.18 s
[really-safe-money-gen] Just a -> do
417.18 s
[really-safe-money-gen] r <- Amount.add a amount
417.18 s
[really-safe-money-gen] Just $
417.18 s
[really-safe-money-gen] - if r == Amount.zero
417.18 s
[really-safe-money-gen] + if True
417.18 s
[really-safe-money-gen] then M.delete currency m
417.18 s
[really-safe-money-gen] else M.insert currency r m
417.18 s
[really-safe-money-gen]
417.18 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:106:12-28
417.18 s
[really-safe-money-gen] @@ -103,7 +103,7 @@
417.18 s
[really-safe-money-gen] Just a -> do
417.18 s
[really-safe-money-gen] r <- Amount.add a amount
417.18 s
[really-safe-money-gen] Just $
417.18 s
[really-safe-money-gen] - if r == Amount.zero
417.18 s
[really-safe-money-gen] + if False
417.18 s
[really-safe-money-gen] then M.delete currency m
417.18 s
[really-safe-money-gen] else M.insert currency r m
417.18 s
[really-safe-money-gen]
417.18 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:101:22-37
417.18 s
[really-safe-money-gen] @@ -98,14 +98,13 @@
417.18 s
[really-safe-money-gen] addAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
417.18 s
[really-safe-money-gen] addAmount m _ (Amount 0) = Just m
417.19 s
[really-safe-money-gen] addAmount (MultiAmount m) currency amount =
418.56 s
[really-safe-money-gen] fmap MultiAmount $ case M.lookup currency m of
418.56 s
[really-safe-money-gen] - Nothing -> Just $ M.insert currency amount m
418.56 s
[really-safe-money-gen] Just a -> do
418.56 s
[really-safe-money-gen] r <- Amount.add a amount
418.56 s
[really-safe-money-gen] Just $
418.56 s
[really-safe-money-gen] if r == Amount.zero
418.56 s
[really-safe-money-gen] then M.delete currency m
418.56 s
[really-safe-money-gen] else M.insert currency r m
418.56 s
[really-safe-money-gen]
418.56 s
[really-safe-money-gen] -- | Subtract an 'Amount' from a 'MultiAmount'
418.56 s
[really-safe-money-gen] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
418.56 s
[really-safe-money-gen] Testing mutation Negate at src/Money/MultiAmount.hs:106:12-28
418.56 s
[really-safe-money-gen] @@ -103,7 +103,7 @@
418.56 s
[really-safe-money-gen] Just a -> do
418.56 s
[really-safe-money-gen] r <- Amount.add a amount
418.56 s
[really-safe-money-gen] Just $
418.56 s
[really-safe-money-gen] - if r == Amount.zero
418.56 s
[really-safe-money-gen] + if not r == Amount.zero
418.56 s
[really-safe-money-gen] then M.delete currency m
418.56 s
[really-safe-money-gen] else M.insert currency r m
418.56 s
[really-safe-money-gen]
418.56 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:101:22-37
418.56 s
[really-safe-money-gen] @@ -98,14 +98,8 @@
418.56 s
[really-safe-money-gen] addAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
418.56 s
[really-safe-money-gen] addAmount m _ (Amount 0) = Just m
418.56 s
[really-safe-money-gen] addAmount (MultiAmount m) currency amount =
418.56 s
[really-safe-money-gen] fmap MultiAmount $ case M.lookup currency m of
418.56 s
[really-safe-money-gen] Nothing -> Just $ M.insert currency amount m
418.56 s
[really-safe-money-gen] - Just a -> do
418.56 s
[really-safe-money-gen] - r <- Amount.add a amount
418.56 s
[really-safe-money-gen] - Just $
418.56 s
[really-safe-money-gen] - if r == Amount.zero
418.56 s
[really-safe-money-gen] - then M.delete currency m
418.56 s
[really-safe-money-gen] - else M.insert currency r m
418.56 s
[really-safe-money-gen]
418.56 s
[really-safe-money-gen] -- | Subtract an 'Amount' from a 'MultiAmount'
418.56 s
[really-safe-money-gen] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
418.56 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:73:6-27
418.56 s
[really-safe-money-gen] @@ -70,7 +70,7 @@
418.57 s
[really-safe-money-gen]
418.57 s
[really-safe-money-gen] fromAmount :: currency -> Amount -> MultiAmount currency
418.57 s
[really-safe-money-gen] fromAmount currency amount =
418.57 s
[really-safe-money-gen] - if amount == Amount.zero
418.57 s
[really-safe-money-gen] + if True
418.57 s
[really-safe-money-gen] then zero
418.57 s
[really-safe-money-gen] else MultiAmount $ M.singleton currency amount
418.57 s
[really-safe-money-gen]
418.57 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:73:6-27
418.57 s
[really-safe-money-gen] @@ -70,7 +70,7 @@
418.57 s
[really-safe-money-gen]
418.57 s
[really-safe-money-gen] fromAmount :: currency -> Amount -> MultiAmount currency
418.57 s
[really-safe-money-gen] fromAmount currency amount =
418.57 s
[really-safe-money-gen] - if amount == Amount.zero
418.57 s
[really-safe-money-gen] + if False
418.57 s
[really-safe-money-gen] then zero
418.57 s
[really-safe-money-gen] else MultiAmount $ M.singleton currency amount
418.57 s
[really-safe-money-gen]
418.57 s
[really-safe-money-gen] Testing mutation Negate at src/Money/MultiAmount.hs:73:6-27
418.57 s
[really-safe-money-gen] @@ -70,7 +70,7 @@
418.57 s
[really-safe-money-gen]
418.57 s
[really-safe-money-gen] fromAmount :: currency -> Amount -> MultiAmount currency
418.57 s
[really-safe-money-gen] fromAmount currency amount =
418.57 s
[really-safe-money-gen] - if amount == Amount.zero
418.57 s
[really-safe-money-gen] + if not amount == Amount.zero
418.57 s
[really-safe-money-gen] then zero
418.57 s
[really-safe-money-gen] else MultiAmount $ M.singleton currency amount
418.57 s
[really-safe-money-gen]
418.57 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:66:13-29
418.57 s
[really-safe-money-gen] @@ -63,7 +63,7 @@
418.57 s
[really-safe-money-gen] [ genericValidate ma,
418.57 s
[really-safe-money-gen] decorateMap m $ \_ a ->
418.57 s
[really-safe-money-gen] declare "The amount is not zero" $
418.57 s
[really-safe-money-gen] - a /= Amount.zero
418.57 s
[really-safe-money-gen] + True
418.57 s
[really-safe-money-gen] ]
418.57 s
[really-safe-money-gen]
418.57 s
[really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
418.57 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:66:13-29
418.57 s
[really-safe-money-gen] @@ -63,7 +63,7 @@
418.57 s
[really-safe-money-gen] [ genericValidate ma,
418.57 s
[really-safe-money-gen] decorateMap m $ \_ a ->
418.57 s
[really-safe-money-gen] declare "The amount is not zero" $
418.57 s
[really-safe-money-gen] - a /= Amount.zero
418.57 s
[really-safe-money-gen] + False
418.57 s
[really-safe-money-gen] ]
418.57 s
[really-safe-money-gen]
418.57 s
[really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
418.57 s
[really-safe-money-gen] Testing mutation Negate at src/Money/MultiAmount.hs:66:13-29
418.57 s
[really-safe-money-gen] @@ -63,7 +63,7 @@
418.57 s
[really-safe-money-gen] [ genericValidate ma,
418.57 s
[really-safe-money-gen] decorateMap m $ \_ a ->
418.57 s
[really-safe-money-gen] declare "The amount is not zero" $
418.57 s
[really-safe-money-gen] - a /= Amount.zero
418.57 s
[really-safe-money-gen] + not a /= Amount.zero
418.57 s
[really-safe-money-gen] ]
418.57 s
[really-safe-money-gen]
418.57 s
[really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
418.57 s
[really-safe-money-gen] Testing mutation ListLit at src/Money/MultiAmount.hs:63:7-8
418.57 s
[really-safe-money-gen] @@ -60,11 +60,7 @@
418.57 s
[really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where
418.57 s
[really-safe-money-gen] validate ma@(MultiAmount m) =
418.57 s
[really-safe-money-gen] mconcat
418.57 s
[really-safe-money-gen] - [ genericValidate ma,
418.57 s
[really-safe-money-gen] - decorateMap m $ \_ a ->
418.57 s
[really-safe-money-gen] - declare "The amount is not zero" $
418.57 s
[really-safe-money-gen] - a /= Amount.zero
418.57 s
[really-safe-money-gen] ]
418.57 s
[really-safe-money-gen]
418.57 s
[really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
418.57 s
[really-safe-money-gen]
418.57 s
[really-safe-money-gen] Testing mutation ListLit at src/Money/MultiAmount.hs:63:7-8
418.57 s
[really-safe-money-gen] @@ -60,11 +60,10 @@
418.57 s
[really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where
418.57 s
[really-safe-money-gen] validate ma@(MultiAmount m) =
418.57 s
[really-safe-money-gen] mconcat
418.57 s
[really-safe-money-gen] - [ genericValidate ma,
418.57 s
[really-safe-money-gen] decorateMap m $ \_ a ->
418.57 s
[really-safe-money-gen] declare "The amount is not zero" $
418.57 s
[really-safe-money-gen] a /= Amount.zero
418.57 s
[really-safe-money-gen] ]
418.57 s
[really-safe-money-gen]
418.57 s
[really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
418.57 s
[really-safe-money-gen]
418.57 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
418.57 s
[really-safe-money-gen] @@ -212,11 +212,10 @@
418.57 s
[really-safe-money-gen]
418.57 s
[really-safe-money-gen] -- | See 'Amount.distribute'
418.57 s
[really-safe-money-gen] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
418.57 s
[really-safe-money-gen] distribute (AmountOf a) f = case Amount.distribute a f of
418.57 s
[really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
418.57 s
[really-safe-money-gen] DistributedZero -> DistributedZero
418.57 s
[really-safe-money-gen] DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
418.57 s
[really-safe-money-gen] DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
418.57 s
[really-safe-money-gen]
418.57 s
[really-safe-money-gen] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
418.58 s
[really-safe-money-gen]
418.58 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
418.58 s
[really-safe-money-gen] @@ -212,11 +212,10 @@
418.58 s
[really-safe-money-gen]
418.58 s
[really-safe-money-gen] -- | See 'Amount.distribute'
418.58 s
[really-safe-money-gen] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
418.58 s
[really-safe-money-gen] distribute (AmountOf a) f = case Amount.distribute a f of
418.58 s
[really-safe-money-gen] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
418.58 s
[really-safe-money-gen] - DistributedZero -> DistributedZero
418.58 s
[really-safe-money-gen] DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
418.58 s
[really-safe-money-gen] DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
418.58 s
[really-safe-money-gen]
418.58 s
[really-safe-money-gen] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
418.58 s
[really-safe-money-gen]
418.58 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
418.58 s
[really-safe-money-gen] @@ -212,11 +212,10 @@
418.58 s
[really-safe-money-gen]
418.58 s
[really-safe-money-gen] -- | See 'Amount.distribute'
418.58 s
[really-safe-money-gen] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
418.58 s
[really-safe-money-gen] distribute (AmountOf a) f = case Amount.distribute a f of
418.58 s
[really-safe-money-gen] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
418.58 s
[really-safe-money-gen] DistributedZero -> DistributedZero
418.58 s
[really-safe-money-gen] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
418.58 s
[really-safe-money-gen] DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
418.58 s
[really-safe-money-gen]
418.58 s
[really-safe-money-gen] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
418.58 s
[really-safe-money-gen]
418.58 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
418.58 s
[really-safe-money-gen] @@ -212,11 +212,10 @@
418.58 s
[really-safe-money-gen]
418.58 s
[really-safe-money-gen] -- | See 'Amount.distribute'
418.58 s
[really-safe-money-gen] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
418.58 s
[really-safe-money-gen] distribute (AmountOf a) f = case Amount.distribute a f of
418.58 s
[really-safe-money-gen] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
418.58 s
[really-safe-money-gen] DistributedZero -> DistributedZero
418.58 s
[really-safe-money-gen] DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
418.58 s
[really-safe-money-gen] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
418.58 s
[really-safe-money-gen]
418.58 s
[really-safe-money-gen] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
418.58 s
[really-safe-money-gen]
418.58 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:174:25-38
418.58 s
[really-safe-money-gen] @@ -171,10 +171,9 @@
418.58 s
[really-safe-money-gen] fmap
418.58 s
[really-safe-money-gen] ( ( \theoreticalResult ->
418.58 s
[really-safe-money-gen] let rounder :: Rational -> Integer
418.58 s
[really-safe-money-gen] rounder = case r of
418.58 s
[really-safe-money-gen] - RoundUp -> ceiling
418.58 s
[really-safe-money-gen] RoundDown -> floor
418.58 s
[really-safe-money-gen] RoundNearest -> round
418.58 s
[really-safe-money-gen] roundedResult :: Integer
418.58 s
[really-safe-money-gen] roundedResult = rounder theoreticalResult
418.58 s
[really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
418.58 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:174:25-38
418.58 s
[really-safe-money-gen] @@ -171,10 +171,9 @@
418.58 s
[really-safe-money-gen] fmap
418.58 s
[really-safe-money-gen] ( ( \theoreticalResult ->
418.58 s
[really-safe-money-gen] let rounder :: Rational -> Integer
418.58 s
[really-safe-money-gen] rounder = case r of
418.58 s
[really-safe-money-gen] RoundUp -> ceiling
418.58 s
[really-safe-money-gen] - RoundDown -> floor
418.58 s
[really-safe-money-gen] RoundNearest -> round
418.58 s
[really-safe-money-gen] roundedResult :: Integer
418.58 s
[really-safe-money-gen] roundedResult = rounder theoreticalResult
418.58 s
[really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
418.58 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:174:25-38
418.58 s
[really-safe-money-gen] @@ -171,10 +171,9 @@
418.58 s
[really-safe-money-gen] fmap
418.58 s
[really-safe-money-gen] ( ( \theoreticalResult ->
418.58 s
[really-safe-money-gen] let rounder :: Rational -> Integer
420.90 s
[really-safe-money-gen] rounder = case r of
420.90 s
[really-safe-money-gen] RoundUp -> ceiling
420.99 s
[really-safe-money-gen] RoundDown -> floor
420.99 s
[really-safe-money-gen] - RoundNearest -> round
420.99 s
[really-safe-money-gen] roundedResult :: Integer
420.99 s
[really-safe-money-gen] roundedResult = rounder theoreticalResult
420.99 s
[really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
420.99 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:180:25-32
420.99 s
[really-safe-money-gen] @@ -177,10 +177,9 @@
421.00 s
[really-safe-money-gen] RoundNearest -> round
421.00 s
[really-safe-money-gen] roundedResult :: Integer
421.00 s
[really-safe-money-gen] roundedResult = rounder theoreticalResult
421.00 s
[really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
421.00 s
[really-safe-money-gen] - LT -> RoundedDown
421.00 s
[really-safe-money-gen] EQ -> DidNotRound
421.00 s
[really-safe-money-gen] GT -> RoundedUp
421.00 s
[really-safe-money-gen] in (Account.fromMinimalQuantisations roundedResult, rounded)
421.00 s
[really-safe-money-gen] )
421.00 s
[really-safe-money-gen] . Prelude.sum
421.00 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:180:25-32
421.00 s
[really-safe-money-gen] @@ -177,10 +177,9 @@
421.00 s
[really-safe-money-gen] RoundNearest -> round
421.00 s
[really-safe-money-gen] roundedResult :: Integer
421.00 s
[really-safe-money-gen] roundedResult = rounder theoreticalResult
421.00 s
[really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
421.00 s
[really-safe-money-gen] LT -> RoundedDown
421.00 s
[really-safe-money-gen] EQ -> DidNotRound
421.00 s
[really-safe-money-gen] - GT -> RoundedUp
421.00 s
[really-safe-money-gen] in (Account.fromMinimalQuantisations roundedResult, rounded)
421.00 s
[really-safe-money-gen] )
421.00 s
[really-safe-money-gen] . Prelude.sum
421.00 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:134:12-29
421.00 s
[really-safe-money-gen] @@ -131,7 +131,7 @@
421.00 s
[really-safe-money-gen] Just a -> do
421.00 s
[really-safe-money-gen] r <- Account.subtract a account
421.00 s
[really-safe-money-gen] Just $
421.00 s
[really-safe-money-gen] - if r == Account.zero
421.00 s
[really-safe-money-gen] + if True
421.00 s
[really-safe-money-gen] then M.delete currency m
421.00 s
[really-safe-money-gen] else M.insert currency r m
421.00 s
[really-safe-money-gen]
421.00 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:134:12-29
421.00 s
[really-safe-money-gen] @@ -131,7 +131,7 @@
421.00 s
[really-safe-money-gen] Just a -> do
421.00 s
[really-safe-money-gen] r <- Account.subtract a account
421.00 s
[really-safe-money-gen] Just $
421.00 s
[really-safe-money-gen] - if r == Account.zero
421.00 s
[really-safe-money-gen] + if False
421.00 s
[really-safe-money-gen] then M.delete currency m
421.00 s
[really-safe-money-gen] else M.insert currency r m
421.00 s
[really-safe-money-gen]
421.00 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:129:23-37
421.00 s
[really-safe-money-gen] @@ -126,14 +126,13 @@
421.00 s
[really-safe-money-gen] subtractAccount m _ (Positive (Amount 0)) = Just m
421.00 s
[really-safe-money-gen] subtractAccount m _ (Negative (Amount 0)) = Just m
421.00 s
[really-safe-money-gen] subtractAccount (MultiAccount m) currency account =
421.00 s
[really-safe-money-gen] fmap MultiAccount $ case M.lookup currency m of
421.00 s
[really-safe-money-gen] - Nothing -> Just $ M.insert currency (Account.negate account) m
421.00 s
[really-safe-money-gen] Just a -> do
421.00 s
[really-safe-money-gen] r <- Account.subtract a account
421.00 s
[really-safe-money-gen] Just $
421.00 s
[really-safe-money-gen] if r == Account.zero
421.00 s
[really-safe-money-gen] then M.delete currency m
421.00 s
[really-safe-money-gen] else M.insert currency r m
421.00 s
[really-safe-money-gen]
421.00 s
[really-safe-money-gen] -- | Try to convert every account to one currency.
421.00 s
[really-safe-money-gen] --
421.00 s
[really-safe-money-gen] Testing mutation Negate at src/Money/MultiAccount.hs:134:12-29
421.01 s
[really-safe-money-gen] @@ -131,7 +131,7 @@
421.01 s
[really-safe-money-gen] Just a -> do
421.01 s
[really-safe-money-gen] r <- Account.subtract a account
421.01 s
[really-safe-money-gen] Just $
421.01 s
[really-safe-money-gen] - if r == Account.zero
421.01 s
[really-safe-money-gen] + if not r == Account.zero
421.01 s
[really-safe-money-gen] then M.delete currency m
421.01 s
[really-safe-money-gen] else M.insert currency r m
421.01 s
[really-safe-money-gen]
421.01 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:129:23-37
421.01 s
[really-safe-money-gen] @@ -126,14 +126,8 @@
421.01 s
[really-safe-money-gen] subtractAccount m _ (Positive (Amount 0)) = Just m
421.01 s
[really-safe-money-gen] subtractAccount m _ (Negative (Amount 0)) = Just m
421.01 s
[really-safe-money-gen] subtractAccount (MultiAccount m) currency account =
421.01 s
[really-safe-money-gen] fmap MultiAccount $ case M.lookup currency m of
421.01 s
[really-safe-money-gen] Nothing -> Just $ M.insert currency (Account.negate account) m
421.01 s
[really-safe-money-gen] - Just a -> do
421.01 s
[really-safe-money-gen] - r <- Account.subtract a account
421.01 s
[really-safe-money-gen] - Just $
421.01 s
[really-safe-money-gen] - if r == Account.zero
421.01 s
[really-safe-money-gen] - then M.delete currency m
421.01 s
[really-safe-money-gen] - else M.insert currency r m
421.01 s
[really-safe-money-gen]
421.01 s
[really-safe-money-gen] -- | Try to convert every account to one currency.
421.01 s
[really-safe-money-gen] --
421.01 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:120:12-29
421.01 s
[really-safe-money-gen] @@ -117,7 +117,7 @@
421.01 s
[really-safe-money-gen] Just a -> do
421.01 s
[really-safe-money-gen] r <- Account.add a account
421.01 s
[really-safe-money-gen] Just $
421.01 s
[really-safe-money-gen] - if r == Account.zero
421.01 s
[really-safe-money-gen] + if True
421.01 s
[really-safe-money-gen] then M.delete currency m
421.01 s
[really-safe-money-gen] else M.insert currency r m
421.01 s
[really-safe-money-gen]
421.01 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:120:12-29
421.01 s
[really-safe-money-gen] @@ -117,7 +117,7 @@
421.01 s
[really-safe-money-gen] Just a -> do
421.01 s
[really-safe-money-gen] r <- Account.add a account
421.01 s
[really-safe-money-gen] Just $
421.01 s
[really-safe-money-gen] - if r == Account.zero
421.01 s
[really-safe-money-gen] + if False
421.01 s
[really-safe-money-gen] then M.delete currency m
421.01 s
[really-safe-money-gen] else M.insert currency r m
421.01 s
[really-safe-money-gen]
421.01 s
[really-safe-money-gen] Testing mutation Negate at src/Money/MultiAccount.hs:120:12-29
421.01 s
[really-safe-money-gen] @@ -117,7 +117,7 @@
421.01 s
[really-safe-money-gen] Just a -> do
421.01 s
[really-safe-money-gen] r <- Account.add a account
421.01 s
[really-safe-money-gen] Just $
421.01 s
[really-safe-money-gen] - if r == Account.zero
421.01 s
[really-safe-money-gen] + if not r == Account.zero
421.01 s
[really-safe-money-gen] then M.delete currency m
421.01 s
[really-safe-money-gen] else M.insert currency r m
421.01 s
[really-safe-money-gen]
421.01 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:115:23-37
421.01 s
[really-safe-money-gen] @@ -112,14 +112,13 @@
421.01 s
[really-safe-money-gen] addAccount m _ (Positive (Amount 0)) = Just m
421.01 s
[really-safe-money-gen] addAccount m _ (Negative (Amount 0)) = Just m
421.01 s
[really-safe-money-gen] addAccount (MultiAccount m) currency account =
421.01 s
[really-safe-money-gen] fmap MultiAccount $ case M.lookup currency m of
421.01 s
[really-safe-money-gen] - Nothing -> Just $ M.insert currency account m
421.01 s
[really-safe-money-gen] Just a -> do
421.01 s
[really-safe-money-gen] r <- Account.add a account
421.01 s
[really-safe-money-gen] Just $
421.01 s
[really-safe-money-gen] if r == Account.zero
421.02 s
[really-safe-money-gen] then M.delete currency m
421.02 s
[really-safe-money-gen] else M.insert currency r m
421.02 s
[really-safe-money-gen]
421.02 s
[really-safe-money-gen] -- | Add an 'Account' to a 'MultiAccount'
421.02 s
[really-safe-money-gen] subtractAccount :: (Ord currency) => MultiAccount currency -> currency -> Account -> Maybe (MultiAccount currency)
421.02 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:115:23-37
421.02 s
[really-safe-money-gen] @@ -112,14 +112,8 @@
421.02 s
[really-safe-money-gen] addAccount m _ (Positive (Amount 0)) = Just m
421.02 s
[really-safe-money-gen] addAccount m _ (Negative (Amount 0)) = Just m
421.02 s
[really-safe-money-gen] addAccount (MultiAccount m) currency account =
421.02 s
[really-safe-money-gen] fmap MultiAccount $ case M.lookup currency m of
421.02 s
[really-safe-money-gen] Nothing -> Just $ M.insert currency account m
421.02 s
[really-safe-money-gen] - Just a -> do
421.02 s
[really-safe-money-gen] - r <- Account.add a account
421.02 s
[really-safe-money-gen] - Just $
421.02 s
[really-safe-money-gen] - if r == Account.zero
421.02 s
[really-safe-money-gen] - then M.delete currency m
421.02 s
[really-safe-money-gen] - else M.insert currency r m
421.02 s
[really-safe-money-gen]
421.02 s
[really-safe-money-gen] -- | Add an 'Account' to a 'MultiAccount'
421.02 s
[really-safe-money-gen] subtractAccount :: (Ord currency) => MultiAccount currency -> currency -> Account -> Maybe (MultiAccount currency)
421.02 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:78:6-28
421.02 s
[really-safe-money-gen] @@ -75,7 +75,7 @@
421.02 s
[really-safe-money-gen]
421.02 s
[really-safe-money-gen] fromAccount :: currency -> Account -> MultiAccount currency
421.02 s
[really-safe-money-gen] fromAccount currency amount =
421.02 s
[really-safe-money-gen] - if amount == Account.zero
421.02 s
[really-safe-money-gen] + if True
421.02 s
[really-safe-money-gen] then zero
421.02 s
[really-safe-money-gen] else MultiAccount $ M.singleton currency amount
421.02 s
[really-safe-money-gen]
421.02 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:78:6-28
421.02 s
[really-safe-money-gen] @@ -75,7 +75,7 @@
421.02 s
[really-safe-money-gen]
421.02 s
[really-safe-money-gen] fromAccount :: currency -> Account -> MultiAccount currency
421.02 s
[really-safe-money-gen] fromAccount currency amount =
421.02 s
[really-safe-money-gen] - if amount == Account.zero
421.02 s
[really-safe-money-gen] + if False
421.02 s
[really-safe-money-gen] then zero
421.02 s
[really-safe-money-gen] else MultiAccount $ M.singleton currency amount
421.02 s
[really-safe-money-gen]
421.02 s
[really-safe-money-gen] Testing mutation Negate at src/Money/MultiAccount.hs:78:6-28
421.02 s
[really-safe-money-gen] @@ -75,7 +75,7 @@
421.02 s
[really-safe-money-gen]
421.02 s
[really-safe-money-gen] fromAccount :: currency -> Account -> MultiAccount currency
421.02 s
[really-safe-money-gen] fromAccount currency amount =
421.02 s
[really-safe-money-gen] - if amount == Account.zero
421.02 s
[really-safe-money-gen] + if not amount == Account.zero
421.02 s
[really-safe-money-gen] then zero
421.02 s
[really-safe-money-gen] else MultiAccount $ M.singleton currency amount
421.02 s
[really-safe-money-gen]
421.02 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:69:13-30
421.02 s
[really-safe-money-gen] @@ -66,7 +66,7 @@
421.02 s
[really-safe-money-gen] [ genericValidate ma,
421.02 s
[really-safe-money-gen] decorateMap m $ \_ a ->
421.02 s
[really-safe-money-gen] declare "The account is not zero" $
421.02 s
[really-safe-money-gen] - a /= Account.zero
421.02 s
[really-safe-money-gen] + True
421.02 s
[really-safe-money-gen] ]
421.02 s
[really-safe-money-gen]
421.02 s
[really-safe-money-gen] -- TODO no empty currencies
421.02 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:69:13-30
421.02 s
[really-safe-money-gen] @@ -66,7 +66,7 @@
421.02 s
[really-safe-money-gen] [ genericValidate ma,
421.02 s
[really-safe-money-gen] decorateMap m $ \_ a ->
421.02 s
[really-safe-money-gen] declare "The account is not zero" $
421.02 s
[really-safe-money-gen] - a /= Account.zero
421.02 s
[really-safe-money-gen] + False
421.02 s
[really-safe-money-gen] ]
421.02 s
[really-safe-money-gen]
421.02 s
[really-safe-money-gen] -- TODO no empty currencies
421.02 s
[really-safe-money-gen] Testing mutation Negate at src/Money/MultiAccount.hs:69:13-30
421.02 s
[really-safe-money-gen] @@ -66,7 +66,7 @@
421.02 s
[really-safe-money-gen] [ genericValidate ma,
421.02 s
[really-safe-money-gen] decorateMap m $ \_ a ->
421.02 s
[really-safe-money-gen] declare "The account is not zero" $
421.02 s
[really-safe-money-gen] - a /= Account.zero
421.02 s
[really-safe-money-gen] + not a /= Account.zero
421.02 s
[really-safe-money-gen] ]
421.02 s
[really-safe-money-gen]
421.02 s
[really-safe-money-gen] -- TODO no empty currencies
421.02 s
[really-safe-money-gen] Testing mutation ListLit at src/Money/MultiAccount.hs:66:7-8
421.02 s
[really-safe-money-gen] @@ -63,11 +63,7 @@
421.02 s
[really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where
421.02 s
[really-safe-money-gen] validate ma@(MultiAccount m) =
421.02 s
[really-safe-money-gen] mconcat
421.02 s
[really-safe-money-gen] - [ genericValidate ma,
421.02 s
[really-safe-money-gen] - decorateMap m $ \_ a ->
421.02 s
[really-safe-money-gen] - declare "The account is not zero" $
421.02 s
[really-safe-money-gen] - a /= Account.zero
421.09 s
[really-safe-money-gen] ]
421.09 s
[really-safe-money-gen]
421.09 s
[really-safe-money-gen] -- TODO no empty currencies
421.09 s
[really-safe-money-gen]
421.09 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/QuantisationFactor/Codec.hs:41:11-26
421.09 s
[really-safe-money-gen] @@ -38,6 +38,5 @@
421.09 s
[really-safe-money-gen] codec
421.09 s
[really-safe-money-gen] <?> "QuantisationFactor"
421.09 s
[really-safe-money-gen] where
421.09 s
[really-safe-money-gen] f w = case QuantisationFactor.fromWord32 w of
421.09 s
[really-safe-money-gen] - Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
421.09 s
[really-safe-money-gen] Just qf -> Right qf
421.09 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/QuantisationFactor/Codec.hs:41:11-26
421.09 s
[really-safe-money-gen] @@ -38,6 +38,5 @@
421.09 s
[really-safe-money-gen] codec
421.09 s
[really-safe-money-gen] <?> "QuantisationFactor"
421.09 s
[really-safe-money-gen] where
421.09 s
[really-safe-money-gen] f w = case QuantisationFactor.fromWord32 w of
421.09 s
[really-safe-money-gen] Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
421.09 s
[really-safe-money-gen] - Just qf -> Right qf
421.09 s
[really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:47:33-75
421.09 s
[really-safe-money-gen] @@ -44,7 +44,6 @@
421.09 s
[really-safe-money-gen] where
421.09 s
[really-safe-money-gen] f :: String -> Either String Amount
421.09 s
[really-safe-money-gen] f s = case readMaybe s of
421.09 s
[really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
421.09 s
[really-safe-money-gen] Just i ->
421.09 s
[really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
421.09 s
[really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
421.09 s
[really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:47:33-75
421.09 s
[really-safe-money-gen] @@ -44,7 +44,6 @@
421.09 s
[really-safe-money-gen] where
421.09 s
[really-safe-money-gen] f :: String -> Either String Amount
421.09 s
[really-safe-money-gen] f s = case readMaybe s of
421.09 s
[really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
421.09 s
[really-safe-money-gen] Just i ->
421.09 s
[really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
421.09 s
[really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
421.09 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount/Codec.hs:49:12-59
421.09 s
[really-safe-money-gen] @@ -46,7 +46,7 @@
421.09 s
[really-safe-money-gen] f s = case readMaybe s of
421.09 s
[really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
421.09 s
[really-safe-money-gen] Just i ->
421.09 s
[really-safe-money-gen] - if (i :: Integer) < toInteger (minBound :: Word64)
421.09 s
[really-safe-money-gen] + if False
421.09 s
[really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
421.09 s
[really-safe-money-gen] else
421.09 s
[really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
421.09 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount/Codec.hs:49:12-59
421.10 s
[really-safe-money-gen] @@ -46,7 +46,7 @@
421.10 s
[really-safe-money-gen] f s = case readMaybe s of
421.10 s
[really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
421.10 s
[really-safe-money-gen] Just i ->
421.10 s
[really-safe-money-gen] - if (i :: Integer) < toInteger (minBound :: Word64)
421.10 s
[really-safe-money-gen] + if True
421.10 s
[really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
421.10 s
[really-safe-money-gen] else
421.10 s
[really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
421.10 s
[really-safe-money-gen] Testing mutation Negate at src/Money/Amount/Codec.hs:49:12-59
421.10 s
[really-safe-money-gen] @@ -46,7 +46,7 @@
421.10 s
[really-safe-money-gen] f s = case readMaybe s of
421.10 s
[really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
421.10 s
[really-safe-money-gen] Just i ->
421.10 s
[really-safe-money-gen] - if (i :: Integer) < toInteger (minBound :: Word64)
421.10 s
[really-safe-money-gen] + if not (i :: Integer) < toInteger (minBound :: Word64)
421.10 s
[really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
421.10 s
[really-safe-money-gen] else
421.10 s
[really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
421.10 s
[really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:50:31-84
421.10 s
[really-safe-money-gen] @@ -47,7 +47,6 @@
421.10 s
[really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
421.10 s
[really-safe-money-gen] Just i ->
421.10 s
[really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
421.10 s
[really-safe-money-gen] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
421.10 s
[really-safe-money-gen] else
421.10 s
[really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
421.10 s
[really-safe-money-gen] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
421.10 s
[really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:50:31-84
421.10 s
[really-safe-money-gen] @@ -47,7 +47,6 @@
421.10 s
[really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
421.10 s
[really-safe-money-gen] Just i ->
421.10 s
[really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
421.10 s
[really-safe-money-gen] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
421.10 s
[really-safe-money-gen] else
421.10 s
[really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
421.10 s
[really-safe-money-gen] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
421.10 s
[really-safe-money-gen] Testing mutation ListLit at src/Money/MultiAccount.hs:66:7-8
421.10 s
[really-safe-money-gen] @@ -63,11 +63,10 @@
421.10 s
[really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where
421.10 s
[really-safe-money-gen] validate ma@(MultiAccount m) =
421.10 s
[really-safe-money-gen] mconcat
421.10 s
[really-safe-money-gen] - [ genericValidate ma,
421.10 s
[really-safe-money-gen] decorateMap m $ \_ a ->
421.10 s
[really-safe-money-gen] declare "The account is not zero" $
421.10 s
[really-safe-money-gen] a /= Account.zero
421.10 s
[really-safe-money-gen] ]
421.10 s
[really-safe-money-gen]
421.10 s
[really-safe-money-gen] -- TODO no empty currencies
421.10 s
[really-safe-money-gen]
421.10 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount/Codec.hs:52:16-63
421.10 s
[really-safe-money-gen] @@ -49,7 +49,7 @@
421.10 s
[really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
421.10 s
[really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
421.10 s
[really-safe-money-gen] else
421.10 s
[really-safe-money-gen] - if (i :: Integer) > toInteger (maxBound :: Word64)
421.10 s
[really-safe-money-gen] + if True
421.10 s
[really-safe-money-gen] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
421.10 s
[really-safe-money-gen] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
421.10 s
[really-safe-money-gen] g :: Amount -> String
421.10 s
[really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount/Codec.hs:52:16-63
421.10 s
[really-safe-money-gen] @@ -49,7 +49,7 @@
421.10 s
[really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
421.10 s
[really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
421.10 s
[really-safe-money-gen] else
421.10 s
[really-safe-money-gen] - if (i :: Integer) > toInteger (maxBound :: Word64)
421.10 s
[really-safe-money-gen] + if False
421.10 s
[really-safe-money-gen] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
421.10 s
[really-safe-money-gen] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
421.10 s
[really-safe-money-gen] g :: Amount -> String
421.10 s
[really-safe-money-gen] Testing mutation Negate at src/Money/Amount/Codec.hs:52:16-63
421.10 s
[really-safe-money-gen] @@ -49,7 +49,7 @@
421.10 s
[really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
421.10 s
[really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
421.10 s
[really-safe-money-gen] else
421.10 s
[really-safe-money-gen] - if (i :: Integer) > toInteger (maxBound :: Word64)
421.10 s
[really-safe-money-gen] + if not (i :: Integer) > toInteger (maxBound :: Word64)
421.10 s
[really-safe-money-gen] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
421.11 s
[really-safe-money-gen] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
421.11 s
[really-safe-money-gen] g :: Amount -> String
421.11 s
[really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:53:35-90
421.11 s
[really-safe-money-gen] @@ -50,7 +50,6 @@
421.11 s
[really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
421.11 s
[really-safe-money-gen] else
421.11 s
[really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
421.11 s
[really-safe-money-gen] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
421.11 s
[really-safe-money-gen] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
421.11 s
[really-safe-money-gen] g :: Amount -> String
421.11 s
[really-safe-money-gen] g = show . Amount.toMinimalQuantisations
421.11 s
[really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:53:35-90
421.11 s
[really-safe-money-gen] @@ -50,7 +50,6 @@
421.11 s
[really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
421.11 s
[really-safe-money-gen] else
421.11 s
[really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
421.11 s
[really-safe-money-gen] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
421.11 s
[really-safe-money-gen] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
421.11 s
[really-safe-money-gen] g :: Amount -> String
421.11 s
[really-safe-money-gen] g = show . Amount.toMinimalQuantisations
421.11 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/Amount/Codec.hs:46:11-86
421.11 s
[really-safe-money-gen] @@ -43,15 +43,8 @@
421.11 s
[really-safe-money-gen] codecViaString = bimapCodec f g stringCodec <?> "Amount"
421.11 s
[really-safe-money-gen] where
421.11 s
[really-safe-money-gen] f :: String -> Either String Amount
421.11 s
[really-safe-money-gen] f s = case readMaybe s of
421.11 s
[really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
421.11 s
[really-safe-money-gen] - Just i ->
421.11 s
[really-safe-money-gen] - if (i :: Integer) < toInteger (minBound :: Word64)
421.11 s
[really-safe-money-gen] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
421.11 s
[really-safe-money-gen] - else
421.11 s
[really-safe-money-gen] - if (i :: Integer) > toInteger (maxBound :: Word64)
421.11 s
[really-safe-money-gen] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
421.11 s
[really-safe-money-gen] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
421.11 s
[really-safe-money-gen] g :: Amount -> String
421.11 s
[really-safe-money-gen] g = show . Amount.toMinimalQuantisations
421.11 s
[really-safe-money-gen]
421.11 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/Amount/Codec.hs:46:11-86
421.11 s
[really-safe-money-gen] @@ -43,15 +43,14 @@
421.11 s
[really-safe-money-gen] codecViaString = bimapCodec f g stringCodec <?> "Amount"
421.11 s
[really-safe-money-gen] where
481.37 s
[really-safe-money-gen] f :: StKilled: 270
481.40 s
[really-safe-money-gen] Survived: 37
481.40 s
[really-safe-money-gen] Uncovered: 31
481.40 s
[really-safe-money-gen]
481.40 s
[really-safe-money-gen] Surviving mutations:
481.40 s
[really-safe-money-gen]
481.40 s
[really-safe-money-gen] ListLit at src/Money/MultiAccount.hs:66:7-8
481.40 s
[really-safe-money-gen] @@ -63,11 +63,10 @@
481.40 s
[really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where
481.40 s
[really-safe-money-gen] validate ma@(MultiAccount m) =
481.40 s
[really-safe-money-gen] mconcat
481.40 s
[really-safe-money-gen] - [ genericValidate ma,
481.40 s
[really-safe-money-gen] decorateMap m $ \_ a ->
481.40 s
[really-safe-money-gen] declare "The account is not zero" $
481.40 s
[really-safe-money-gen] a /= Account.zero
481.40 s
[really-safe-money-gen] ]
481.40 s
[really-safe-money-gen]
481.40 s
[really-safe-money-gen] -- TODO no empty currencies
481.40 s
[really-safe-money-gen]
481.40 s
[really-safe-money-gen]
481.40 s
[really-safe-money-gen] ListLit at src/Money/MultiAccount.hs:66:7-8
481.40 s
[really-safe-money-gen] @@ -63,11 +63,7 @@
481.40 s
[really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where
481.40 s
[really-safe-money-gen] validate ma@(MultiAccount m) =
481.40 s
[really-safe-money-gen] mconcat
481.40 s
[really-safe-money-gen] - [ genericValidate ma,
481.40 s
[really-safe-money-gen] - decorateMap m $ \_ a ->
481.40 s
[really-safe-money-gen] - declare "The account is not zero" $
481.40 s
[really-safe-money-gen] - a /= Account.zero
481.40 s
[really-safe-money-gen] ]
481.40 s
[really-safe-money-gen]
481.40 s
[really-safe-money-gen] -- TODO no empty currencies
481.40 s
[really-safe-money-gen]
481.40 s
[really-safe-money-gen]
481.40 s
[really-safe-money-gen] ConstBool at src/Money/MultiAccount.hs:69:13-30
481.40 s
[really-safe-money-gen] @@ -66,7 +66,7 @@
481.40 s
[really-safe-money-gen] [ genericValidate ma,
481.40 s
[really-safe-money-gen] decorateMap m $ \_ a ->
481.40 s
[really-safe-money-gen] declare "The account is not zero" $
481.40 s
[really-safe-money-gen] - a /= Account.zero
481.40 s
[really-safe-money-gen] + True
481.40 s
[really-safe-money-gen] ]
481.40 s
[really-safe-money-gen]
481.40 s
[really-safe-money-gen] -- TODO no empty currencies
481.40 s
[really-safe-money-gen]
481.40 s
[really-safe-money-gen] ConstBool at src/Money/MultiAccount.hs:78:6-28
481.40 s
[really-safe-money-gen] @@ -75,7 +75,7 @@
481.40 s
[really-safe-money-gen]
481.40 s
[really-safe-money-gen] fromAccount :: currency -> Account -> MultiAccount currency
481.40 s
[really-safe-money-gen] fromAccount currency amount =
481.40 s
[really-safe-money-gen] - if amount == Account.zero
481.40 s
[really-safe-money-gen] + if True
481.40 s
[really-safe-money-gen] then zero
481.40 s
[really-safe-money-gen] else MultiAccount $ M.singleton currency amount
481.40 s
[really-safe-money-gen]
481.40 s
[really-safe-money-gen]
481.40 s
[really-safe-money-gen] ListLit at src/Money/MultiAmount.hs:63:7-8
481.40 s
[really-safe-money-gen] @@ -60,11 +60,10 @@
481.40 s
[really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where
481.40 s
[really-safe-money-gen] validate ma@(MultiAmount m) =
481.40 s
[really-safe-money-gen] mconcat
481.40 s
[really-safe-money-gen] - [ genericValidate ma,
481.40 s
[really-safe-money-gen] decorateMap m $ \_ a ->
481.40 s
[really-safe-money-gen] declare "The amount is not zero" $
481.40 s
[really-safe-money-gen] a /= Amount.zero
481.40 s
[really-safe-money-gen] ]
481.40 s
[really-safe-money-gen]
481.40 s
[really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
481.40 s
[really-safe-money-gen]
481.40 s
[really-safe-money-gen]
481.40 s
[really-safe-money-gen] ListLit at src/Money/MultiAmount.hs:63:7-8
481.40 s
[really-safe-money-gen] @@ -60,11 +60,7 @@
481.40 s
[really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where
481.41 s
[really-safe-money-gen] validate ma@(MultiAmount m) =
481.41 s
[really-safe-money-gen] mconcat
481.41 s
[really-safe-money-gen] - [ genericValidate ma,
481.41 s
[really-safe-money-gen] - decorateMap m $ \_ a ->
481.41 s
[really-safe-money-gen] - declare "The amount is not zero" $
481.41 s
[really-safe-money-gen] - a /= Amount.zero
481.41 s
[really-safe-money-gen] ]
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen] ConstBool at src/Money/MultiAmount.hs:66:13-29
481.41 s
[really-safe-money-gen] @@ -63,7 +63,7 @@
481.41 s
[really-safe-money-gen] [ genericValidate ma,
481.41 s
[really-safe-money-gen] decorateMap m $ \_ a ->
481.41 s
[really-safe-money-gen] declare "The amount is not zero" $
481.41 s
[really-safe-money-gen] - a /= Amount.zero
481.41 s
[really-safe-money-gen] + True
481.41 s
[really-safe-money-gen] ]
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen] ConstBool at src/Money/MultiAmount.hs:106:12-28
481.41 s
[really-safe-money-gen] @@ -103,7 +103,7 @@
481.41 s
[really-safe-money-gen] Just a -> do
481.41 s
[really-safe-money-gen] r <- Amount.add a amount
481.41 s
[really-safe-money-gen] Just $
481.41 s
[really-safe-money-gen] - if r == Amount.zero
481.41 s
[really-safe-money-gen] + if False
481.41 s
[really-safe-money-gen] then M.delete currency m
481.41 s
[really-safe-money-gen] else M.insert currency r m
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen] Negate at src/Money/MultiAmount.hs:119:12-28
481.41 s
[really-safe-money-gen] @@ -116,7 +116,7 @@
481.41 s
[really-safe-money-gen] Just a -> do
481.41 s
[really-safe-money-gen] r <- Amount.subtract a amount
481.41 s
[really-safe-money-gen] Just $
481.41 s
[really-safe-money-gen] - if r == Amount.zero
481.41 s
[really-safe-money-gen] + if not r == Amount.zero
481.41 s
[really-safe-money-gen] then M.delete currency m
481.41 s
[really-safe-money-gen] else M.insert currency r m
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen] ConstBool at src/Money/MultiAmount.hs:119:12-28
481.41 s
[really-safe-money-gen] @@ -116,7 +116,7 @@
481.41 s
[really-safe-money-gen] Just a -> do
481.41 s
[really-safe-money-gen] r <- Amount.subtract a amount
481.41 s
[really-safe-money-gen] Just $
481.41 s
[really-safe-money-gen] - if r == Amount.zero
481.41 s
[really-safe-money-gen] + if False
481.41 s
[really-safe-money-gen] then M.delete currency m
481.41 s
[really-safe-money-gen] else M.insert currency r m
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen] ConstBool at src/Money/MultiAmount.hs:119:12-28
481.41 s
[really-safe-money-gen] @@ -116,7 +116,7 @@
481.41 s
[really-safe-money-gen] Just a -> do
481.41 s
[really-safe-money-gen] r <- Amount.subtract a amount
481.41 s
[really-safe-money-gen] Just $
481.41 s
[really-safe-money-gen] - if r == Amount.zero
481.41 s
[really-safe-money-gen] + if True
481.41 s
[really-safe-money-gen] then M.delete currency m
481.41 s
[really-safe-money-gen] else M.insert currency r m
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen] ListLit at src/Money/Amount.hs:603:7-8
481.41 s
[really-safe-money-gen] @@ -600,13 +600,12 @@
481.41 s
[really-safe-money-gen] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
481.41 s
[really-safe-money-gen] validate ad =
481.41 s
[really-safe-money-gen] mconcat
481.41 s
[really-safe-money-gen] - [ genericValidate ad,
481.41 s
[really-safe-money-gen] case ad of
481.41 s
[really-safe-money-gen] DistributedIntoUnequalChunks _ a1 _ a2 ->
481.41 s
[really-safe-money-gen] declare "The larger chunks are larger" $
481.41 s
[really-safe-money-gen] a1 > a2
481.41 s
[really-safe-money-gen] _ -> valid
481.41 s
[really-safe-money-gen] ]
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen] ListLit at src/Money/Amount.hs:603:7-8
481.41 s
[really-safe-money-gen] @@ -600,13 +600,7 @@
481.41 s
[really-safe-money-gen] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
481.41 s
[really-safe-money-gen] validate ad =
481.41 s
[really-safe-money-gen] mconcat
481.41 s
[really-safe-money-gen] - [ genericValidate ad,
481.41 s
[really-safe-money-gen] - case ad of
481.41 s
[really-safe-money-gen] - DistributedIntoUnequalChunks _ a1 _ a2 ->
481.41 s
[really-safe-money-gen] - declare "The larger chunks are larger" $
481.41 s
[really-safe-money-gen] - a1 > a2
481.41 s
[really-safe-money-gen] - _ -> valid
481.41 s
[really-safe-money-gen] ]
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen] RemoveCase at src/Money/Amount.hs:604:9-21
481.41 s
[really-safe-money-gen] @@ -601,11 +601,8 @@
481.41 s
[really-safe-money-gen] validate ad =
481.41 s
[really-safe-money-gen] mconcat
481.41 s
[really-safe-money-gen] [ genericValidate ad,
481.41 s
[really-safe-money-gen] case ad of
481.41 s
[really-safe-money-gen] - DistributedIntoUnequalChunks _ a1 _ a2 ->
481.41 s
[really-safe-money-gen] - declare "The larger chunks are larger" $
481.41 s
[really-safe-money-gen] - a1 > a2
481.41 s
[really-safe-money-gen] _ -> valid
481.41 s
[really-safe-money-gen] ]
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen] ConstBool at src/Money/Amount.hs:607:15-22
481.41 s
[really-safe-money-gen] @@ -604,7 +604,7 @@
481.41 s
[really-safe-money-gen] case ad of
481.41 s
[really-safe-money-gen] DistributedIntoUnequalChunks _ a1 _ a2 ->
481.41 s
[really-safe-money-gen] declare "The larger chunks are larger" $
481.41 s
[really-safe-money-gen] - a1 > a2
481.41 s
[really-safe-money-gen] + True
481.41 s
[really-safe-money-gen] _ -> valid
481.41 s
[really-safe-money-gen] ]
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen] ConstBool at src/Money/Amount.hs:332:14-40
481.41 s
[really-safe-money-gen] @@ -329,7 +329,7 @@
481.41 s
[really-safe-money-gen] | otherwise =
481.41 s
[really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
481.41 s
[really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
481.41 s
[really-safe-money-gen] - if exponent resultDouble > 65
481.41 s
[really-safe-money-gen] + if False
481.41 s
[really-safe-money-gen] then Nothing
481.41 s
[really-safe-money-gen] else
481.41 s
[really-safe-money-gen] let ceiled :: Natural
481.41 s
[really-safe-money-gen]
481.41 s
[really-safe-money-gen] ConstBool at src/Money/Amount.hs:518:10-15
481.41 s
[really-safe-money-gen] @@ -515,7 +515,7 @@
481.41 s
[really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
481.41 s
[really-safe-money-gen] r :: Integer
481.42 s
[really-safe-money-gen] r = i1 - i2
481.42 s
[really-safe-money-gen] - in if r < 0
481.42 s
[really-safe-money-gen] + in if True
481.42 s
[really-safe-money-gen] then Nothing
481.42 s
[really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen] IntLit at src/Money/Amount.hs:518:14-15
481.42 s
[really-safe-money-gen] @@ -515,7 +515,7 @@
481.42 s
[really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
481.42 s
[really-safe-money-gen] r :: Integer
481.42 s
[really-safe-money-gen] r = i1 - i2
481.42 s
[really-safe-money-gen] - in if r < 0
481.42 s
[really-safe-money-gen] + in if r < 1
481.42 s
[really-safe-money-gen] then Nothing
481.42 s
[really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen] ListLit at src/Money/QuantisationFactor.hs:39:7-8
481.42 s
[really-safe-money-gen] @@ -36,9 +36,8 @@
481.42 s
[really-safe-money-gen] instance Validity QuantisationFactor where
481.42 s
[really-safe-money-gen] validate qf@(QuantisationFactor w) =
481.42 s
[really-safe-money-gen] mconcat
481.42 s
[really-safe-money-gen] - [ genericValidate qf,
481.42 s
[really-safe-money-gen] declare "The quantisation factor is not zero" $ w /= 0
481.42 s
[really-safe-money-gen] ]
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen] instance NFData QuantisationFactor
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen] ListLit at src/Money/QuantisationFactor.hs:39:7-8
481.42 s
[really-safe-money-gen] @@ -36,9 +36,7 @@
481.42 s
[really-safe-money-gen] instance Validity QuantisationFactor where
481.42 s
[really-safe-money-gen] validate qf@(QuantisationFactor w) =
481.42 s
[really-safe-money-gen] mconcat
481.42 s
[really-safe-money-gen] - [ genericValidate qf,
481.42 s
[really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
481.42 s
[really-safe-money-gen] ]
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen] instance NFData QuantisationFactor
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen] ConstBool at src/Money/QuantisationFactor.hs:40:57-63
481.42 s
[really-safe-money-gen] @@ -37,7 +37,7 @@
481.42 s
[really-safe-money-gen] validate qf@(QuantisationFactor w) =
481.42 s
[really-safe-money-gen] mconcat
481.42 s
[really-safe-money-gen] [ genericValidate qf,
481.42 s
[really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
481.42 s
[really-safe-money-gen] + declare "The quantisation factor is not zero" $ True
481.42 s
[really-safe-money-gen] ]
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen] instance NFData QuantisationFactor
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen] IntLit at src/Money/QuantisationFactor.hs:93:16-17
481.42 s
[really-safe-money-gen] @@ -90,7 +90,7 @@
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen] rat <-
481.42 s
[really-safe-money-gen] let r = 1 / irat
481.42 s
[really-safe-money-gen] - in if r < 0
481.42 s
[really-safe-money-gen] + in if r < 1
481.42 s
[really-safe-money-gen] then Nothing
481.42 s
[really-safe-money-gen] else Just r
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen] ListLit at src/Money/ConversionRate.hs:37:7-8
481.42 s
[really-safe-money-gen] @@ -34,9 +34,8 @@
481.42 s
[really-safe-money-gen] instance Validity ConversionRate where
481.42 s
[really-safe-money-gen] validate cr@(ConversionRate r) =
481.42 s
[really-safe-money-gen] mconcat
481.42 s
[really-safe-money-gen] - [ genericValidate cr,
481.42 s
[really-safe-money-gen] declare "The rate is nonzero" $ numerator r /= 0
481.42 s
[really-safe-money-gen] ]
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen] instance NFData ConversionRate
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen] ListLit at src/Money/ConversionRate.hs:37:7-8
481.42 s
[really-safe-money-gen] @@ -34,9 +34,7 @@
481.42 s
[really-safe-money-gen] instance Validity ConversionRate where
481.42 s
[really-safe-money-gen] validate cr@(ConversionRate r) =
481.42 s
[really-safe-money-gen] mconcat
481.42 s
[really-safe-money-gen] - [ genericValidate cr,
481.42 s
[really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
481.42 s
[really-safe-money-gen] ]
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen] instance NFData ConversionRate
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen] ConstBool at src/Money/ConversionRate.hs:38:41-57
481.42 s
[really-safe-money-gen] @@ -35,7 +35,7 @@
481.42 s
[really-safe-money-gen] validate cr@(ConversionRate r) =
481.42 s
[really-safe-money-gen] mconcat
481.42 s
[really-safe-money-gen] [ genericValidate cr,
481.42 s
[really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
481.42 s
[really-safe-money-gen] + declare "The rate is nonzero" $ True
481.42 s
[really-safe-money-gen] ]
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen] instance NFData ConversionRate
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen] IntLit at src/Money/ConversionRate.hs:109:27-28
481.42 s
[really-safe-money-gen] @@ -106,7 +106,7 @@
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen] -- | One-to-one conversion rate
481.42 s
[really-safe-money-gen] oneToOne :: ConversionRate
481.42 s
[really-safe-money-gen] -oneToOne = ConversionRate 1
481.42 s
[really-safe-money-gen] +oneToOne = ConversionRate 0
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen] -- | Invert a 'ConversionRate', to convert in the other direction.
481.42 s
[really-safe-money-gen] --
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen] RemoveCase at src/Money/AccountOf.hs:180:30-115
481.42 s
[really-safe-money-gen] @@ -177,11 +177,10 @@
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen] -- | See 'Account.distribute'
481.42 s
[really-safe-money-gen] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
481.42 s
[really-safe-money-gen] distribute (AccountOf a) w = case Account.distribute a w of
481.42 s
[really-safe-money-gen] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
481.42 s
[really-safe-money-gen] DistributedZero -> DistributedZero
481.42 s
[really-safe-money-gen] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
481.42 s
[really-safe-money-gen] DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen] -- | The result of 'distribute'
481.42 s
[really-safe-money-gen] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen] RemoveCase at src/Numeric/DecimalLiteral.hs:112:17-21
481.42 s
[really-safe-money-gen] @@ -109,9 +109,8 @@
481.42 s
[really-safe-money-gen]
481.42 s
[really-safe-money-gen] -- | Like 'fromString' but in a 'MonadFail'
481.42 s
[really-safe-money-gen] fromStringM :: (MonadFail m) => String -> m DecimalLiteral
481.42 s
[really-safe-money-gen] fromStringM s = case Numeric.DecimalLiteral.fromString s of
481.42 s
[really-safe-money-gen] Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
481.42 s
[really-safe-money-gen] - Just dl -> pure dl
481.42 s
[really-safe-money-gen]
481.43 s
[really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
481.43 s
[really-safe-money-gen] decimalLiteralP = do
481.43 s
[really-safe-money-gen]
481.43 s
[really-safe-money-gen] IntLit at src/Numeric/DecimalLiteral.hs:208:9-10
481.43 s
[really-safe-money-gen] @@ -205,7 +205,7 @@
481.43 s
[really-safe-money-gen] -- Nothing
481.43 s
[really-safe-money-gen] fromRational :: Rational -> Maybe DecimalLiteral
481.43 s
[really-safe-money-gen] fromRational (n :% d)
481.43 s
[really-safe-money-gen] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
481.43 s
[really-safe-money-gen] + | n < 1 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
481.43 s
[really-safe-money-gen] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
481.43 s
[really-safe-money-gen]
481.43 s
[really-safe-money-gen] -- | Turn a 'DecimalLiteral' into a 'Rational'
481.43 s
[really-safe-money-gen]
481.43 s
[really-safe-money-gen] RemoveCase at src/Numeric/DecimalLiteral.hs:287:38-40
481.43 s
[really-safe-money-gen] @@ -284,9 +284,8 @@
481.43 s
[really-safe-money-gen] -- >>> toRatio (DecimalLiteral (Just False) 3 1)
481.43 s
[really-safe-money-gen] -- Nothing
481.43 s
[really-safe-money-gen] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
481.43 s
[really-safe-money-gen] toRatio (DecimalLiteral mSign m e) = case mSign of
481.43 s
[really-safe-money-gen] - Just False -> Nothing
481.43 s
[really-safe-money-gen] _ -> Just $ fromIntegral m / (10 ^ e)
481.43 s
[really-safe-money-gen]
481.43 s
[really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Word'
481.43 s
[really-safe-money-gen] fromWord :: Word -> DecimalLiteral
481.43 s
[really-safe-money-gen]
481.43 s
[really-safe-money-gen] IntLit at src/Numeric/DecimalLiteral.hs:289:33-35
481.43 s
[really-safe-money-gen] @@ -286,7 +286,7 @@
481.43 s
[really-safe-money-gen] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
481.43 s
[really-safe-money-gen] toRatio (DecimalLiteral mSign m e) = case mSign of
481.43 s
[really-safe-money-gen] Just False -> Nothing
481.43 s
[really-safe-money-gen] - _ -> Just $ fromIntegral m / (10 ^ e)
481.43 s
[really-safe-money-gen] + _ -> Just $ fromIntegral m / (1 ^ e)
481.43 s
[really-safe-money-gen]
481.43 s
[really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Word'
481.43 s
[really-safe-money-gen] fromWord :: Word -> DecimalLiteral
481.43 s
[really-safe-money-gen]
481.43 s
[really-safe-money-gen] ConstBool at src/Numeric/DecimalLiteral.hs:299:11-47
481.43 s
[really-safe-money-gen] @@ -296,7 +296,7 @@
481.43 s
[really-safe-money-gen] toWord :: DecimalLiteral -> Maybe Word
481.43 s
[really-safe-money-gen] toWord dl = do
481.43 s
[really-safe-money-gen] n <- toNatural dl
481.43 s
[really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Word)
481.43 s
[really-safe-money-gen] + guard $ True
481.43 s
[really-safe-money-gen] pure $ fromIntegral n
481.43 s
[really-safe-money-gen]
481.43 s
[really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Natural'
481.43 s
[really-safe-money-gen]
481.43 s
[really-safe-money-gen] ConstBool at src/Numeric/DecimalLiteral.hs:333:11-46
481.43 s
[really-safe-money-gen] @@ -330,7 +330,7 @@
481.43 s
[really-safe-money-gen] toInt dl = do
481.43 s
[really-safe-money-gen] n <- toInteger dl
481.43 s
[really-safe-money-gen] guard $ n <= fromIntegral (maxBound :: Int)
481.43 s
[really-safe-money-gen] - guard $ n >= fromIntegral (minBound :: Int)
481.43 s
[really-safe-money-gen] + guard $ True
481.43 s
[really-safe-money-gen] pure $ fromIntegral n
481.43 s
[really-safe-money-gen]
481.43 s
[really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
481.43 s
[really-safe-money-gen]
481.43 s
[really-safe-money-gen] ConstBool at src/Numeric/DecimalLiteral.hs:332:11-46
481.43 s
[really-safe-money-gen] @@ -329,7 +329,7 @@
481.43 s
[really-safe-money-gen] toInt :: DecimalLiteral -> Maybe Int
481.43 s
[really-safe-money-gen] toInt dl = do
481.43 s
[really-safe-money-gen] n <- toInteger dl
481.43 s
[really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Int)
481.43 s
[really-safe-money-gen] + guard $ True
481.43 s
[really-safe-money-gen] guard $ n >= fromIntegral (minBound :: Int)
481.43 s
[really-safe-money-gen] pure $ fromIntegral n
481.43 s
[really-safe-money-gen]
481.43 s
[really-safe-money-gen]
481.43 s
[really-safe-money-gen] IntLit at src/Numeric/DecimalLiteral.hs:337:21-22
481.43 s
[really-safe-money-gen] @@ -334,7 +334,7 @@
481.43 s
[really-safe-money-gen] pure $ fromIntegral n
481.43 s
[really-safe-money-gen]
481.43 s
[really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
481.43 s
[really-safe-money-gen] -numSign a = if a >= 0 then Nothing else Just False
481.43 s
[really-safe-money-gen] +numSign a = if a >= 1 then Nothing else Just False
481.43 s
[really-safe-money-gen]
481.43 s
[really-safe-money-gen] signSignum :: (Num a) => Maybe Bool -> (a -> a)
481.43 s
[really-safe-money-gen] signSignum = \case
481.43 s
[really-safe-money-gen]
481.44 s
[really-safe-money-gen] IntLit at src/Money/Account.hs:131:25-26
481.44 s
[really-safe-money-gen] @@ -128,7 +128,7 @@
481.44 s
[really-safe-money-gen] amount :: Amount
481.44 s
[really-safe-money-gen] amount = Amount.fromMinimalQuantisations w
481.44 s
[really-safe-money-gen] in Just $
481.44 s
[really-safe-money-gen] - if i >= 0
481.44 s
[really-safe-money-gen] + if i >= 1
481.44 s
[really-safe-money-gen] then Positive amount
481.44 s
[really-safe-money-gen] else Negative amount
481.44 s
[really-safe-money-gen]
481.44 s
[really-safe-money-gen]
481.44 s
[really-safe-money-gen] ConstBool at src/Money/Account.hs:123:10-23
481.44 s
[really-safe-money-gen] @@ -120,7 +120,7 @@
481.44 s
[really-safe-money-gen] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
481.44 s
[really-safe-money-gen] a :: Integer
481.44 s
[really-safe-money-gen] a = (Prelude.abs :: Integer -> Integer) i
481.44 s
[really-safe-money-gen] - in if a > maxBoundI
481.44 s
[really-safe-money-gen] + in if False
481.44 s
[really-safe-money-gen] then Nothing
481.44 s
[really-safe-money-gen] else
481.44 s
[really-safe-money-gen] let w :: Word64
481.44 s
[really-safe-money-gen] ring -> Either String Amount
481.44 s
[really-safe-money-gen] f s = case readMaybe s of
481.44 s
[really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
481.44 s
[really-safe-money-gen] Just i ->
481.44 s
[really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
481.44 s
[really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
481.44 s
[really-safe-money-gen] else
481.44 s
[really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
481.44 s
[really-safe-money-gen] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
481.44 s
[really-safe-money-gen] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
481.44 s
[really-safe-money-gen] g :: Amount -> String
481.44 s
[really-safe-money-gen] g = show . Amount.toMinimalQuantisations
481.44 s
[really-safe-money-gen]
481.44 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account/Codec.hs:79:11-24
481.44 s
[really-safe-money-gen] @@ -76,6 +76,5 @@
481.44 s
[really-safe-money-gen] <?> "Account"
481.44 s
[really-safe-money-gen] where
481.44 s
[really-safe-money-gen] f :: Integer -> Either String Account
481.44 s
[really-safe-money-gen] f i = case Account.fromMinimalQuantisations i of
481.44 s
[really-safe-money-gen] - Nothing -> Left $ "Number did not fit into an account value: " <> show i
481.44 s
[really-safe-money-gen] Just a -> Right a
481.44 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account/Codec.hs:79:11-24
481.44 s
[really-safe-money-gen] @@ -76,6 +76,5 @@
481.44 s
[really-safe-money-gen] <?> "Account"
481.44 s
[really-safe-money-gen] where
481.44 s
[really-safe-money-gen] f :: Integer -> Either String Account
481.44 s
[really-safe-money-gen] f i = case Account.fromMinimalQuantisations i of
481.44 s
[really-safe-money-gen] Nothing -> Left $ "Number did not fit into an account value: " <> show i
481.44 s
[really-safe-money-gen] - Just a -> Right a
481.44 s
[really-safe-money-gen] Testing mutation ListLit at src/Money/Account/Codec.hs:51:33-76
481.44 s
[really-safe-money-gen] @@ -48,7 +48,6 @@
481.44 s
[really-safe-money-gen] where
481.44 s
[really-safe-money-gen] f :: String -> Either String Account
481.44 s
[really-safe-money-gen] f s = case readMaybe s >>= Account.fromMinimalQuantisations of
481.44 s
[really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
481.44 s
[really-safe-money-gen] Just a -> Right a
481.44 s
[really-safe-money-gen] g :: Account -> String
481.44 s
[really-safe-money-gen] g = show . Account.toMinimalQuantisations
481.44 s
[really-safe-money-gen] Testing mutation ListLit at src/Money/Account/Codec.hs:51:33-76
481.44 s
[really-safe-money-gen] @@ -48,7 +48,6 @@
481.44 s
[really-safe-money-gen] where
481.44 s
[really-safe-money-gen] f :: String -> Either String Account
481.44 s
[really-safe-money-gen] f s = case readMaybe s >>= Account.fromMinimalQuantisations of
481.44 s
[really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
481.44 s
[really-safe-money-gen] Just a -> Right a
481.44 s
[really-safe-money-gen] g :: Account -> String
481.44 s
[really-safe-money-gen] g = show . Account.toMinimalQuantisations
481.44 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account/Codec.hs:50:11-24
481.44 s
[really-safe-money-gen] @@ -47,9 +47,8 @@
481.44 s
[really-safe-money-gen] codecViaString = bimapCodec f g stringCodec <?> "Account"
481.45 s
[really-safe-money-gen] where
481.45 s
[really-safe-money-gen] f :: String -> Either String Account
481.45 s
[really-safe-money-gen] f s = case readMaybe s >>= Account.fromMinimalQuantisations of
481.45 s
[really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Account:", s]
481.45 s
[really-safe-money-gen] - Just a -> Right a
481.45 s
[really-safe-money-gen] g :: Account -> String
481.45 s
[really-safe-money-gen] g = show . Account.toMinimalQuantisations
481.45 s
[really-safe-money-gen]
481.45 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account/Codec.hs:50:11-24
481.45 s
[really-safe-money-gen] @@ -47,9 +47,8 @@
481.45 s
[really-safe-money-gen] codecViaString = bimapCodec f g stringCodec <?> "Account"
481.45 s
[really-safe-money-gen] where
481.45 s
[really-safe-money-gen] f :: String -> Either String Account
481.45 s
[really-safe-money-gen] f s = case readMaybe s >>= Account.fromMinimalQuantisations of
481.45 s
[really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
481.45 s
[really-safe-money-gen] Just a -> Right a
481.45 s
[really-safe-money-gen] g :: Account -> String
481.45 s
[really-safe-money-gen] g = show . Account.toMinimalQuantisations
481.45 s
[really-safe-money-gen]
481.45 s
[really-safe-money-gen] Testing mutation ListLit at src/Numeric/DecimalLiteral/Codec.hs:40:33-82
481.45 s
[really-safe-money-gen] @@ -37,5 +37,4 @@
481.45 s
[really-safe-money-gen] where
481.45 s
[really-safe-money-gen] f :: String -> Either String DecimalLiteral
481.45 s
[really-safe-money-gen] f s = case DecimalLiteral.fromString s of
481.45 s
[really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
481.45 s
[really-safe-money-gen] Just a -> Right a
481.45 s
[really-safe-money-gen] Testing mutation ListLit at src/Numeric/DecimalLiteral/Codec.hs:40:33-82
481.45 s
[really-safe-money-gen] @@ -37,5 +37,4 @@
481.45 s
[really-safe-money-gen] where
481.45 s
[really-safe-money-gen] f :: String -> Either String DecimalLiteral
481.45 s
[really-safe-money-gen] f s = case DecimalLiteral.fromString s of
481.45 s
[really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
481.45 s
[really-safe-money-gen] Just a -> Right a
481.45 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Numeric/DecimalLiteral/Codec.hs:39:11-24
481.45 s
[really-safe-money-gen] @@ -36,6 +36,5 @@
481.45 s
[really-safe-money-gen] codecViaString = bimapCodec f DecimalLiteral.toString stringCodec <?> "DecimalLiteral"
481.45 s
[really-safe-money-gen] where
481.45 s
[really-safe-money-gen] f :: String -> Either String DecimalLiteral
481.45 s
[really-safe-money-gen] f s = case DecimalLiteral.fromString s of
481.45 s
[really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
481.45 s
[really-safe-money-gen] Just a -> Right a
481.45 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Numeric/DecimalLiteral/Codec.hs:39:11-24
481.45 s
[really-safe-money-gen] @@ -36,6 +36,5 @@
481.45 s
[really-safe-money-gen] codecViaString = bimapCodec f DecimalLiteral.toString stringCodec <?> "DecimalLiteral"
481.45 s
[really-safe-money-gen] where
481.45 s
[really-safe-money-gen] f :: String -> Either String DecimalLiteral
481.45 s
[really-safe-money-gen] f s = case DecimalLiteral.fromString s of
481.45 s
[really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
481.45 s
[really-safe-money-gen] - Just a -> Right a
481.45 s
[really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:180:25-32
481.45 s
[really-safe-money-gen] @@ -177,10 +177,9 @@
481.45 s
[really-safe-money-gen] RoundNearest -> round
481.45 s
[really-safe-money-gen] roundedResult :: Integer
481.45 s
[really-safe-money-gen] roundedResult = rounder theoreticalResult
481.45 s
[really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
481.45 s
[really-safe-money-gen] LT -> RoundedDown
481.45 s
[really-safe-money-gen] - EQ -> DidNotRound
481.45 s
[really-safe-money-gen] GT -> RoundedUp
481.45 s
[really-safe-money-gen] in (Account.fromMinimalQuantisations roundedResult, rounded)
481.45 s
[really-safe-money-gen] )
481.45 s
[really-safe-money-gen] . Prelude.sum
481.45 s
[really-safe-money-gen] checkPhase completed in 6 minutes 10 seconds
481.45 s
[really-safe-money-gen] Phase: haddockPhase
481.81 s
[really-safe-money-gen] Preprocessing library for really-safe-money-gen-0.0.0.0...
481.82 s
[really-safe-money-gen] Running Haddock on library for really-safe-money-gen-0.0.0.0...
481.82 s
[really-safe-money-gen] Warning: The documentation for the following packages are not installed. No
481.82 s
[really-safe-money-gen] links will be generated to these packages: really-safe-money-0.0.0.0
482.23 s
[really-safe-money-gen] [ 1 of 13] Compiling Money.Amount.Gen ( src/Money/Amount/Gen.hs, nothing )
482.50 s
[really-safe-money-gen] [ 2 of 13] Compiling Money.Account.Gen ( src/Money/Account/Gen.hs, nothing )
482.52 s
[really-safe-money-gen] [ 3 of 13] Compiling Money.AccountOf.Gen ( src/Money/AccountOf/Gen.hs, nothing )
482.53 s
[really-safe-money-gen] [ 4 of 13] Compiling Money.AmountOf.Gen ( src/Money/AmountOf/Gen.hs, nothing )
482.54 s
[really-safe-money-gen] [ 5 of 13] Compiling Money.ConversionRate.Gen ( src/Money/ConversionRate/Gen.hs, nothing )
482.56 s
[really-safe-money-gen] [ 6 of 13] Compiling Money.ConversionRateOf.Gen ( src/Money/ConversionRateOf/Gen.hs, nothing )
482.57 s
[really-safe-money-gen] [ 7 of 13] Compiling Money.QuantisationFactor.Gen ( src/Money/QuantisationFactor/Gen.hs, nothing )
482.58 s
[really-safe-money-gen] [ 8 of 13] Compiling Money.Currency.Gen ( src/Money/Currency/Gen.hs, nothing )
482.59 s
[really-safe-money-gen] [ 9 of 13] Compiling Money.MultiAmount.Gen ( src/Money/MultiAmount/Gen.hs, nothing )
482.62 s
[really-safe-money-gen] [10 of 13] Compiling Money.MultiAccount.Gen ( src/Money/MultiAccount/Gen.hs, nothing )
482.64 s
[really-safe-money-gen] [11 of 13] Compiling Money.Gen ( src/Money/Gen.hs, nothing )
482.64 s
[really-safe-money-gen] [12 of 13] Compiling Numeric.DecimalLiteral.Gen ( src/Numeric/DecimalLiteral/Gen.hs, nothing )
482.67 s
[really-safe-money-gen] [13 of 13] Compiling Paths_really_safe_money_gen ( dist/build/autogen/Paths_really_safe_money_gen.hs, nothing )
482.70 s
[really-safe-money-gen] Haddock coverage:
482.70 s
[really-safe-money-gen] 0% ( 0 / 1) in 'Money.Amount.Gen'
482.70 s
[really-safe-money-gen] Missing documentation for:
482.70 s
[really-safe-money-gen] Module header
482.70 s
[really-safe-money-gen] 0% ( 0 / 1) in 'Money.Account.Gen'
482.70 s
[really-safe-money-gen] Missing documentation for:
482.70 s
[really-safe-money-gen] Module header
482.70 s
[really-safe-money-gen] 0% ( 0 / 1) in 'Money.AccountOf.Gen'
482.70 s
[really-safe-money-gen] Missing documentation for:
482.70 s
[really-safe-money-gen] Module header
482.70 s
[really-safe-money-gen] 0% ( 0 / 1) in 'Money.AmountOf.Gen'
482.70 s
[really-safe-money-gen] Missing documentation for:
482.70 s
[really-safe-money-gen] Module header
482.70 s
[really-safe-money-gen] 0% ( 0 / 1) in 'Money.ConversionRate.Gen'
482.70 s
[really-safe-money-gen] Missing documentation for:
482.70 s
[really-safe-money-gen] Module header
482.70 s
[really-safe-money-gen] 0% ( 0 / 1) in 'Money.ConversionRateOf.Gen'
482.70 s
[really-safe-money-gen] Missing documentation for:
482.70 s
[really-safe-money-gen] Module header
482.70 s
[really-safe-money-gen] 0% ( 0 / 1) in 'Money.QuantisationFactor.Gen'
482.70 s
[really-safe-money-gen] Missing documentation for:
482.70 s
[really-safe-money-gen] Module header
482.70 s
[really-safe-money-gen] 0% ( 0 / 1) in 'Money.Currency.Gen'
482.70 s
[really-safe-money-gen] Missing documentation for:
482.71 s
[really-safe-money-gen] Module header
482.71 s
[really-safe-money-gen] 0% ( 0 / 1) in 'Money.MultiAmount.Gen'
482.71 s
[really-safe-money-gen] Missing documentation for:
482.71 s
[really-safe-money-gen] Module header
482.71 s
[really-safe-money-gen] 0% ( 0 / 1) in 'Money.MultiAccount.Gen'
482.71 s
[really-safe-money-gen] Missing documentation for:
482.71 s
[really-safe-money-gen] Module header
482.71 s
[really-safe-money-gen] Warning: Money.Gen: Could not find documentation for exported module: Money.Gen
482.71 s
[really-safe-money-gen] 90% ( 10 / 11) in 'Money.Gen'
482.71 s
[really-safe-money-gen] Missing documentation for:
482.71 s
[really-safe-money-gen] Module header
482.71 s
[really-safe-money-gen] 0% ( 0 / 2) in 'Numeric.DecimalLiteral.Gen'
482.71 s
[really-safe-money-gen] Missing documentation for:
482.71 s
[really-safe-money-gen] Module header
482.71 s
[really-safe-money-gen] shrinkSign (src/Numeric/DecimalLiteral/Gen.hs:16)
482.91 s
[really-safe-money-gen] Warning: Money.Amount.Gen: could not find link destinations for:
482.91 s
[really-safe-money-gen] - Money.Amount.Amount
482.91 s
[really-safe-money-gen] - Money.Amount.Distribution
482.91 s
[really-safe-money-gen] - Money.Amount.Rounding
482.91 s
[really-safe-money-gen] Warning: Money.Account.Gen: could not find link destinations for:
482.91 s
[really-safe-money-gen] - Money.Account.Account
482.91 s
[really-safe-money-gen] Warning: Money.AccountOf.Gen: could not find link destinations for:
482.91 s
[really-safe-money-gen] - Money.AccountOf.AccountOf
482.91 s
[really-safe-money-gen] Warning: Money.AmountOf.Gen: could not find link destinations for:
482.91 s
[really-safe-money-gen] - Money.AmountOf.AmountOf
482.91 s
[really-safe-money-gen] Warning: Money.ConversionRate.Gen: could not find link destinations for:
482.92 s
[really-safe-money-gen] - Money.ConversionRate.ConversionRate
482.92 s
[really-safe-money-gen] Warning: Money.ConversionRateOf.Gen: could not find link destinations for:
482.92 s
[really-safe-money-gen] - Money.ConversionRateOf.ConversionRateOf
482.92 s
[really-safe-money-gen] Warning: Money.QuantisationFactor.Gen: could not find link destinations for:
482.92 s
[really-safe-money-gen] - Money.QuantisationFactor.QuantisationFactor
482.92 s
[really-safe-money-gen] Warning: Money.Currency.Gen: could not find link destinations for:
482.92 s
[really-safe-money-gen] - Money.Currency.Currency
482.92 s
[really-safe-money-gen] Warning: Money.MultiAmount.Gen: could not find link destinations for:
482.92 s
[really-safe-money-gen] - Money.MultiAmount.MultiAmount
482.92 s
[really-safe-money-gen] Warning: Money.MultiAccount.Gen: could not find link destinations for:
482.92 s
[really-safe-money-gen] - Money.MultiAccount.MultiAccount
482.92 s
[really-safe-money-gen] Warning: Numeric.DecimalLiteral.Gen: could not find link destinations for:
482.92 s
[really-safe-money-gen] - Numeric.DecimalLiteral.DecimalLiteral
490.99 s
[really-safe-money-gen] Documentation created: dist/doc/html/really-safe-money-gen/,
490.99 s
[really-safe-money-gen] dist/doc/html/really-safe-money-gen/really-safe-money-gen.txt
491.10 s
[really-safe-money-gen] Preprocessing test suite 'really-safe-money-test' for really-safe-money-gen-0.0.0.0...
491.12 s
[really-safe-money-gen] Phase: installPhase
491.32 s
[really-safe-money-gen] Installing library in /nix/store/5jp6c2a3y6gm0dl6nkxy8pxclhjrkyyl-really-safe-money-gen-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h
491.95 s
[really-safe-money-gen] Phase: fixupPhase
491.98 s
[really-safe-money-gen] shrinking RPATHs of ELF executables and libraries in /nix/store/5jp6c2a3y6gm0dl6nkxy8pxclhjrkyyl-really-safe-money-gen-0.0.0.0
492.00 s
[really-safe-money-gen] shrinking /nix/store/5jp6c2a3y6gm0dl6nkxy8pxclhjrkyyl-really-safe-money-gen-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/libHSreally-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h-ghc9.10.3.so
492.01 s
[really-safe-money-gen] checking for references to /build/ in /nix/store/5jp6c2a3y6gm0dl6nkxy8pxclhjrkyyl-really-safe-money-gen-0.0.0.0...
492.05 s
[really-safe-money-gen] patching script interpreter paths in /nix/store/5jp6c2a3y6gm0dl6nkxy8pxclhjrkyyl-really-safe-money-gen-0.0.0.0
492.06 s
[really-safe-money-gen] stripping (with command strip and flags -S -p) in /nix/store/5jp6c2a3y6gm0dl6nkxy8pxclhjrkyyl-really-safe-money-gen-0.0.0.0/lib
492.14 s
[really-safe-money-gen] shrinking RPATHs of ELF executables and libraries in /nix/store/nlxyd0v86kw3qp5y8gba2na8ilg3dv14-really-safe-money-gen-0.0.0.0-doc
492.16 s
[really-safe-money-gen] checking for references to /build/ in /nix/store/nlxyd0v86kw3qp5y8gba2na8ilg3dv14-really-safe-money-gen-0.0.0.0-doc...
492.19 s
[really-safe-money-gen] patching script interpreter paths in /nix/store/nlxyd0v86kw3qp5y8gba2na8ilg3dv14-really-safe-money-gen-0.0.0.0-doc
492.20 s
[really-safe-money-gen] shrinking RPATHs of ELF executables and libraries in /nix/store/0nxqcmr5rqf6w0q2zvh8k5pv79bk0yaj-really-safe-money-gen-0.0.0.0-report
492.21 s
[really-safe-money-gen] checking for references to /build/ in /nix/store/0nxqcmr5rqf6w0q2zvh8k5pv79bk0yaj-really-safe-money-gen-0.0.0.0-report...
492.24 s
[really-safe-money-gen] patching script interpreter paths in /nix/store/0nxqcmr5rqf6w0q2zvh8k5pv79bk0yaj-really-safe-money-gen-0.0.0.0-report
492.45 s
Progress: 8 of 9 built