Skip to content

Commit 5e0df1b

Browse files
committed
debug (got one more splitter after merge while diff occurs by edge)
1 parent 75c013f commit 5e0df1b

File tree

3 files changed

+35
-16
lines changed

3 files changed

+35
-16
lines changed

lib/merge.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
for(var i = diff.length - 1, item; i >= 0; i--){
1414
item = diff[i];
15-
result.splice(item[0], item[1], item[2]);
15+
result.splice.apply(result, item);
1616
}
1717

1818
return result.join(splitter);

lib/myers-compare.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,13 @@
119119
if(j < i){
120120
start = src.slice(0, j + 1).filter(notEmpty).length; // start pos of diffs (on src)
121121
len = src.slice(j + 1, i + 1).filter(notEmpty).length; // length should be replaced (on src)
122-
to = target.slice(j + 1, i + 1).filter(notEmpty).join(SPLITTER);// new content
122+
to = target.slice(j + 1, i + 1).filter(notEmpty) // new content
123123

124-
diff.unshift([start, len, to]);
124+
diff.unshift(
125+
to.length ?
126+
[start, len, to.join(SPLITTER)] : // replace
127+
[start, len] // remove
128+
);
125129
}
126130

127131
i = j - 1;

test/test.html

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,31 +22,46 @@
2222
<script type="text/javascript" src="../lib/myers-compare.js"></script>
2323
<script type="text/javascript" src="../lib/merge.js"></script>
2424
<script type="text/javascript">
25-
var test = function(s1, s2, splitter){
26-
//console.log(s1, s2);
27-
25+
var test = function(s1, s2, splitter, silently){
2826
var t = Date.now();
2927

3028
var compareResult = compare(s1, s2, splitter);
3129

32-
console.debug(Date.now() - t + ' ms');
33-
console.log(compareResult);
30+
if(!silently){
31+
console.log(s1, s2);
32+
console.debug(Date.now() - t + ' ms');
33+
console.log(compareResult);
34+
}
3435

3536
if(merge(s1, compareResult) !== s2){
36-
console.error('wrong');
37+
window.errorPair = [s1, s2];
38+
console.warn(window.errorPair);
39+
throw new Error('Wrong! see in window.errorPair.');
3740
}else{
3841
console.info('ok');
3942
}
4043
};
4144

42-
/*
4345
// do random tests
44-
for(var l = 1000; l > 0; l--){
45-
test((Math.random() + '').slice(-l), (Math.random() + '').slice(-l));
46-
}
47-
console.info('FINISHED');
48-
*/
49-
46+
/*var makeStr = function(len){
47+
var s = '';
48+
while(s.length < len){
49+
s += Math.random();
50+
}
51+
return s.slice(0, len);
52+
};
53+
var randomTestTimer = setInterval(function(){
54+
for(var l = 200; l > 0; l--){
55+
try{
56+
test(makeStr(l), makeStr(l), '', true);
57+
}catch(e){
58+
clearInterval(randomTestTimer);
59+
throw e;
60+
}
61+
}
62+
console.info('FINISHED');
63+
}, 1000);*/
64+
5065
// do test with given input
5166
var in1 = document.getElementById('in1'),
5267
in2 = document.getElementById('in2');

0 commit comments

Comments
 (0)