mirror of
https://github.com/aljazceru/nutshell.git
synced 2025-12-20 10:34:20 +01:00
58 lines
3.1 KiB
Python
58 lines
3.1 KiB
Python
import pytest
|
|
|
|
from cashu.core.base import TokenV3
|
|
from cashu.core.helpers import calculate_number_of_blank_outputs
|
|
from cashu.core.split import amount_split
|
|
|
|
|
|
def test_get_output_split():
|
|
assert amount_split(13) == [1, 4, 8]
|
|
|
|
|
|
def test_tokenv3_get_amount():
|
|
token_str = "cashuAeyJ0b2tlbiI6IFt7InByb29mcyI6IFt7ImlkIjogIkplaFpMVTZuQ3BSZCIsICJhbW91bnQiOiAyLCAic2VjcmV0IjogIjBFN2lDazRkVmxSZjVQRjFnNFpWMnciLCAiQyI6ICIwM2FiNTgwYWQ5NTc3OGVkNTI5NmY4YmVlNjU1ZGJkN2Q2NDJmNWQzMmRlOGUyNDg0NzdlMGI0ZDZhYTg2M2ZjZDUifSwgeyJpZCI6ICJKZWhaTFU2bkNwUmQiLCAiYW1vdW50IjogOCwgInNlY3JldCI6ICJzNklwZXh3SGNxcXVLZDZYbW9qTDJnIiwgIkMiOiAiMDIyZDAwNGY5ZWMxNmE1OGFkOTAxNGMyNTliNmQ2MTRlZDM2ODgyOWYwMmMzODc3M2M0NzIyMWY0OTYxY2UzZjIzIn1dLCAibWludCI6ICJodHRwOi8vbG9jYWxob3N0OjMzMzgifV19"
|
|
token = TokenV3.deserialize(token_str)
|
|
assert token.get_amount() == 10
|
|
|
|
|
|
def test_tokenv3_get_proofs():
|
|
token_str = "cashuAeyJ0b2tlbiI6IFt7InByb29mcyI6IFt7ImlkIjogIkplaFpMVTZuQ3BSZCIsICJhbW91bnQiOiAyLCAic2VjcmV0IjogIjBFN2lDazRkVmxSZjVQRjFnNFpWMnciLCAiQyI6ICIwM2FiNTgwYWQ5NTc3OGVkNTI5NmY4YmVlNjU1ZGJkN2Q2NDJmNWQzMmRlOGUyNDg0NzdlMGI0ZDZhYTg2M2ZjZDUifSwgeyJpZCI6ICJKZWhaTFU2bkNwUmQiLCAiYW1vdW50IjogOCwgInNlY3JldCI6ICJzNklwZXh3SGNxcXVLZDZYbW9qTDJnIiwgIkMiOiAiMDIyZDAwNGY5ZWMxNmE1OGFkOTAxNGMyNTliNmQ2MTRlZDM2ODgyOWYwMmMzODc3M2M0NzIyMWY0OTYxY2UzZjIzIn1dLCAibWludCI6ICJodHRwOi8vbG9jYWxob3N0OjMzMzgifV19"
|
|
token = TokenV3.deserialize(token_str)
|
|
assert len(token.get_proofs()) == 2
|
|
|
|
|
|
def test_tokenv3_deserialize_serialize():
|
|
token_str = "cashuAeyJ0b2tlbiI6IFt7InByb29mcyI6IFt7ImlkIjogIkplaFpMVTZuQ3BSZCIsICJhbW91bnQiOiAyLCAic2VjcmV0IjogIjBFN2lDazRkVmxSZjVQRjFnNFpWMnciLCAiQyI6ICIwM2FiNTgwYWQ5NTc3OGVkNTI5NmY4YmVlNjU1ZGJkN2Q2NDJmNWQzMmRlOGUyNDg0NzdlMGI0ZDZhYTg2M2ZjZDUifSwgeyJpZCI6ICJKZWhaTFU2bkNwUmQiLCAiYW1vdW50IjogOCwgInNlY3JldCI6ICJzNklwZXh3SGNxcXVLZDZYbW9qTDJnIiwgIkMiOiAiMDIyZDAwNGY5ZWMxNmE1OGFkOTAxNGMyNTliNmQ2MTRlZDM2ODgyOWYwMmMzODc3M2M0NzIyMWY0OTYxY2UzZjIzIn1dLCAibWludCI6ICJodHRwOi8vbG9jYWxob3N0OjMzMzgifV19"
|
|
token = TokenV3.deserialize(token_str)
|
|
assert token.serialize() == token_str
|
|
|
|
|
|
def test_calculate_number_of_blank_outputs():
|
|
# Example from NUT-08 specification.
|
|
fee_reserve_sat = 1000
|
|
expected_n_blank_outputs = 10
|
|
n_blank_outputs = calculate_number_of_blank_outputs(fee_reserve_sat)
|
|
assert n_blank_outputs == expected_n_blank_outputs
|
|
|
|
|
|
def test_calculate_number_of_blank_outputs_for_small_fee_reserve():
|
|
# There should always be at least one blank output.
|
|
fee_reserve_sat = 1
|
|
expected_n_blank_outputs = 1
|
|
n_blank_outputs = calculate_number_of_blank_outputs(fee_reserve_sat)
|
|
assert n_blank_outputs == expected_n_blank_outputs
|
|
|
|
|
|
def test_calculate_number_of_blank_outputs_for_zero_fee_reserve():
|
|
# Negative fee reserve is not supported.
|
|
fee_reserve_sat = 0
|
|
n_blank_outputs = calculate_number_of_blank_outputs(fee_reserve_sat)
|
|
assert n_blank_outputs == 0
|
|
|
|
|
|
def test_calculate_number_of_blank_outputs_fails_for_negative_fee_reserve():
|
|
# Negative fee reserve is not supported.
|
|
fee_reserve_sat = -1
|
|
with pytest.raises(AssertionError):
|
|
_ = calculate_number_of_blank_outputs(fee_reserve_sat)
|