def just_differences():
	file1 = [
		"line 1 here\n",
		"line 2 here\n",
	]

	diff = [
		"--- test/file1.txt	2009-03-22 21:42:38.000000000 +0000\n",
		"+++ test/file2.txt	2009-03-22 21:53:26.000000000 +0000\n",
		"@@ -1,2 +1,2 @@\n",
		"-line 1 here\n",
		"-line 2 here\n",
		"+line 1 here different\n",
		"+line 2 here different\n",
	]

	unifieddiffparser = UnifiedDiffParser( file1, diff )
	diffmodel = DiffModel( unifieddiffparser )

	lines = diffmodel.get_lines()

	assert_strings_equal( lines[0].left,  "line 1 here" )
	assert_strings_equal( lines[0].right, "line 1 here different" )
	assert( lines[0].status == difflinetypes.DIFFERENT )

	assert_strings_equal( lines[1].left,  "line 2 here" )
	assert_strings_equal( lines[1].right, "line 2 here different" )
	assert( lines[1].status == difflinetypes.DIFFERENT )
Example #2
0
def get_line_before_start():
	parser = FakeParser()
	diffmodel = DiffModel( parser )

	# We ask for many lines, but get only those that exist
	line = diffmodel.get_line( -1 )
	assert( line is None )
def empty_file():

	file1 = [
	]

	diff = [
		"--- test/file1.txt	2009-03-28 15:18:52.000000000 +0000\n",
		"+++ test/file2.txt	2009-03-28 15:19:28.000000000 +0000\n",
		"@@ -0,0 +1,1 @@\n",
		"+line 1 here\n",
		"+line 2 here\n",
	]

	unifieddiffparser = UnifiedDiffParser( file1, diff )
	diffmodel = DiffModel( unifieddiffparser )

	lines = diffmodel.get_lines()

	assert( len( lines ) == 2 )

	assert_strings_equal( lines[0].left,  None )
	assert_strings_equal( lines[0].right, "line 1 here" )
	assert( lines[0].status == difflinetypes.ADD )

	assert_strings_equal( lines[1].left,  None )
	assert_strings_equal( lines[1].right, "line 2 here" )
	assert( lines[1].status == difflinetypes.ADD )
def multiple_hunks_no_deletions_or_additions():
	file1 = []
	for i in range( 1, 41 ):
		file1.append( "line %d here\n" % i )

	diff = [
		"--- test/file1.txt	2009-03-28 00:34:14.000000000 +0000\n",
		"+++ test/file2.txt	2009-03-28 00:34:33.000000000 +0000\n",
		"@@ -1,5 +1,5 @@\n",
		" line 1 here\n",
		"-line 2 here\n",
		"+line 2 here different\n",
		" line 3 here\n",
		" line 4 here\n",
		" line 5 here\n",
		"@@ -36,5 +36,5 @@\n",
		" line 36 here\n",
		" line 37 here\n",
		" line 38 here\n",
		"-line 39 here\n",
		"+line 39 here different\n",
		" line 40 here\n",
	]

	unifieddiffparser = UnifiedDiffParser( file1, diff )
	diffmodel = DiffModel( unifieddiffparser )

	lines = diffmodel.get_lines()

	assert_strings_equal( lines[0].left,  "line 1 here" )
	assert_strings_equal( lines[0].right, "line 1 here" )
	assert( lines[0].status == difflinetypes.IDENTICAL )

	assert_strings_equal( lines[1].left,  "line 2 here" )
	assert_strings_equal( lines[1].right, "line 2 here different" )
	assert( lines[1].status == difflinetypes.DIFFERENT )

	for i in range( 3, 39 ):
		assert_strings_equal( lines[i-1].left,  "line %d here" % i )
		assert_strings_equal( lines[i-1].right, "line %d here" % i )
		assert( lines[i-1].status == difflinetypes.IDENTICAL )

	assert_strings_equal( lines[38].left,  "line 39 here" )
	assert_strings_equal( lines[38].right, "line 39 here different" )
	assert( lines[38].status == difflinetypes.DIFFERENT )

	assert_strings_equal( lines[39].left,  "line 40 here" )
	assert_strings_equal( lines[39].right, "line 40 here" )
	assert( lines[39].status == difflinetypes.IDENTICAL )
def identical():
	file1 = [
		"line 1 here\n",
		"line 2 here\n",
	]

	diff = []

	unifieddiffparser = UnifiedDiffParser( file1, diff )
	diffmodel = DiffModel( unifieddiffparser )

	lines = diffmodel.get_lines()

	assert_strings_equal( lines[0].left,  "line 1 here" )
	assert_strings_equal( lines[0].right, "line 1 here" )
	assert( lines[0].status == difflinetypes.IDENTICAL )

	assert_strings_equal( lines[1].left,  "line 2 here" )
	assert_strings_equal( lines[1].right, "line 2 here" )
	assert( lines[1].status == difflinetypes.IDENTICAL )
Example #6
0
def get_lines():
	parser = FakeParser()
	diffmodel = DiffModel( parser )
	lines = diffmodel.get_lines()

	assert_strings_equal( lines[0].left, "line 1" )
	assert_strings_equal( lines[0].right, "line 1" )
	assert( lines[0].status == difflinetypes.IDENTICAL )

	assert_strings_equal( lines[1].left, "line 2 left" )
	assert_strings_equal( lines[1].right, None )
	assert( lines[1].status == difflinetypes.REMOVE )

	assert_strings_equal( lines[2].left, None )
	assert_strings_equal( lines[2].right, "line 3 right" )
	assert( lines[2].status == difflinetypes.ADD )

	assert_strings_equal( lines[3].left, "line 4 left" )
	assert_strings_equal( lines[3].right, "line 4 right" )
	assert( lines[3].status == difflinetypes.DIFFERENT )
def diff_then_same():
	file1 = [
		"line 1 here\n",
		"line 2 here\n",
		"line 3 here\n",
		"line 4 here\n",
	]

	diff = [
		"--- test/file1.txt	2009-03-27 21:06:15.000000000 +0000\n",
		"+++ test/file2.txt	2009-03-27 21:11:54.000000000 +0000\n",
		"@@ -1,4 +1,4 @@\n",
		"-line 1 here\n",
		"-line 2 here\n",
		"+line 1 here different\n",
		"+line 2 here different\n",
		" line 3 here\n",
		" line 4 here\n",
	]

	unifieddiffparser = UnifiedDiffParser( file1, diff )
	diffmodel = DiffModel( unifieddiffparser )

	lines = diffmodel.get_lines()

	assert_strings_equal( lines[0].left,  "line 1 here" )
	assert_strings_equal( lines[0].right, "line 1 here different" )
	assert( lines[0].status == difflinetypes.DIFFERENT )

	assert_strings_equal( lines[1].left,  "line 2 here" )
	assert_strings_equal( lines[1].right, "line 2 here different" )
	assert( lines[1].status == difflinetypes.DIFFERENT )

	assert_strings_equal( lines[2].left,  "line 3 here" )
	assert_strings_equal( lines[2].right, "line 3 here" )
	assert( lines[2].status == difflinetypes.IDENTICAL )

	assert_strings_equal( lines[3].left,  "line 4 here" )
	assert_strings_equal( lines[3].right, "line 4 here" )
	assert( lines[3].status == difflinetypes.IDENTICAL )
def removed_at_beginning():

	file1 = [
		"line 1 here\n",
		"line 2 here\n",
		"line 3 here\n",
		"line 4 here\n",
	]

	diff = [
		"--- test/file1.txt	2009-03-28 20:32:36.000000000 +0000\n",
		"+++ test/file2.txt	2009-03-28 20:32:41.000000000 +0000\n",
		"@@ -1,4 +1,2 @@\n",
		"-line 1 here\n",
		"-line 2 here\n",
		" line 3 here\n",
		" line 4 here\n",
	]

	unifieddiffparser = UnifiedDiffParser( file1, diff )
	diffmodel = DiffModel( unifieddiffparser )

	lines = diffmodel.get_lines()

	assert_strings_equal( lines[0].left, "line 1 here" )
	assert( lines[0].right is None )
	assert( lines[0].status == difflinetypes.REMOVE )

	assert_strings_equal( lines[1].left, "line 2 here" )
	assert( lines[1].right is None )
	assert( lines[1].status == difflinetypes.REMOVE )

	assert_strings_equal( lines[2].left, "line 3 here" )
	assert_strings_equal( lines[2].right, "line 3 here" )
	assert( lines[2].status == difflinetypes.IDENTICAL )

	assert_strings_equal( lines[3].left, "line 4 here" )
	assert_strings_equal( lines[3].right, "line 4 here" )
	assert( lines[3].status == difflinetypes.IDENTICAL )
Example #9
0
def get_lines_beyond_end():
	parser = FakeParser()
	diffmodel = DiffModel( parser )

	# We ask for many lines, but get only those that exist
	lines = diffmodel.get_lines(0, 10)
	assert( len( lines ) == 4 )

	assert_strings_equal( lines[0].left, "line 1" )
	assert_strings_equal( lines[0].right, "line 1" )
	assert( lines[0].status == difflinetypes.IDENTICAL )

	assert_strings_equal( lines[1].left, "line 2 left" )
	assert_strings_equal( lines[1].right, None )
	assert( lines[1].status == difflinetypes.REMOVE )

	assert_strings_equal( lines[2].left, None )
	assert_strings_equal( lines[2].right, "line 3 right" )
	assert( lines[2].status == difflinetypes.ADD )

	assert_strings_equal( lines[3].left, "line 4 left" )
	assert_strings_equal( lines[3].right, "line 4 right" )
	assert( lines[3].status == difflinetypes.DIFFERENT )
Example #10
0
def get_line():
	parser = FakeParser()
	diffmodel = DiffModel( parser )

	ln = diffmodel.get_line( 0 )
	assert_strings_equal( ln.left, "line 1" )
	assert_strings_equal( ln.right, "line 1" )
	assert( ln.status == difflinetypes.IDENTICAL )

	ln = diffmodel.get_line( 1 )
	assert_strings_equal( ln.left, "line 2 left" )
	assert_strings_equal( ln.right, None )
	assert( ln.status == difflinetypes.REMOVE )

	ln = diffmodel.get_line( 2 )
	assert_strings_equal( ln.left, None )
	assert_strings_equal( ln.right, "line 3 right" )
	assert( ln.status == difflinetypes.ADD )

	ln = diffmodel.get_line( 3 )
	assert_strings_equal( ln.left, "line 4 left" )
	assert_strings_equal( ln.right, "line 4 right" )
	assert( ln.status == difflinetypes.DIFFERENT )
def added_at_beginning():

	file1 = [
		"line 3 here\n",
		"line 4 here\n",
	]

	diff = [
		"--- test/file1.txt	2009-03-28 15:33:40.000000000 +0000\n",
		"+++ test/file2.txt	2009-03-28 15:33:45.000000000 +0000\n",
		"@@ -1,2 +1,4 @@\n",
		"+line 1 here\n",
		"+line 2 here\n",
		" line 3 here\n",
		" line 4 here\n",
	]

	unifieddiffparser = UnifiedDiffParser( file1, diff )
	diffmodel = DiffModel( unifieddiffparser )

	lines = diffmodel.get_lines()

	assert( lines[0].left is None )
	assert_strings_equal( lines[0].right, "line 1 here" )
	assert( lines[0].status == difflinetypes.ADD )

	assert( lines[1].left is None )
	assert_strings_equal( lines[1].right, "line 2 here" )
	assert( lines[1].status == difflinetypes.ADD )

	assert_strings_equal( lines[2].left, "line 3 here" )
	assert_strings_equal( lines[2].right, "line 3 here" )
	assert( lines[2].status == difflinetypes.IDENTICAL )

	assert_strings_equal( lines[3].left, "line 4 here" )
	assert_strings_equal( lines[3].right, "line 4 here" )
	assert( lines[3].status == difflinetypes.IDENTICAL )
def changed_added_removed():

	file1 = [
		"line 1 here\n",
		"line 2 here\n",
		"line 3 here\n",
		"line 4 here\n",
		"line 5 here\n",
		"line 7 here\n",
		"line 8 here\n",
		"line 9 here\n",
		"line 10 here\n",
	]

	diff = [
		"--- test/file1.txt	2009-03-28 20:37:54.000000000 +0000\n",
		"+++ test/file2.txt	2009-03-28 20:37:47.000000000 +0000\n",
		"@@ -1,9 +1,8 @@\n",
		" line 1 here\n",
		"-line 2 here\n",
		"-line 3 here\n",
		"+line 2 here different\n",
		" line 4 here\n",
		" line 5 here\n",
		"+line 6 here\n",
		" line 7 here\n",
		" line 8 here\n",
		"-line 9 here\n",
		" line 10 here\n",
	]

	unifieddiffparser = UnifiedDiffParser( file1, diff )
	diffmodel = DiffModel( unifieddiffparser )

	lines = diffmodel.get_lines()

	assert_strings_equal( lines[0].left, "line 1 here" )
	assert_strings_equal( lines[0].right, "line 1 here" )
	assert( lines[0].status == difflinetypes.IDENTICAL )

	assert_strings_equal( lines[1].left, "line 2 here" )
	assert_strings_equal( lines[1].right, "line 2 here different" )
	assert( lines[1].status == difflinetypes.DIFFERENT )

	assert_strings_equal( lines[2].left, "line 3 here" )
	assert( lines[2].right is None )
	assert( lines[2].status == difflinetypes.REMOVE )

	assert_strings_equal( lines[3].left, "line 4 here" )
	assert_strings_equal( lines[3].right, "line 4 here" )
	assert( lines[3].status == difflinetypes.IDENTICAL )

	assert_strings_equal( lines[4].left, "line 5 here" )
	assert_strings_equal( lines[4].right, "line 5 here" )
	assert( lines[4].status == difflinetypes.IDENTICAL )

	assert( lines[5].left is None )
	assert_strings_equal( lines[5].right, "line 6 here" )
	assert( lines[5].status == difflinetypes.ADD )

	assert_strings_equal( lines[6].left, "line 7 here" )
	assert_strings_equal( lines[6].right, "line 7 here" )
	assert( lines[6].status == difflinetypes.IDENTICAL )

	assert_strings_equal( lines[7].left, "line 8 here" )
	assert_strings_equal( lines[7].right, "line 8 here" )
	assert( lines[7].status == difflinetypes.IDENTICAL )

	assert_strings_equal( lines[8].left, "line 9 here" )
	assert( lines[8].right is None )
	assert( lines[8].status == difflinetypes.REMOVE )

	assert_strings_equal( lines[9].left, "line 10 here" )
	assert_strings_equal( lines[9].right, "line 10 here" )
	assert( lines[9].status == difflinetypes.IDENTICAL )
def removed_in_middle():

	file1 = [
		"line 1 here\n",
		"line 2 here\n",
		"line 3 here\n",
		"line 4 here\n",
		"line 5 here\n",
		"line 6 here\n",
		"line 7 here\n",
		"line 8 here\n",
		"line 9 here\n",
		"line 10 here\n",
		"line 11 here\n",
		"line 12 here\n",
		"line 13 here\n",
		"line 14 here\n",
		"line 15 here\n",
		"line 16 here\n",
	]

	diff = [
		"--- test/file1.txt	2009-03-28 20:29:28.000000000 +0000\n",
		"+++ test/file2.txt	2009-03-28 20:29:37.000000000 +0000\n",
		"@@ -1,5 +1,4 @@\n",
		" line 1 here\n",
		"-line 2 here\n",
		" line 3 here\n",
		" line 4 here\n",
		" line 5 here\n",
		"@@ -12,5 +11,4 @@\n",
		" line 12 here\n",
		" line 13 here\n",
		" line 14 here\n",
		"-line 15 here\n",
		" line 16 here\n",
	]

	unifieddiffparser = UnifiedDiffParser( file1, diff )
	diffmodel = DiffModel( unifieddiffparser )

	lines = diffmodel.get_lines()

	assert_strings_equal( lines[0].left,  "line 1 here" )
	assert_strings_equal( lines[0].right, "line 1 here" )
	assert( lines[0].status == difflinetypes.IDENTICAL )

	assert_strings_equal( lines[1].left, "line 2 here" )
	assert( lines[1].right is None )
	assert( lines[1].status == difflinetypes.REMOVE )

	for i in range( 3, 15 ):
		assert_strings_equal( lines[i-1].left,  "line %d here" % i )
		assert_strings_equal( lines[i-1].right, "line %d here" % i )
		assert( lines[i-1].status == difflinetypes.IDENTICAL )

	assert_strings_equal( lines[14].left, "line 15 here" )
	assert( lines[14].right is None )
	assert( lines[14].status == difflinetypes.REMOVE )

	assert_strings_equal( lines[15].left, "line 16 here" )
	assert_strings_equal( lines[15].right, "line 16 here" )
	assert( lines[15].status == difflinetypes.IDENTICAL )
Example #14
0
def get_num_lines():
	parser = FakeParser()
	diffmodel = DiffModel( parser )

	assert( diffmodel.get_num_lines() == 4 )