@@ -1293,3 +1293,29 @@ func generateBenchmarkInput(size int, changeRate float64) (string, string) {
12931293
12941294 return strings .Join (aLines , "\n " ), strings .Join (bLines , "\n " )
12951295}
1296+
1297+ func TestLinearSpacePanics (t * testing.T ) {
1298+ // 1. x/y clamping panic
1299+ t .Run ("xy clamping panic" , func (t * testing.T ) {
1300+ a := []string {"A" , "B" , "C" , "D" , "E" , "F" , "G" , "H" , "I" , "J" , "K" }
1301+ b := []string {"X" , "Y" , "A" , "B" , "C" , "D" , "E" , "F" , "G" , "H" , "I" , "J" , "K" , "Z" }
1302+
1303+ _ , err := myers .DiffStrings (a , b ,
1304+ myers .WithLinearSpace (true ),
1305+ myers .WithSmallInputThreshold (0 ),
1306+ )
1307+ assert .NoError (t , err )
1308+ })
1309+
1310+ // 2. prefix/suffix limit panic
1311+ t .Run ("prefix suffix limit panic" , func (t * testing.T ) {
1312+ a := []string {"X" , "X" , "X" , "X" , "X" , "X" , "X" , "X" , "X" , "X" , "X" }
1313+ b := []string {"X" , "X" , "X" , "X" , "X" , "X" , "X" , "X" , "X" , "X" }
1314+
1315+ _ , err := myers .DiffStrings (a , b ,
1316+ myers .WithLinearSpace (true ),
1317+ myers .WithSmallInputThreshold (0 ),
1318+ )
1319+ assert .NoError (t , err )
1320+ })
1321+ }
0 commit comments