@@ -35,3 +35,76 @@ impl Default for NetworkConfig {
3535fn default_listen_addr ( ) -> String {
3636 DEFAULT_LISTEN_ADDR . to_string ( )
3737}
38+
39+ #[ cfg( test) ]
40+ mod tests {
41+ use super :: * ;
42+
43+ #[ test]
44+ fn test_default_network_config ( ) {
45+ let config = NetworkConfig :: default ( ) ;
46+ assert_eq ! ( config. listen_addr, DEFAULT_LISTEN_ADDR ) ;
47+ assert ! ( config. dialable_addr. is_none( ) ) ;
48+ assert ! ( config. bootstrap_peers. is_empty( ) ) ;
49+ }
50+
51+ #[ test]
52+ fn test_network_config_serde_roundtrip ( ) {
53+ let config = NetworkConfig {
54+ listen_addr : "127.0.0.1:9000" . to_string ( ) ,
55+ dialable_addr : Some ( "1.2.3.4:9000" . to_string ( ) ) ,
56+ bootstrap_peers : vec ! [ "peer1:30303" . to_string( ) ] ,
57+ } ;
58+ let serialized = serde_json:: to_string ( & config) . expect ( "serialize" ) ;
59+ let deserialized: NetworkConfig = serde_json:: from_str ( & serialized) . expect ( "deserialize" ) ;
60+ assert_eq ! ( config, deserialized) ;
61+ }
62+
63+ #[ test]
64+ fn test_network_config_toml_roundtrip ( ) {
65+ let config = NetworkConfig {
66+ listen_addr : "0.0.0.0:8080" . to_string ( ) ,
67+ dialable_addr : None ,
68+ bootstrap_peers : vec ! [ "node1.example.com:30303" . to_string( ) ] ,
69+ } ;
70+ let serialized = toml:: to_string ( & config) . expect ( "serialize toml" ) ;
71+ let deserialized: NetworkConfig = toml:: from_str ( & serialized) . expect ( "deserialize toml" ) ;
72+ assert_eq ! ( config, deserialized) ;
73+ }
74+
75+ #[ test]
76+ fn test_network_config_serde_defaults ( ) {
77+ let config: NetworkConfig = serde_json:: from_str ( "{}" ) . expect ( "deserialize" ) ;
78+ assert_eq ! ( config. listen_addr, DEFAULT_LISTEN_ADDR ) ;
79+ assert ! ( config. dialable_addr. is_none( ) ) ;
80+ assert ! ( config. bootstrap_peers. is_empty( ) ) ;
81+ }
82+
83+ #[ test]
84+ fn test_network_config_dialable_addr_skip_serializing_when_none ( ) {
85+ let config = NetworkConfig :: default ( ) ;
86+ let serialized = serde_json:: to_string ( & config) . expect ( "serialize" ) ;
87+ assert ! ( !serialized. contains( "dialable_addr" ) ) ;
88+ }
89+
90+ #[ test]
91+ fn test_network_config_dialable_addr_serialized_when_some ( ) {
92+ let config = NetworkConfig {
93+ dialable_addr : Some ( "1.2.3.4:30303" . to_string ( ) ) ,
94+ ..Default :: default ( )
95+ } ;
96+ let serialized = serde_json:: to_string ( & config) . expect ( "serialize" ) ;
97+ assert ! ( serialized. contains( "dialable_addr" ) ) ;
98+ }
99+
100+ #[ test]
101+ fn test_network_config_clone_and_eq ( ) {
102+ let config = NetworkConfig {
103+ listen_addr : "10.0.0.1:5555" . to_string ( ) ,
104+ dialable_addr : Some ( "external.host:5555" . to_string ( ) ) ,
105+ bootstrap_peers : vec ! [ "a" . to_string( ) ] ,
106+ } ;
107+ assert_eq ! ( config, config. clone( ) ) ;
108+ assert_ne ! ( config, NetworkConfig :: default ( ) ) ;
109+ }
110+ }
0 commit comments