[TS] Be more aggressive with type checks
[ldk-java] / ts / test / tests.mts
index 534bee5539afabbff5bc4979acd32c15576ccd89..db0fe326618841a51b77104421565428272a66a1 100644 (file)
@@ -3,18 +3,21 @@ import * as ldk from "../index.mjs";
 
 const tests: Array<Function> = [];
 
+function assert(val: boolean) {
+       if (!val) throw new Error("Assertion failed");
+}
 function array_eq(a: Uint8Array, b: Uint8Array): boolean {
        return a.length == b.length && a.every((v, idx) => v == b[idx]);
 }
 
 tests.push(async () => {
        const result = rawldk.CResult_boolLightningErrorZ_ok(true);
-       console.assert(rawldk.CResult_boolLightningErrorZ_is_ok(result));
-       console.assert(rawldk.CResult_boolLightningErrorZ_get_ok(result));
+       assert(rawldk.CResult_boolLightningErrorZ_is_ok(result));
+       assert(rawldk.CResult_boolLightningErrorZ_get_ok(result));
        rawldk.CResult_boolLightningErrorZ_free(result);
        const second_res = rawldk.CResult_boolLightningErrorZ_ok(false);
-       console.assert(rawldk.CResult_boolLightningErrorZ_is_ok(second_res));
-       console.assert(!rawldk.CResult_boolLightningErrorZ_get_ok(second_res));
+       assert(rawldk.CResult_boolLightningErrorZ_is_ok(second_res));
+       assert(!rawldk.CResult_boolLightningErrorZ_get_ok(second_res));
        rawldk.CResult_boolLightningErrorZ_free(second_res);
 
        return true;
@@ -66,12 +69,12 @@ class Node {
 }
 function get_chanman(): Node {
        const fee_est = ldk.FeeEstimator.new_impl({
-               get_est_sat_per_1000_weight(confirmation_target: ldk.ConfirmationTarget): number {
+               get_est_sat_per_1000_weight(_confirmation_target: ldk.ConfirmationTarget): number {
                        return 253;
                }
        } as ldk.FeeEstimatorInterface);
-       var tx_broadcaster;
-       const tx_broadcasted: Promise<Uint8Array> = new Promise((resolve, reject) => {
+       var tx_broadcaster: ldk.BroadcasterInterface;
+       const tx_broadcasted: Promise<Uint8Array> = new Promise((resolve, _reject) => {
                tx_broadcaster = ldk.BroadcasterInterface.new_impl({
                        broadcast_transaction(tx: Uint8Array): void { console.log("Tx Broadcast: " + tx); resolve(tx); }
                } as ldk.BroadcasterInterfaceInterface);
@@ -83,15 +86,15 @@ function get_chanman(): Node {
        } as ldk.LoggerInterface);
 
        const persister = ldk.Persist.new_impl({
-               persist_new_channel(channel_id: ldk.OutPoint, data: ldk.ChannelMonitor, update_id: ldk.MonitorUpdateId): ldk.ChannelMonitorUpdateStatus {
+               persist_new_channel(_channel_id: ldk.OutPoint, _data: ldk.ChannelMonitor, _update_id: ldk.MonitorUpdateId): ldk.ChannelMonitorUpdateStatus {
                        return ldk.ChannelMonitorUpdateStatus.LDKChannelMonitorUpdateStatus_Completed;
                },
-               update_persisted_channel(channel_id: ldk.OutPoint, update: ldk.ChannelMonitorUpdate, data: ldk.ChannelMonitor, update_id: ldk.MonitorUpdateId): ldk.ChannelMonitorUpdateStatus {
+               update_persisted_channel(_channel_id: ldk.OutPoint, _update: ldk.ChannelMonitorUpdate, _data: ldk.ChannelMonitor, _update_id: ldk.MonitorUpdateId): ldk.ChannelMonitorUpdateStatus {
                        return ldk.ChannelMonitorUpdateStatus.LDKChannelMonitorUpdateStatus_Completed;
                }
        } as ldk.PersistInterface);
 
-       const chain_monitor = ldk.ChainMonitor.constructor_new(ldk.Option_FilterZ.constructor_none(), tx_broadcaster, logger, fee_est, persister);
+       const chain_monitor = ldk.ChainMonitor.constructor_new(ldk.Option_FilterZ.constructor_none(), tx_broadcaster!, logger, fee_est, persister);
        const chain_watch: ldk.Watch = chain_monitor.as_Watch();
 
        const seed = new Uint8Array(32);
@@ -102,7 +105,7 @@ function get_chanman(): Node {
        const config = ldk.UserConfig.constructor_default();
        const params = ldk.ChainParameters.constructor_new(ldk.Network.LDKNetwork_Testnet, ldk.BestBlock.constructor_from_genesis(ldk.Network.LDKNetwork_Testnet));
 
-       const chan_man = ldk.ChannelManager.constructor_new(fee_est, chain_watch, tx_broadcaster, logger, keys_interface, config, params);
+       const chan_man = ldk.ChannelManager.constructor_new(fee_est, chain_watch, tx_broadcaster!, logger, keys_interface, config, params);
        return new Node(chan_man, tx_broadcasted, logger, keys_interface);
 }
 
@@ -160,8 +163,8 @@ function get_event(chan_man: ldk.ChannelManager): ldk.Event {
        } as ldk.EventHandlerInterface);
 
        chan_man.as_EventsProvider().process_pending_events(event_handler);
-       console.assert(events.length == 1);
-       return events[0];
+       assert(events.length == 1);
+       return events[0]!;
 }
 
 tests.push(async () => {
@@ -224,11 +227,12 @@ tests.push(async () => {
        var sock_b: ldk.SocketDescriptor;
        const sock_a = ldk.SocketDescriptor.new_impl({
                send_data(data: Uint8Array, resume_read: boolean): number {
-                       console.assert(pm_b.read_event(sock_b, data) instanceof ldk.Result_boolPeerHandleErrorZ_OK);
+                       assert(pm_b.read_event(sock_b, data) instanceof ldk.Result_boolPeerHandleErrorZ_OK);
+                       assert(resume_read);
                        return data.length;
                },
                disconnect_socket(): void {
-                       console.assert(false);
+                       assert(false);
                },
                eq(other: ldk.SocketDescriptor): boolean {
                        return other.hash() == this.hash();
@@ -239,11 +243,12 @@ tests.push(async () => {
        } as ldk.SocketDescriptorInterface);
        sock_b = ldk.SocketDescriptor.new_impl({
                send_data(data: Uint8Array, resume_read: boolean): number {
-                       console.assert(pm_a.read_event(sock_a, data) instanceof ldk.Result_boolPeerHandleErrorZ_OK);
+                       assert(pm_a.read_event(sock_a, data) instanceof ldk.Result_boolPeerHandleErrorZ_OK);
+                       assert(resume_read);
                        return data.length;
                },
                disconnect_socket(): void {
-                       console.assert(false);
+                       assert(false);
                },
                eq(other: ldk.SocketDescriptor): boolean {
                        return other.hash() == this.hash();
@@ -261,20 +266,20 @@ tests.push(async () => {
        if (update_done) return false;
 
        const v4_netaddr = ldk.NetAddress.constructor_ipv4(Uint8Array.from([42,0,42,1]), 9735);
-       console.assert(pm_b.new_inbound_connection(sock_b, ldk.Option_NetAddressZ.constructor_some(v4_netaddr)) instanceof ldk.Result_NonePeerHandleErrorZ_OK);
+       assert(pm_b.new_inbound_connection(sock_b, ldk.Option_NetAddressZ.constructor_some(v4_netaddr)) instanceof ldk.Result_NonePeerHandleErrorZ_OK);
        const init_bytes = pm_a.new_outbound_connection(b.node_id, sock_a, ldk.Option_NetAddressZ.constructor_none());
        if (!(init_bytes instanceof ldk.Result_CVec_u8ZPeerHandleErrorZ_OK)) return false;
-       console.assert(pm_b.read_event(sock_b, init_bytes.res) instanceof ldk.Result_boolPeerHandleErrorZ_OK);
+       assert(pm_b.read_event(sock_b, init_bytes.res) instanceof ldk.Result_boolPeerHandleErrorZ_OK);
 
-       console.assert(pm_a.get_peer_node_ids().length == 0);
-       console.assert(pm_b.get_peer_node_ids().length == 0);
+       assert(pm_a.get_peer_node_ids().length == 0);
+       assert(pm_b.get_peer_node_ids().length == 0);
 
        pm_b.process_events();
        pm_a.process_events();
        pm_b.process_events();
 
-       console.assert(pm_a.get_peer_node_ids().length == 1);
-       console.assert(pm_b.get_peer_node_ids().length == 1);
+       assert(pm_a.get_peer_node_ids().length == 1);
+       assert(pm_b.get_peer_node_ids().length == 1);
 
        const chan_create_res = a.chan_man.create_channel(b.node_id, BigInt(1000000), BigInt(400), BigInt(0), ldk.UserConfig.constructor_default());
        if (!chan_create_res.is_ok()) return false;
@@ -299,16 +304,16 @@ tests.push(async () => {
        var a_handled_msg = false;
        const om_handler_a = ldk.CustomOnionMessageHandler.new_impl({
                read_custom_message(message_type: bigint, buffer: Uint8Array): ldk.Result_COption_CustomOnionMessageContentsZDecodeErrorZ {
-                       console.assert(message_type == 4343n);
-                       console.assert(buffer.length == 44);
-                       for (var i = 0; i < 44; i++) console.assert(buffer[i] == 67);
+                       assert(message_type == 4343n);
+                       assert(buffer.length == 44);
+                       for (var i = 0; i < 44; i++) assert(buffer[i] == 67);
                        return ldk.Result_COption_CustomOnionMessageContentsZDecodeErrorZ.constructor_ok(ldk.Option_CustomOnionMessageContentsZ.constructor_some(ldk.CustomOnionMessageContents.new_impl({
                                tlv_type(): bigint { return 9998n; },
-                               write(): Uint8Array { console.assert(false); return null; }
+                               write(): Uint8Array { throw new Error(); }
                        } as ldk.CustomOnionMessageContentsInterface)));
                },
                handle_custom_message(msg: ldk.CustomOnionMessageContents) {
-                       console.assert(msg.tlv_type() == 9998n);
+                       assert(msg.tlv_type() == 9998n);
                        a_handled_msg = true;
                },
        } as ldk.CustomOnionMessageHandlerInterface);
@@ -340,16 +345,16 @@ tests.push(async () => {
        var b_handled_msg = false;
        const om_handler_b = ldk.CustomOnionMessageHandler.new_impl({
                read_custom_message(message_type: bigint, buffer: Uint8Array): ldk.Result_COption_CustomOnionMessageContentsZDecodeErrorZ {
-                       console.assert(message_type == 4242n);
-                       console.assert(buffer.length == 43);
-                       for (var i = 0; i < 43; i++) console.assert(buffer[i] == 66);
+                       assert(message_type == 4242n);
+                       assert(buffer.length == 43);
+                       for (var i = 0; i < 43; i++) assert(buffer[i] == 66);
                        return ldk.Result_COption_CustomOnionMessageContentsZDecodeErrorZ.constructor_ok(ldk.Option_CustomOnionMessageContentsZ.constructor_some(ldk.CustomOnionMessageContents.new_impl({
                                tlv_type(): bigint { return 9999n; },
-                               write(): Uint8Array { console.assert(false); return null; }
+                               write(): Uint8Array { throw new Error(); }
                        } as ldk.CustomOnionMessageContentsInterface)));
                },
                handle_custom_message(msg: ldk.CustomOnionMessageContents) {
-                       console.assert(msg.tlv_type() == 9999n);
+                       assert(msg.tlv_type() == 9999n);
                        b_handled_msg = true;
                },
        } as ldk.CustomOnionMessageHandlerInterface);
@@ -361,11 +366,12 @@ tests.push(async () => {
        var sock_b: ldk.SocketDescriptor;
        const sock_a = ldk.SocketDescriptor.new_impl({
                send_data(data: Uint8Array, resume_read: boolean): number {
-                       console.assert(pm_b.read_event(sock_b, data) instanceof ldk.Result_boolPeerHandleErrorZ_OK);
+                       assert(pm_b.read_event(sock_b, data) instanceof ldk.Result_boolPeerHandleErrorZ_OK);
+                       assert(resume_read);
                        return data.length;
                },
                disconnect_socket(): void {
-                       console.assert(false);
+                       assert(false);
                },
                eq(other: ldk.SocketDescriptor): boolean {
                        return other.hash() == this.hash();
@@ -376,11 +382,12 @@ tests.push(async () => {
        } as ldk.SocketDescriptorInterface);
        sock_b = ldk.SocketDescriptor.new_impl({
                send_data(data: Uint8Array, resume_read: boolean): number {
-                       console.assert(pm_a.read_event(sock_a, data) instanceof ldk.Result_boolPeerHandleErrorZ_OK);
+                       assert(pm_a.read_event(sock_a, data) instanceof ldk.Result_boolPeerHandleErrorZ_OK);
+                       assert(resume_read);
                        return data.length;
                },
                disconnect_socket(): void {
-                       console.assert(false);
+                       assert(false);
                },
                eq(other: ldk.SocketDescriptor): boolean {
                        return other.hash() == this.hash();
@@ -391,20 +398,20 @@ tests.push(async () => {
        } as ldk.SocketDescriptorInterface);
 
        const v4_netaddr = ldk.NetAddress.constructor_ipv4(Uint8Array.from([42,0,42,1]), 9735);
-       console.assert(pm_b.new_inbound_connection(sock_b, ldk.Option_NetAddressZ.constructor_some(v4_netaddr)) instanceof ldk.Result_NonePeerHandleErrorZ_OK);
+       assert(pm_b.new_inbound_connection(sock_b, ldk.Option_NetAddressZ.constructor_some(v4_netaddr)) instanceof ldk.Result_NonePeerHandleErrorZ_OK);
        const init_bytes = pm_a.new_outbound_connection(b.node_id, sock_a, ldk.Option_NetAddressZ.constructor_none());
        if (!(init_bytes instanceof ldk.Result_CVec_u8ZPeerHandleErrorZ_OK)) return false;
-       console.assert(pm_b.read_event(sock_b, init_bytes.res) instanceof ldk.Result_boolPeerHandleErrorZ_OK);
+       assert(pm_b.read_event(sock_b, init_bytes.res) instanceof ldk.Result_boolPeerHandleErrorZ_OK);
 
-       console.assert(pm_a.get_peer_node_ids().length == 0);
-       console.assert(pm_b.get_peer_node_ids().length == 0);
+       assert(pm_a.get_peer_node_ids().length == 0);
+       assert(pm_b.get_peer_node_ids().length == 0);
 
        pm_b.process_events();
        pm_a.process_events();
        pm_b.process_events();
 
-       console.assert(pm_a.get_peer_node_ids().length == 1);
-       console.assert(pm_b.get_peer_node_ids().length == 1);
+       assert(pm_a.get_peer_node_ids().length == 1);
+       assert(pm_b.get_peer_node_ids().length == 1);
 
        underlying_om_a.send_custom_onion_message([], ldk.Destination.constructor_node(b.node_id), ldk.CustomOnionMessageContents.new_impl({
                        tlv_type(): bigint { return 4242n; },
@@ -415,7 +422,7 @@ tests.push(async () => {
                        }
                } as ldk.CustomOnionMessageContentsInterface), null);
        pm_a.process_events();
-       console.assert(b_handled_msg);
+       assert(b_handled_msg);
 
        om_b.send_custom_onion_message([], ldk.Destination.constructor_node(a.node_id), ldk.CustomOnionMessageContents.new_impl({
                        tlv_type(): bigint { return 4343n; },
@@ -426,7 +433,7 @@ tests.push(async () => {
                        }
                } as ldk.CustomOnionMessageContentsInterface), null);
        pm_b.process_events();
-       console.assert(a_handled_msg);
+       assert(a_handled_msg);
 
        return true;
 });
@@ -460,7 +467,7 @@ async function run_tests(check_leaks: boolean) {
        console.log("all tests passed: " + result);
        if (result !== true || !check_leaks) { return result; }
 
-       const allocs_finished = new Promise((resolve, reject) => {
+       const allocs_finished = new Promise((resolve, _reject) => {
                var loop_count = 0;
                const interval_id = setInterval(() => {
                        const alloc_count = rawldk.getRemainingAllocationCount();