@@ -354,3 +354,86 @@ fn test_wide_utf16() {
354
354
355
355
assert_eq ! ( vfs. load_file( & Path :: new( "foo" ) ) . unwrap( ) , FileContents :: Text ( "" . to_owned( ) ) , ) ;
356
356
}
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