|
|
@ -407,5 +407,22 @@ def assert_raises(exc, fun, *args, **kwds): |
|
|
|
else: |
|
|
|
else: |
|
|
|
raise AssertionError("No exception raised") |
|
|
|
raise AssertionError("No exception raised") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def assert_is_hex_string(string): |
|
|
|
|
|
|
|
try: |
|
|
|
|
|
|
|
int(string, 16) |
|
|
|
|
|
|
|
except Exception as e: |
|
|
|
|
|
|
|
raise AssertionError( |
|
|
|
|
|
|
|
"Couldn't interpret %r as hexadecimal; raised: %s" % (string, e)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def assert_is_hash_string(string, length=64): |
|
|
|
|
|
|
|
if not isinstance(string, basestring): |
|
|
|
|
|
|
|
raise AssertionError("Expected a string, got type %r" % type(string)) |
|
|
|
|
|
|
|
elif length and len(string) != length: |
|
|
|
|
|
|
|
raise AssertionError( |
|
|
|
|
|
|
|
"String of length %d expected; got %d" % (length, len(string))) |
|
|
|
|
|
|
|
elif not re.match('[abcdef0-9]+$', string): |
|
|
|
|
|
|
|
raise AssertionError( |
|
|
|
|
|
|
|
"String %r contains invalid characters for a hash." % string) |
|
|
|
|
|
|
|
|
|
|
|
def satoshi_round(amount): |
|
|
|
def satoshi_round(amount): |
|
|
|
return Decimal(amount).quantize(Decimal('0.00000001'), rounding=ROUND_DOWN) |
|
|
|
return Decimal(amount).quantize(Decimal('0.00000001'), rounding=ROUND_DOWN) |
|
|
|