@@ -478,4 +478,60 @@ mod tests {
478
478
let non_existent_file = "/tmp/non_existent_file.txt" ;
479
479
assert ! ( !pathexists( non_existent_file. to_string( ) ) ) ;
480
480
}
481
+ #[ test]
482
+ fn test_new_emulated_file ( ) {
483
+ let filename = "test_file.txt" ;
484
+ let filesize = 1024 ;
485
+
486
+ let emulated_file = EmulatedFile :: new ( filename. to_string ( ) , filesize) . unwrap ( ) ;
487
+
488
+ assert_eq ! ( emulated_file. filename, filename) ;
489
+ assert_eq ! ( emulated_file. filesize, filesize) ;
490
+ assert ! ( emulated_file. fobj. is_some( ) ) ;
491
+ }
492
+
493
+ #[ test]
494
+ fn test_new_metadata_emulated_file ( ) {
495
+ let temp_file = NamedTempFile :: new ( ) . unwrap ( ) ;
496
+ let file_path = temp_file. path ( ) . to_str ( ) . unwrap ( ) . to_string ( ) ;
497
+
498
+ let emulated_file = EmulatedFile :: new_metadata ( file_path. clone ( ) ) . unwrap ( ) ;
499
+
500
+ assert_eq ! ( emulated_file. filename, file_path) ;
501
+ assert ! ( emulated_file. fobj. is_some( ) ) ;
502
+ }
503
+ #[ test]
504
+ fn test_readat_emulated_file ( ) {
505
+ let temp_file = NamedTempFile :: new ( ) . unwrap ( ) ;
506
+ let file_path = temp_file. path ( ) . to_str ( ) . unwrap ( ) . to_string ( ) ;
507
+ let file_content = b"Hello, world!" ;
508
+ temp_file. as_file ( ) . write_all ( file_content) . unwrap ( ) ;
509
+
510
+ let emulated_file = EmulatedFile :: new ( file_path. clone ( ) , file_content. len ( ) ) . unwrap ( ) ;
511
+
512
+ let mut buffer = vec ! [ 0 ; file_content. len( ) ] ;
513
+ let bytes_read = emulated_file. readat ( buffer. as_mut_ptr ( ) , buffer. len ( ) , 0 ) . unwrap ( ) ;
514
+
515
+ assert_eq ! ( bytes_read, file_content. len( ) ) ;
516
+ assert_eq ! ( buffer, file_content) ;
517
+ }
518
+
519
+ #[ test]
520
+ fn test_writeat_emulated_file ( ) {
521
+ let temp_file = NamedTempFile :: new ( ) . unwrap ( ) ;
522
+ let file_path = temp_file. path ( ) . to_str ( ) . unwrap ( ) . to_string ( ) ;
523
+ let file_content = b"Hello, world!" ;
524
+
525
+ let mut emulated_file = EmulatedFile :: new ( file_path. clone ( ) , file_content. len ( ) ) . unwrap ( ) ;
526
+
527
+ let new_content = b"test_writeat_emulated_file, world!" ;
528
+ let bytes_written = emulated_file. writeat ( new_content. as_ptr ( ) , new_content. len ( ) , 0 ) . unwrap ( ) ;
529
+
530
+ assert_eq ! ( bytes_written, new_content. len( ) ) ;
531
+ assert_eq ! ( emulated_file. filesize, new_content. len( ) ) ;
532
+
533
+ let mut buffer = vec ! [ 0 ; new_content. len( ) ] ;
534
+ emulated_file. readat ( buffer. as_mut_ptr ( ) , buffer. len ( ) , 0 ) . unwrap ( ) ;
535
+ assert_eq ! ( buffer, new_content) ;
536
+ }
481
537
}
0 commit comments