@@ -342,6 +342,7 @@ where
342342
343343#[ cfg( test) ]
344344mod tests {
345+ use super :: ViewError ;
345346 use crate :: Bytes ;
346347 use crate :: View ;
347348
@@ -376,4 +377,68 @@ mod tests {
376377 let view_value = view. as_ref ( ) ;
377378 assert_eq ! ( & value, view_value) ;
378379 }
380+
381+ #[ test]
382+ fn view_prefix_split ( ) {
383+ let mut bytes = Bytes :: from_source ( vec ! [ 1u8 , 2 , 3 , 4 ] ) ;
384+ let view = bytes. view_prefix :: < [ u8 ; 2 ] > ( ) . unwrap ( ) ;
385+ assert_eq ! ( * view, [ 1u8 , 2 ] ) ;
386+ assert_eq ! ( & bytes[ ..] , [ 3u8 , 4 ] . as_slice( ) ) ;
387+ }
388+
389+ #[ test]
390+ fn view_prefix_with_elems_split ( ) {
391+ let mut bytes = Bytes :: from_source ( vec ! [ 10u8 , 11 , 12 , 13 ] ) ;
392+ let view = bytes. view_prefix_with_elems :: < [ u8 ] > ( 2 ) . unwrap ( ) ;
393+ assert_eq ! ( view. as_ref( ) , [ 10u8 , 11 ] . as_slice( ) ) ;
394+ assert_eq ! ( & bytes[ ..] , [ 12u8 , 13 ] . as_slice( ) ) ;
395+ }
396+
397+ #[ test]
398+ fn view_suffix_split ( ) {
399+ let mut bytes = Bytes :: from_source ( vec ! [ 5u8 , 6 , 7 , 8 ] ) ;
400+ let view = bytes. view_suffix :: < [ u8 ; 2 ] > ( ) . unwrap ( ) ;
401+ assert_eq ! ( * view, [ 7u8 , 8 ] ) ;
402+ assert_eq ! ( & bytes[ ..] , [ 5u8 , 6 ] . as_slice( ) ) ;
403+ }
404+
405+ #[ test]
406+ fn view_suffix_with_elems_split ( ) {
407+ let mut bytes = Bytes :: from_source ( vec ! [ 20u8 , 21 , 22 , 23 ] ) ;
408+ let view = bytes. view_suffix_with_elems :: < [ u8 ] > ( 2 ) . unwrap ( ) ;
409+ assert_eq ! ( view. as_ref( ) , [ 22u8 , 23 ] . as_slice( ) ) ;
410+ assert_eq ! ( & bytes[ ..] , [ 20u8 , 21 ] . as_slice( ) ) ;
411+ }
412+
413+ #[ test]
414+ fn view_prefix_size_error ( ) {
415+ let mut bytes = Bytes :: from_source ( vec ! [ 1u8 , 2 , 3 ] ) ;
416+ let res = bytes. view_prefix :: < [ u8 ; 4 ] > ( ) ;
417+ assert ! ( matches!( res, Err ( ViewError :: Size ( _) ) ) ) ;
418+ assert_eq ! ( & bytes[ ..] , [ 1u8 , 2 , 3 ] . as_slice( ) ) ;
419+ }
420+
421+ #[ test]
422+ fn view_prefix_with_elems_size_error ( ) {
423+ let mut bytes = Bytes :: from_source ( vec ! [ 1u8 , 2 , 3 ] ) ;
424+ let res = bytes. view_prefix_with_elems :: < [ u8 ] > ( 4 ) ;
425+ assert ! ( matches!( res, Err ( ViewError :: Size ( _) ) ) ) ;
426+ assert_eq ! ( & bytes[ ..] , [ 1u8 , 2 , 3 ] . as_slice( ) ) ;
427+ }
428+
429+ #[ test]
430+ fn view_suffix_size_error ( ) {
431+ let mut bytes = Bytes :: from_source ( vec ! [ 1u8 , 2 , 3 ] ) ;
432+ let res = bytes. view_suffix :: < [ u8 ; 4 ] > ( ) ;
433+ assert ! ( matches!( res, Err ( ViewError :: Size ( _) ) ) ) ;
434+ assert_eq ! ( & bytes[ ..] , [ 1u8 , 2 , 3 ] . as_slice( ) ) ;
435+ }
436+
437+ #[ test]
438+ fn view_suffix_with_elems_size_error ( ) {
439+ let mut bytes = Bytes :: from_source ( vec ! [ 1u8 , 2 , 3 ] ) ;
440+ let res = bytes. view_suffix_with_elems :: < [ u8 ] > ( 4 ) ;
441+ assert ! ( matches!( res, Err ( ViewError :: Size ( _) ) ) ) ;
442+ assert_eq ! ( & bytes[ ..] , [ 1u8 , 2 , 3 ] . as_slice( ) ) ;
443+ }
379444}
0 commit comments