def has_edit_affecting_side_nullchange():

	staticdiffmodel = _make_static_diffmodel()
	editable = EditableDiffModel( staticdiffmodel )

	assert( not editable.has_edit_affecting_side( directions.RIGHT ) )
	assert( not editable.has_edit_affecting_side( directions.LEFT ) )

	editable.edit_lines( 0, 2, directions.RIGHT,
		[ "line 1 here", "line 2 here", "line 3 here" ] )

	editable.edit_lines( 1, 3, directions.RIGHT,
		[ "line 2 here", "line 3 here", "line 4 here" ] )

	assert( not editable.has_edit_affecting_side( directions.LEFT ) )
	assert( not editable.has_edit_affecting_side( directions.RIGHT ) )
def has_edit_affecting_side():

	staticdiffmodel = _make_static_diffmodel()
	editable = EditableDiffModel( staticdiffmodel )

	assert( not editable.has_edit_affecting_side( directions.RIGHT ) )
	assert( not editable.has_edit_affecting_side( directions.LEFT ) )

	editable.edit_lines( 0, 2, directions.RIGHT,
		( "edited 1a", "edited 2a", "edited 3a" ) )

	editable.edit_lines( 1, 3, directions.RIGHT,
		( "edited 2b", "edited 3b", "edited 4b" ) )

	assert( editable.has_edit_affecting_side( directions.RIGHT ) )
	assert( not editable.has_edit_affecting_side( directions.LEFT ) )

	editable.delete_lines( 1, 1, directions.LEFT )

	assert( editable.has_edit_affecting_side( directions.RIGHT ) )
	assert( editable.has_edit_affecting_side( directions.LEFT ) )
def has_edit_affecting_side_after_save():

	staticdiffmodel = _make_static_diffmodel()
	editable = EditableDiffModel( staticdiffmodel )

	editable.edit_lines( 0, 2, directions.RIGHT,
		( "edited 1a", "edited 2a", "edited 3a" ) )

	editable.edit_lines( 0, 2, directions.LEFT,
		( "edited left 1a", "edited left 2a", "edited left 3a" ) )

	assert( editable.has_edit_affecting_side( directions.RIGHT ) )
	assert( editable.has_edit_affecting_side( directions.LEFT ) )

	lines = editable.get_lines( 0, 3 )
	assert( len( lines ) == 3 )

	ln = lines[0]
	assert_strings_equal( ln.left, "edited left 1a" )
	assert_strings_equal( ln.right, "edited 1a" )
	assert( ln.status == difflinetypes.DIFFERENT )
	assert( ln.left_edited == True )
	assert( ln.right_edited == True )

	editable.set_save_point( directions.LEFT )

	lines = editable.get_lines( 0, 3 )
	assert( len( lines ) == 3 )

	ln = lines[0]
	assert_strings_equal( ln.left, "edited left 1a" )
	assert_strings_equal( ln.right, "edited 1a" )
	assert( ln.status == difflinetypes.DIFFERENT )
	assert( ln.left_edited == False )
	assert( ln.right_edited == True )

	assert( editable.has_edit_affecting_side( directions.RIGHT ) )
	assert( not editable.has_edit_affecting_side( directions.LEFT ) )

	editable.edit_lines( 0, 2, directions.RIGHT,
		( "edited 1b", "edited 2b", "edited 3b" ) )

	editable.set_save_point( directions.RIGHT )

	assert( not editable.has_edit_affecting_side( directions.RIGHT ) )
	assert( not editable.has_edit_affecting_side( directions.LEFT ) )

	lines = editable.get_lines( 0, 3 )
	assert( len( lines ) == 3 )

	ln = lines[0]
	assert_strings_equal( ln.left, "edited left 1a" )
	assert_strings_equal( ln.right, "edited 1b" )
	assert( ln.status == difflinetypes.DIFFERENT )
	assert( ln.left_edited == False )
	assert( ln.right_edited == False )

	editable.add_lines( 3, directions.LEFT,
		[ "Added line 1", "Added line 1", "Added line 1" ] )

	assert( not editable.has_edit_affecting_side( directions.RIGHT ) )
	assert( editable.has_edit_affecting_side( directions.LEFT ) )

	editable.add_lines( 3, directions.RIGHT,
		[ "Added line 1", "Added line 1", "Added line 1" ] )

	assert( editable.has_edit_affecting_side( directions.RIGHT ) )
	assert( editable.has_edit_affecting_side( directions.LEFT ) )

	editable.set_save_point( directions.LEFT )

	assert( editable.has_edit_affecting_side( directions.RIGHT ) )
	assert( not editable.has_edit_affecting_side( directions.LEFT ) )

	editable.set_save_point( directions.RIGHT )

	assert( not editable.has_edit_affecting_side( directions.RIGHT ) )
	assert( not editable.has_edit_affecting_side( directions.LEFT ) )