@@ -1719,43 +1719,43 @@ endfunc
17191719" Test for the diff() function
17201720def Test_diff_func ()
17211721 # string is added/removed/ modified at the beginning
1722- assert_equal (" @@ -0,0 +1 @@\n +abc\n " ,
1722+ assert_equal (" @@ -1 +1,2 @@\n +abc\n def \n " ,
17231723 diff ([' def' ], [' abc' , ' def' ], {output: ' unified' }))
17241724 assert_equal ([{from_idx: 0 , from_count: 0 , to_idx: 0 , to_count: 1 }],
17251725 diff ([' def' ], [' abc' , ' def' ], {output: ' indices' }))
1726- assert_equal (" @@ -1 +0,0 @@\n -abc\n " ,
1726+ assert_equal (" @@ -1,2 +1 @@\n -abc\n def \n " ,
17271727 diff ([' abc' , ' def' ], [' def' ], {output: ' unified' }))
17281728 assert_equal ([{from_idx: 0 , from_count: 1 , to_idx: 0 , to_count: 0 }],
17291729 diff ([' abc' , ' def' ], [' def' ], {output: ' indices' }))
1730- assert_equal (" @@ -1 +1 @@\n -abc\n +abx\n " ,
1730+ assert_equal (" @@ -1,2 +1,2 @@\n -abc\n +abx\n def \n " ,
17311731 diff ([' abc' , ' def' ], [' abx' , ' def' ], {output: ' unified' }))
17321732 assert_equal ([{from_idx: 0 , from_count: 1 , to_idx: 0 , to_count: 1 }],
17331733 diff ([' abc' , ' def' ], [' abx' , ' def' ], {output: ' indices' }))
17341734
17351735 # string is added/removed/ modified at the end
1736- assert_equal (" @@ -1,0 + 2 @@\n +def\n " ,
1736+ assert_equal (" @@ -1 +1, 2 @@\n abc \n +def\n " ,
17371737 diff ([' abc' ], [' abc' , ' def' ], {output: ' unified' }))
17381738 assert_equal ([{from_idx: 1 , from_count: 0 , to_idx: 1 , to_count: 1 }],
17391739 diff ([' abc' ], [' abc' , ' def' ], {output: ' indices' }))
1740- assert_equal (" @@ -2 +1,0 @@\n -def\n " ,
1740+ assert_equal (" @@ -1, 2 +1 @@\n abc \n -def\n " ,
17411741 diff ([' abc' , ' def' ], [' abc' ], {output: ' unified' }))
17421742 assert_equal ([{from_idx: 1 , from_count: 1 , to_idx: 1 , to_count: 0 }],
17431743 diff ([' abc' , ' def' ], [' abc' ], {output: ' indices' }))
1744- assert_equal (" @@ -2 +2 @@\n -def\n +xef\n " ,
1744+ assert_equal (" @@ -1, 2 +1, 2 @@\n abc \n -def\n +xef\n " ,
17451745 diff ([' abc' , ' def' ], [' abc' , ' xef' ], {output: ' unified' }))
17461746 assert_equal ([{from_idx: 1 , from_count: 1 , to_idx: 1 , to_count: 1 }],
17471747 diff ([' abc' , ' def' ], [' abc' , ' xef' ], {output: ' indices' }))
17481748
17491749 # string is added/removed/ modified in the middle
1750- assert_equal (" @@ -2,0 + 3 @@\n +xxx\n " ,
1750+ assert_equal (" @@ -2,2 +2, 3 @@\n 222 \n +xxx\n 333 \n " ,
17511751 diff ([' 111' , ' 222' , ' 333' ], [' 111' , ' 222' , ' xxx' , ' 333' ], {output: ' unified' }))
17521752 assert_equal ([{from_idx: 2 , from_count: 0 , to_idx: 2 , to_count: 1 }],
17531753 diff ([' 111' , ' 222' , ' 333' ], [' 111' , ' 222' , ' xxx' , ' 333' ], {output: ' indices' }))
1754- assert_equal (" @@ -3 +2,0 @@\n -333\n " ,
1754+ assert_equal (" @@ -2, 3 +2,2 @@\n 222 \n -333\n 444 \n " ,
17551755 diff ([' 111' , ' 222' , ' 333' , ' 444' ], [' 111' , ' 222' , ' 444' ], {output: ' unified' }))
17561756 assert_equal ([{from_idx: 2 , from_count: 1 , to_idx: 2 , to_count: 0 }],
17571757 diff ([' 111' , ' 222' , ' 333' , ' 444' ], [' 111' , ' 222' , ' 444' ], {output: ' indices' }))
1758- assert_equal (" @@ -3 +3 @@\n -333\n +xxx\n " ,
1758+ assert_equal (" @@ -2, 3 +2, 3 @@\n 222 \n -333\n +xxx\n 444 \n " ,
17591759 diff ([' 111' , ' 222' , ' 333' , ' 444' ], [' 111' , ' 222' , ' xxx' , ' 444' ], {output: ' unified' }))
17601760 assert_equal ([{from_idx: 2 , from_count: 1 , to_idx: 2 , to_count: 1 }],
17611761 diff ([' 111' , ' 222' , ' 333' , ' 444' ], [' 111' , ' 222' , ' xxx' , ' 444' ], {output: ' indices' }))
@@ -1825,18 +1825,17 @@ def Test_diff_func()
18251825 three four
18261826 five six
18271827 END
1828- assert_equal (" @@ -1 +1 @@\n -one two\n +one abc two\n @@ -3 +3 @@ \n -five abc six\n +five six\n " ,
1828+ assert_equal (" @@ -1,3 +1,3 @@\n -one two\n +one abc two\n three four \n -five abc six\n +five six\n " ,
18291829 diff (fromlist, tolist, {output: ' unified' }))
1830- assert_equal ([{from_idx: 0 , from_count: 1 , to_idx: 0 , to_count: 1 },
1831- {from_idx: 2 , from_count: 1 , to_idx: 2 , to_count: 1 }],
1830+ assert_equal ([{from_idx: 0 , from_count: 3 , to_idx: 0 , to_count: 3 }],
18321831 diff (fromlist, tolist, {output: ' indices' }))
18331832
18341833 # add /remove blank lines
1835- assert_equal (" @@ -2,2 +1,0 @@\n -\n -\n " ,
1834+ assert_equal (" @@ -1,4 +1,2 @@\n one \n -\n -\n two \n " ,
18361835 diff ([' one' , ' ' , ' ' , ' two' ], [' one' , ' two' ], {output: ' unified' }))
18371836 assert_equal ([{from_idx: 1 , from_count: 2 , to_idx: 1 , to_count: 0 }],
18381837 diff ([' one' , ' ' , ' ' , ' two' ], [' one' , ' two' ], {output: ' indices' }))
1839- assert_equal (" @@ -1,0 +2,2 @@\n +\n +\n " ,
1838+ assert_equal (" @@ -1,2 +1,4 @@\n one \n +\n +\n two \n " ,
18401839 diff ([' one' , ' two' ], [' one' , ' ' , ' ' , ' two' ], {output: ' unified' }))
18411840 assert_equal ([{' from_idx' : 1 , ' from_count' : 0 , ' to_idx' : 1 , ' to_count' : 2 }],
18421841 diff ([' one' , ' two' ], [' one' , ' ' , ' ' , ' two' ], {output: ' indices' }))
@@ -1887,11 +1886,40 @@ def Test_diff_func()
18871886 assert_equal (' ' , diff ([], [], {output: ' unified' }))
18881887 assert_equal ([], diff ([], [], {output: ' indices' }))
18891888
1889+ # If ' diffexpr' is set , it should not be used for diff ()
1890+ def MyDiffExpr ()
1891+ enddef
1892+ var save_diffexpr = &diffexpr
1893+ :set diffexpr = MyDiffExpr ()
1894+ assert_equal (" @@ -1 +1 @@\n -abc\n +\n " ,
1895+ diff ([' abc' ], [' ' ], {output: ' unified' }))
1896+ assert_equal ([{' from_idx' : 0 , ' from_count' : 1 , ' to_idx' : 0 , ' to_count' : 1 }],
1897+ diff ([' abc' ], [' ' ], {output: ' indices' }))
1898+ assert_equal (' MyDiffExpr()' , &diffexpr )
1899+ &diffexpr = save_diffexpr
1900+
1901+ # try different values for unified diff ' context'
1902+ assert_equal (" @@ -0,0 +1 @@\n +x\n " ,
1903+ diff ([' a' , ' b' , ' c' ], [' x' , ' a' , ' b' , ' c' ]))
1904+ assert_equal (" @@ -0,0 +1 @@\n +x\n " ,
1905+ diff ([' a' , ' b' , ' c' ], [' x' , ' a' , ' b' , ' c' ], {context: 0 }))
1906+ assert_equal (" @@ -1 +1,2 @@\n +x\n a\n " ,
1907+ diff ([' a' , ' b' , ' c' ], [' x' , ' a' , ' b' , ' c' ], {context: 1 }))
1908+ assert_equal (" @@ -1,2 +1,3 @@\n +x\n a\n b\n " ,
1909+ diff ([' a' , ' b' , ' c' ], [' x' , ' a' , ' b' , ' c' ], {context: 2 }))
1910+ assert_equal (" @@ -1,3 +1,4 @@\n +x\n a\n b\n c\n " ,
1911+ diff ([' a' , ' b' , ' c' ], [' x' , ' a' , ' b' , ' c' ], {context: 3 }))
1912+ assert_equal (" @@ -1,3 +1,4 @@\n +x\n a\n b\n c\n " ,
1913+ diff ([' a' , ' b' , ' c' ], [' x' , ' a' , ' b' , ' c' ], {context: 4 }))
1914+ assert_equal (" @@ -1 +1,2 @@\n +x\n a\n " ,
1915+ diff ([' a' , ' b' , ' c' ], [' x' , ' a' , ' b' , ' c' ], {context: -1 }))
1916+
18901917 # Error cases
18911918 assert_fails (' call diff({}, ["a"])' , ' E1211:' )
18921919 assert_fails (' call diff(["a"], {})' , ' E1211:' )
18931920 assert_fails (' call diff(["a"], ["a"], [])' , ' E1206:' )
18941921 assert_fails (' call diff(["a"], ["a"], {output: "xyz"})' , ' E106: Unsupported diff output format: xyz' )
1922+ assert_fails (' call diff(["a"], ["a"], {context: []})' , ' E745: Using a List as a Number' )
18951923enddef
18961924
18971925" vim: shiftwidth = 2 sts = 2 expandtab
0 commit comments