@@ -354,3 +354,86 @@ fn test_wide_utf16() {
354354
355355 assert_eq ! ( vfs. load_file( & Path :: new( "foo" ) ) . unwrap( ) , FileContents :: Text ( "" . to_owned( ) ) , ) ;
356356}
357+
358+ #[ test]
359+ fn test_load_span ( ) {
360+ let vfs = VfsInternal :: < MockFileLoader , ( ) > :: new ( ) ;
361+ let changes = [ Change :: AddFile {
362+ file : PathBuf :: from ( "foo" ) ,
363+ text : String :: from ( "hello\n from\n the\n other\n side" ) ,
364+ } ] ;
365+
366+ vfs. on_changes ( & changes) . unwrap ( ) ;
367+
368+ assert_eq ! (
369+ vfs. load_span( Span :: from_positions(
370+ Position :: new( Row :: new_zero_indexed( 0 ) , Column :: new_zero_indexed( 0 ) ) ,
371+ Position :: new( Row :: new_zero_indexed( 4 ) , Column :: new_zero_indexed( 3 ) ) ,
372+ "foo" ,
373+ ) , )
374+ . unwrap( ) ,
375+ "hello\n from\n the\n other\n side"
376+ ) ;
377+
378+ assert_eq ! (
379+ vfs. load_span( Span :: from_positions(
380+ Position :: new( Row :: new_zero_indexed( 0 ) , Column :: new_zero_indexed( 2 ) ) ,
381+ Position :: new( Row :: new_zero_indexed( 4 ) , Column :: new_zero_indexed( 2 ) ) ,
382+ "foo" ,
383+ ) , )
384+ . unwrap( ) ,
385+ "llo\n from\n the\n other\n sid"
386+ ) ;
387+
388+ assert_eq ! (
389+ vfs. load_span( Span :: from_positions(
390+ Position :: new( Row :: new_zero_indexed( 2 ) , Column :: new_zero_indexed( 1 ) ) ,
391+ Position :: new( Row :: new_zero_indexed( 2 ) , Column :: new_zero_indexed( 2 ) ) ,
392+ "foo" ,
393+ ) , )
394+ . unwrap( ) ,
395+ "he"
396+ ) ;
397+ }
398+
399+ #[ test]
400+ fn test_load_lines ( ) {
401+ let vfs = VfsInternal :: < MockFileLoader , ( ) > :: new ( ) ;
402+ let changes = [ Change :: AddFile {
403+ file : PathBuf :: from ( "foo" ) ,
404+ text : String :: from ( "hello\n from\n the\n other\n side" ) ,
405+ } ] ;
406+
407+ vfs. on_changes ( & changes) . unwrap ( ) ;
408+
409+ assert_eq ! (
410+ vfs. load_lines( & PathBuf :: from( "foo" ) , Row :: new_zero_indexed( 0 ) , Row :: new_zero_indexed( 0 ) )
411+ . unwrap( ) ,
412+ "hello\n "
413+ ) ;
414+ assert_eq ! (
415+ vfs. load_lines( & PathBuf :: from( "foo" ) , Row :: new_zero_indexed( 0 ) , Row :: new_zero_indexed( 4 ) )
416+ . unwrap( ) ,
417+ "hello\n from\n the\n other\n side"
418+ ) ;
419+ assert_eq ! (
420+ vfs. load_lines( & PathBuf :: from( "foo" ) , Row :: new_zero_indexed( 2 ) , Row :: new_zero_indexed( 4 ) )
421+ . unwrap( ) ,
422+ "the\n other\n side"
423+ ) ;
424+ }
425+
426+ #[ test]
427+ fn test_load_line ( ) {
428+ let vfs = VfsInternal :: < MockFileLoader , ( ) > :: new ( ) ;
429+ let changes = [ Change :: AddFile {
430+ file : PathBuf :: from ( "foo" ) ,
431+ text : String :: from ( "hello\n from\n the\n other\n side" ) ,
432+ } ] ;
433+
434+ vfs. on_changes ( & changes) . unwrap ( ) ;
435+
436+ assert_eq ! ( vfs. load_line( & PathBuf :: from( "foo" ) , Row :: new_zero_indexed( 0 ) ) . unwrap( ) , "hello\n " ) ;
437+ assert_eq ! ( vfs. load_line( & PathBuf :: from( "foo" ) , Row :: new_zero_indexed( 2 ) ) . unwrap( ) , "the\n " ) ;
438+ assert_eq ! ( vfs. load_line( & PathBuf :: from( "foo" ) , Row :: new_zero_indexed( 4 ) ) . unwrap( ) , "side" ) ;
439+ }
0 commit comments