diff --git a/monero/numbers.py b/monero/numbers.py new file mode 100644 index 0000000..7bd6ea8 --- /dev/null +++ b/monero/numbers.py @@ -0,0 +1,9 @@ +from decimal import Decimal + +PICONERO = Decimal('0.000000000001') + +def to_atomic(amount): + return int(amount * 10**12) + +def from_atomic(amount): + return (Decimal(amount) * PICONERO).quantize(PICONERO) diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..aad4419 --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1,2 @@ +from .address import AddressTestCase, TestnetAddressTestCase +from .numbers import NumbersTestCase diff --git a/test.py b/tests/address.py similarity index 100% rename from test.py rename to tests/address.py diff --git a/tests/numbers.py b/tests/numbers.py new file mode 100644 index 0000000..5f7c8dd --- /dev/null +++ b/tests/numbers.py @@ -0,0 +1,16 @@ +from decimal import Decimal +import unittest + +from monero.numbers import to_atomic, from_atomic + +class NumbersTestCase(unittest.TestCase): + def test_simple_numbers(self): + self.assertEqual(to_atomic(Decimal('0')), 0) + self.assertEqual(from_atomic(0), Decimal('0')) + self.assertEqual(to_atomic(Decimal('1')), 1000000000000) + self.assertEqual(from_atomic(1000000000000), Decimal('1')) + self.assertEqual(to_atomic(Decimal('0.000000000001')), 1) + self.assertEqual(from_atomic(1), Decimal('0.000000000001')) + + def test_rounding(self): + self.assertEqual(to_atomic(Decimal('1.0000000000004')), 1000000000000)