@@ -715,3 +715,93 @@ impl_writeable_tlv_based_enum!(ChannelShutdownState,
715
715
( 6 , NegotiatingClosingFee ) => { } ,
716
716
( 8 , ShutdownComplete ) => { } ,
717
717
) ;
718
+
719
+ #[ cfg( test) ]
720
+ mod tests {
721
+ use bitcoin:: { hashes:: Hash as _, secp256k1:: PublicKey } ;
722
+ use lightning_types:: features:: Features ;
723
+ use types:: payment:: PaymentHash ;
724
+
725
+ use crate :: {
726
+ chain:: transaction:: OutPoint ,
727
+ ln:: {
728
+ channel_state:: {
729
+ InboundHTLCDetails , InboundHTLCStateDetails , OutboundHTLCDetails ,
730
+ OutboundHTLCStateDetails ,
731
+ } ,
732
+ types:: ChannelId ,
733
+ } ,
734
+ util:: {
735
+ config:: ChannelConfig ,
736
+ ser:: { Readable , Writeable } ,
737
+ } ,
738
+ } ;
739
+
740
+ use super :: { ChannelCounterparty , ChannelDetails , ChannelShutdownState } ;
741
+
742
+ #[ test]
743
+ fn test_channel_details_serialization ( ) {
744
+ #[ allow( deprecated) ]
745
+ let channel_details = ChannelDetails {
746
+ channel_id : ChannelId :: new_zero ( ) ,
747
+ counterparty : ChannelCounterparty {
748
+ features : Features :: empty ( ) ,
749
+ node_id : PublicKey :: from_slice ( & [ 2 ; 33 ] ) . unwrap ( ) ,
750
+ unspendable_punishment_reserve : 1983 ,
751
+ forwarding_info : None ,
752
+ outbound_htlc_minimum_msat : None ,
753
+ outbound_htlc_maximum_msat : None ,
754
+ } ,
755
+ funding_txo : Some ( OutPoint {
756
+ txid : bitcoin:: Txid :: from_slice ( & [ 0 ; 32 ] ) . unwrap ( ) ,
757
+ index : 1 ,
758
+ } ) ,
759
+ channel_type : None ,
760
+ short_channel_id : None ,
761
+ outbound_scid_alias : None ,
762
+ inbound_scid_alias : None ,
763
+ channel_value_satoshis : 50_100 ,
764
+ user_channel_id : ( u64:: MAX as u128 ) + 1 , // Gets us into the high bytes
765
+ balance_msat : 23_100 ,
766
+ outbound_capacity_msat : 24_300 ,
767
+ next_outbound_htlc_limit_msat : 20_000 ,
768
+ next_outbound_htlc_minimum_msat : 132 ,
769
+ inbound_capacity_msat : 42 ,
770
+ unspendable_punishment_reserve : Some ( 8273 ) ,
771
+ confirmations_required : Some ( 5 ) ,
772
+ confirmations : Some ( 73 ) ,
773
+ force_close_spend_delay : Some ( 10 ) ,
774
+ is_outbound : true ,
775
+ is_channel_ready : false ,
776
+ is_usable : true ,
777
+ is_public : false ,
778
+ inbound_htlc_minimum_msat : Some ( 98 ) ,
779
+ inbound_htlc_maximum_msat : Some ( 983274 ) ,
780
+ config : Some ( ChannelConfig :: default ( ) ) ,
781
+ feerate_sat_per_1000_weight : Some ( 212 ) ,
782
+ channel_shutdown_state : Some ( ChannelShutdownState :: NotShuttingDown ) ,
783
+ pending_inbound_htlcs : vec ! [ InboundHTLCDetails {
784
+ htlc_id: 12 ,
785
+ amount_msat: 333 ,
786
+ cltv_expiry: 127 ,
787
+ payment_hash: PaymentHash ( [ 3 ; 32 ] ) ,
788
+ state: Some ( InboundHTLCStateDetails :: AwaitingRemoteRevokeToAdd ) ,
789
+ is_dust: true ,
790
+ } ] ,
791
+ pending_outbound_htlcs : vec ! [ OutboundHTLCDetails {
792
+ htlc_id: Some ( 81 ) ,
793
+ amount_msat: 5000 ,
794
+ cltv_expiry: 129 ,
795
+ payment_hash: PaymentHash ( [ 4 ; 32 ] ) ,
796
+ state: Some ( OutboundHTLCStateDetails :: AwaitingRemoteRevokeToAdd ) ,
797
+ skimmed_fee_msat: Some ( 42 ) ,
798
+ is_dust: false ,
799
+ } ] ,
800
+ } ;
801
+ let mut buffer = Vec :: new ( ) ;
802
+ channel_details. write ( & mut buffer) . unwrap ( ) ;
803
+ let deser_channel_details = ChannelDetails :: read ( & mut buffer. as_slice ( ) ) . unwrap ( ) ;
804
+
805
+ assert_eq ! ( deser_channel_details, channel_details) ;
806
+ }
807
+ }
0 commit comments