@@ -1866,3 +1866,68 @@ def test_add_script_input_post_chang(chain_context):
1866
1866
)
1867
1867
1868
1868
assert expected_redeemer_map == witness .redeemer
1869
+
1870
+
1871
+ def test_transaction_witness_set_redeemers_list (chain_context ):
1872
+ """Test that TransactionBuilder correctly stores Redeemer list"""
1873
+ tx_builder = TransactionBuilder (chain_context )
1874
+ redeemer_data = [
1875
+ [0 , 0 , 42 , [1000000 , 2000000 ]],
1876
+ [1 , 1 , "Hello" , [3000000 , 4000000 ]],
1877
+ ]
1878
+ tx_builder ._redeemers = [Redeemer .from_primitive (r ) for r in redeemer_data ]
1879
+
1880
+ assert tx_builder ._redeemers is not None
1881
+ assert len (tx_builder ._redeemers ) == 2
1882
+ assert tx_builder ._redeemers [0 ].tag == RedeemerTag .SPEND
1883
+ assert tx_builder ._redeemers [0 ].index == 0
1884
+ assert tx_builder ._redeemers [0 ].data == 42
1885
+ assert tx_builder ._redeemers [0 ].ex_units == ExecutionUnits (1000000 , 2000000 )
1886
+ assert tx_builder ._redeemers [1 ].tag == RedeemerTag .MINT
1887
+ assert tx_builder ._redeemers [1 ].index == 1
1888
+ assert tx_builder ._redeemers [1 ].data == "Hello"
1889
+ assert tx_builder ._redeemers [1 ].ex_units == ExecutionUnits (3000000 , 4000000 )
1890
+
1891
+
1892
+ def test_transaction_witness_set_redeemers_dict (chain_context ):
1893
+ """Test that TransactionBuilder correctly stores RedeemerMap"""
1894
+ tx_builder = TransactionBuilder (chain_context )
1895
+ redeemer_data = {
1896
+ (0 , 0 ): [42 , [1000000 , 2000000 ]],
1897
+ (1 , 1 ): ["Hello" , [3000000 , 4000000 ]],
1898
+ }
1899
+ tx_builder ._redeemers = RedeemerMap (
1900
+ {
1901
+ RedeemerKey (RedeemerTag (tag ), index ): RedeemerValue (
1902
+ data , ExecutionUnits (* ex_units )
1903
+ )
1904
+ for (tag , index ), (data , ex_units ) in redeemer_data .items ()
1905
+ }
1906
+ )
1907
+
1908
+ assert tx_builder ._redeemers is not None
1909
+ assert isinstance (tx_builder ._redeemers , RedeemerMap )
1910
+ assert len (tx_builder ._redeemers ) == 2
1911
+
1912
+ key1 = RedeemerKey (RedeemerTag .SPEND , 0 )
1913
+ assert tx_builder ._redeemers [key1 ].data == 42
1914
+ assert tx_builder ._redeemers [key1 ].ex_units == ExecutionUnits (1000000 , 2000000 )
1915
+
1916
+ key2 = RedeemerKey (RedeemerTag .MINT , 1 )
1917
+ assert tx_builder ._redeemers [key2 ].data == "Hello"
1918
+ assert tx_builder ._redeemers [key2 ].ex_units == ExecutionUnits (3000000 , 4000000 )
1919
+
1920
+
1921
+ def test_transaction_witness_set_redeemers_invalid_format (chain_context ):
1922
+ """Test that TransactionBuilder can store invalid redeemer data"""
1923
+ tx_builder = TransactionBuilder (chain_context )
1924
+ invalid_redeemer_data = "invalid_data"
1925
+ tx_builder ._redeemers = invalid_redeemer_data
1926
+ assert tx_builder ._redeemers == "invalid_data"
1927
+
1928
+
1929
+ def test_transaction_witness_set_no_redeemers (chain_context ):
1930
+ """Test that build_witness_set() returns a WitnessSet with no Redeemer"""
1931
+ tx_builder = TransactionBuilder (chain_context )
1932
+ witness_set = tx_builder .build_witness_set ()
1933
+ assert witness_set .redeemer is None
0 commit comments