diff test/org/tmatesoft/hg/test/TestDiffHelper.java @ 624:507602cb4fb3

FIXMEs and TODOs: pay some technical debt
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Mon, 20 May 2013 20:34:33 +0200
parents 8ed4f4f4f0a6
children 7839ff0bfd78
line wrap: on
line diff
--- a/test/org/tmatesoft/hg/test/TestDiffHelper.java	Mon May 20 18:35:13 2013 +0200
+++ b/test/org/tmatesoft/hg/test/TestDiffHelper.java	Mon May 20 20:34:33 2013 +0200
@@ -118,6 +118,42 @@
 		diff.findMatchingBlocks(mc = new MatchCollector<CharSequence>());
 		assertEquals(3, mc.matchCount()); // bc, e, g
 	}
+
+	@Test
+	public void testChangedEOL() {
+		DiffHelper<LineSequence> diffHelper = new DiffHelper<LineSequence>();
+		MatchCollector<LineSequence> mc; DeltaCollector dc;
+		// all lines changed
+		diffHelper.init(newlines("one\ntwo\nthree\n".getBytes()), newlines("one\r\ntwo\r\nthree\r\n".getBytes()));
+		diffHelper.findMatchingBlocks(mc = new MatchCollector<LineSequence>());
+		assertEquals(0, mc.matchCount());
+		diffHelper.findMatchingBlocks(dc = new DeltaCollector());
+		assertEquals(0, dc.unchangedCount());
+		assertEquals(1, dc.deletedCount());
+		assertTrue(dc.deletedLine(0));
+		assertTrue(dc.deletedLine(1));
+		assertTrue(dc.deletedLine(2));
+		assertEquals(1, dc.addedCount());
+		assertTrue(dc.addedLine(0));
+		assertTrue(dc.addedLine(1));
+		assertTrue(dc.addedLine(2));
+		// one line changed
+		diffHelper.init(newlines("one\ntwo\nthree\n".getBytes()), newlines("one\ntwo\r\nthree\n".getBytes()));
+		diffHelper.findMatchingBlocks(mc = new MatchCollector<LineSequence>());
+		assertEquals(2, mc.matchCount());
+		assertTrue(mc.originLineMatched(0));
+		assertTrue(mc.targetLineMatched(0));
+		assertFalse(mc.originLineMatched(1));
+		assertFalse(mc.targetLineMatched(1));
+		assertTrue(mc.originLineMatched(2));
+		assertTrue(mc.targetLineMatched(2));
+		diffHelper.findMatchingBlocks(dc = new DeltaCollector());
+		assertEquals(2, dc.unchangedCount());
+		assertEquals(1, dc.deletedCount());
+		assertTrue(dc.deletedLine(1));
+		assertEquals(1, dc.addedCount());
+		assertTrue(dc.addedLine(1));
+	}
 	
 	// range is comprised of 3 values, range length always last, range start comes at index o (either 0 or 1)
 	static boolean includes(IntVector ranges, int o, int ln) {
@@ -188,20 +224,24 @@
 			same.add(s1From, s2From, length);
 		}
 
+		// return number of regions that didn't change
 		int unchangedCount() {
 			return same.size() / 3;
 		}
 
+		// return number of added regions
 		int addedCount() {
 			return added.size() / 3;
 		}
-
+		// return number of deleted regions
 		int deletedCount() {
 			return deleted.size() / 3;
 		}
+		// answer if 0-based line is marked as added
 		boolean addedLine(int ln) {
 			return includes(added, 1, ln);
 		}
+		// answer if 0-based line is marked as deleted
 		boolean deletedLine(int ln) {
 			return includes(deleted, 1, ln);
 		}