| /******************************************************************************* |
| * Copyright (c) 2000, 2004 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.compare.tests; |
| |
| import java.io.ByteArrayInputStream; |
| import java.io.ByteArrayOutputStream; |
| import java.io.InputStream; |
| import java.io.UnsupportedEncodingException; |
| |
| import junit.framework.TestCase; |
| |
| import org.eclipse.compare.IStreamMerger; |
| import org.eclipse.compare.internal.merge.TextStreamMerger; |
| import org.eclipse.core.runtime.IProgressMonitor; |
| import org.eclipse.core.runtime.IStatus; |
| |
| |
| public class StreamMergerTest extends TestCase { |
| |
| String encoding= "UTF-8"; //$NON-NLS-1$ |
| |
| public StreamMergerTest(String name) { |
| super(name); |
| } |
| |
| public void testIncomingAddition() throws UnsupportedEncodingException { |
| |
| String a= "abc\ndef\nxyz"; //$NON-NLS-1$ |
| String t= "abc\ndef\nxyz"; //$NON-NLS-1$ |
| String o= "abc\ndef\n123\nxyz"; //$NON-NLS-1$ |
| |
| StringBuffer output= new StringBuffer(); |
| |
| IStatus status= merge(output, a, t, o); |
| |
| assertEquals(status.getSeverity(), IStatus.OK); |
| assertEquals(status.getCode(), IStatus.OK); |
| assertEquals(output.toString(), "abc\ndef\n123\nxyz\n"); //$NON-NLS-1$ |
| } |
| |
| public void testIncomingDeletion() throws UnsupportedEncodingException { |
| |
| String a= "abc\ndef\nxyz"; //$NON-NLS-1$ |
| String t= "abc\ndef\nxyz"; //$NON-NLS-1$ |
| String o= "abc\nxyz"; //$NON-NLS-1$ |
| |
| StringBuffer output= new StringBuffer(); |
| |
| IStatus status= merge(output, a, t, o); |
| |
| assertEquals(status.getSeverity(), IStatus.OK); |
| assertEquals(status.getCode(), IStatus.OK); |
| assertEquals(output.toString(), "abc\nxyz\n"); //$NON-NLS-1$ |
| } |
| |
| public void testIncomingReplacement() throws UnsupportedEncodingException { |
| |
| String a= "abc\ndef\nxyz"; //$NON-NLS-1$ |
| String t= "abc\ndef\nxyz"; //$NON-NLS-1$ |
| String o= "abc\n123\nxyz"; //$NON-NLS-1$ |
| |
| StringBuffer output= new StringBuffer(); |
| |
| IStatus status= merge(output, a, t, o); |
| |
| assertEquals(status.getSeverity(), IStatus.OK); |
| assertEquals(status.getCode(), IStatus.OK); |
| assertEquals(output.toString(), "abc\n123\nxyz\n"); //$NON-NLS-1$ |
| } |
| |
| public void testNonConflictingMerge() throws UnsupportedEncodingException { |
| |
| String a= "abc\ndef\nxyz"; //$NON-NLS-1$ |
| String t= "abc\ndef\nxyz\nfoo"; //$NON-NLS-1$ |
| String o= "abc\n123\n456\nxyz"; //$NON-NLS-1$ |
| |
| StringBuffer output= new StringBuffer(); |
| |
| IStatus status= merge(output, a, t, o); |
| |
| assertEquals(status.getSeverity(), IStatus.OK); |
| assertEquals(status.getCode(), IStatus.OK); |
| assertEquals(output.toString(), "abc\n123\n456\nxyz\nfoo\n"); //$NON-NLS-1$ |
| } |
| |
| public void testConflictingReplacement() throws UnsupportedEncodingException { |
| |
| String a= "abc\ndef\nxyz"; //$NON-NLS-1$ |
| String t= "abc\nfoo\nxyz"; //$NON-NLS-1$ |
| String o= "abc\nbar\nxyz"; //$NON-NLS-1$ |
| |
| StringBuffer output= new StringBuffer(); |
| |
| IStatus status= merge(output, a, t, o); |
| |
| assertEquals(status.getSeverity(), IStatus.ERROR); |
| assertEquals(status.getCode(), IStreamMerger.CONFLICT); |
| } |
| |
| public void testConflictingAddition() throws UnsupportedEncodingException { |
| |
| String a= "abc\ndef\nxyz"; //$NON-NLS-1$ |
| String t= "abc\ndef\n123\nxyz"; //$NON-NLS-1$ |
| String o= "abc\ndef\n123\nxyz"; //$NON-NLS-1$ |
| |
| StringBuffer output= new StringBuffer(); |
| |
| IStatus status= merge(output, a, t, o); |
| |
| assertEquals(status.getSeverity(), IStatus.OK); |
| assertEquals(status.getCode(), IStatus.OK); |
| assertEquals(output.toString(), "abc\ndef\n123\nxyz\n"); //$NON-NLS-1$ |
| } |
| |
| public void testConflictingDeletion() throws UnsupportedEncodingException { |
| |
| String a= "abc\ndef\nxyz"; //$NON-NLS-1$ |
| String t= "abc\nxyz"; //$NON-NLS-1$ |
| String o= "abc\nxyz"; //$NON-NLS-1$ |
| |
| StringBuffer output= new StringBuffer(); |
| |
| IStatus status= merge(output, a, t, o); |
| |
| assertEquals(status.getSeverity(), IStatus.OK); |
| assertEquals(status.getCode(), IStatus.OK); |
| assertEquals(output.toString(), "abc\nxyz\n"); //$NON-NLS-1$ |
| } |
| |
| private IStatus merge(StringBuffer output, String a, String m, String y) throws UnsupportedEncodingException { |
| InputStream ancestor= new ByteArrayInputStream(a.getBytes(encoding)); |
| InputStream target= new ByteArrayInputStream(m.getBytes(encoding)); |
| InputStream other= new ByteArrayInputStream(y.getBytes(encoding)); |
| |
| ByteArrayOutputStream os= new ByteArrayOutputStream(); |
| |
| IStreamMerger merger= new TextStreamMerger(); |
| IStatus status= merger.merge(os, encoding, ancestor, encoding, target, encoding, other, encoding, (IProgressMonitor)null); |
| |
| output.append(new String(os.toByteArray(), encoding)); |
| |
| return status; |
| } |
| } |