@@ -217,14 +217,30 @@ defmodule ListTest do
217217 end
218218 end
219219
220- test "myers_difference/2" do
221- assert List . myers_difference ( [ ] , [ ] ) == [ ]
222- assert List . myers_difference ( [ ] , [ 1 , 2 , 3 ] ) == [ ins: [ 1 , 2 , 3 ] ]
223- assert List . myers_difference ( [ 1 , 2 , 3 ] , [ ] ) == [ del: [ 1 , 2 , 3 ] ]
224- assert List . myers_difference ( [ 1 , 2 , 3 ] , [ 1 , 2 , 3 ] ) == [ eq: [ 1 , 2 , 3 ] ]
225- assert List . myers_difference ( [ 1 , 2 , 3 ] , [ 1 , 4 , 2 , 3 ] ) == [ eq: [ 1 ] , ins: [ 4 ] , eq: [ 2 , 3 ] ]
226- assert List . myers_difference ( [ 1 , 4 , 2 , 3 ] , [ 1 , 2 , 3 ] ) == [ eq: [ 1 ] , del: [ 4 ] , eq: [ 2 , 3 ] ]
227- assert List . myers_difference ( [ 1 ] , [ [ 1 ] ] ) == [ del: [ 1 ] , ins: [ [ 1 ] ] ]
228- assert List . myers_difference ( [ [ 1 ] ] , [ 1 ] ) == [ del: [ [ 1 ] ] , ins: [ 1 ] ]
220+ describe "myers_difference/2" do
221+ test "follows paper implementation" do
222+ assert List . myers_difference ( [ ] , [ ] ) == [ ]
223+ assert List . myers_difference ( [ ] , [ 1 , 2 , 3 ] ) == [ ins: [ 1 , 2 , 3 ] ]
224+ assert List . myers_difference ( [ 1 , 2 , 3 ] , [ ] ) == [ del: [ 1 , 2 , 3 ] ]
225+ assert List . myers_difference ( [ 1 , 2 , 3 ] , [ 1 , 2 , 3 ] ) == [ eq: [ 1 , 2 , 3 ] ]
226+ assert List . myers_difference ( [ 1 , 2 , 3 ] , [ 1 , 4 , 2 , 3 ] ) == [ eq: [ 1 ] , ins: [ 4 ] , eq: [ 2 , 3 ] ]
227+ assert List . myers_difference ( [ 1 , 4 , 2 , 3 ] , [ 1 , 2 , 3 ] ) == [ eq: [ 1 ] , del: [ 4 ] , eq: [ 2 , 3 ] ]
228+ assert List . myers_difference ( [ 1 ] , [ [ 1 ] ] ) == [ del: [ 1 ] , ins: [ [ 1 ] ] ]
229+ assert List . myers_difference ( [ [ 1 ] ] , [ 1 ] ) == [ del: [ [ 1 ] ] , ins: [ 1 ] ]
230+ end
231+
232+ test "rearranges inserts and equals for smaller diffs" do
233+ assert List . myers_difference ( [ 3 , 2 , 0 , 2 ] , [ 2 , 2 , 0 , 2 ] ) ==
234+ [ del: [ 3 ] , ins: [ 2 ] , eq: [ 2 , 0 , 2 ] ]
235+
236+ assert List . myers_difference ( [ 3 , 2 , 1 , 0 , 2 ] , [ 2 , 1 , 2 , 1 , 0 , 2 ] ) ==
237+ [ del: [ 3 ] , ins: [ 2 , 1 ] , eq: [ 2 , 1 , 0 , 2 ] ]
238+
239+ assert List . myers_difference ( [ 3 , 2 , 2 , 1 , 0 , 2 ] , [ 2 , 2 , 1 , 2 , 1 , 0 , 2 ] ) ==
240+ [ del: [ 3 ] , eq: [ 2 , 2 , 1 ] , ins: [ 2 , 1 ] , eq: [ 0 , 2 ] ]
241+
242+ assert List . myers_difference ( [ 3 , 2 , 0 , 2 ] , [ 2 , 2 , 1 , 0 , 2 ] ) ==
243+ [ del: [ 3 ] , eq: [ 2 ] , ins: [ 2 , 1 ] , eq: [ 0 , 2 ] ]
244+ end
229245 end
230246end
0 commit comments