Expose human functions that use Result objects
[ldk-java] / src / test / java / org / ldk / HumanObjectPeerTest.java
index 5dcc7a044b914a381d4961a44dedd93a334c1c33..6f477d02d3aec5623a5379bd9685f93aea57ce1c 100644 (file)
@@ -124,11 +124,15 @@ public class HumanObjectPeerTest {
             }
         }
 
-        long get_route(byte[] dest_node, ChannelDetails[] our_chans) {
+        Route get_route(byte[] dest_node, ChannelDetails[] our_chans) {
             try (LockedNetworkGraph netgraph = this.router.read_locked_graph()) {
                 NetworkGraph graph = netgraph.graph();
-                return bindings.get_route(this.node_id, graph._test_only_get_ptr(), dest_node, new long[] {our_chans[0]._test_only_get_ptr()},
+                long res = bindings.get_route(this.node_id, graph._test_only_get_ptr(), dest_node, new long[] {our_chans[0]._test_only_get_ptr()},
                         new long[0], 1000, 42, this.logger);
+                assert bindings.LDKCResult_RouteLightningErrorZ_result_ok(res);
+                Route copy = Route.constructor_read(bindings.Route_write(bindings.LDKCResult_RouteLightningErrorZ_get_ok(res)));
+                bindings.CResult_RouteLightningErrorZ_free(res);
+                return copy;
             }
         }
     }
@@ -210,16 +214,14 @@ public class HumanObjectPeerTest {
         peer2.peer_manager.process_events();
         while (!list.isEmpty()) { list.poll().join(); }
 
-        long[] events = bindings.EventsProvider_get_and_clear_pending_events(peer1.chan_manager_events._test_only_get_ptr());
+        Event[] events = peer1.chan_manager_events.get_and_clear_pending_events();
         assert events.length == 1;
-        bindings.LDKEvent event = bindings.LDKEvent_ref_from_ptr(events[0]);
-        assert event instanceof bindings.LDKEvent.FundingGenerationReady;
-        assert ((bindings.LDKEvent.FundingGenerationReady) event).channel_value_satoshis == 10000;
-        assert ((bindings.LDKEvent.FundingGenerationReady) event).user_channel_id == 42;
-        byte[] funding_spk = ((bindings.LDKEvent.FundingGenerationReady) event).output_script;
+        assert events[0] instanceof Event.FundingGenerationReady;
+        assert ((Event.FundingGenerationReady)events[0]).channel_value_satoshis == 10000;
+        assert ((Event.FundingGenerationReady)events[0]).user_channel_id == 42;
+        byte[] funding_spk = ((Event.FundingGenerationReady)events[0]).output_script;
         assert funding_spk.length == 34 && funding_spk[0] == 0 && funding_spk[1] == 32; // P2WSH
-        byte[] chan_id = ((bindings.LDKEvent.FundingGenerationReady) event).temporary_channel_id;
-        bindings.CVec_EventZ_free(events);
+        byte[] chan_id = ((Event.FundingGenerationReady)events[0]).temporary_channel_id;
 
         Transaction funding = new Transaction(NetworkParameters.fromID(NetworkParameters.ID_MAINNET));
         funding.addInput(new TransactionInput(NetworkParameters.fromID(NetworkParameters.ID_MAINNET), funding, new byte[0]));
@@ -233,11 +235,10 @@ public class HumanObjectPeerTest {
         peer2.peer_manager.process_events();
         while (!list.isEmpty()) { list.poll().join(); }
 
-        events = bindings.EventsProvider_get_and_clear_pending_events(peer1.chan_manager_events._test_only_get_ptr());
+        events = peer1.chan_manager_events.get_and_clear_pending_events();
         assert events.length == 1;
-        event = bindings.LDKEvent_ref_from_ptr(events[0]);
-        assert event instanceof bindings.LDKEvent.FundingBroadcastSafe;
-        bindings.CVec_EventZ_free(events);
+        assert events[0] instanceof Event.FundingBroadcastSafe;
+        assert ((Event.FundingBroadcastSafe)events[0]).user_channel_id == 42;
 
         Block b = new Block(NetworkParameters.fromID(NetworkParameters.ID_MAINNET), 2, Sha256Hash.ZERO_HASH, Sha256Hash.ZERO_HASH, 42, 0, 0, Arrays.asList(new Transaction[]{funding}));
         peer1.connect_block(b, funding, 1);
@@ -266,12 +267,9 @@ public class HumanObjectPeerTest {
         byte[] payment_preimage = new byte[32];
         for (int i = 0; i < 32; i++) payment_preimage[i] = (byte) (i ^ 0x0f);
         byte[] payment_hash = Sha256Hash.hash(payment_preimage);
-        long route = peer1.get_route(peer2.node_id, peer1_chans);
-        assert bindings.LDKCResult_RouteLightningErrorZ_result_ok(route);
-        long payment_res = bindings.ChannelManager_send_payment(peer1.chan_manager._test_only_get_ptr(), bindings.LDKCResult_RouteLightningErrorZ_get_ok(route), payment_hash, new byte[32]);
-        bindings.CResult_RouteLightningErrorZ_free(route);
-        assert bindings.LDKCResult_NonePaymentSendFailureZ_result_ok(payment_res);
-        bindings.CResult_NonePaymentSendFailureZ_free(payment_res);
+        Route route = peer1.get_route(peer2.node_id, peer1_chans);
+        Result_NonePaymentSendFailureZ payment_res = peer1.chan_manager.send_payment(route, payment_hash, new byte[32]);
+        assert payment_res instanceof Result_NonePaymentSendFailureZ.Result_NonePaymentSendFailureZ_OK;
 
         peer1.peer_manager.process_events();
         while (!list.isEmpty()) { list.poll().join(); }