@@ -278,3 +278,173 @@ impl<'a, T: AsRef<[u8]> + ?Sized> Parseable<NlaBuffer<&'a T>> for Options {
278278 } )
279279 }
280280}
281+
282+ #[ cfg( test) ]
283+ mod test {
284+ use super :: * ;
285+ use netlink_packet_utils:: Emitable ;
286+
287+ #[ test]
288+ fn parse_back_version_zero ( ) {
289+ let example = Version :: new ( 0 ) ;
290+ let mut buffer = vec ! [ 0 ; example. buffer_len( ) ] ;
291+ example. emit ( & mut buffer) ;
292+ let parsed =
293+ Version :: parse ( & NlaBuffer :: new_checked ( & buffer) . unwrap ( ) ) . unwrap ( ) ;
294+ assert_eq ! ( example, parsed) ;
295+ }
296+
297+ #[ test]
298+ fn parse_back_version_example ( ) {
299+ let example = Version :: new ( 0x12 ) ;
300+ let mut buffer = vec ! [ 0 ; example. buffer_len( ) ] ;
301+ example. emit ( & mut buffer) ;
302+ let parsed =
303+ Version :: parse ( & NlaBuffer :: new_checked ( & buffer) . unwrap ( ) ) . unwrap ( ) ;
304+ assert_eq ! ( example, parsed) ;
305+ }
306+
307+ #[ test]
308+ fn parse_back_index_zero ( ) {
309+ let example = Index :: new ( 0 ) ;
310+ let mut buffer = vec ! [ 0 ; example. buffer_len( ) ] ;
311+ example. emit ( & mut buffer) ;
312+ let parsed =
313+ Index :: parse ( & NlaBuffer :: new_checked ( & buffer) . unwrap ( ) ) . unwrap ( ) ;
314+ assert_eq ! ( example, parsed) ;
315+ }
316+
317+ #[ test]
318+ fn parse_back_index_example ( ) {
319+ let example = Index :: new ( 0x12345678 ) ;
320+ let mut buffer = vec ! [ 0 ; example. buffer_len( ) ] ;
321+ example. emit ( & mut buffer) ;
322+ let parsed =
323+ Index :: parse ( & NlaBuffer :: new_checked ( & buffer) . unwrap ( ) ) . unwrap ( ) ;
324+ assert_eq ! ( example, parsed) ;
325+ }
326+
327+ #[ test]
328+ fn parse_back_direction_ingress ( ) {
329+ let example = Direction :: Ingress ;
330+ let mut buffer = vec ! [ 0 ; example. buffer_len( ) ] ;
331+ example. emit ( & mut buffer) ;
332+ let parsed =
333+ Direction :: parse ( & NlaBuffer :: new_checked ( & buffer) . unwrap ( ) )
334+ . unwrap ( ) ;
335+ assert_eq ! ( example, parsed) ;
336+ }
337+
338+ #[ test]
339+ fn parse_back_direction_egress ( ) {
340+ let example = Direction :: Egress ;
341+ let mut buffer = vec ! [ 0 ; example. buffer_len( ) ] ;
342+ example. emit ( & mut buffer) ;
343+ let parsed =
344+ Direction :: parse ( & NlaBuffer :: new_checked ( & buffer) . unwrap ( ) )
345+ . unwrap ( ) ;
346+ assert_eq ! ( example, parsed) ;
347+ }
348+
349+ #[ test]
350+ fn parse_back_hwid_zero ( ) {
351+ let example = ErspanHwid :: new ( 0 ) ;
352+ let mut buffer = vec ! [ 0 ; example. buffer_len( ) ] ;
353+ example. emit ( & mut buffer) ;
354+ let parsed =
355+ ErspanHwid :: parse ( & NlaBuffer :: new_checked ( & buffer) . unwrap ( ) )
356+ . unwrap ( ) ;
357+ assert_eq ! ( example, parsed) ;
358+ }
359+
360+ #[ test]
361+ fn parse_back_hwid_example ( ) {
362+ let example = ErspanHwid :: new ( 0x12 ) ;
363+ let mut buffer = vec ! [ 0 ; example. buffer_len( ) ] ;
364+ example. emit ( & mut buffer) ;
365+ let parsed =
366+ ErspanHwid :: parse ( & NlaBuffer :: new_checked ( & buffer) . unwrap ( ) )
367+ . unwrap ( ) ;
368+ assert_eq ! ( example, parsed) ;
369+ }
370+
371+ #[ test]
372+ fn parse_back_options_version_zero ( ) {
373+ let example = Options :: Version ( Version :: new ( 0 ) ) ;
374+ let mut buffer = vec ! [ 0 ; example. buffer_len( ) ] ;
375+ example. emit ( & mut buffer) ;
376+ let parsed =
377+ Options :: parse ( & NlaBuffer :: new_checked ( & buffer) . unwrap ( ) ) . unwrap ( ) ;
378+ assert_eq ! ( example, parsed) ;
379+ }
380+
381+ #[ test]
382+ fn parse_back_options_version_example ( ) {
383+ let example = Options :: Version ( Version :: new ( 0x12 ) ) ;
384+ let mut buffer = vec ! [ 0 ; example. buffer_len( ) ] ;
385+ example. emit ( & mut buffer) ;
386+ let parsed =
387+ Options :: parse ( & NlaBuffer :: new_checked ( & buffer) . unwrap ( ) ) . unwrap ( ) ;
388+ assert_eq ! ( example, parsed) ;
389+ }
390+
391+ #[ test]
392+ fn parse_back_options_index_zero ( ) {
393+ let example = Options :: Index ( Index :: new ( 0 ) ) ;
394+ let mut buffer = vec ! [ 0 ; example. buffer_len( ) ] ;
395+ example. emit ( & mut buffer) ;
396+ let parsed =
397+ Options :: parse ( & NlaBuffer :: new_checked ( & buffer) . unwrap ( ) ) . unwrap ( ) ;
398+ assert_eq ! ( example, parsed) ;
399+ }
400+
401+ #[ test]
402+ fn parse_back_options_index_example ( ) {
403+ let example = Options :: Index ( Index :: new ( 0x12345678 ) ) ;
404+ let mut buffer = vec ! [ 0 ; example. buffer_len( ) ] ;
405+ example. emit ( & mut buffer) ;
406+ let parsed =
407+ Options :: parse ( & NlaBuffer :: new_checked ( & buffer) . unwrap ( ) ) . unwrap ( ) ;
408+ assert_eq ! ( example, parsed) ;
409+ }
410+
411+ #[ test]
412+ fn parse_back_options_direction_ingress ( ) {
413+ let example = Options :: Direction ( Direction :: Ingress ) ;
414+ let mut buffer = vec ! [ 0 ; example. buffer_len( ) ] ;
415+ example. emit ( & mut buffer) ;
416+ let parsed =
417+ Options :: parse ( & NlaBuffer :: new_checked ( & buffer) . unwrap ( ) ) . unwrap ( ) ;
418+ assert_eq ! ( example, parsed) ;
419+ }
420+
421+ #[ test]
422+ fn parse_back_options_direction_egress ( ) {
423+ let example = Options :: Direction ( Direction :: Egress ) ;
424+ let mut buffer = vec ! [ 0 ; example. buffer_len( ) ] ;
425+ example. emit ( & mut buffer) ;
426+ let parsed =
427+ Options :: parse ( & NlaBuffer :: new_checked ( & buffer) . unwrap ( ) ) . unwrap ( ) ;
428+ assert_eq ! ( example, parsed) ;
429+ }
430+
431+ #[ test]
432+ fn parse_back_options_hwid_zero ( ) {
433+ let example = Options :: Hwid ( ErspanHwid :: new ( 0 ) ) ;
434+ let mut buffer = vec ! [ 0 ; example. buffer_len( ) ] ;
435+ example. emit ( & mut buffer) ;
436+ let parsed =
437+ Options :: parse ( & NlaBuffer :: new_checked ( & buffer) . unwrap ( ) ) . unwrap ( ) ;
438+ assert_eq ! ( example, parsed) ;
439+ }
440+
441+ #[ test]
442+ fn parse_back_options_hwid_example ( ) {
443+ let example = Options :: Hwid ( ErspanHwid :: new ( 0x12 ) ) ;
444+ let mut buffer = vec ! [ 0 ; example. buffer_len( ) ] ;
445+ example. emit ( & mut buffer) ;
446+ let parsed =
447+ Options :: parse ( & NlaBuffer :: new_checked ( & buffer) . unwrap ( ) ) . unwrap ( ) ;
448+ assert_eq ! ( example, parsed) ;
449+ }
450+ }
0 commit comments