@@ -98,9 +98,9 @@ BOOST_AUTO_TEST_CASE(electrum__blockchain_transaction_get__missing_param__droppe
9898 BOOST_CHECK (handshake ());
9999
100100 const auto & coinbase = *genesis.transactions_ptr ()->front ();
101- const auto tx_hash = encode_hash (coinbase.hash (false ));
101+ const auto tx0_hash = encode_hash (coinbase.hash (false ));
102102 const auto request = R"( {"id":80,"method":"blockchain.transaction.get","params":["%1%"]})" " \n " ;
103- const auto response = get ((boost::format (request) % tx_hash ).str ());
103+ const auto response = get ((boost::format (request) % tx0_hash ).str ());
104104 BOOST_CHECK (response.at (" dropped" ).as_bool ());
105105}
106106
@@ -109,9 +109,9 @@ BOOST_AUTO_TEST_CASE(electrum__blockchain_transaction_get__extra_param__dropped)
109109 BOOST_CHECK (handshake ());
110110
111111 const auto & coinbase = *genesis.transactions_ptr ()->front ();
112- const auto tx_hash = encode_hash (coinbase.hash (false ));
112+ const auto tx0_hash = encode_hash (coinbase.hash (false ));
113113 const auto request = R"( {"id":81,"method":"blockchain.transaction.get","params":["%1%",false,"extra"]})" " \n " ;
114- const auto response = get ((boost::format (request) % tx_hash ).str ());
114+ const auto response = get ((boost::format (request) % tx0_hash ).str ());
115115 BOOST_CHECK (response.at (" dropped" ).as_bool ());
116116}
117117
@@ -120,9 +120,9 @@ BOOST_AUTO_TEST_CASE(electrum__blockchain_transaction_get__genesis_coinbase_verb
120120 BOOST_CHECK (handshake ());
121121
122122 const auto & coinbase = *genesis.transactions_ptr ()->front ();
123- const auto tx_hash = encode_hash (coinbase.hash (false ));
123+ const auto tx0_hash = encode_hash (coinbase.hash (false ));
124124 const auto request = R"( {"id":82,"method":"blockchain.transaction.get","params":["%1%",false]})" " \n " ;
125- const auto response = get ((boost::format (request) % tx_hash ).str ());
125+ const auto response = get ((boost::format (request) % tx0_hash ).str ());
126126 BOOST_CHECK_EQUAL (response.at (" result" ).as_string (), encode_base16 (coinbase.to_data (true )));
127127}
128128
@@ -131,9 +131,9 @@ BOOST_AUTO_TEST_CASE(electrum__blockchain_transaction_get__genesis_coinbase_verb
131131 BOOST_CHECK (handshake ());
132132
133133 const auto & coinbase = *genesis.transactions_ptr ()->front ();
134- const auto tx_hash = encode_hash (coinbase.hash (false ));
134+ const auto tx0_hash = encode_hash (coinbase.hash (false ));
135135 const auto request = R"( {"id":83,"method":"blockchain.transaction.get","params":["%1%",true]})" " \n " ;
136- const auto response = get ((boost::format (request) % tx_hash ).str ());
136+ const auto response = get ((boost::format (request) % tx0_hash ).str ());
137137
138138 auto expected = value_from (bitcoind (coinbase));
139139 BOOST_CHECK (expected.is_object ());
@@ -150,6 +150,57 @@ BOOST_AUTO_TEST_CASE(electrum__blockchain_transaction_get__genesis_coinbase_verb
150150}
151151
152152// blockchain.transaction.get_merkle
153+
153154// blockchain.transaction.id_from_pos
154155
156+ BOOST_AUTO_TEST_CASE (electrum__blockchain_transaction_id_from_pos__genesis_coinbase_default__expected)
157+ {
158+ BOOST_CHECK (handshake ());
159+
160+ const auto & coinbase = *genesis.transactions_ptr ()->front ();
161+ const auto tx0_hash = encode_hash (coinbase.hash (false ));
162+ const auto request = R"( {"id":90,"method":"blockchain.transaction.id_from_pos","params":[0,0]})" " \n " ;
163+ const auto response = get (request);
164+ BOOST_CHECK_EQUAL (response.at (" result" ).as_string (), tx0_hash);
165+ }
166+
167+ BOOST_AUTO_TEST_CASE (electrum__blockchain_transaction_id_from_pos__coinbase_false__expected)
168+ {
169+ BOOST_CHECK (handshake ());
170+
171+ const auto & coinbase = *block2.transactions_ptr ()->front ();
172+ const auto tx0_hash = encode_hash (coinbase.hash (false ));
173+ const auto request = R"( {"id":91,"method":"blockchain.transaction.id_from_pos","params":[2,0,false]})" " \n " ;
174+ const auto response = get (request);
175+ BOOST_CHECK_EQUAL (response.at (" result" ).as_string (), tx0_hash);
176+ }
177+
178+ BOOST_AUTO_TEST_CASE (electrum__blockchain_transaction_id_from_pos__merkle_proof_one_tx__empty)
179+ {
180+ BOOST_CHECK (handshake ());
181+
182+ const auto & coinbase = *block9.transactions_ptr ()->front ();
183+ const auto tx0_hash = encode_hash (coinbase.hash (false ));
184+ const auto request = R"( {"id":92,"method":"blockchain.transaction.id_from_pos","params":[9,0,true]})" " \n " ;
185+ const auto & object = get (request).at (" result" ).as_object ();
186+ BOOST_CHECK_EQUAL (object.at (" tx_hash" ).as_string (), tx0_hash);
187+ BOOST_CHECK (object.at (" merkle" ).as_array ().empty ());
188+ }
189+
190+ BOOST_AUTO_TEST_CASE (electrum__blockchain_transaction_id_from_pos__missing_block__not_found)
191+ {
192+ BOOST_CHECK (handshake ());
193+
194+ const auto request = R"( {"id":93,"method":"blockchain.transaction.id_from_pos","params":[11,0]})" " \n " ;
195+ BOOST_CHECK_EQUAL (get (request).at (" error" ).as_object ().at (" code" ).as_int64 (), not_found.value ());
196+ }
197+
198+ BOOST_AUTO_TEST_CASE (electrum__blockchain_transaction_id_from_pos__missing_position__not_found)
199+ {
200+ BOOST_CHECK (handshake ());
201+
202+ const auto request = R"( {"id":94,"method":"blockchain.transaction.id_from_pos","params":[0,1]})" " \n " ;
203+ BOOST_CHECK_EQUAL (get (request).at (" error" ).as_object ().at (" code" ).as_int64 (), not_found.value ());
204+ }
205+
155206BOOST_AUTO_TEST_SUITE_END ()
0 commit comments