@@ -367,6 +367,170 @@ public void Will_build_diffModel_for_partially_different_lines()
367367 Assert . Equal ( ChangeType . Imaginary , bidiff . OldText . Lines [ 0 ] . SubPieces [ 3 ] . Type ) ;
368368 Assert . Equal ( ChangeType . Unchanged , bidiff . OldText . Lines [ 0 ] . SubPieces [ 4 ] . Type ) ;
369369 }
370+
371+ [ Fact ]
372+ public void Will_ignore_whitespace_by_default_1 ( )
373+ {
374+ string textOld = "1\n 2\n 3 \n 4 \n 5" ;
375+ string textNew = "1\n 2\n 3\n 4\n 5" ;
376+ var builder = new SideBySideDiffBuilder ( new Differ ( ) ) ;
377+ var model = builder . BuildDiffModel ( textOld , textNew ) ;
378+ Assert . Equal (
379+ model . OldText . Lines ,
380+ new DiffPiece [ ]
381+ {
382+ new DiffPiece ( "1" , ChangeType . Unchanged , 1 ) ,
383+ new DiffPiece ( " 2" , ChangeType . Unchanged , 2 ) ,
384+ new DiffPiece ( "3 " , ChangeType . Unchanged , 3 ) ,
385+ new DiffPiece ( " 4 " , ChangeType . Unchanged , 4 ) ,
386+ new DiffPiece ( "5" , ChangeType . Unchanged , 5 ) ,
387+ } ) ;
388+ Assert . Equal (
389+ model . NewText . Lines ,
390+ new DiffPiece [ ]
391+ {
392+ new DiffPiece ( "1" , ChangeType . Unchanged , 1 ) ,
393+ new DiffPiece ( "2" , ChangeType . Unchanged , 2 ) ,
394+ new DiffPiece ( "3" , ChangeType . Unchanged , 3 ) ,
395+ new DiffPiece ( "4" , ChangeType . Unchanged , 4 ) ,
396+ new DiffPiece ( "5" , ChangeType . Unchanged , 5 ) ,
397+ } ) ;
398+ }
399+
400+ [ Fact ]
401+ public void Will_ignore_whitespace_by_default_2 ( )
402+ {
403+ string textOld = "1\n 2\n 3\n 4\n 5" ;
404+ string textNew = "1\n 2\n 3 \n 4 \n 5" ;
405+ var builder = new SideBySideDiffBuilder ( new Differ ( ) ) ;
406+ var model = builder . BuildDiffModel ( textOld , textNew ) ;
407+ Assert . Equal (
408+ model . OldText . Lines ,
409+ new DiffPiece [ ]
410+ {
411+ new DiffPiece ( "1" , ChangeType . Unchanged , 1 ) ,
412+ new DiffPiece ( "2" , ChangeType . Unchanged , 2 ) ,
413+ new DiffPiece ( "3" , ChangeType . Unchanged , 3 ) ,
414+ new DiffPiece ( "4" , ChangeType . Unchanged , 4 ) ,
415+ new DiffPiece ( "5" , ChangeType . Unchanged , 5 ) ,
416+ } ) ;
417+ Assert . Equal (
418+ model . NewText . Lines ,
419+ new DiffPiece [ ]
420+ {
421+ new DiffPiece ( "1" , ChangeType . Unchanged , 1 ) ,
422+ new DiffPiece ( " 2" , ChangeType . Unchanged , 2 ) ,
423+ new DiffPiece ( "3 " , ChangeType . Unchanged , 3 ) ,
424+ new DiffPiece ( " 4 " , ChangeType . Unchanged , 4 ) ,
425+ new DiffPiece ( "5" , ChangeType . Unchanged , 5 ) ,
426+ } ) ;
427+ }
428+
429+ [ Fact ]
430+ public void Will_ignore_whitespace_by_default_3 ( )
431+ {
432+ string textOld = "1\n 2\n 3 \n 4 \n 5" ;
433+ string textNew = "1\n 2\n 3\n 4\n 5" ;
434+ var builder = new SideBySideDiffBuilder ( new Differ ( ) ) ;
435+ var model = builder . BuildDiffModel ( textOld , textNew , ignoreWhitespace : true ) ;
436+ Assert . Equal (
437+ model . OldText . Lines ,
438+ new DiffPiece [ ]
439+ {
440+ new DiffPiece ( "1" , ChangeType . Unchanged , 1 ) ,
441+ new DiffPiece ( " 2" , ChangeType . Unchanged , 2 ) ,
442+ new DiffPiece ( "3 " , ChangeType . Unchanged , 3 ) ,
443+ new DiffPiece ( " 4 " , ChangeType . Unchanged , 4 ) ,
444+ new DiffPiece ( "5" , ChangeType . Unchanged , 5 ) ,
445+ } ) ;
446+ Assert . Equal (
447+ model . NewText . Lines ,
448+ new DiffPiece [ ]
449+ {
450+ new DiffPiece ( "1" , ChangeType . Unchanged , 1 ) ,
451+ new DiffPiece ( "2" , ChangeType . Unchanged , 2 ) ,
452+ new DiffPiece ( "3" , ChangeType . Unchanged , 3 ) ,
453+ new DiffPiece ( "4" , ChangeType . Unchanged , 4 ) ,
454+ new DiffPiece ( "5" , ChangeType . Unchanged , 5 ) ,
455+ } ) ;
456+ }
457+
458+ [ Fact ]
459+ public void Can_compare_whitespace ( )
460+ {
461+ string textOld = "1\n 2\n 3 \n 4 \n 5" ;
462+ string textNew = "1\n 2\n 3\n 4\n 5" ;
463+ var builder = new SideBySideDiffBuilder ( new Differ ( ) ) ;
464+ var model = builder . BuildDiffModel ( textOld , textNew , ignoreWhitespace : false ) ;
465+ Assert . Equal (
466+ model . OldText . Lines ,
467+ new DiffPiece [ ]
468+ {
469+ new DiffPiece ( "1" , ChangeType . Unchanged , 1 ) ,
470+ new DiffPiece ( " 2" , ChangeType . Modified , 2 )
471+ {
472+ SubPieces =
473+ {
474+ new DiffPiece ( "" , ChangeType . Deleted , 1 ) ,
475+ new DiffPiece ( " " , ChangeType . Deleted , 2 ) ,
476+ new DiffPiece ( "2" , ChangeType . Unchanged , 3 ) ,
477+ } ,
478+ } ,
479+ new DiffPiece ( "3 " , ChangeType . Modified , 3 )
480+ {
481+ SubPieces =
482+ {
483+ new DiffPiece ( "3" , ChangeType . Unchanged , 1 ) ,
484+ new DiffPiece ( " " , ChangeType . Deleted , 2 ) ,
485+ } ,
486+ } ,
487+ new DiffPiece ( " 4 " , ChangeType . Modified , 4 )
488+ {
489+ SubPieces =
490+ {
491+ new DiffPiece ( "" , ChangeType . Deleted , 1 ) ,
492+ new DiffPiece ( " " , ChangeType . Deleted , 2 ) ,
493+ new DiffPiece ( "4" , ChangeType . Unchanged , 3 ) ,
494+ new DiffPiece ( " " , ChangeType . Deleted , 4 ) ,
495+ } ,
496+ } ,
497+ new DiffPiece ( "5" , ChangeType . Unchanged , 5 ) ,
498+ } ) ;
499+ Assert . Equal (
500+ model . NewText . Lines ,
501+ new DiffPiece [ ]
502+ {
503+ new DiffPiece ( "1" , ChangeType . Unchanged , 1 ) ,
504+ new DiffPiece ( "2" , ChangeType . Modified , 2 )
505+ {
506+ SubPieces =
507+ {
508+ new DiffPiece ( null , ChangeType . Imaginary ) ,
509+ new DiffPiece ( null , ChangeType . Imaginary ) ,
510+ new DiffPiece ( "2" , ChangeType . Unchanged , 1 ) ,
511+ } ,
512+ } ,
513+ new DiffPiece ( "3" , ChangeType . Modified , 3 )
514+ {
515+ SubPieces =
516+ {
517+ new DiffPiece ( "3" , ChangeType . Unchanged , 1 ) ,
518+ new DiffPiece ( null , ChangeType . Imaginary ) ,
519+ } ,
520+ } ,
521+ new DiffPiece ( "4" , ChangeType . Modified , 4 )
522+ {
523+ SubPieces =
524+ {
525+ new DiffPiece ( null , ChangeType . Imaginary ) ,
526+ new DiffPiece ( null , ChangeType . Imaginary ) ,
527+ new DiffPiece ( "4" , ChangeType . Unchanged , 1 ) ,
528+ new DiffPiece ( null , ChangeType . Imaginary ) ,
529+ } ,
530+ } ,
531+ new DiffPiece ( "5" , ChangeType . Unchanged , 5 ) ,
532+ } ) ;
533+ }
370534 }
371535 }
372536}
0 commit comments