| /******************************************************************************* |
| * Copyright (c) 2004, 2013 John-Mason P. Shackelford and others. |
| * |
| * This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * John-Mason P. Shackelford - initial API and implementation |
| * IBM Corporation - bug 84342 |
| *******************************************************************************/ |
| package org.eclipse.ant.tests.ui.editor.formatter; |
| |
| import junit.framework.TestCase; |
| |
| import org.eclipse.ant.internal.ui.AntUIPlugin; |
| import org.eclipse.ant.internal.ui.editor.formatter.FormattingPreferences; |
| import org.eclipse.ant.internal.ui.editor.formatter.XmlFormatter; |
| import org.eclipse.ant.internal.ui.preferences.AntEditorPreferenceConstants; |
| import org.eclipse.core.runtime.preferences.IEclipsePreferences; |
| import org.eclipse.core.runtime.preferences.InstanceScope; |
| |
| public class XmlFormatterTest extends TestCase { |
| |
| public final void testFormatUsingPreferenceStore() throws Exception { |
| IEclipsePreferences node = InstanceScope.INSTANCE.getNode(AntUIPlugin.getUniqueIdentifier()); |
| if (node != null) { |
| node.putBoolean(AntEditorPreferenceConstants.FORMATTER_WRAP_LONG, true); |
| node.putInt(AntEditorPreferenceConstants.FORMATTER_MAX_LINE_LENGTH, 40); |
| node.putBoolean(AntEditorPreferenceConstants.FORMATTER_ALIGN, false); |
| node.putBoolean(AntEditorPreferenceConstants.FORMATTER_TAB_CHAR, true); |
| node.putInt(AntEditorPreferenceConstants.FORMATTER_TAB_SIZE, 4); |
| node.flush(); |
| } |
| String lineSep = System.getProperty("line.separator"); //$NON-NLS-1$ |
| String xmlDoc = "<project default=\"go\"><target name=\"go\" description=\"Demonstrate the wrapping of long tags.\"><echo>hi</echo></target></project>"; //$NON-NLS-1$ |
| String formattedDoc = XmlFormatter.format(xmlDoc); |
| String expected = "<project default=\"go\">" + lineSep + "\t<target name=\"go\"" + lineSep + "\t description=\"Demonstrate the wrapping of long tags.\">" + lineSep + "\t\t<echo>hi</echo>" + lineSep + "\t</target>" + lineSep + "</project>"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ |
| assertEquals(expected, formattedDoc); |
| } |
| |
| public final void testFormatWithPreferenceParameter() { |
| FormattingPreferences prefs = new FormattingPreferences() { |
| @Override |
| public boolean wrapLongTags() { |
| return true; |
| } |
| |
| @Override |
| public int getMaximumLineWidth() { |
| return 40; |
| } |
| |
| @Override |
| public boolean alignElementCloseChar() { |
| return false; |
| } |
| |
| @Override |
| public boolean useSpacesInsteadOfTabs() { |
| return true; |
| } |
| |
| @Override |
| public int getTabWidth() { |
| return 6; |
| } |
| }; |
| String lineSep = System.getProperty("line.separator"); //$NON-NLS-1$ |
| String xmlDoc = "<project default=\"go\"><target name=\"go\" description=\"Demonstrate the wrapping of long tags.\"><echo>hi</echo></target></project>"; //$NON-NLS-1$ |
| String formattedDoc = XmlFormatter.format(xmlDoc, prefs); |
| String expected = "<project default=\"go\">" + lineSep + " <target name=\"go\"" + lineSep + " description=\"Demonstrate the wrapping of long tags.\">" + lineSep + " <echo>hi</echo>" + lineSep + " </target>" + lineSep + "</project>"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ |
| assertEquals(expected, formattedDoc); |
| } |
| |
| /** |
| * Bug 84342 |
| */ |
| public final void testFormatMaintainingLineSeparators() { |
| FormattingPreferences prefs = new FormattingPreferences() { |
| @Override |
| public boolean wrapLongTags() { |
| return true; |
| } |
| |
| @Override |
| public int getMaximumLineWidth() { |
| return 40; |
| } |
| |
| @Override |
| public boolean alignElementCloseChar() { |
| return false; |
| } |
| |
| @Override |
| public boolean useSpacesInsteadOfTabs() { |
| return true; |
| } |
| |
| @Override |
| public int getTabWidth() { |
| return 6; |
| } |
| }; |
| String lineSep = System.getProperty("line.separator"); //$NON-NLS-1$ |
| String xmlDoc = "<project default=\"go\"><target name=\"go\" description=\"Demonstrate the wrapping of long tags.\"><echo>hi</echo></target>" + lineSep + lineSep + "</project>"; //$NON-NLS-1$ //$NON-NLS-2$ |
| String formattedDoc = XmlFormatter.format(xmlDoc, prefs); |
| String expected = "<project default=\"go\">" + lineSep + " <target name=\"go\"" + lineSep + " description=\"Demonstrate the wrapping of long tags.\">" + lineSep + " <echo>hi</echo>" + lineSep + " </target>" + lineSep + lineSep + "</project>"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ |
| assertEquals(expected, formattedDoc); |
| } |
| |
| } |