@@ -141,4 +141,61 @@ mod tests {
141141 cfg. set_batch_count ( 4 ) ;
142142 assert_eq ! ( cfg. underlying_buffer_size( ) , 1024 * 4 ) ;
143143 }
144+
145+ #[ test]
146+ fn underlying_buffer_size_caps_the_batch_used_as_floor ( ) {
147+ let mut cfg = LimitedUdpRelayConfig :: default ( ) ;
148+ cfg. set_underlying_buffer_size ( 0 ) ;
149+ cfg. set_packet_size ( 1024 ) ;
150+ cfg. set_batch_count ( 1024 ) ;
151+ assert_eq ! (
152+ cfg. underlying_buffer_size( ) ,
153+ 1024 * DEFAULT_UDP_RELAY_BATCH_COUNT
154+ ) ;
155+ }
156+
157+ #[ test]
158+ fn underlying_buffer_size_keeps_the_larger_explicit_value ( ) {
159+ let mut cfg = LimitedUdpRelayConfig :: default ( ) ;
160+ cfg. set_packet_size ( MINIMUM_UDP_PACKET_SIZE ) ;
161+ cfg. set_batch_count ( 1 ) ;
162+ cfg. set_underlying_buffer_size ( 1 << 20 ) ;
163+ assert_eq ! ( cfg. underlying_buffer_size( ) , 1 << 20 ) ;
164+ }
165+
166+ #[ test]
167+ fn underlying_buffer_size_with_zero_batch_falls_back_to_explicit_value ( ) {
168+ let mut cfg = LimitedUdpRelayConfig :: default ( ) ;
169+ cfg. set_batch_count ( 0 ) ;
170+ cfg. set_underlying_buffer_size ( 64 ) ;
171+ assert_eq ! ( cfg. underlying_buffer_size( ) , 64 ) ;
172+ }
173+
174+ #[ test]
175+ fn set_packet_size_accepts_the_exact_bounds ( ) {
176+ let mut cfg = LimitedUdpRelayConfig :: default ( ) ;
177+ cfg. set_packet_size ( MINIMUM_UDP_PACKET_SIZE ) ;
178+ assert_eq ! ( cfg. packet_size( ) , MINIMUM_UDP_PACKET_SIZE ) ;
179+ cfg. set_packet_size ( MAXIMUM_UDP_PACKET_SIZE ) ;
180+ assert_eq ! ( cfg. packet_size( ) , MAXIMUM_UDP_PACKET_SIZE ) ;
181+ }
182+
183+ #[ test]
184+ fn set_yield_count_accepts_the_exact_minimum ( ) {
185+ let mut cfg = LimitedUdpRelayConfig :: default ( ) ;
186+ cfg. set_yield_count ( MINIMUM_UDP_RELAY_YIELD_COUNT ) ;
187+ assert_eq ! ( cfg. yield_count, MINIMUM_UDP_RELAY_YIELD_COUNT ) ;
188+ cfg. set_yield_count ( 0 ) ;
189+ assert_eq ! ( cfg. yield_count, MINIMUM_UDP_RELAY_YIELD_COUNT ) ;
190+ }
191+
192+ #[ test]
193+ fn config_copy_keeps_the_source_unchanged ( ) {
194+ let mut cfg = LimitedUdpRelayConfig :: default ( ) ;
195+ cfg. set_packet_size ( 1200 ) ;
196+ let copied = cfg;
197+ cfg. set_packet_size ( 1300 ) ;
198+ assert_eq ! ( copied. packet_size( ) , 1200 ) ;
199+ assert_ne ! ( copied, cfg) ;
200+ }
144201}
0 commit comments