mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-19 23:24:27 +01:00
pytest: check millisatoshi by float raises
This only adds a test that currently makes sure its not possible to init a Millisatoshi by a floating number. Discussion: As @gallizoltan points out, initialization with a float should be possible: https://github.com/ElementsProject/lightning/pull/4273#discussion_r540369093 > Millisatoshi(5) / 2 currently works, and removes the half msat. > So, I think Millisatoshi(5 / 2) should be the same.
This commit is contained in:
committed by
Christian Decker
parent
bd13726db7
commit
0a01111395
@@ -68,6 +68,10 @@ class Millisatoshi:
|
|||||||
|
|
||||||
elif int(v) == v:
|
elif int(v) == v:
|
||||||
self.millisatoshis = int(v)
|
self.millisatoshis = int(v)
|
||||||
|
|
||||||
|
elif isinstance(v, float):
|
||||||
|
raise TypeError("Millisatoshi by float is currently not supported")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
raise TypeError(
|
raise TypeError(
|
||||||
"Millisatoshi must be string with msat/sat/btc suffix or int"
|
"Millisatoshi must be string with msat/sat/btc suffix or int"
|
||||||
|
|||||||
@@ -312,3 +312,26 @@ def test_div():
|
|||||||
assert amount == 14
|
assert amount == 14
|
||||||
amount = Millisatoshi(42) // Millisatoshi(4)
|
amount = Millisatoshi(42) // Millisatoshi(4)
|
||||||
assert amount == 10
|
assert amount == 10
|
||||||
|
|
||||||
|
|
||||||
|
def test_init():
|
||||||
|
# Note: Ongoing Discussion, hence the `with pytest.raises`.
|
||||||
|
# https://github.com/ElementsProject/lightning/pull/4273#discussion_r540369093
|
||||||
|
#
|
||||||
|
# Initialization with a float should be possible:
|
||||||
|
# Millisatoshi(5) / 2 currently works, and removes the half msat.
|
||||||
|
# So Millisatoshi(5 / 2) should be the same.
|
||||||
|
amount = Millisatoshi(5) / 2
|
||||||
|
assert amount == Millisatoshi(2)
|
||||||
|
with pytest.raises(TypeError, match="Millisatoshi by float is currently not supported"):
|
||||||
|
assert amount == Millisatoshi(5 / 2)
|
||||||
|
|
||||||
|
ratio = Millisatoshi(8) / Millisatoshi(5)
|
||||||
|
assert isinstance(ratio, float)
|
||||||
|
with pytest.raises(TypeError, match="Millisatoshi by float is currently not supported"):
|
||||||
|
assert Millisatoshi(ratio) == Millisatoshi(8 / 5)
|
||||||
|
|
||||||
|
# Check that init by a round float is allowed.
|
||||||
|
# Required by some existing tests: tests/test_wallet.py::test_txprepare
|
||||||
|
amount = Millisatoshi(42.0)
|
||||||
|
assert amount == 42
|
||||||
|
|||||||
Reference in New Issue
Block a user