You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
2.2 KiB
56 lines
2.2 KiB
from decimal import Decimal
|
|
import sys
|
|
import unittest
|
|
|
|
from monero.numbers import to_atomic, from_atomic, as_monero, PaymentID
|
|
|
|
|
|
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_numeric_types(self):
|
|
"Only check if conversion of given type succeeds or fails."
|
|
self.assertTrue(to_atomic(1))
|
|
self.assertTrue(to_atomic(1.0))
|
|
if hasattr(sys, "maxint"): # Python 2.x
|
|
self.assertTrue(to_atomic(sys.maxint + 1))
|
|
self.assertRaises(ValueError, to_atomic, "1")
|
|
|
|
def test_rounding(self):
|
|
self.assertEqual(to_atomic(Decimal("1.0000000000004")), 1000000000000)
|
|
self.assertEqual(
|
|
as_monero(Decimal("1.0000000000014")), Decimal("1.000000000001")
|
|
)
|
|
|
|
def test_payment_id(self):
|
|
pid = PaymentID("0")
|
|
self.assertTrue(pid.is_short())
|
|
self.assertEqual(pid, 0)
|
|
self.assertEqual(pid, "0000000000000000")
|
|
self.assertEqual(PaymentID(pid), pid)
|
|
self.assertNotEqual(pid, None)
|
|
pid = PaymentID("abcdef")
|
|
self.assertTrue(pid.is_short())
|
|
self.assertEqual(pid, 0xABCDEF)
|
|
self.assertEqual(pid, "0000000000abcdef")
|
|
self.assertEqual(PaymentID(pid), pid)
|
|
pid = PaymentID("1234567812345678")
|
|
self.assertTrue(pid.is_short())
|
|
self.assertEqual(pid, 0x1234567812345678)
|
|
self.assertEqual(pid, "1234567812345678")
|
|
self.assertEqual(PaymentID(pid), pid)
|
|
pid = PaymentID("a1234567812345678")
|
|
self.assertFalse(pid.is_short())
|
|
self.assertEqual(pid, 0xA1234567812345678)
|
|
self.assertEqual(
|
|
pid, "00000000000000000000000000000000000000000000000a1234567812345678"
|
|
)
|
|
self.assertEqual(PaymentID(pid), pid)
|
|
self.assertRaises(ValueError, PaymentID, 2 ** 256 + 1)
|