1+ library diff3_merge_test;
2+
3+ import "package:unittest/unittest.dart" ;
4+
5+ import "package:diff/diff.dart" ;
6+
7+ void defineTests () {
8+ group ('diff3_merge' , () {
9+ test ('multiline difference' , () {
10+ // base
11+ List <String > o = "AA ZZ 00 M 99" .split (" " );
12+
13+ // ours
14+ List <String > a = "AA a b c ZZ new 00 a a M 99" .split (" " );
15+
16+ // theirs
17+ List <String > b = "AA a d c ZZ 11 M z z 99" .split (" " );
18+
19+ List <IMergeResultBlock > mergeResultBlocks = diff3_merge (a, o, b, false );
20+
21+ expect (mergeResultBlocks, isNotNull);
22+ expect (mergeResultBlocks.length, equals (5 ));
23+
24+ expect (mergeResultBlocks[0 ], new isInstanceOf <MergeOKResultBlock >());
25+ expect ((mergeResultBlocks[0 ] as MergeOKResultBlock ).ContentLines .length,
26+ equals (1 ));
27+ expect ((mergeResultBlocks[0 ] as MergeOKResultBlock ).ContentLines [0 ],
28+ equals ("AA" ));
29+
30+ expect (mergeResultBlocks[1 ], new isInstanceOf <MergeConflictResultBlock >());
31+ expect ((mergeResultBlocks[1 ] as MergeConflictResultBlock ).LeftIndex ,
32+ equals (1 ));
33+ expect ((mergeResultBlocks[1 ] as MergeConflictResultBlock ).LeftLines ,
34+ equals (["a" , "b" , "c" ]));
35+ expect ((mergeResultBlocks[1 ] as MergeConflictResultBlock ).RightIndex ,
36+ equals (1 ));
37+ expect ((mergeResultBlocks[1 ] as MergeConflictResultBlock ).RightLines ,
38+ equals (["a" , "d" , "c" ]));
39+ expect ((mergeResultBlocks[1 ] as MergeConflictResultBlock ).OldIndex ,
40+ equals (1 ));
41+ expect ((mergeResultBlocks[1 ] as MergeConflictResultBlock ).OldLines ,
42+ isEmpty);
43+
44+ expect (mergeResultBlocks[2 ], new isInstanceOf <MergeOKResultBlock >());
45+ expect ((mergeResultBlocks[2 ] as MergeOKResultBlock ).ContentLines .length,
46+ equals (1 ));
47+ expect ((mergeResultBlocks[2 ] as MergeOKResultBlock ).ContentLines [0 ],
48+ equals ("ZZ" ));
49+
50+ expect (mergeResultBlocks[3 ], new isInstanceOf <MergeConflictResultBlock >());
51+ expect ((mergeResultBlocks[3 ] as MergeConflictResultBlock ).RightIndex ,
52+ equals (5 ));
53+ expect ((mergeResultBlocks[3 ] as MergeConflictResultBlock ).RightLines ,
54+ equals (["11" ]));
55+ expect ((mergeResultBlocks[3 ] as MergeConflictResultBlock ).LeftIndex ,
56+ equals (5 ));
57+ expect ((mergeResultBlocks[3 ] as MergeConflictResultBlock ).LeftLines ,
58+ equals (["new" , "00" , "a" , "a" ]));
59+ expect ((mergeResultBlocks[3 ] as MergeConflictResultBlock ).OldIndex ,
60+ equals (2 ));
61+ expect ((mergeResultBlocks[3 ] as MergeConflictResultBlock ).OldLines ,
62+ equals (["00" ]));
63+
64+ expect (mergeResultBlocks[4 ], new isInstanceOf <MergeOKResultBlock >());
65+ expect ((mergeResultBlocks[4 ] as MergeOKResultBlock ).ContentLines .length,
66+ equals (4 ));
67+ expect ((mergeResultBlocks[4 ] as MergeOKResultBlock ).ContentLines ,
68+ equals (["M" , "z" , "z" , "99" ]));
69+ });
70+ });
71+ }
72+
73+ void main () {
74+ defineTests ();
75+ }
0 commit comments