Skip to content

Commit c5d730b

Browse files
author
Antoine Riard
committed
Add bolt1 msgs serialization tests
1 parent a6cd7de commit c5d730b

File tree

1 file changed

+69
-1
lines changed

1 file changed

+69
-1
lines changed

src/ln/msgs.rs

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1392,7 +1392,7 @@ impl_writeable_len_match!(NodeAnnouncement, {
13921392
mod tests {
13931393
use hex;
13941394
use ln::msgs;
1395-
use ln::msgs::{GlobalFeatures, OptionalField, OnionErrorPacket};
1395+
use ln::msgs::{GlobalFeatures, LocalFeatures, OptionalField, OnionErrorPacket};
13961396
use ln::channelmanager::{PaymentPreimage, PaymentHash};
13971397
use util::ser::Writeable;
13981398

@@ -1997,4 +1997,72 @@ mod tests {
19971997
let target_value = hex::decode("0202020202020202020202020202020202020202020202020202020202020202013413a7").unwrap();
19981998
assert_eq!(encoded_value, target_value);
19991999
}
2000+
2001+
fn do_encoding_init(unknown_global_bits: bool, initial_routing_sync: bool) {
2002+
let mut global = GlobalFeatures::new();
2003+
if unknown_global_bits {
2004+
global.flags = vec![0xFF, 0xFF];
2005+
}
2006+
let mut local = LocalFeatures::new();
2007+
if initial_routing_sync {
2008+
local.set_initial_routing_sync();
2009+
}
2010+
let init = msgs::Init {
2011+
global_features: global,
2012+
local_features: local,
2013+
};
2014+
let encoded_value = init.encode();
2015+
let mut target_value = Vec::new();
2016+
if unknown_global_bits {
2017+
target_value.append(&mut hex::decode("0002ffff").unwrap());
2018+
} else {
2019+
target_value.append(&mut hex::decode("0000").unwrap());
2020+
}
2021+
if initial_routing_sync {
2022+
target_value.append(&mut hex::decode("000108").unwrap());
2023+
} else {
2024+
target_value.append(&mut hex::decode("0000").unwrap());
2025+
}
2026+
assert_eq!(encoded_value, target_value);
2027+
}
2028+
2029+
#[test]
2030+
fn encoding_init() {
2031+
do_encoding_init(false, false);
2032+
do_encoding_init(true, false);
2033+
do_encoding_init(false, true);
2034+
do_encoding_init(true, true);
2035+
}
2036+
2037+
#[test]
2038+
fn encoding_error() {
2039+
let error = msgs::ErrorMessage {
2040+
channel_id: [2; 32],
2041+
data: String::from("rust-lightning"),
2042+
};
2043+
let encoded_value = error.encode();
2044+
let target_value = hex::decode("0202020202020202020202020202020202020202020202020202020202020202000e727573742d6c696768746e696e67").unwrap();
2045+
assert_eq!(encoded_value, target_value);
2046+
}
2047+
2048+
#[test]
2049+
fn encoding_ping() {
2050+
let ping = msgs::Ping {
2051+
ponglen: 64,
2052+
byteslen: 64
2053+
};
2054+
let encoded_value = ping.encode();
2055+
let target_value = hex::decode("0040004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000").unwrap();
2056+
assert_eq!(encoded_value, target_value);
2057+
}
2058+
2059+
#[test]
2060+
fn encoding_pong() {
2061+
let pong = msgs::Pong {
2062+
byteslen: 64
2063+
};
2064+
let encoded_value = pong.encode();
2065+
let target_value = hex::decode("004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000").unwrap();
2066+
assert_eq!(encoded_value, target_value);
2067+
}
20002068
}

0 commit comments

Comments
 (0)