This commit was manufactured by cvs2svn to create tag 'R1_5_5'.
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/.classpath b/tests/org.eclipse.jst.jsp.tests.encoding/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/.cvsignore b/tests/org.eclipse.jst.jsp.tests.encoding/.cvsignore
new file mode 100644
index 0000000..bf82c7f
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/.cvsignore
@@ -0,0 +1,4 @@
+bin
+build.xml
+temp.folder
+jspencodingtests.jar
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/.project b/tests/org.eclipse.jst.jsp.tests.encoding/.project
new file mode 100644
index 0000000..8ea61d6
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.jst.jsp.tests.encoding</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/.settings/org.eclipse.core.resources.prefs b/tests/org.eclipse.jst.jsp.tests.encoding/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..afa5c91
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+#Tue Apr 04 03:36:32 EDT 2006
+eclipse.preferences.version=1
+encoding/<project>=ISO-8859-1
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.jst.jsp.tests.encoding/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..2dd8b5c
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,80 @@
+#Sun Apr 16 14:37:21 EDT 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=enabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=ignore
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+org.eclipse.jdt.core.compiler.problem.unusedLabel=error
+org.eclipse.jdt.core.compiler.problem.unusedLocal=error
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.3
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/.settings/org.eclipse.jdt.ui.prefs b/tests/org.eclipse.jst.jsp.tests.encoding/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..ef2ac65
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+#Tue Apr 04 03:36:39 EDT 2006
+eclipse.preferences.version=1
+internal.default.compliance=default
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/.settings/org.eclipse.ltk.core.refactoring.prefs b/tests/org.eclipse.jst.jsp.tests.encoding/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..c59368c
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Tue Apr 04 03:36:32 EDT 2006
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/.settings/org.eclipse.pde.prefs b/tests/org.eclipse.jst.jsp.tests.encoding/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..f724958
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,15 @@
+#Sun Apr 16 14:05:29 EDT 2006
+compilers.p.build=0
+compilers.p.deprecated=1
+compilers.p.illegal-att-value=0
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=0
+compilers.p.unknown-attribute=0
+compilers.p.unknown-class=0
+compilers.p.unknown-element=0
+compilers.p.unknown-resource=0
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.p.unused-element-or-attribute=0
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/META-INF/MANIFEST.MF b/tests/org.eclipse.jst.jsp.tests.encoding/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..61275fe
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name.0
+Bundle-SymbolicName: org.eclipse.jst.jsp.tests.encoding
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: jspencodingtests.jar
+Bundle-Activator: org.eclipse.jst.jsp.tests.encoding.JSPEncodingTestsPlugin
+Bundle-Vendor: %Bundle-Vendor.0
+Bundle-Localization: plugin
+Export-Package: org.eclipse.jst.jsp.tests.encoding,
+ org.eclipse.jst.jsp.tests.encoding.jsp
+Require-Bundle: org.eclipse.core.resources,
+ org.eclipse.core.runtime,
+ org.eclipse.jst.jsp.core,
+ org.eclipse.wst.xml.core,
+ org.junit,
+ org.eclipse.wst.sse.core,
+ org.eclipse.wst.xml.tests.encoding
+Eclipse-LazyStart: true
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/about.html b/tests/org.eclipse.jst.jsp.tests.encoding/about.html
new file mode 100644
index 0000000..4ec5989
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/build.properties b/tests/org.eclipse.jst.jsp.tests.encoding/build.properties
new file mode 100644
index 0000000..34304b5
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/build.properties
@@ -0,0 +1,10 @@
+source.jspencodingtests.jar = src/
+output.jspencodingtests.jar = bin/
+bin.includes = jspencodingtests.jar,\
+               testfiles/,\
+               test.xml,\
+               META-INF/,\
+               about.html
+src.includes = testfiles/,\
+               test.xml,\
+               META-INF/
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/plugin.properties b/tests/org.eclipse.jst.jsp.tests.encoding/plugin.properties
new file mode 100644
index 0000000..98b1b7f
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/plugin.properties
@@ -0,0 +1,3 @@
+# properties file for org.eclipse.jst.jsp.tests.encoding
+Bundle-Vendor.0 = Eclipse.org
+Bundle-Name.0 = JSP Encoding Tests Plug-in
\ No newline at end of file
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/src/org/eclipse/jst/jsp/tests/encoding/JSPEncodingTestSuite.java b/tests/org.eclipse.jst.jsp.tests.encoding/src/org/eclipse/jst/jsp/tests/encoding/JSPEncodingTestSuite.java
new file mode 100644
index 0000000..87cfaa3
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/src/org/eclipse/jst/jsp/tests/encoding/JSPEncodingTestSuite.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 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.jst.jsp.tests.encoding;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.eclipse.jst.jsp.tests.encoding.jsp.JSPEncodingTests;
+import org.eclipse.jst.jsp.tests.encoding.jsp.JSPHeadTokenizerTester;
+import org.eclipse.jst.jsp.tests.encoding.jsp.TestContentTypeDetectionForJSP;
+
+public class JSPEncodingTestSuite extends TestSuite {
+
+	private static Class[] classes = new Class[]{JSPEncodingTests.class, JSPHeadTokenizerTester.class, TestContentTypeDetectionForJSP.class};
+
+	public static Test suite() {
+		return new JSPEncodingTestSuite();
+	}
+
+	public JSPEncodingTestSuite() {
+		super("JSP Encoding Test Suite");
+		for (int i = 0; i < classes.length; i++) {
+			addTest(new TestSuite(classes[i], classes[i].getName()));
+		}
+	}
+
+	/**
+	 * @param theClass
+	 */
+	public JSPEncodingTestSuite(Class theClass) {
+		super(theClass);
+	}
+
+	/**
+	 * @param theClass
+	 * @param name
+	 */
+	public JSPEncodingTestSuite(Class theClass, String name) {
+		super(theClass, name);
+	}
+
+	/**
+	 * @param name
+	 */
+	public JSPEncodingTestSuite(String name) {
+		super(name);
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/src/org/eclipse/jst/jsp/tests/encoding/JSPEncodingTestsPlugin.java b/tests/org.eclipse.jst.jsp.tests.encoding/src/org/eclipse/jst/jsp/tests/encoding/JSPEncodingTestsPlugin.java
new file mode 100644
index 0000000..18e0c68
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/src/org/eclipse/jst/jsp/tests/encoding/JSPEncodingTestsPlugin.java
@@ -0,0 +1,142 @@
+/*******************************************************************************
+ * Copyright (c) 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.jst.jsp.tests.encoding;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Reader;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Plugin;
+
+/**
+ * The main plugin class to be used in the desktop.
+ */
+public class JSPEncodingTestsPlugin extends Plugin {
+	// The shared instance.
+	private static JSPEncodingTestsPlugin plugin;
+
+	public static List getAllTestFiles(String topDirName) {
+		List result = null;
+		URL installURL = getInstallLocation();
+		// String scheme = installURL.getProtocol();
+		String path = installURL.getPath();
+		String location = path + topDirName;
+		File topDir = new File(location);
+		if (!topDir.isDirectory()) {
+			throw new IllegalArgumentException(topDirName + " is not a directory");
+		}
+
+		result = getFilesInDir(topDir);
+		return result;
+	}
+
+	/**
+	 * Returns the shared instance.
+	 */
+	public static JSPEncodingTestsPlugin getDefault() {
+		return plugin;
+	}
+
+	private static List getFilesInDir(File topDir) {
+		List files = new ArrayList();
+		File[] topFiles = topDir.listFiles();
+		for (int i = 0; i < topFiles.length; i++) {
+			File file = topFiles[i];
+			if (file.isFile()) {
+				files.add(file);
+			}
+			else if (file.isDirectory() && !file.getName().endsWith("CVS")) {
+				List innerFiles = getFilesInDir(file);
+				files.addAll(innerFiles);
+			}
+		}
+		return files;
+	}
+
+	public static URL getInstallLocation() {
+		URL installLocation = Platform.getBundle("org.eclipse.jst.jsp.tests.encoding").getEntry("/");
+		URL resolvedLocation = null;
+		try {
+			resolvedLocation = FileLocator.resolve(installLocation);
+		}
+		catch (IOException e) {
+			// impossible
+			throw new Error(e);
+		}
+		return resolvedLocation;
+	}
+
+	/**
+	 * Returns the string from the plugin's resource bundle, or 'key' if not
+	 * found.
+	 */
+	public static String getResourceString(String key) {
+		ResourceBundle bundle = JSPEncodingTestsPlugin.getDefault().getResourceBundle();
+		try {
+			return (bundle != null ? bundle.getString(key) : key);
+		}
+		catch (MissingResourceException e) {
+			return key;
+		}
+	}
+
+	public static File getTestFile(String filepath) {
+		URL installURL = getInstallLocation();
+		// String scheme = installURL.getProtocol();
+		String path = installURL.getPath();
+		String location = path + filepath;
+		File result = new File(location);
+		return result;
+	}
+
+	public static Reader getTestReader(String filepath) throws FileNotFoundException {
+		URL installURL = getInstallLocation();
+		// String scheme = installURL.getProtocol();
+		String path = installURL.getPath();
+		String location = path + filepath;
+		Reader result = new FileReader(location);
+		return result;
+	}
+
+	/**
+	 * Returns the workspace instance.
+	 */
+	public static IWorkspace getWorkspace() {
+		return ResourcesPlugin.getWorkspace();
+	}
+
+	/**
+	 * The constructor.
+	 */
+	public JSPEncodingTestsPlugin() {
+		super();
+		plugin = this;
+	}
+
+	/**
+	 * Returns the plugin's resource bundle,
+	 */
+	public ResourceBundle getResourceBundle() {
+		return null;
+	}
+
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/src/org/eclipse/jst/jsp/tests/encoding/jsp/JSPEncodingTests.java b/tests/org.eclipse.jst.jsp.tests.encoding/src/org/eclipse/jst/jsp/tests/encoding/jsp/JSPEncodingTests.java
new file mode 100644
index 0000000..bed934f
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/src/org/eclipse/jst/jsp/tests/encoding/jsp/JSPEncodingTests.java
@@ -0,0 +1,182 @@
+/*******************************************************************************
+ * Copyright (c) 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.jst.jsp.tests.encoding.jsp;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CodingErrorAction;
+
+import junit.framework.TestCase;
+
+import org.eclipse.jst.jsp.core.internal.contenttype.JSPResourceEncodingDetector;
+import org.eclipse.jst.jsp.tests.encoding.JSPEncodingTestsPlugin;
+import org.eclipse.wst.sse.core.internal.encoding.EncodingMemento;
+import org.eclipse.wst.sse.core.internal.encoding.IResourceCharsetDetector;
+
+public class JSPEncodingTests extends TestCase {
+
+	/**
+	 * Ensures that an InputStream has mark/reset support.
+	 */
+	private static InputStream getMarkSupportedStream(InputStream original) {
+		if (original == null)
+			return null;
+		if (original.markSupported())
+			return original;
+		return new BufferedInputStream(original);
+	}
+	private boolean DEBUG = false;
+	private final String fileDir = "jsp/";
+	private final String fileHome = "testfiles/";
+	private final String fileLocation = fileHome + fileDir;
+	private int READ_BUFFER_SIZE = 8000;
+
+	public JSPEncodingTests(String name) {
+		super(name);
+	}
+
+	private void doTestFileStream(String filename, String expectedIANAEncoding, IResourceCharsetDetector detector) throws IOException {
+		File file = JSPEncodingTestsPlugin.getTestFile(filename);
+		if (!file.exists())
+			throw new IllegalArgumentException(filename + " was not found");
+		InputStream inputStream = new FileInputStream(file);
+		// InputStream inStream = getClass().getResourceAsStream(filename);
+		InputStream istream = getMarkSupportedStream(inputStream);
+		try {
+			detector.set(istream);
+			EncodingMemento encodingMemento = ((JSPResourceEncodingDetector)detector).getEncodingMemento();
+			String foundIANAEncoding = encodingMemento.getJavaCharsetName();
+			// I changed many "equals" to "equalsIgnoreCase" on 11/4/2002,
+			// since
+			// some issues with SHIFT_JIS vs. Shift_JIS were causing failures.
+			// We do want to be tolerant on input, and accept either, but I
+			// think
+			// that SupportedJavaEncodings needs to be changed to "recommend"
+			// Shift_JIS.
+			boolean expectedIANAResult = false;
+			expectedIANAResult = expectedIANAEncoding.equalsIgnoreCase(foundIANAEncoding);
+
+			assertTrue("encoding test file " + filename + " expected: " + expectedIANAEncoding + " found: " + foundIANAEncoding, expectedIANAResult);
+			// a very simple read test ... will cause JUnit error (not fail)
+			// if throws exception.
+			ensureCanRead(filename, foundIANAEncoding, istream);
+		}
+		finally {
+			if (istream != null) {
+				istream.close();
+			}
+			if (inputStream != null) {
+				inputStream.close();
+			}
+		}
+	}
+
+	/**
+	 * This method just reads to stream, to be sure it can be read per
+	 * encoding, without exception.
+	 */
+	private void ensureCanRead(String filename, String encoding, InputStream inStream) throws IOException {
+		Charset charset = Charset.forName(encoding);
+		CharsetDecoder charsetDecoder = charset.newDecoder();
+		charsetDecoder.onMalformedInput(CodingErrorAction.REPORT);
+		charsetDecoder.onUnmappableCharacter(CodingErrorAction.REPORT);
+
+		InputStreamReader reader = new InputStreamReader(inStream, charsetDecoder);
+		StringBuffer stringBuffer = readInputStream(reader);
+		if (DEBUG) {
+			System.out.println();
+			System.out.println(filename);
+			System.out.println(stringBuffer.toString());
+		}
+	}
+
+	private StringBuffer readInputStream(Reader reader) throws IOException {
+
+		StringBuffer buffer = new StringBuffer();
+		int numRead = 0;
+		char tBuff[] = new char[READ_BUFFER_SIZE];
+		while ((numRead = reader.read(tBuff, 0, tBuff.length)) != -1) {
+			buffer.append(tBuff, 0, numRead);
+		}
+		return buffer;
+	}
+
+	public void testdefect4205wpsjsp() throws IOException {
+		String filename = fileLocation + "defect_4205_wps.jsp";
+		doTestFileStream(filename, "UTF-8", new JSPResourceEncodingDetector());
+	}
+
+	public void testJSPEmptyFile() throws IOException {
+		String filename = fileLocation + "EmptyFile.jsp";
+		doTestFileStream(filename, "ISO-8859-1", new JSPResourceEncodingDetector());
+	}
+
+	/**
+	 * Caution, when this file prints out in console (when debug set to true,
+	 * it appears incorrect (due to font problems in console).
+	 */
+	public void testUTF16() throws IOException {
+		String filename = fileLocation + "testUTF16.jsp";
+		doTestFileStream(filename, "UTF-16BE", new JSPResourceEncodingDetector());
+	}
+
+	/**
+	 * This test shows unicode BOM should take priority over settings/defaults
+	 */
+	public void testUtf16UnicodeStreamWithNoEncodingInHeader() throws IOException {
+		String filename = fileLocation + "utf16UnicodeStreamWithNoEncodingInHeader2.jsp";
+		doTestFileStream(filename, "UTF-16", new JSPResourceEncodingDetector());
+	}
+
+	/**
+	 * This test shows unicode BOM should take priority over settings/defaults
+	 * Note: UTF-16 == UTF-16BE
+	 */
+	public void testUtf16UnicodeStreamWithNoEncodingInHeaderBE() throws IOException {
+		String filename = fileLocation + "utf16UnicodeStreamWithNoEncodingInHeaderBE.jsp";
+		doTestFileStream(filename, "UTF-16BE", new JSPResourceEncodingDetector());
+	}
+
+	public void testUTF16WithJapaneseChars() throws IOException {
+		String filename = fileLocation + "utf16WithJapaneseChars.jsp";
+		doTestFileStream(filename, "UTF-16BE", new JSPResourceEncodingDetector());
+	}
+
+	public void testUTF83ByteBOM() throws IOException {
+		String filename = fileLocation + "UTF8With3ByteBOM.jsp";
+		doTestFileStream(filename, "UTF-8", new JSPResourceEncodingDetector());
+	}
+
+	public void testXMLIllformedNormalNonDefault() throws IOException {
+		String filename = fileLocation + "IllformedNormalNonDefault.jsp";
+		String ianaInFile = "ISO-8859-8";
+		doTestFileStream(filename, ianaInFile, new JSPResourceEncodingDetector());
+	}
+
+	public void testXMLNoEncoding() throws IOException {
+		String filename = fileLocation + "noEncoding.jsp";
+		doTestFileStream(filename, "ISO-8859-1", new JSPResourceEncodingDetector());
+	}
+
+	public void testXMLNormalNonDefault() throws IOException {
+		String filename = fileLocation + "NormalNonDefault.jsp";
+		String ianaInFile = "ISO-8859-8";
+		doTestFileStream(filename, ianaInFile, new JSPResourceEncodingDetector());
+	}
+
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/src/org/eclipse/jst/jsp/tests/encoding/jsp/JSPHeadTokenizerTester.java b/tests/org.eclipse.jst.jsp.tests.encoding/src/org/eclipse/jst/jsp/tests/encoding/jsp/JSPHeadTokenizerTester.java
new file mode 100644
index 0000000..4cb3db8
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/src/org/eclipse/jst/jsp/tests/encoding/jsp/JSPHeadTokenizerTester.java
@@ -0,0 +1,299 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2005 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.jst.jsp.tests.encoding.jsp;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.util.regex.Pattern;
+
+import junit.framework.TestCase;
+
+import org.eclipse.jst.jsp.core.internal.contenttype.HeadParserToken;
+import org.eclipse.jst.jsp.core.internal.contenttype.JSPHeadTokenizer;
+import org.eclipse.jst.jsp.core.internal.contenttype.JSPHeadTokenizerConstants;
+import org.eclipse.jst.jsp.tests.encoding.JSPEncodingTestsPlugin;
+import org.eclipse.wst.xml.core.internal.contenttype.EncodingParserConstants;
+import org.eclipse.wst.xml.core.internal.contenttype.XMLHeadTokenizerConstants;
+
+public class JSPHeadTokenizerTester extends TestCase {
+	private boolean DEBUG = false;
+	private String fCharset;
+	private String fContentType;
+	private String fContentTypeValue;
+	private final String fileDir = "jsp/";
+	private final String fileHome = "testfiles/";
+	private final String fileLocation = fileHome + fileDir;
+	private String fPageEncodingValue = null;
+	private String fXMLDecEncodingName;
+	private String fLanguage;
+
+	private void doTestFile(String filename, String expectedName) throws IOException {
+		doTestFile(filename, expectedName, null, null);
+	}
+
+	private void doTestFile(String filename, String expectedName, String finalTokenType, String expectedContentType) throws IOException {
+		JSPHeadTokenizer tokenizer = null;
+		Reader fileReader = null;
+		try {
+			if (DEBUG) {
+				System.out.println();
+				System.out.println("       " + filename);
+				System.out.println();
+			}
+			fileReader = JSPEncodingTestsPlugin.getTestReader(filename);
+			tokenizer = new JSPHeadTokenizer(fileReader);
+		}
+		catch (IOException e) {
+			System.out.println("Error opening file \"" + filename + "\"");
+		}
+
+		HeadParserToken token = parseHeader(tokenizer);
+		String resultValue = getAppropriateEncoding();
+		fileReader.close();
+		if (finalTokenType != null) {
+			assertTrue("did not end as expected. found:  " + token.getType(), finalTokenType.equals(token.getType()));
+		}
+
+		if (expectedName == null) {
+			assertTrue("expected no encoding, but found: " + resultValue, resultValue == null);
+		}
+		else {
+			assertTrue("expected " + expectedName + " but found " + resultValue, expectedName.equals(resultValue));
+		}
+
+		String foundContentType = getContentType();
+		if (expectedContentType == null) {
+			assertTrue("expected no contentType, but found: " + foundContentType, foundContentType == null);
+		}
+		else {
+			assertTrue("expected " + expectedContentType + " but found " + foundContentType, expectedContentType.equals(foundContentType));
+		}
+
+	}
+
+	// public void testMalformedNoEncoding() {
+	// String filename = fileLocation + "MalformedNoEncoding.jsp";
+	// doTestFile(filename);
+	// }
+	// public void testMalformedNoEncodingXSL() {
+	// String filename = fileLocation + "MalformedNoEncodingXSL.jsp";
+	// doTestFile(filename);
+	// }
+	// public void testNoEncoding() {
+	// String filename = fileLocation + "NoEncoding.jsp";
+	// doTestFile(filename);
+	// }
+	public void testNormalNonDefault() throws IOException {
+		String filename = fileLocation + "NormalNonDefault.jsp";
+		doTestFile(filename, "ISO-8859-8");
+	}
+
+	// public void testNormalPageCaseNonDefault() {
+	// String filename = fileLocation + "NormalPageCaseNonDefault.jsp";
+	// doTestFile(filename);
+	// }
+	// public void testdefect223365() {
+	// String filename = fileLocation + "SelColBeanRow12ResultsForm.jsp";
+	// doTestFile(filename);
+	// }
+	/**
+	 * returns encoding according to priority: 1. XML Declaration 2. page
+	 * directive pageEncoding name 3. page directive contentType charset name
+	 */
+	private String getAppropriateEncoding() {
+		String result = null;
+		if (fXMLDecEncodingName != null)
+			result = fXMLDecEncodingName;
+		else if (fPageEncodingValue != null)
+			result = fPageEncodingValue;
+		else if (fCharset != null)
+			result = fCharset;
+		return result;
+	}
+
+	private String getContentType() {
+		return fContentType;
+	}
+
+	private boolean isLegalString(String tokenType) {
+		boolean result = false;
+		if (tokenType != null) {
+			result = tokenType.equals(EncodingParserConstants.StringValue) || tokenType.equals(EncodingParserConstants.UnDelimitedStringValue) || tokenType.equals(EncodingParserConstants.InvalidTerminatedStringValue) || tokenType.equals(EncodingParserConstants.InvalidTermintatedUnDelimitedStringValue);
+		}
+		return result;
+	}
+
+	/**
+	 * This method should be exactly the same as what is in
+	 * JSPResourceEncodingDetector
+	 * 
+	 * @param contentType
+	 */
+	private void parseContentTypeValue(String contentType) {
+		Pattern pattern = Pattern.compile(";\\s*charset\\s*=\\s*"); //$NON-NLS-1$
+		String[] parts = pattern.split(contentType);
+		if (parts.length > 0) {
+			// if only one item, it can still be charset instead of
+			// contentType
+			if (parts.length == 1) {
+				if (parts[0].length() > 6) {
+					String checkForCharset = parts[0].substring(0, 7);
+					if (checkForCharset.equalsIgnoreCase("charset")) {
+						int eqpos = parts[0].indexOf('=');
+						eqpos = eqpos + 1;
+						if (eqpos < parts[0].length()) {
+							fCharset = parts[0].substring(eqpos);
+							fCharset = fCharset.trim();
+						}
+					}
+					else {
+						fContentType = parts[0];
+					}
+				}
+			}
+			else {
+				fContentType = parts[0];
+			}
+		}
+		if (parts.length > 1) {
+			fCharset = parts[1];
+		}
+	}
+
+	/**
+	 * Give's priority to encoding value, if found else, looks for contentType
+	 * value;
+	 */
+	private HeadParserToken parseHeader(JSPHeadTokenizer tokenizer) throws IOException {
+		fPageEncodingValue = null;
+		fCharset = null;
+		fContentType = null;
+		HeadParserToken token = null;
+		HeadParserToken finalToken = null;
+		do {
+			token = tokenizer.getNextToken();
+			String tokenType = token.getType();
+
+			if (tokenType == XMLHeadTokenizerConstants.XMLDelEncoding) {
+				if (tokenizer.hasMoreTokens()) {
+					HeadParserToken valueToken = tokenizer.getNextToken();
+					String valueTokenType = valueToken.getType();
+					if (isLegalString(valueTokenType)) {
+						fXMLDecEncodingName = valueToken.getText();
+					}
+				}
+			}
+			else if (tokenType == JSPHeadTokenizerConstants.PageEncoding) {
+				if (tokenizer.hasMoreTokens()) {
+					HeadParserToken valueToken = tokenizer.getNextToken();
+					String valueTokenType = valueToken.getType();
+					if (isLegalString(valueTokenType)) {
+						fPageEncodingValue = valueToken.getText();
+					}
+				}
+			}
+			else if (tokenType == JSPHeadTokenizerConstants.PageContentType) {
+				if (tokenizer.hasMoreTokens()) {
+					HeadParserToken valueToken = tokenizer.getNextToken();
+					String valueTokenType = valueToken.getType();
+					if (isLegalString(valueTokenType)) {
+						fContentTypeValue = valueToken.getText();
+					}
+				}
+			}
+			else if (tokenType == JSPHeadTokenizerConstants.PageLanguage) {
+				if (tokenizer.hasMoreTokens()) {
+					HeadParserToken valueToken = tokenizer.getNextToken();
+					String valueTokenType = valueToken.getType();
+					if (isLegalString(valueTokenType)) {
+						fLanguage = valueToken.getText();
+					}
+				}
+			}
+		}
+		while (tokenizer.hasMoreTokens());
+		if (fContentTypeValue != null) {
+			parseContentTypeValue(fContentTypeValue);
+		}
+		finalToken = token;
+		return finalToken;
+	}
+
+	public void testBestCase() throws IOException {
+		String filename = fileLocation + "nomalDirectiveCase.jsp";
+		doTestFile(filename, "ISO-8859-2", null, "text/html");
+	}
+
+	public void testMinimalPageDirective() throws IOException {
+		String filename = fileLocation + "minimalPageDirective.jsp";
+		doTestFile(filename, null, null, "text/html");
+	}
+
+	public void testIllFormed() throws IOException {
+		String filename = fileLocation + "testIllFormed.jsp";
+		doTestFile(filename, null);
+	}
+
+	public void testIllFormed2() throws IOException {
+		String filename = fileLocation + "testIllFormed2.jsp";
+		doTestFile(filename, "UTF-8");
+	}
+
+	public void testIllformedNormalNonDefault() throws IOException {
+		String filename = fileLocation + "IllformedNormalNonDefault.jsp";
+		doTestFile(filename, "ISO-8859-8", null, "text/html");
+	}
+
+	public void testEmptyFile() throws IOException {
+		String filename = fileLocation + "EmptyFile.jsp";
+		doTestFile(filename, null);
+	}
+
+	public void testNomalDirectiveCaseUsingXMLSyntax() throws IOException {
+		String filename = fileLocation + "nomalDirectiveCaseUsingXMLSyntax.jsp";
+		doTestFile(filename, "ISO-8859-2", null, "text/html");
+	}
+
+	public void testNoPageDirective() throws IOException {
+		String filename = fileLocation + "testNoPageDirective.jsp";
+		doTestFile(filename, null);
+	}
+
+	public void testNormalPageDirectiveWithXMLDecl() throws IOException {
+		String filename = fileLocation + "nomalDirectiveCasewithXMLDecl.jsp";
+		doTestFile(filename, "ISO-8859-1", null, "text/html");
+	}
+
+
+	public void testNoPageDirectiveAtFirst() throws IOException {
+		String filename = fileLocation + "testNoPageDirectiveAtFirst.jsp";
+		doTestFile(filename, "ISO-8859-2", null, "text/html");
+	}
+
+	public void testNoPageDirectiveInLargeFile() throws IOException {
+		String filename = fileLocation + "testNoPageDirectiveInLargeFile.jsp";
+		doTestFile(filename, null, EncodingParserConstants.MAX_CHARS_REACHED, null);
+	}
+
+	public void testNormalCaseWithNeither() throws IOException {
+		String filename = fileLocation + "nomalDirectiveCaseNoEncoding.jsp";
+		doTestFile(filename, null);
+	}
+
+	public void testNormalCharset() throws IOException {
+		String filename = fileLocation + "nomalDirectiveCaseUsingCharset.jsp";
+		doTestFile(filename, "ISO-8859-3", null, "text/html");
+	}
+
+	public String getLanguage() {
+		return fLanguage;
+	}
+}
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/src/org/eclipse/jst/jsp/tests/encoding/jsp/TestContentTypeDetectionForJSP.java b/tests/org.eclipse.jst.jsp.tests.encoding/src/org/eclipse/jst/jsp/tests/encoding/jsp/TestContentTypeDetectionForJSP.java
new file mode 100644
index 0000000..ae113db
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/src/org/eclipse/jst/jsp/tests/encoding/jsp/TestContentTypeDetectionForJSP.java
@@ -0,0 +1,211 @@
+/*******************************************************************************
+ * Copyright (c) 2005 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.jst.jsp.tests.encoding.jsp;
+
+import java.io.IOException;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.content.IContentDescription;
+import org.eclipse.jst.jsp.core.internal.provisional.contenttype.IContentDescriptionForJSP;
+import org.eclipse.wst.xml.tests.encoding.read.TestContentTypeDetection;
+
+public class TestContentTypeDetectionForJSP extends TestContentTypeDetection {
+
+	protected void doTest(String expectedContentType, String filePath, Class expectedException, String expectedJSPContentType) throws CoreException, IOException {
+		super.doTest(expectedContentType, filePath, expectedException);
+		
+		IFile file = (IFile) getTestProject().findMember(filePath);
+		assertNotNull("Error in test case: file not found: " + filePath, file);
+
+
+		IContentDescription streamContentDescription = doGetContentTypeBasedOnStream(file);
+		IContentDescription fileContentDescription = doGetContentTypeBasedOnFile(file);
+
+		String streamJSPContentType = (String) streamContentDescription.getProperty(IContentDescriptionForJSP.CONTENT_TYPE_ATTRIBUTE);
+
+		checkResults(expectedJSPContentType, streamJSPContentType);
+		
+		
+		String fileJSPContentType = (String) fileContentDescription.getProperty(IContentDescriptionForJSP.CONTENT_TYPE_ATTRIBUTE);
+		checkResults(expectedJSPContentType, fileJSPContentType);
+
+
+	}
+
+	private void checkResults(String expectedJSPContentType, String foundJSPContentType) {
+		if (expectedJSPContentType == null) {
+			assertTrue("expected no contentType, but found: " + foundJSPContentType, foundJSPContentType == null);
+		}
+		else {
+			assertTrue("expected " + expectedJSPContentType + " but found " + foundJSPContentType, expectedJSPContentType.equals(foundJSPContentType));
+		}
+	}
+	
+	public void testFile100() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/regressionTestFiles/defect223365/SelColBeanRow12ResultsFormB.jsp", null, "text/html");
+	}
+
+	public void testFile101() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/regressionTestFiles/defect224293/testshiftjisXmlSyntax.jsp", null, "text/html");
+	}
+
+	public void testFile102() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/regressionTestFiles/defect229667/audi.jsp", null, "text/html");
+	}
+
+	public void testFile65() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/EmptyFile.jsp", null, null);
+	}
+
+	public void testFile66() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/IllformedNormalNonDefault.jsp", null, "text/html");
+	}
+
+	public void testFile67() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/inValidEncodingValue.jsp", org.eclipse.wst.sse.core.internal.exceptions.UnsupportedCharsetExceptionWithDetail.class);
+	}
+
+	public void testFile68() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/javaEncodingValue.jsp", null, "text/html");
+	}
+
+	public void testFile69() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/MalformedNoEncoding.jsp", null, null);
+	}
+
+	public void testFile70() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/MalformedNoEncodingXSL.jsp", null, null);
+	}
+
+	public void testFile71() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/noEncoding.jsp", null, "text/html");
+	}
+
+	public void testFile72() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/NoEncodinginXMLDecl.jsp", null, null);
+	}
+
+	public void testFile73() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/nomalDirectiveCase.jsp", null, "text/html");
+	}
+
+	public void testFile74() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/nomalDirectiveCaseNoEncoding.jsp", null, null);
+	}
+
+	public void testFile75() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/nomalDirectiveCaseUsingCharset.jsp", null, "text/html");
+	}
+
+	public void testFile76() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/nomalDirectiveCaseUsingXMLSyntax.jsp", null, "text/html");
+	}
+
+	public void testFile77() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/NormalNonDefault.jsp", null, null);
+	}
+
+	public void testFile78() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/NormalNonDefaultWithXMLDecl.jsp", null, "text/html");
+	}
+	public void nomalDirectiveCasewithXMLDecl() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/nomalDirectiveCasewithXMLDecl.jsp", null, "text/html");
+	}
+	public void testFile79() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/NormalPageCaseNonDefault.jsp", null, "text/html");
+	}
+
+	public void testFile80() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/SelColBeanRow12ResultsForm.jsp", null, "text/html");
+	}
+
+	public void testFile81() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/testBrokenLine.jsp", null, null);
+	}
+
+	public void testFile82() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/testDefaultEncoding.jsp", org.eclipse.wst.sse.core.internal.exceptions.UnsupportedCharsetExceptionWithDetail.class, "text/html");
+	}
+
+	public void testFile83() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/testDefaultEncodingWithJunk.jsp", org.eclipse.wst.sse.core.internal.exceptions.UnsupportedCharsetExceptionWithDetail.class, "text/html");
+	}
+
+	public void testFile84() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/testExtraJunk.jsp", null, null);
+	}
+
+	public void testFile85() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/testExtraValidStuff.jsp", null, null);
+	}
+
+	public void testFile86() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/testIllFormed.jsp", null, null);
+	}
+
+	public void testFile87() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/testIllFormed2.jsp", null, null);
+	}
+
+	public void testFile88() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/testNoEncodingValue.jsp", null, null);
+	}
+
+	public void testFile89() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/testNoPageDirective.jsp", null, null);
+	}
+
+
+	public void testFile90() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/testNoPageDirectiveAtFirst.jsp", null, "text/html");
+	}
+
+	public void testFile91() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/testNoPageDirectiveInLargeFile.jsp", null, null);
+	}
+
+	public void testFile92() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/testNormalCase.jsp", null, null);
+	}
+
+	public void testFile93() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/testUTF16.jsp", null, null);
+	}
+
+	public void testFile94() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/utf16UnicodeStreamWithNoEncodingInHeader2.jsp", null, null);
+	}
+
+	public void testFile95() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/utf16UnicodeStreamWithNoEncodingInHeaderBE.jsp", null, null);
+	}
+
+	public void testFile96() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/utf16WithJapaneseChars.jsp", null, null);
+	}
+
+	public void testFile97() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/UTF8With3ByteBOM.jsp", null, null);
+	}
+
+	public void testFile98() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/jsp/WellFormedNormalNonDefault.jsp", null, "text/html");
+	}
+
+	public void testFile99() throws CoreException, IOException {
+		doTest("org.eclipse.jst.jsp.core.jspsource", "testfiles/regressionTestFiles/defect223365/SelColBeanRow12ResultsForm.jsp", null, "text/html");
+	}
+
+
+}
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/test.xml b/tests/org.eclipse.jst.jsp.tests.encoding/test.xml
new file mode 100644
index 0000000..7cc97da
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/test.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0"?>
+
+<project
+	name="testsuite"
+	default="run"
+	basedir=".">
+
+	<!-- Configurable Properties -->
+
+	<!-- The property ${eclipse-home} should be passed into this script -->
+	<!-- Set a meaningful default value for when it is not. -->
+	<!-- <property name="eclipse-home" value="${basedir}\..\.." /> -->
+
+	<echo message="basedir ${basedir}" />
+	<echo message="eclipse place ${eclipse-home}" />
+
+	<!-- sets the properties plugin-name, and library-file -->
+	<property
+		name="plugin-name"
+		value="org.eclipse.jst.jsp.tests.encoding" />
+	<property
+		name="library-file"
+		value="${eclipse-home}/plugins/org.eclipse.test_3.1.0/library.xml" />
+
+	<!-- This target holds all initialization code that needs to be done for -->
+	<!-- all tests that are to be run. Initialization for individual tests -->
+	<!-- should be done within the body of the suite target. -->
+	<target name="init">
+		<delete>
+			<fileset
+				dir="${eclipse-home}"
+				includes="org.eclipse.jst.jsp.tests.encoding.*xml" />
+		</delete>
+	</target>
+
+	<!-- This target defines the tests that need to be run. -->
+	<target name="suite">
+		<property
+			name="wst-folder"
+			value="${eclipse-home}/wst_folder" />
+		<delete
+			dir="${wst-folder}"
+			quiet="true" />
+		<ant
+			target="core-test"
+			antfile="${library-file}"
+			dir="${eclipse-home}">
+			<property
+				name="data-dir"
+				value="${wst-folder}" />
+			<property
+				name="plugin-name"
+				value="org.eclipse.jst.jsp.tests.encoding" />
+			<property
+				name="classname"
+				value="org.eclipse.jst.jsp.tests.encoding.JSPEncodingTestSuite" />
+			<property
+				name="plugin-path"
+				value="${eclipse-home}/plugins/${plugin-name}" />
+			<property
+				name="workspace"
+				value="${eclipse-home}/junitworkspace-${plugin-name}" />
+		    
+		</ant>
+	</target>
+
+	<!-- This target holds code to cleanup the testing environment after -->
+	<!-- after all of the tests have been run. You can use this target to -->
+	<!-- delete temporary files that have been created. -->
+	<target name="cleanup">
+		<!--<delete dir="${workspace}" quiet="true" />-->
+	</target>
+
+	<!-- This target runs the test suite. Any actions that need to happen -->
+	<!-- after all the tests have been run should go here. -->
+	<target
+		name="run"
+		depends="init,suite,cleanup">
+		<ant
+			target="collect"
+			antfile="${library-file}"
+			dir="${eclipse-home}">
+			<property
+				name="includes"
+				value="org.eclipse.jst.jsp.tests.encoding.*xml" />
+			<property
+				name="output-file"
+				value="${plugin-name}.xml" />
+		</ant>
+		<!--<emailResults resultsFile="${build-results-home}/${plugin-name}.xml" addresslist="david_williams@us.ibm.com" /> -->
+	</target>
+
+</project>
\ No newline at end of file
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/EmptyFile.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/EmptyFile.jsp
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/EmptyFile.jsp
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/IllformedNormalNonDefault.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/IllformedNormalNonDefault.jsp
new file mode 100644
index 0000000..9fd0e75
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/IllformedNormalNonDefault.jsp
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="ISO-8859-8?>

+<%@page contentType="text/html; charset=UTF-8" pageEncoding="ISO-8859-7%>

+<test>

+</test>
\ No newline at end of file
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/MalformedNoEncoding.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/MalformedNoEncoding.jsp
new file mode 100644
index 0000000..265eb15
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/MalformedNoEncoding.jsp
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding=""?>

+<tag>

+Australië

+</tag>

+

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/MalformedNoEncodingXSL.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/MalformedNoEncodingXSL.jsp
new file mode 100644
index 0000000..0c3359d
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/MalformedNoEncodingXSL.jsp
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding=""?>

+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

+    version="1.0"

+    xmlns:xalan="http://xml.apache.org/xslt">

+<xsl:variable name="badEncoding">

+Australië

+</xsl:variable>

+</xsl:stylesheet>

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/NoEncodinginXMLDecl.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/NoEncodinginXMLDecl.jsp
new file mode 100644
index 0000000..e5ce76c
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/NoEncodinginXMLDecl.jsp
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>

+<test>

+</test>
\ No newline at end of file
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/NormalNonDefault.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/NormalNonDefault.jsp
new file mode 100644
index 0000000..5e89e68
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/NormalNonDefault.jsp
@@ -0,0 +1,3 @@
+<?xml version="99" encoding="ISO-8859-8"?>

+<test>

+</test>
\ No newline at end of file
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/NormalNonDefaultWithXMLDecl.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/NormalNonDefaultWithXMLDecl.jsp
new file mode 100644
index 0000000..886248f
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/NormalNonDefaultWithXMLDecl.jsp
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="ISO-8859-8"?>

+<%@page contentType="text/html; charset=UTF-8" pagetEncoding="ISO-8859-7"%>

+<test>

+</test>
\ No newline at end of file
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/NormalPageCaseNonDefault.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/NormalPageCaseNonDefault.jsp
new file mode 100644
index 0000000..1f27bba
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/NormalPageCaseNonDefault.jsp
@@ -0,0 +1,4 @@
+

+<%@page contentType="text/html; charset=UTF-8" pageEncoding="ISO-8859-7" %>

+<test>

+</test>
\ No newline at end of file
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/SelColBeanRow12ResultsForm.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/SelColBeanRow12ResultsForm.jsp
new file mode 100644
index 0000000..f837ee6
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/SelColBeanRow12ResultsForm.jsp
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

+I found this change

+

+<%@ page

+import="SelColBeanRow12ViewBean"

+ pageEncoding="SHIFT_JIS"

+ contentType="text/html; charset=JUNK"

+%>

+<HTML>

+<HEAD>

+<META http-equiv="Content-Type" content="text/html; charset=METAJUNK">

+<META name="GENERATOR" content="IBM WebSphere Studio">

+<TITLE>Results page</TITLE>

+

+<!--Styles-->

+<STYLE TYPE="text/css">

+<!--

+BODY {

+	background-color: #ffffff !important;

+}

+H1 {

+	color: #0000ff !important;

+	text-align: center !important;

+}

+TH {

+	text-align:left !important;

+	color: #000000 !important;

+	vertical-align: top !important;

+}

+TD {

+	text-align:left !important;

+	vertical-align: top !important;

+}

+TH.result {

+	background-color: #999999 !important;

+}

+TD.result {

+	background-color: #cccccc;

+	vertical-align: top !important;

+}

+-->

+</STYLE>

+

+

+<!--Style Sheet-->

+<LINK href="/t/theme/Master.css" rel="stylesheet" type="text/css">

+</head>

+<body>

+

+<jsp:useBean id="selColBeanRow12Bean" scope="session" class="SelColBeanRow12ViewBean" type="SelColBeanRow12ViewBean"/>

+<%

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+%>

+

+<%

+//Execute Bean Methods

+

+

+%>

+

+<!--Banner-->

+<H1>Results page</H1>

+

+<BR><BR>

+

+<!-- Result Table -->

+<TABLE border="0">

+<TBODY>

+			<TR>

+			<TH>TEST2_‹‹Ž‹</TH>

+			<TD>

+

+	<%=selColBeanRow12Bean.getTEST2_‹‹Ž‹()== null ? "NULL" : selColBeanRow12Bean.getTEST2_‹‹Ž‹().toString()%>

+			</TD>

+		</TR>

+		<TR>

+			<TH>TEST2_Š‰</TH>

+			<TD>

+

+	<%=selColBeanRow12Bean.getTEST2_Š‰()== null ? "NULL" : selColBeanRow12Bean.getTEST2_Š‰().toString()%>

+			</TD>

+		</TR>

+		<TR>

+			<TH>TEST2_‰‰Ž‰</TH>

+			<TD>

+

+	<%=selColBeanRow12Bean.getTEST2_‰‰Ž‰()== null ? "NULL" : selColBeanRow12Bean.getTEST2_‰‰Ž‰().toString()%>

+			</TD>

+		</TR>

+		<TR>

+			<TH>TEST2_\Z_</TH>

+			<TD>

+

+	<%=selColBeanRow12Bean.getTEST2_\Z_()== null ? "NULL" : selColBeanRow12Bean.getTEST2_\Z_().toString()%>

+			</TD>

+		</TR>

+		<TR>

+			<TH>TEST2_ŽŽŽŽ</TH>

+			<TD>

+

+	<%=selColBeanRow12Bean.getTEST2_ŽŽŽŽ()== null ? "NULL" : selColBeanRow12Bean.getTEST2_ŽŽŽŽ().toString()%>

+			</TD>

+		</TR>

+

+</TBODY>

+</TABLE >

+</body>

+</html>

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/UTF8With3ByteBOM.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/UTF8With3ByteBOM.jsp
new file mode 100644
index 0000000..39a39cf
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/UTF8With3ByteBOM.jsp
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<test>

+</test>
\ No newline at end of file
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/WellFormedNormalNonDefault.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/WellFormedNormalNonDefault.jsp
new file mode 100644
index 0000000..9f29652
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/WellFormedNormalNonDefault.jsp
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="ISO-8859-8"?>

+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="ISO-8859-7"%>

+<test>

+</test>
\ No newline at end of file
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/defect_4205_wps.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/defect_4205_wps.jsp
new file mode 100644
index 0000000..88dbd6f
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/defect_4205_wps.jsp
@@ -0,0 +1,15 @@
+<%@ page session="false" buffer="none" %>

+<%@ page language="java" contentType="text/html;charset=utf-8"%>

+<%@ taglib uri="/WEB-INF/tld/engine.tld" prefix="wps" %>

+<wps:constants/>

+

+<table>

+<tr><td><img alt="" title="" src='<%= wpsBaseURL %>/images/welcome_5.gif' border="0" align="left" /></td></tr>

+<tr><td>

+<span class="wpsTinyText"><b><%= Version.SERVER_NAME %> <%= Version.SERVER_VERSION %></b><br/>

+建置層次:<%= Version.BUILD_NUMBER %> <%= Version.BUILD_DATE %> <%= Version.BUILD_TIME %><br/>

+<br/>

+Licensed Materials - Property of IBM<br/>

+<%= Version.PRODUCT_NUMBER %><br/>

+(C) Copyright IBM Corp. <%= Copyright.YEARS %> All Rights Reserved.</span></td></tr>

+</table>

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/inValidEncodingValue.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/inValidEncodingValue.jsp
new file mode 100644
index 0000000..4d092e3
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/inValidEncodingValue.jsp
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

+<HTML>

+<HEAD>

+<%@ page 

+language="java"

+contentType="text/html; charset=abc"

+%>

+<META http-equiv="Content-Type" content="text/html">

+<META name="GENERATOR" content="IBM WebSphere Studio">

+<META http-equiv="Content-Style-Type" content="text/css">

+<LINK href="../theme/Master.css" rel="stylesheet" type="text/css">

+<TITLE>inValidEncodingValue.jsp</TITLE>

+</HEAD>

+<BODY>

+<P>Place inValidEncodingValue.jsp's content here.</P>

+</BODY>

+</HTML>

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/javaEncodingValue.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/javaEncodingValue.jsp
new file mode 100644
index 0000000..19c6d16
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/javaEncodingValue.jsp
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

+<HTML>

+<HEAD>

+<%@ page 

+language="java"  

+contentType="text/html; charset=Cp1252"

+%>

+<META http-equiv="Content-Type" content="text/html">

+<META name="GENERATOR" content="IBM WebSphere Studio">

+<META http-equiv="Content-Style-Type" content="text/css">

+<LINK href="../theme/Master.css" rel="stylesheet" type="text/css">

+<TITLE>inValidEncodingValue.jsp</TITLE>

+</HEAD>

+<BODY>

+<P>Place inValidEncodingValue.jsp's content here.</P>

+</BODY>

+</HTML>

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/minimalPageDirective.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/minimalPageDirective.jsp
new file mode 100644
index 0000000..f9a22b4
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/minimalPageDirective.jsp
@@ -0,0 +1 @@
+<%@ page contentType="text/html" %>

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/noEncoding.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/noEncoding.jsp
new file mode 100644
index 0000000..149d04f
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/noEncoding.jsp
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

+<HTML>

+<HEAD>

+<%@ page 

+language="java"

+contentType="text/html"

+%>

+<META http-equiv="Content-Type" content="text/html">

+<META name="GENERATOR" content="IBM WebSphere Studio">

+<META http-equiv="Content-Style-Type" content="text/css">

+<LINK href="../theme/Master.css" rel="stylesheet" type="text/css">

+<TITLE>noEncoding.jsp</TITLE>

+</HEAD>

+<BODY>

+<P>Place noEncoding.jsp's content here.</P>

+</BODY>

+</HTML>

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/nomalDirectiveCase.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/nomalDirectiveCase.jsp
new file mode 100644
index 0000000..72432ff
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/nomalDirectiveCase.jsp
@@ -0,0 +1,5 @@
+<%@ page

+pageEncoding= "ISO-8859-2"

+language="java"

+contentType="text/html; charset=ISO-8859-3"

+%>

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/nomalDirectiveCaseNoEncoding.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/nomalDirectiveCaseNoEncoding.jsp
new file mode 100644
index 0000000..7656902
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/nomalDirectiveCaseNoEncoding.jsp
@@ -0,0 +1,3 @@
+<%@ page 

+language="java"

+%>

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/nomalDirectiveCaseUsingCharset.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/nomalDirectiveCaseUsingCharset.jsp
new file mode 100644
index 0000000..94d908f
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/nomalDirectiveCaseUsingCharset.jsp
@@ -0,0 +1,4 @@
+<%@ page 

+language="java"

+contentType="text/html; charset=ISO-8859-3"

+%>

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/nomalDirectiveCaseUsingXMLSyntax.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/nomalDirectiveCaseUsingXMLSyntax.jsp
new file mode 100644
index 0000000..c874a08
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/nomalDirectiveCaseUsingXMLSyntax.jsp
@@ -0,0 +1,4 @@
+<jsp:directive.page 

+pageEncoding="ISO-8859-2"

+language="java"

+contentType="text/html; charset=ISO-8859-3"/>

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/nomalDirectiveCasewithXMLDecl.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/nomalDirectiveCasewithXMLDecl.jsp
new file mode 100644
index 0000000..b1cb042
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/nomalDirectiveCasewithXMLDecl.jsp
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>

+<%@ page

+pageEncoding= "ISO-8859-2"

+language="java"

+contentType="text/html; charset=ISO-8859-3"

+%>

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testBrokenLine.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testBrokenLine.jsp
new file mode 100644
index 0000000..8267981
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testBrokenLine.jsp
@@ -0,0 +1,5 @@
+<?xml version="1.0"  

+

+encoding="ISO-8859-3" 

+

+ ?>

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testDefaultEncoding.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testDefaultEncoding.jsp
new file mode 100644
index 0000000..31f287f
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testDefaultEncoding.jsp
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="testjunk"?>

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

+<HTML>

+<HEAD>

+<%@ page 

+language="java"

+contentType="text/html; charset=ISO-8859-1"

+%>

+<META http-equiv="Content-Type" content="text/html; charset=testjunk">

+<META name="GENERATOR" content="IBM WebSphere Studio">

+<META http-equiv="Content-Style-Type" content="text/css">

+<LINK href="../theme/Master.css" rel="stylesheet" type="text/css">

+<TITLE>testDefaultEncoding.jsp</TITLE>

+</HEAD>

+<BODY>

+<P>Place testDefaultEncoding.jsp's content here.</P>

+</BODY>

+</HTML>

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testDefaultEncodingWithJunk.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testDefaultEncodingWithJunk.jsp
new file mode 100644
index 0000000..8d48684
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testDefaultEncodingWithJunk.jsp
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="testjunk"?>

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

+<HTML>

+<HEAD>

+<%@ page 

+language="java"

+contentType="text/html; charset=ISO-8859-1"

+%>

+<META http-equiv="Content-Type" content="text/html; charset=testjunk">

+<META name="GENERATOR" content="IBM WebSphere Studio">

+<META http-equiv="Content-Style-Type" content="text/css">

+<LINK href="../theme/Master.css" rel="stylesheet" type="text/css">

+<TITLE>testDefaultEncoding.jsp</TITLE>

+</HEAD>

+<BODY>

+<P>Place testDefaultEncoding.jsp's content here.</P>

+<%

+System.out.println("test");

+%>

+</BODY>

+</HTML>

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testExtraJunk.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testExtraJunk.jsp
new file mode 100644
index 0000000..357f958
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testExtraJunk.jsp
@@ -0,0 +1,5 @@
+<?xml version="1.0"  abcd="efc"

+

+encoding="ISO-8859-1" 

+

+ ?>

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testExtraValidStuff.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testExtraValidStuff.jsp
new file mode 100644
index 0000000..37d0a3a
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testExtraValidStuff.jsp
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testIllFormed.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testIllFormed.jsp
new file mode 100644
index 0000000..b6bf901
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testIllFormed.jsp
@@ -0,0 +1 @@
+<?xml version="1.0 encoding=UTF-8" standalone="yes"?>

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testIllFormed2.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testIllFormed2.jsp
new file mode 100644
index 0000000..c38ec2b
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testIllFormed2.jsp
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding=UTF-8 

+<test>

+</test>

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testNoEncodingValue.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testNoEncodingValue.jsp
new file mode 100644
index 0000000..83d0c18
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testNoEncodingValue.jsp
@@ -0,0 +1 @@
+<?xml version="1.0"    ?>

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testNoPageDirective.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testNoPageDirective.jsp
new file mode 100644
index 0000000..1a0174a
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testNoPageDirective.jsp
@@ -0,0 +1,4 @@
+<test>

+

+</test>

+

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testNoPageDirectiveAtFirst.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testNoPageDirectiveAtFirst.jsp
new file mode 100644
index 0000000..89a0c3b
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testNoPageDirectiveAtFirst.jsp
@@ -0,0 +1,8 @@
+<test>

+ <%@ page 

+pageEncoding="ISO-8859-2"

+language="java"

+contentType="text/html; charset=ISO-8859-3"

+%>

+</test>

+

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testNoPageDirectiveInLargeFile.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testNoPageDirectiveInLargeFile.jsp
new file mode 100644
index 0000000..734636f
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testNoPageDirectiveInLargeFile.jsp
@@ -0,0 +1,356 @@
+<test>

+

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+</test>

+<?xml version="1.0" encoding="UTF-8"?>

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testNormalCase.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testNormalCase.jsp
new file mode 100644
index 0000000..5a2c42c
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testNormalCase.jsp
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?>

diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testUTF16.FromNotepadjsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testUTF16.FromNotepadjsp
new file mode 100644
index 0000000..75b9850
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testUTF16.FromNotepadjsp
Binary files differ
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testUTF16.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testUTF16.jsp
new file mode 100644
index 0000000..4d9e817
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/testUTF16.jsp
Binary files differ
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/utf16UnicodeStreamWithNoEncodingInHeader2.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/utf16UnicodeStreamWithNoEncodingInHeader2.jsp
new file mode 100644
index 0000000..47e6916
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/utf16UnicodeStreamWithNoEncodingInHeader2.jsp
Binary files differ
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/utf16UnicodeStreamWithNoEncodingInHeaderBE.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/utf16UnicodeStreamWithNoEncodingInHeaderBE.jsp
new file mode 100644
index 0000000..d7ffd6d
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/utf16UnicodeStreamWithNoEncodingInHeaderBE.jsp
Binary files differ
diff --git a/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/utf16WithJapaneseChars.jsp b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/utf16WithJapaneseChars.jsp
new file mode 100644
index 0000000..ddba9bc
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.tests.encoding/testfiles/jsp/utf16WithJapaneseChars.jsp
Binary files differ
diff --git a/tests/org.eclipse.wst.css.tests.encoding/.classpath b/tests/org.eclipse.wst.css.tests.encoding/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.wst.css.tests.encoding/.cvsignore b/tests/org.eclipse.wst.css.tests.encoding/.cvsignore
new file mode 100644
index 0000000..06101b9
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/.cvsignore
@@ -0,0 +1,4 @@
+bin
+build.xml
+temp.folder
+cssencodingtests.jar
diff --git a/tests/org.eclipse.wst.css.tests.encoding/.project b/tests/org.eclipse.wst.css.tests.encoding/.project
new file mode 100644
index 0000000..ea358d5
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.wst.css.tests.encoding</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/tests/org.eclipse.wst.css.tests.encoding/.settings/org.eclipse.core.resources.prefs b/tests/org.eclipse.wst.css.tests.encoding/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..afa5c91
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+#Tue Apr 04 03:36:32 EDT 2006
+eclipse.preferences.version=1
+encoding/<project>=ISO-8859-1
diff --git a/tests/org.eclipse.wst.css.tests.encoding/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.wst.css.tests.encoding/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..2dd8b5c
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,80 @@
+#Sun Apr 16 14:37:21 EDT 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=enabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=ignore
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+org.eclipse.jdt.core.compiler.problem.unusedLabel=error
+org.eclipse.jdt.core.compiler.problem.unusedLocal=error
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.3
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/tests/org.eclipse.wst.css.tests.encoding/.settings/org.eclipse.jdt.ui.prefs b/tests/org.eclipse.wst.css.tests.encoding/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..ef2ac65
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+#Tue Apr 04 03:36:39 EDT 2006
+eclipse.preferences.version=1
+internal.default.compliance=default
diff --git a/tests/org.eclipse.wst.css.tests.encoding/.settings/org.eclipse.ltk.core.refactoring.prefs b/tests/org.eclipse.wst.css.tests.encoding/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..c59368c
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Tue Apr 04 03:36:32 EDT 2006
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/tests/org.eclipse.wst.css.tests.encoding/.settings/org.eclipse.pde.prefs b/tests/org.eclipse.wst.css.tests.encoding/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..f724958
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,15 @@
+#Sun Apr 16 14:05:29 EDT 2006
+compilers.p.build=0
+compilers.p.deprecated=1
+compilers.p.illegal-att-value=0
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=0
+compilers.p.unknown-attribute=0
+compilers.p.unknown-class=0
+compilers.p.unknown-element=0
+compilers.p.unknown-resource=0
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.p.unused-element-or-attribute=0
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/tests/org.eclipse.wst.css.tests.encoding/META-INF/MANIFEST.MF b/tests/org.eclipse.wst.css.tests.encoding/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..ab2b19d
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name.0
+Bundle-SymbolicName: org.eclipse.wst.css.tests.encoding
+Bundle-Version: 1.0.100.qualifier
+Bundle-ClassPath: cssencodingtests.jar
+Bundle-Activator: org.eclipse.wst.css.tests.encoding.CSSEncodingTestsPlugin
+Bundle-Vendor: %Bundle-Vendor.0
+Bundle-Localization: plugin
+Export-Package: org.eclipse.wst.css.tests.encoding,
+ org.eclipse.wst.css.tests.encoding.css
+Require-Bundle: org.eclipse.core.resources,
+ org.eclipse.core.runtime,
+ org.eclipse.wst.css.core,
+ org.junit;bundle-version="[3.8.0,4.0.0)",
+ org.eclipse.wst.sse.core,
+ org.eclipse.wst.xml.tests.encoding
+Eclipse-LazyStart: true
diff --git a/tests/org.eclipse.wst.css.tests.encoding/about.html b/tests/org.eclipse.wst.css.tests.encoding/about.html
new file mode 100644
index 0000000..4ec5989
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/tests/org.eclipse.wst.css.tests.encoding/build.properties b/tests/org.eclipse.wst.css.tests.encoding/build.properties
new file mode 100644
index 0000000..70bc090
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/build.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2005, 2006 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
+###############################################################################
+bin.includes = cssencodingtests.jar,\
+               testfiles/,\
+               test.xml,\
+               META-INF/,\
+               about.html
+src.includes = cssencodingtests.jar
+source.cssencodingtests.jar = src/
+output.cssencodingtests.jar = bin/
+               
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.css.tests.encoding/plugin.properties b/tests/org.eclipse.wst.css.tests.encoding/plugin.properties
new file mode 100644
index 0000000..176c747
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/plugin.properties
@@ -0,0 +1,13 @@
+###############################################################################
+# Copyright (c) 2005, 2006 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
+###############################################################################
+# properties file for org.eclipse.wst.css.tests.encoding
+Bundle-Vendor.0 = Eclipse.org
+Bundle-Name.0 = CSS Encoding Tests Plug-in
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.css.tests.encoding/src/org/eclipse/wst/css/tests/encoding/CSSEncodingTestSuite.java b/tests/org.eclipse.wst.css.tests.encoding/src/org/eclipse/wst/css/tests/encoding/CSSEncodingTestSuite.java
new file mode 100644
index 0000000..290d54b
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/src/org/eclipse/wst/css/tests/encoding/CSSEncodingTestSuite.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2005 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.wst.css.tests.encoding;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.eclipse.wst.css.tests.encoding.css.CSSEncodingTester;
+import org.eclipse.wst.css.tests.encoding.css.CSSHeadTokenizerTester;
+import org.eclipse.wst.css.tests.encoding.css.TestContentTypeDetectionForCSS;
+
+public class CSSEncodingTestSuite extends TestSuite {
+
+	private static Class[] classes = new Class[]{CSSEncodingTester.class, CSSHeadTokenizerTester.class, TestContentTypeDetectionForCSS.class};
+
+	public static Test suite() {
+		return new CSSEncodingTestSuite();
+	}
+
+	public CSSEncodingTestSuite() {
+		super("CSS Encoding Test Suite");
+		for (int i = 0; i < classes.length; i++) {
+			addTest(new TestSuite(classes[i], classes[i].getName()));
+		}
+	}
+
+	/**
+	 * @param theClass
+	 */
+	public CSSEncodingTestSuite(Class theClass) {
+		super(theClass);
+	}
+
+	/**
+	 * @param theClass
+	 * @param name
+	 */
+	public CSSEncodingTestSuite(Class theClass, String name) {
+		super(theClass, name);
+	}
+
+	/**
+	 * @param name
+	 */
+	public CSSEncodingTestSuite(String name) {
+		super(name);
+	}
+}
diff --git a/tests/org.eclipse.wst.css.tests.encoding/src/org/eclipse/wst/css/tests/encoding/CSSEncodingTestsPlugin.java b/tests/org.eclipse.wst.css.tests.encoding/src/org/eclipse/wst/css/tests/encoding/CSSEncodingTestsPlugin.java
new file mode 100644
index 0000000..da799c0
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/src/org/eclipse/wst/css/tests/encoding/CSSEncodingTestsPlugin.java
@@ -0,0 +1,141 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2006 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.wst.css.tests.encoding;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Reader;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Plugin;
+
+/**
+ * The main plugin class to be used in the desktop.
+ */
+public class CSSEncodingTestsPlugin extends Plugin {
+	// The shared instance.
+	private static CSSEncodingTestsPlugin plugin;
+
+	public static List getAllTestFiles(String topDirName) {
+		List result = null;
+		URL installURL = getInstallLocation();
+		// String scheme = installURL.getProtocol();
+		String path = installURL.getPath();
+		String location = path + topDirName;
+		File topDir = new File(location);
+		if (!topDir.isDirectory()) {
+			throw new IllegalArgumentException(topDirName + " is not a directory");
+		}
+		result = getFilesInDir(topDir);
+		return result;
+	}
+
+	/**
+	 * Returns the shared instance.
+	 */
+	public static CSSEncodingTestsPlugin getDefault() {
+		return plugin;
+	}
+
+	private static List getFilesInDir(File topDir) {
+		List files = new ArrayList();
+		File[] topFiles = topDir.listFiles();
+		for (int i = 0; i < topFiles.length; i++) {
+			File file = topFiles[i];
+			if (file.isFile()) {
+				files.add(file);
+			}
+			else if (file.isDirectory() && !file.getName().endsWith("CVS")) {
+				List innerFiles = getFilesInDir(file);
+				files.addAll(innerFiles);
+			}
+		}
+		return files;
+	}
+
+	public static URL getInstallLocation() {
+		URL installLocation = Platform.getBundle("org.eclipse.wst.css.tests.encoding").getEntry("/");
+		URL resolvedLocation = null;
+		try {
+			resolvedLocation = FileLocator.resolve(installLocation);
+		}
+		catch (IOException e) {
+			// impossible
+			throw new Error(e);
+		}
+		return resolvedLocation;
+	}
+
+	/**
+	 * Returns the string from the plugin's resource bundle, or 'key' if not
+	 * found.
+	 */
+	public static String getResourceString(String key) {
+		ResourceBundle bundle = CSSEncodingTestsPlugin.getDefault().getResourceBundle();
+		try {
+			return (bundle != null ? bundle.getString(key) : key);
+		}
+		catch (MissingResourceException e) {
+			return key;
+		}
+	}
+
+	public static File getTestFile(String filepath) {
+		URL installURL = getInstallLocation();
+		// String scheme = installURL.getProtocol();
+		String path = installURL.getPath();
+		String location = path + filepath;
+		File result = new File(location);
+		return result;
+	}
+
+	public static Reader getTestReader(String filepath) throws FileNotFoundException {
+		URL installURL = getInstallLocation();
+		// String scheme = installURL.getProtocol();
+		String path = installURL.getPath();
+		String location = path + filepath;
+		Reader result = new FileReader(location);
+		return result;
+	}
+
+	/**
+	 * Returns the workspace instance.
+	 */
+	public static IWorkspace getWorkspace() {
+		return ResourcesPlugin.getWorkspace();
+	}
+
+	/**
+	 * The constructor.
+	 */
+	public CSSEncodingTestsPlugin() {
+		super();
+		plugin = this;
+	}
+
+	/**
+	 * Returns the plugin's resource bundle,
+	 */
+	public ResourceBundle getResourceBundle() {
+		return null;
+	}
+
+}
diff --git a/tests/org.eclipse.wst.css.tests.encoding/src/org/eclipse/wst/css/tests/encoding/css/CSSEncodingTester.java b/tests/org.eclipse.wst.css.tests.encoding/src/org/eclipse/wst/css/tests/encoding/css/CSSEncodingTester.java
new file mode 100644
index 0000000..e2c14fa
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/src/org/eclipse/wst/css/tests/encoding/css/CSSEncodingTester.java
@@ -0,0 +1,171 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2006 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.wst.css.tests.encoding.css;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CodingErrorAction;
+
+import junit.framework.TestCase;
+
+import org.eclipse.wst.css.core.internal.contenttype.CSSResourceEncodingDetector;
+import org.eclipse.wst.css.tests.encoding.CSSEncodingTestsPlugin;
+import org.eclipse.wst.sse.core.internal.encoding.EncodingMemento;
+import org.eclipse.wst.sse.core.internal.encoding.IResourceCharsetDetector;
+
+public class CSSEncodingTester extends TestCase {
+
+	/**
+	 * Ensures that an InputStream has mark/reset support.
+	 */
+	private static InputStream getMarkSupportedStream(InputStream original) {
+		if (original == null)
+			return null;
+		if (original.markSupported())
+			return original;
+		return new BufferedInputStream(original);
+	}
+	private boolean DEBUG = false;
+	private final String fileDir = "css/";
+	// private final String pluginLocation =
+	// TestsPlugin.getInstallLocation().toString();
+	private final String fileHome = "testfiles/";
+	private final String fileLocation = fileHome + fileDir;
+	private int READ_BUFFER_SIZE = 8000;
+
+	private void doTestFileStream(String filename, String expectedIANAEncoding, IResourceCharsetDetector detector) throws IOException {
+		File file = CSSEncodingTestsPlugin.getTestFile(filename);
+		if (!file.exists())
+			throw new IllegalArgumentException(filename + " was not found");
+		InputStream inputStream = new FileInputStream(file);
+		// InputStream inStream = getClass().getResourceAsStream(filename);
+		InputStream istream = getMarkSupportedStream(inputStream);
+		try {
+			detector.set(istream);
+			EncodingMemento encodingMemento = ((CSSResourceEncodingDetector)detector).getEncodingMemento();
+
+			String foundIANAEncoding = null;
+
+			if (encodingMemento != null) {
+				foundIANAEncoding = encodingMemento.getDetectedCharsetName();
+			}
+			// I changed many "equals" to "equalsIgnoreCase" on 11/4/2002,
+			// since
+			// some issues with SHIFT_JIS vs. Shift_JIS were causing failures.
+			// We do want to be tolerant on input, and accept either, but I
+			// think
+			// that SupportedJavaEncodings needs to be changed to "recommend"
+			// Shift_JIS.
+			boolean expectedIANAResult = false;
+			if (expectedIANAEncoding == null) {
+				expectedIANAResult = expectedIANAEncoding == foundIANAEncoding;
+			}
+			else {
+				expectedIANAResult = expectedIANAEncoding.equalsIgnoreCase(foundIANAEncoding);
+			}
+
+			assertTrue("encoding test file " + filename + " expected: " + expectedIANAEncoding + " found: " + foundIANAEncoding, expectedIANAResult);
+			// a very simple read test ... will cause JUnit error (not fail)
+			// if
+			// throws exception.
+			if (foundIANAEncoding != null) {
+				ensureCanRead(filename, foundIANAEncoding, istream);
+			}
+		}
+		finally {
+			if (istream != null) {
+				istream.close();
+			}
+			if (inputStream != null) {
+				inputStream.close();
+			}
+		}
+	}
+
+	/**
+	 * This method just reads to stream, to be sure it can be read per
+	 * encoding, without exception.
+	 */
+	private void ensureCanRead(String filename, String encoding, InputStream inputStream) throws IOException {
+		Charset charset = Charset.forName(encoding);
+		CharsetDecoder charsetDecoder = charset.newDecoder();
+		charsetDecoder.onMalformedInput(CodingErrorAction.REPORT);
+		charsetDecoder.onUnmappableCharacter(CodingErrorAction.REPORT);
+
+		InputStreamReader reader = new InputStreamReader(inputStream, charsetDecoder);
+		StringBuffer stringBuffer = readInputStream(reader);
+		if (DEBUG) {
+			System.out.println();
+			System.out.println(filename);
+			System.out.println(stringBuffer.toString());
+		}
+	}
+
+	private StringBuffer readInputStream(Reader reader) throws IOException {
+
+		StringBuffer buffer = new StringBuffer();
+		int numRead = 0;
+		char tBuff[] = new char[READ_BUFFER_SIZE];
+		while ((numRead = reader.read(tBuff, 0, tBuff.length)) != -1) {
+			buffer.append(tBuff, 0, numRead);
+		}
+		return buffer;
+	}
+
+	public void testBestCase() throws IOException {
+		String filename = fileLocation + "nonStandard.css";
+		doTestFileStream(filename, "ISO-8859-6", new CSSResourceEncodingDetector());
+
+	}
+
+	public void testEmptyFile() throws IOException {
+		String filename = fileLocation + "emptyFile.css";
+		doTestFileStream(filename, null, new CSSResourceEncodingDetector());
+	}
+
+	public void testEUCJP() throws IOException {
+		String filename = fileLocation + "encoding_test_eucjp.css";
+		doTestFileStream(filename, "EUC-JP", new CSSResourceEncodingDetector());
+	}
+
+	public void testJIS() throws IOException {
+		String filename = fileLocation + "encoding_test_jis.css";
+		doTestFileStream(filename, "ISO-2022-JP", new CSSResourceEncodingDetector());
+	}
+
+	public void testNoEncoding() throws IOException {
+		String filename = fileLocation + "noEncoding.css";
+		doTestFileStream(filename, null, new CSSResourceEncodingDetector());
+	}
+
+	public void testnonStandardIllFormed() throws IOException {
+		String filename = fileLocation + "nonStandardIllFormed.css";
+		doTestFileStream(filename, "ISO-8859-6", new CSSResourceEncodingDetector());
+	}
+
+	public void testnonStandardIllFormed2() throws IOException {
+		String filename = fileLocation + "nonStandardIllFormed2.css";
+		doTestFileStream(filename, "ISO-8859-6", new CSSResourceEncodingDetector());
+	}
+
+	public void testShiftJIS() throws IOException {
+		String filename = fileLocation + "encoding_test_sjis.css";
+		doTestFileStream(filename, "SHIFT_JIS", new CSSResourceEncodingDetector());
+	}
+
+}
diff --git a/tests/org.eclipse.wst.css.tests.encoding/src/org/eclipse/wst/css/tests/encoding/css/CSSHeadTokenizerTester.java b/tests/org.eclipse.wst.css.tests.encoding/src/org/eclipse/wst/css/tests/encoding/css/CSSHeadTokenizerTester.java
new file mode 100644
index 0000000..666671f
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/src/org/eclipse/wst/css/tests/encoding/css/CSSHeadTokenizerTester.java
@@ -0,0 +1,147 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 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.wst.css.tests.encoding.css;
+
+import java.io.IOException;
+import java.io.Reader;
+
+import junit.framework.TestCase;
+
+import org.eclipse.wst.css.core.internal.contenttype.CSSHeadTokenizer;
+import org.eclipse.wst.css.core.internal.contenttype.CSSHeadTokenizerConstants;
+import org.eclipse.wst.css.core.internal.contenttype.HeadParserToken;
+import org.eclipse.wst.css.tests.encoding.CSSEncodingTestsPlugin;
+
+public class CSSHeadTokenizerTester extends TestCase {
+	private boolean DEBUG = false;
+	private String fcharset;
+	private final String fileDir = "css/";
+	private final String fileHome = "testfiles/";
+	private final String fileLocation = this.fileHome + this.fileDir;
+
+	private void doTestFile(String filename, String expectedName) throws IOException {
+		doTestFile(filename, expectedName, null);
+	}
+
+	private void doTestFile(String filename, String expectedName, String finalTokenType) throws IOException {
+		CSSHeadTokenizer tokenizer = null;
+		Reader fileReader = null;
+		try {
+			if (this.DEBUG) {
+				System.out.println();
+				System.out.println("       " + filename);
+				System.out.println();
+			}
+			fileReader = CSSEncodingTestsPlugin.getTestReader(filename);
+			tokenizer = new CSSHeadTokenizer(fileReader);
+		}
+		catch (IOException e) {
+			System.out.println("Error opening file \"" + filename + "\"");
+			throw e;
+		}
+
+		HeadParserToken resultToken = null;
+		HeadParserToken token = parseHeader(tokenizer);
+		String resultValue = this.fcharset;
+		fileReader.close();
+		if (finalTokenType != null) {
+			assertTrue("did not end as expected. found:  " + token.getType(), finalTokenType.equals(token.getType()));
+		}
+		else {
+			if (expectedName == null) {
+				assertTrue("expected no encoding, but found: " + resultValue, resultToken == null);
+			}
+			else {
+				assertTrue("expected " + expectedName + " but found " + resultValue, expectedName.equals(resultValue));
+			}
+		}
+
+	}
+
+	private boolean isLegalString(String tokenType) {
+		boolean result = false;
+		if (tokenType == null) {
+			result = false;
+		}
+		else {
+			result = tokenType.equals(EncodingParserConstants.StringValue) || tokenType.equals(EncodingParserConstants.UnDelimitedStringValue) || tokenType.equals(EncodingParserConstants.InvalidTerminatedStringValue) || tokenType.equals(EncodingParserConstants.InvalidTermintatedUnDelimitedStringValue);
+		}
+		return result;
+	}
+
+	/**
+	 * Give's priority to encoding value, if found else, looks for contentType
+	 * value;
+	 */
+	private HeadParserToken parseHeader(CSSHeadTokenizer tokenizer) throws IOException {
+		HeadParserToken token = null;
+		HeadParserToken finalToken = null;
+		do {
+			token = tokenizer.getNextToken();
+			String tokenType = token.getType();
+			if (tokenType == CSSHeadTokenizerConstants.CHARSET_RULE) {
+				if (tokenizer.hasMoreTokens()) {
+					HeadParserToken valueToken = tokenizer.getNextToken();
+					String valueTokenType = valueToken.getType();
+					if (isLegalString(valueTokenType)) {
+						this.fcharset = valueToken.getText();
+
+					}
+				}
+			}
+		}
+		while (tokenizer.hasMoreTokens());
+		finalToken = token;
+		return finalToken;
+
+	}
+
+	public void testBestCase() throws IOException {
+		String filename = this.fileLocation + "nonStandard.css";
+		doTestFile(filename, "ISO-8859-6");
+
+	}
+
+	public void testEmptyFile() throws IOException {
+		String filename = this.fileLocation + "emptyFile.css";
+		doTestFile(filename, null);
+	}
+
+	public void _testEUCJP() throws IOException {
+		String filename = this.fileLocation + "encoding_test_eucjp.css";
+		doTestFile(filename, "EUC-JP");
+	}
+
+	public void testJIS() throws IOException {
+		String filename = this.fileLocation + "encoding_test_jis.css";
+		doTestFile(filename, "ISO-2022-JP");
+	}
+
+	public void testNoEncoding() throws IOException {
+		String filename = this.fileLocation + "noEncoding.css";
+		doTestFile(filename, null);
+	}
+
+	public void testnonStandardIllFormed() throws IOException {
+		String filename = this.fileLocation + "nonStandardIllFormed.css";
+		doTestFile(filename, "ISO-8859-6");
+	}
+
+	public void testnonStandardIllFormed2() throws IOException {
+		String filename = this.fileLocation + "nonStandardIllFormed2.css";
+		doTestFile(filename, "ISO-8859-6");
+	}
+
+	public void _testShiftJIS() throws IOException {
+		String filename = this.fileLocation + "encoding_test_sjis.css";
+		doTestFile(filename, "SHIFT_JIS");
+	}
+}
diff --git a/tests/org.eclipse.wst.css.tests.encoding/src/org/eclipse/wst/css/tests/encoding/css/EncodingParserConstants.java b/tests/org.eclipse.wst.css.tests.encoding/src/org/eclipse/wst/css/tests/encoding/css/EncodingParserConstants.java
new file mode 100644
index 0000000..c4144a7
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/src/org/eclipse/wst/css/tests/encoding/css/EncodingParserConstants.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2005 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
+ *     Jens Lukowski/Innoopract - initial renaming/restructuring
+ *     
+ *******************************************************************************/
+package org.eclipse.wst.css.tests.encoding.css;
+
+
+public interface EncodingParserConstants {
+
+	final String EOF = "EOF"; //$NON-NLS-1$
+	final String InvalidTerminatedStringValue = "InvalidTerminatedStringValue"; //$NON-NLS-1$
+	final String InvalidTermintatedUnDelimitedStringValue = "InvalidTermintatedUnDelimitedStringValue"; //$NON-NLS-1$
+	final String MAX_CHARS_REACHED = "MAX_CHARS_REACHED"; //$NON-NLS-1$
+	final String StringValue = "strval"; //$NON-NLS-1$
+	final String UnDelimitedStringValue = "UnDelimitedStringValue"; //$NON-NLS-1$
+	public final String UTF16BE = "UTF16BE"; //$NON-NLS-1$
+	public final String UTF16LE = "UTF16LE"; //$NON-NLS-1$
+
+
+	public final String UTF83ByteBOM = "UTF83ByteBOM"; //$NON-NLS-1$
+
+}
diff --git a/tests/org.eclipse.wst.css.tests.encoding/src/org/eclipse/wst/css/tests/encoding/css/TestContentTypeDetectionForCSS.java b/tests/org.eclipse.wst.css.tests.encoding/src/org/eclipse/wst/css/tests/encoding/css/TestContentTypeDetectionForCSS.java
new file mode 100644
index 0000000..7468724
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/src/org/eclipse/wst/css/tests/encoding/css/TestContentTypeDetectionForCSS.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2005 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.wst.css.tests.encoding.css;
+
+import java.io.IOException;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.wst.xml.tests.encoding.read.TestContentTypeDetection;
+
+public class TestContentTypeDetectionForCSS extends TestContentTypeDetection {
+	public void testFile7() throws CoreException, IOException {
+		doTest("org.eclipse.wst.css.core.csssource", "testfiles/css/nonStandardIllFormed.css", null);
+	}
+
+	public void testFile1001() throws CoreException, IOException {
+		doTest("org.eclipse.wst.css.core.csssource", "testfiles/css/emptyFile.css", null);
+	}
+
+	public void testFile1002() throws CoreException, IOException {
+		doTest("org.eclipse.wst.css.core.csssource", "testfiles/css/encoding_test_eucjp.css", null);
+	}
+
+	public void testFile1003() throws CoreException, IOException {
+		doTest("org.eclipse.wst.css.core.csssource", "testfiles/css/encoding_test_jis.css", null);
+	}
+
+	public void testFile4() throws CoreException, IOException {
+		doTest("org.eclipse.wst.css.core.csssource", "testfiles/css/encoding_test_sjis.css", null);
+	}
+
+
+	public void testFile5() throws CoreException, IOException {
+		doTest("org.eclipse.wst.css.core.csssource", "testfiles/css/noEncoding.css", null);
+	}
+
+	public void testFile6() throws CoreException, IOException {
+		doTest("org.eclipse.wst.css.core.csssource", "testfiles/css/nonStandard.css", null);
+	}
+
+	public void testFile8() throws CoreException, IOException {
+		doTest("org.eclipse.wst.css.core.csssource", "testfiles/css/nonStandardIllFormed2.css", null);
+	}
+
+}
diff --git a/tests/org.eclipse.wst.css.tests.encoding/test.xml b/tests/org.eclipse.wst.css.tests.encoding/test.xml
new file mode 100644
index 0000000..8d65337
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/test.xml
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project
+    name="testsuite"
+    default="run"
+    basedir=".">
+    
+    <!-- The following properties should be passed into this script -->
+    <!-- ${eclipse-home}   -->
+    <!-- ${buildDirectory}  -->
+    <!-- ${buildLabel}        -->
+
+    <!-- should be little need to change what's above  -->
+
+    <property
+        name="plugin-name"
+        value="org.eclipse.wst.css.tests.encoding" />
+    <property
+        name="classname"
+        value="org.eclipse.wst.css.tests.encoding.CSSEncodingTestSuite" />
+    <property
+        name="testType"
+        value="core-test" />
+
+    <!-- should be little need to change what's below -->
+
+    <echo message="basedir: ${basedir}" />
+    <echo message="eclipse-home: ${eclipse-home}" />
+    <echo message="buildDirectory: ${buildDirectory}" />
+    <echo message="plugin-name: ${plugin-name}" />
+    <echo message="classname: ${classname}" />
+    <echo message="testType ${testType}" />
+
+
+    <property
+        name="library-file"
+        value="${eclipse-home}/plugins/org.eclipse.test_3.1.0/library.xml" />
+    <property
+        name="workspace"
+        value="${eclipse-home}/junitworkspaces/${plugin-name}" />
+        
+    <!-- This target holds all initialization code that needs to be done for -->
+    <!-- all tests that are to be run. Initialization for individual tests -->
+    <!-- should be done within the body of the suite target. -->
+    <target name="init">
+        <tstamp />
+        <delete>
+            <fileset
+                dir="${eclipse-home}"
+                includes="${plugin-name}.*xml" />
+        </delete>
+        <!-- make directory, in case path doesn't exist yet -->
+        <mkdir dir="${workspace}" />
+        <!--  but delete to make sure fresh contents-->
+        <delete
+            dir="${workspace}"
+            quiet="true" />
+
+    </target>
+
+    <!-- This target defines the tests that need to be run. -->
+    <target name="suite">
+
+        <ant
+            target="${testType}"
+            antfile="${library-file}"
+            dir="${eclipse-home}">
+            <property
+                name="data-dir"
+                value="${workspace}" />
+            <property
+                name="plugin-name"
+                value="${plugin-name}" />
+            <property
+                name="classname"
+                value="${classname}" />
+            <property
+                name="plugin-path"
+                value="${eclipse-home}/plugins/${plugin-name}" />
+        </ant>
+
+        <copy
+            failonerror="false"
+            file="${workspace}/.metadata/.log"
+            tofile="${buildDirectory}/${buildLabel}/testResults/consolelogs/${plugin-name}.consolelog.txt" />
+
+    </target>
+
+    <!-- This target holds code to cleanup the testing environment after -->
+    <!-- after all of the tests have been run. You can use this target to -->
+    <!-- delete temporary files that have been created. -->
+    <target name="cleanup">
+        <!-- usually no need to delete workspace until next run, and leaving it allows inspection -->
+        <!-- <delete dir="${workspace}" quiet="true" /> -->
+    </target>
+
+    <!-- This target runs the test suite. Any actions that need to happen -->
+    <!-- after all the tests have been run should go here. -->
+    <target
+        name="run"
+        depends="init,suite,cleanup">
+        <ant
+            target="collect"
+            antfile="${library-file}"
+            dir="${eclipse-home}">
+            <property
+                name="includes"
+                value="${plugin-name}.*xml" />
+            <property
+                name="output-file"
+                value="${plugin-name}.xml" />
+        </ant>
+    </target>
+
+</project>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/emptyFile.css b/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/emptyFile.css
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/emptyFile.css
diff --git a/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/encoding_test_eucjp.css b/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/encoding_test_eucjp.css
new file mode 100644
index 0000000..1e256e7
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/encoding_test_eucjp.css
@@ -0,0 +1,5 @@
+@charset "EUC-JP";

+

+BODY {

+	font-family : "£Í£Ó £Ð¥´¥·¥Ã¥¯";

+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/encoding_test_jis.css b/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/encoding_test_jis.css
new file mode 100644
index 0000000..384768b
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/encoding_test_jis.css
@@ -0,0 +1,5 @@
+@charset "ISO-2022-JP";

+

+BODY {

+	font-family : "$B#M#S(B $B#P%4%7%C%/(B";

+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/encoding_test_sjis.css b/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/encoding_test_sjis.css
new file mode 100644
index 0000000..e529cda
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/encoding_test_sjis.css
@@ -0,0 +1,5 @@
+@charset "SHIFT_JIS";

+

+BODY {

+	font-family : "‚l‚r ‚oƒSƒVƒbƒN";

+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/noEncoding.css b/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/noEncoding.css
new file mode 100644
index 0000000..f3f06bc
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/noEncoding.css
@@ -0,0 +1,46 @@
+BODY {

+	font-family: "Times New Roman", "MS Sans Serif";

+	text-decoration: none;

+	background-color: white;

+}

+

+TD {

+	font-family: "Times New Roman";

+	font-size: 12pt;

+	color: black;

+	font-style: normal;

+	text-align: left;

+}

+

+TH {

+	font-family: "Times New Roman";

+	font-size: 12pt;

+	color: black;

+	font-style: normal;

+	font-weight: bolder;

+	text-align: left;

+}

+

+H1 {

+	font-family: "Times New Roman";

+	font-size: 14pt;

+	color: black;

+	font-style: normal;

+	font-weight: bolder;

+	text-align: center

+}

+

+H2 {

+	font-family: "Times New Roman";

+	font-size: 12pt;

+	color: black;

+	font-style: normal;

+	font-weight: bolder

+}

+

+H3 {

+	font-family: "Times New Roman";

+	font-size: 12pt;

+	color: black;

+	font-style: italic  

+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/nonStandard.css b/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/nonStandard.css
new file mode 100644
index 0000000..dc997eb
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/nonStandard.css
@@ -0,0 +1,5 @@
+@charset "ISO-8859-6";

+

+

+

+

diff --git a/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/nonStandardIllFormed.css b/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/nonStandardIllFormed.css
new file mode 100644
index 0000000..f1a4e44
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/nonStandardIllFormed.css
@@ -0,0 +1,5 @@
+@charset "ISO-8859-6;

+

+

+

+

diff --git a/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/nonStandardIllFormed2.css b/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/nonStandardIllFormed2.css
new file mode 100644
index 0000000..53c8a1f
--- /dev/null
+++ b/tests/org.eclipse.wst.css.tests.encoding/testfiles/css/nonStandardIllFormed2.css
@@ -0,0 +1,7 @@
+

+

+    @charset "ISO-8859-6";

+

+

+

+

diff --git a/tests/org.eclipse.wst.css.ui.tests/.classpath b/tests/org.eclipse.wst.css.ui.tests/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/tests/org.eclipse.wst.css.ui.tests/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.wst.css.ui.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.wst.css.ui.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..7ed46c7
--- /dev/null
+++ b/tests/org.eclipse.wst.css.ui.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name.0
+Bundle-SymbolicName: org.eclipse.wst.css.ui.tests
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.eclipse.wst.css.ui.tests.CSSUITestsPlugin
+Bundle-Vendor: %Bundle-Vendor.0
+Bundle-Localization: plugin
+Export-Package: org.eclipse.wst.css.ui.tests,
+ org.eclipse.wst.css.ui.tests.viewer
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.wst.css.ui,
+ org.eclipse.wst.sse.ui,
+ org.eclipse.wst.css.core,
+ org.eclipse.jface.text,
+ org.eclipse.ui.workbench,
+ org.eclipse.ui.editors,
+ org.eclipse.wst.sse.core,
+ org.junit
+Eclipse-LazyStart: true
+Bundle-ClassPath: cssuitests.jar
diff --git a/tests/org.eclipse.wst.css.ui.tests/about.html b/tests/org.eclipse.wst.css.ui.tests/about.html
new file mode 100644
index 0000000..4ec5989
--- /dev/null
+++ b/tests/org.eclipse.wst.css.ui.tests/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/tests/org.eclipse.wst.css.ui.tests/plugin.properties b/tests/org.eclipse.wst.css.ui.tests/plugin.properties
index 81436bb..21ad1f7 100644
--- a/tests/org.eclipse.wst.css.ui.tests/plugin.properties
+++ b/tests/org.eclipse.wst.css.ui.tests/plugin.properties
@@ -1,13 +1,3 @@
-###############################################################################
-# Copyright (c) 2005, 2006 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
-###############################################################################
 # properties file for org.eclipse.wst.css.ui.tests
 Bundle-Vendor.0 = Eclipse
 Bundle-Name.0 = CSS UI Tests Plug-in
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.css.ui.tests/src/org/eclipse/wst/css/ui/tests/TestEditorConfigurationCSS.java b/tests/org.eclipse.wst.css.ui.tests/src/org/eclipse/wst/css/ui/tests/TestEditorConfigurationCSS.java
index 2bccefe..94e30bb 100644
--- a/tests/org.eclipse.wst.css.ui.tests/src/org/eclipse/wst/css/ui/tests/TestEditorConfigurationCSS.java
+++ b/tests/org.eclipse.wst.css.ui.tests/src/org/eclipse/wst/css/ui/tests/TestEditorConfigurationCSS.java
@@ -1,16 +1,15 @@
-/*******************************************************************************
+/*
  * Copyright (c) 2005 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
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
  * Contributors:
  *   IBM - Initial API and implementation
  *   Jens Lukowski/Innoopract - initial renaming/restructuring
  * 
- * /
- *******************************************************************************/
+ */
 package org.eclipse.wst.css.ui.tests;
 
 import junit.framework.TestCase;
diff --git a/tests/org.eclipse.wst.css.ui.tests/src/org/eclipse/wst/css/ui/tests/viewer/TestViewerConfigurationCSS.java b/tests/org.eclipse.wst.css.ui.tests/src/org/eclipse/wst/css/ui/tests/viewer/TestViewerConfigurationCSS.java
index 0a0f2d4..f1a1ad7 100644
--- a/tests/org.eclipse.wst.css.ui.tests/src/org/eclipse/wst/css/ui/tests/viewer/TestViewerConfigurationCSS.java
+++ b/tests/org.eclipse.wst.css.ui.tests/src/org/eclipse/wst/css/ui/tests/viewer/TestViewerConfigurationCSS.java
@@ -1,13 +1,3 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 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.wst.css.ui.tests.viewer;
 
 import junit.framework.TestCase;
diff --git a/tests/org.eclipse.wst.css.ui.tests/test.xml b/tests/org.eclipse.wst.css.ui.tests/test.xml
index f55274d..82dc126 100644
--- a/tests/org.eclipse.wst.css.ui.tests/test.xml
+++ b/tests/org.eclipse.wst.css.ui.tests/test.xml
@@ -1,115 +1,47 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<project name="testsuite" default="run" basedir=".">
+	<!-- The property ${eclipse-home} should be passed into this script -->
+	<!-- Set a meaningful default value for when it is not. -->
+	<!--<property name="eclipse-home" value="${basedir}\..\.."/>-->
 
-<project
-    name="testsuite"
-    default="run"
-    basedir=".">
-    
-    <!-- The following properties should be passed into this script -->
-    <!-- ${eclipse-home}   -->
-    <!-- ${buildDirectory}  -->
-    <!-- ${buildLabel}        -->
-
-    <!-- should be little need to change what's above  -->
-
-    <property
-        name="plugin-name"
-        value="org.eclipse.wst.css.ui.tests" />
-    <property
-        name="classname"
-        value="org.eclipse.wst.css.ui.tests.CSSUITestSuite" />
-    <property
-        name="testType"
-        value="ui-test" />
-
-    <!-- should be little need to change what's below -->
-
-    <echo message="basedir: ${basedir}" />
-    <echo message="eclipse-home: ${eclipse-home}" />
-    <echo message="buildDirectory: ${buildDirectory}" />
-    <echo message="plugin-name: ${plugin-name}" />
-    <echo message="classname: ${classname}" />
-    <echo message="testType ${testType}" />
+	<!-- sets the properties plugin-name, and library-file -->
+	<property name="plugin-name" value="org.eclipse.wst.css.ui.tests" />
+	<property name="library-file" value="${eclipse-home}/plugins/org.eclipse.test_3.1.0/library.xml" />
 
 
-    <property
-        name="library-file"
-        value="${eclipse-home}/plugins/org.eclipse.test_3.1.0/library.xml" />
-    <property
-        name="workspace"
-        value="${eclipse-home}/junitworkspaces/${plugin-name}" />
-        
-    <!-- This target holds all initialization code that needs to be done for -->
-    <!-- all tests that are to be run. Initialization for individual tests -->
-    <!-- should be done within the body of the suite target. -->
-    <target name="init">
-        <tstamp />
-        <delete>
-            <fileset
-                dir="${eclipse-home}"
-                includes="${plugin-name}.*xml" />
-        </delete>
-        <!-- make directory, in case path doesn't exist yet -->
-        <mkdir dir="${workspace}" />
-        <!--  but delete to make sure fresh contents-->
-        <delete
-            dir="${workspace}"
-            quiet="true" />
+	<!-- This target holds all initialization code that needs to be done for -->
+	<!-- all tests that are to be run. Initialization for individual tests -->
+	<!-- should be done within the body of the suite target. -->
+	<target name="init">
+		<delete>
+			<fileset dir="${eclipse-home}" includes="org.eclipse.wst.css.ui.tests.*xml" />
+		</delete>
+	</target>
 
-    </target>
+	<!-- This target defines the tests that need to be run. -->
+	<target name="suite">
+		<delete dir="${workspace}" quiet="true" />
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="data-dir" value="${workspace}" />
+			<property name="plugin-name" value="${plugin-name}" />
+			<property name="classname" value="org.eclipse.wst.css.ui.tests.CSSUITestSuite" />
+		</ant>
+	</target>
 
-    <!-- This target defines the tests that need to be run. -->
-    <target name="suite">
+	<!-- This target holds code to cleanup the testing environment after -->
+	<!-- after all of the tests have been run. You can use this target to -->
+	<!-- delete temporary files that have been created. -->
+	<target name="cleanup">
+		<!--<delete dir="${workspace}" quiet="true"/>-->
+	</target>
 
-        <ant
-            target="${testType}"
-            antfile="${library-file}"
-            dir="${eclipse-home}">
-            <property
-                name="data-dir"
-                value="${workspace}" />
-            <property
-                name="plugin-name"
-                value="${plugin-name}" />
-            <property
-                name="classname"
-                value="${classname}" />
-            <property
-                name="plugin-path"
-                value="${eclipse-home}/plugins/${plugin-name}" />
-        </ant>
-
-        <copy
-            failonerror="false"
-            file="${workspace}/.metadata/.log"
-            tofile="${buildDirectory}/${buildLabel}/testResults/consolelogs/${plugin-name}.consolelog.txt" />
-
-    </target>
-
-    <!-- This target holds code to cleanup the testing environment after -->
-    <!-- after all of the tests have been run. You can use this target to -->
-    <!-- delete temporary files that have been created. -->
-    <target name="cleanup">
-        <!-- usually no need to delete workspace until next run, and leaving it allows inspection -->
-        <!-- <delete dir="${workspace}" quiet="true" /> -->
-    </target>
-
-    <!-- This target runs the test suite. Any actions that need to happen -->
-    <!-- after all the tests have been run should go here. -->
-    <target
-        name="run"
-        depends="init,suite,cleanup">
-        <ant
-            target="collect"
-            antfile="${library-file}"
-            dir="${eclipse-home}">
-            <property
-                name="includes"
-                value="${plugin-name}.*xml" />
-            <property
-                name="output-file"
-                value="${plugin-name}.xml" />
-        </ant>
-    </target>
+	<!-- This target runs the test suite. Any actions that need to happen -->
+	<!-- after all the tests have been run should go here. -->
+	<target name="run" depends="init,suite,cleanup">
+		<ant target="collect" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="includes" value="org.eclipse.wst.css.ui.tests.*xml" />
+			<property name="output-file" value="${plugin-name}.xml" />
+		</ant>
+		<!--		<emailResults resultsFile="${build-results-home}/${plugin-name}.xml" addresslist="david_williams@us.ibm.com" /> -->
+	</target>
 
 </project>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.dtd.ui.tests/.classpath b/tests/org.eclipse.wst.dtd.ui.tests/.classpath
new file mode 100644
index 0000000..a995846
--- /dev/null
+++ b/tests/org.eclipse.wst.dtd.ui.tests/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry path="org.eclipse.pde.core.requiredPlugins" kind="con">
+		<accessrules>
+			<accessrule kind="accessible" pattern="org/eclipse/wst/**"/>
+		</accessrules>
+	</classpathentry>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.wst.dtd.ui.tests/.cvsignore b/tests/org.eclipse.wst.dtd.ui.tests/.cvsignore
new file mode 100644
index 0000000..65ebfe7
--- /dev/null
+++ b/tests/org.eclipse.wst.dtd.ui.tests/.cvsignore
@@ -0,0 +1,6 @@
+bin
+bin.project
+build.xml
+dev.properties
+dtduitests.jar
+temp.folder
diff --git a/tests/org.eclipse.wst.dtd.ui.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.wst.dtd.ui.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1e933be
--- /dev/null
+++ b/tests/org.eclipse.wst.dtd.ui.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name.0
+Bundle-SymbolicName: org.eclipse.wst.dtd.ui.tests
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: dtduitests.jar
+Bundle-Activator: org.eclipse.wst.dtd.ui.tests.internal.DTDUITestsPlugin
+Bundle-Vendor: %Bundle-Vendor.0
+Bundle-Localization: plugin
+Export-Package: org.eclipse.wst.dtd.ui.tests,
+ org.eclipse.wst.dtd.ui.tests.internal;x-internal:=true,
+ org.eclipse.wst.dtd.ui.tests.viewer
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.jface.text,
+ org.eclipse.ui,
+ org.eclipse.ui.views,
+ org.eclipse.ui.workbench,
+ org.eclipse.ui.workbench.texteditor,
+ org.eclipse.core.resources,
+ org.eclipse.wst.dtd.core,
+ org.eclipse.wst.dtd.ui,
+ org.eclipse.wst.sse.core,
+ org.eclipse.wst.sse.ui,
+ org.eclipse.wst.xml.core,
+ org.junit,
+ com.ibm.icu
+Eclipse-LazyStart: true
diff --git a/tests/org.eclipse.wst.dtd.ui.tests/about.html b/tests/org.eclipse.wst.dtd.ui.tests/about.html
new file mode 100644
index 0000000..4ec5989
--- /dev/null
+++ b/tests/org.eclipse.wst.dtd.ui.tests/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/tests/org.eclipse.wst.dtd.ui.tests/build.properties b/tests/org.eclipse.wst.dtd.ui.tests/build.properties
index 5590431..939b036 100644
--- a/tests/org.eclipse.wst.dtd.ui.tests/build.properties
+++ b/tests/org.eclipse.wst.dtd.ui.tests/build.properties
@@ -1,13 +1,3 @@
-###############################################################################
-# Copyright (c) 2005, 2006 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
-###############################################################################
 source.dtduitests.jar = src/
 output.dtduitests.jar = bin/
 bin.includes = dtduitests.jar,\
diff --git a/tests/org.eclipse.wst.dtd.ui.tests/plugin.properties b/tests/org.eclipse.wst.dtd.ui.tests/plugin.properties
index c8b5203..31fe230 100644
--- a/tests/org.eclipse.wst.dtd.ui.tests/plugin.properties
+++ b/tests/org.eclipse.wst.dtd.ui.tests/plugin.properties
@@ -1,13 +1,3 @@
-###############################################################################
-# Copyright (c) 2005, 2006 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
-###############################################################################
 # properties file for org.eclipse.wst.dtd.ui.tests
 Bundle-Vendor.0 = Eclipse.org
 Bundle-Name.0 = DTD UI Tests
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/DTDUIPreferencesTest.java b/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/DTDUIPreferencesTest.java
index e330ee8..d85215c 100644
--- a/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/DTDUIPreferencesTest.java
+++ b/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/DTDUIPreferencesTest.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2005 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
  *     
diff --git a/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/DTDUITestSuite.java b/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/DTDUITestSuite.java
index 7710a54..956c9f1 100644
--- a/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/DTDUITestSuite.java
+++ b/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/DTDUITestSuite.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 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
  *******************************************************************************/
@@ -29,4 +29,4 @@
 		addTest(new TestSuite(TestViewerConfigurationDTD.class));
 		addTest(new TestSuite(TestEditorConfigurationDTD.class));
 	}
-}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/TestEditorConfigurationDTD.java b/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/TestEditorConfigurationDTD.java
index 4d62997..6af8263 100644
--- a/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/TestEditorConfigurationDTD.java
+++ b/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/TestEditorConfigurationDTD.java
@@ -1,14 +1,15 @@
-/*******************************************************************************
+/*
  * Copyright (c) 2005 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
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
  * Contributors:
  *   IBM - Initial API and implementation
  *   Jens Lukowski/Innoopract - initial renaming/restructuring
- *******************************************************************************/
+ * 
+ */
 package org.eclipse.wst.dtd.ui.tests;
 
 import junit.framework.TestCase;
diff --git a/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/VerifyUIPlugin.java b/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/VerifyUIPlugin.java
index f65dade..ba2daa7 100644
--- a/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/VerifyUIPlugin.java
+++ b/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/VerifyUIPlugin.java
@@ -1,13 +1,12 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 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
- *******************************************************************************/
+/*****************************************************************************
+ * Copyright (c) 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.wst.dtd.ui.tests;
 
 import junit.framework.TestCase;
diff --git a/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/internal/Logger.java b/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/internal/Logger.java
index fbd789e..5e84f45 100644
--- a/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/internal/Logger.java
+++ b/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/internal/Logger.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
+ * Copyright (c) 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
  *******************************************************************************/
@@ -141,4 +141,4 @@
 	public static void trace(String category, String message) {
 		_trace(category, message, null);
 	}
-}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/viewer/TestViewerConfigurationDTD.java b/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/viewer/TestViewerConfigurationDTD.java
index 39ee842..92c2468 100644
--- a/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/viewer/TestViewerConfigurationDTD.java
+++ b/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/viewer/TestViewerConfigurationDTD.java
@@ -1,13 +1,3 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 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.wst.dtd.ui.tests.viewer;
 
 import junit.framework.TestCase;
diff --git a/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/viewer/ViewerTestDTD.java b/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/viewer/ViewerTestDTD.java
index 383db12..ed9c3ce 100644
--- a/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/viewer/ViewerTestDTD.java
+++ b/tests/org.eclipse.wst.dtd.ui.tests/src/org/eclipse/wst/dtd/ui/tests/viewer/ViewerTestDTD.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
+ * Copyright (c) 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
  *******************************************************************************/
@@ -490,4 +490,4 @@
 		}
 	}
 
-}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.dtd.ui.tests/test.xml b/tests/org.eclipse.wst.dtd.ui.tests/test.xml
index 9cbf4b6..6e19253 100644
--- a/tests/org.eclipse.wst.dtd.ui.tests/test.xml
+++ b/tests/org.eclipse.wst.dtd.ui.tests/test.xml
@@ -1,115 +1,87 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0"?>
 
 <project
-    name="testsuite"
-    default="run"
-    basedir=".">
-    
-    <!-- The following properties should be passed into this script -->
-    <!-- ${eclipse-home}   -->
-    <!-- ${buildDirectory}  -->
-    <!-- ${buildLabel}        -->
+	name="testsuite"
+	default="run"
+	basedir=".">
+	<!-- The property ${eclipse-home} should be passed into this script -->
+	<!-- Set a meaningful default value for when it is not. -->
+	<!-- <property name="eclipse-home" value="${basedir}\..\.."/> -->
 
-    <!-- should be little need to change what's above  -->
+	<echo message="basedir ${basedir}" />
+	<echo message="eclipse place ${eclipse-home}" />
 
+	<!-- sets the properties plugin-name, and library-file -->
 	<property
 		name="plugin-name"
 		value="org.eclipse.wst.dtd.ui.tests" />
-    <property
-        name="classname"
-        value="org.eclipse.wst.dtd.ui.tests.DTDUITestSuite" />
-    <property
-        name="testType"
-        value="ui-test" />
+	<property
+		name="library-file"
+		value="${eclipse-home}/plugins/org.eclipse.test_3.1.0/library.xml" />
 
-    <!-- should be little need to change what's below -->
+	<!-- This target holds all initialization code that needs to be done for -->
+	<!-- all tests that are to be run. Initialization for individual tests -->
+	<!-- should be done within the body of the suite target. -->
+	<target name="init">
+		<tstamp />
+		<delete>
+			<fileset
+				dir="${eclipse-home}"
+				includes="org.eclipse.wst.dtd.ui.tests.*xml" />
+		</delete>
+	</target>
 
-    <echo message="basedir: ${basedir}" />
-    <echo message="eclipse-home: ${eclipse-home}" />
-    <echo message="buildDirectory: ${buildDirectory}" />
-    <echo message="plugin-name: ${plugin-name}" />
-    <echo message="classname: ${classname}" />
-    <echo message="testType ${testType}" />
+	<!-- This target defines the tests that need to be run. -->
+	<target name="suite">
+		<property
+			name="wst-folder"
+			value="${eclipse-home}/wst_folder" />
+		<delete
+			dir="${workspace}"
+			quiet="true" />
+		<ant
+			target="ui-test"
+			antfile="${library-file}"
+			dir="${eclipse-home}">
+			<property
+				name="data-dir"
+				value="${wst-folder}" />
+			<property
+				name="plugin-name"
+				value="${plugin-name}" />
+			<property
+				name="classname"
+				value="org.eclipse.wst.dtd.ui.tests.DTDUITestSuite" />
+			<property
+				name="plugin-path"
+				value="${eclipse-home}/plugins/${plugin-name}" />
+		</ant>
+	</target>
 
+	<!-- This target holds code to cleanup the testing environment after -->
+	<!-- after all of the tests have been run. You can use this target to -->
+	<!-- delete temporary files that have been created. -->
+	<target name="cleanup">
+		<!--<delete dir="${workspace}" quiet="true"/>-->
+	</target>
 
-    <property
-        name="library-file"
-        value="${eclipse-home}/plugins/org.eclipse.test_3.1.0/library.xml" />
-    <property
-        name="workspace"
-        value="${eclipse-home}/junitworkspaces/${plugin-name}" />
-        
-    <!-- This target holds all initialization code that needs to be done for -->
-    <!-- all tests that are to be run. Initialization for individual tests -->
-    <!-- should be done within the body of the suite target. -->
-    <target name="init">
-        <tstamp />
-        <delete>
-            <fileset
-                dir="${eclipse-home}"
-                includes="${plugin-name}.*xml" />
-        </delete>
-        <!-- make directory, in case path doesn't exist yet -->
-        <mkdir dir="${workspace}" />
-        <!--  but delete to make sure fresh contents-->
-        <delete
-            dir="${workspace}"
-            quiet="true" />
-
-    </target>
-
-    <!-- This target defines the tests that need to be run. -->
-    <target name="suite">
-
-        <ant
-            target="${testType}"
-            antfile="${library-file}"
-            dir="${eclipse-home}">
-            <property
-                name="data-dir"
-                value="${workspace}" />
-            <property
-                name="plugin-name"
-                value="${plugin-name}" />
-            <property
-                name="classname"
-                value="${classname}" />
-            <property
-                name="plugin-path"
-                value="${eclipse-home}/plugins/${plugin-name}" />
-        </ant>
-
-        <copy
-            failonerror="false"
-            file="${workspace}/.metadata/.log"
-            tofile="${buildDirectory}/${buildLabel}/testResults/consolelogs/${plugin-name}.consolelog.txt" />
-
-    </target>
-
-    <!-- This target holds code to cleanup the testing environment after -->
-    <!-- after all of the tests have been run. You can use this target to -->
-    <!-- delete temporary files that have been created. -->
-    <target name="cleanup">
-        <!-- usually no need to delete workspace until next run, and leaving it allows inspection -->
-        <!-- <delete dir="${workspace}" quiet="true" /> -->
-    </target>
-
-    <!-- This target runs the test suite. Any actions that need to happen -->
-    <!-- after all the tests have been run should go here. -->
-    <target
-        name="run"
-        depends="init,suite,cleanup">
-        <ant
-            target="collect"
-            antfile="${library-file}"
-            dir="${eclipse-home}">
-            <property
-                name="includes"
-                value="${plugin-name}.*xml" />
-            <property
-                name="output-file"
-                value="${plugin-name}.xml" />
-        </ant>
-    </target>
+	<!-- This target runs the test suite. Any actions that need to happen -->
+	<!-- after all the tests have been run should go here. -->
+	<target
+		name="run"
+		depends="init,suite,cleanup">
+		<ant
+			target="collect"
+			antfile="${library-file}"
+			dir="${eclipse-home}">
+			<property
+				name="includes"
+				value="org.eclipse.wst.dtd.ui.tests.*xml" />
+			<property
+				name="output-file"
+				value="${plugin-name}.xml" />
+		</ant>
+		<!--		<emailResults resultsFile="${build-results-home}/${plugin-name}.xml" addresslist="nitind@us.ibm.com,david_williams@us.ibm.com" /> -->
+	</target>
 
 </project>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.html.tests.encoding/.classpath b/tests/org.eclipse.wst.html.tests.encoding/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.wst.html.tests.encoding/.cvsignore b/tests/org.eclipse.wst.html.tests.encoding/.cvsignore
new file mode 100644
index 0000000..2048e2a
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/.cvsignore
@@ -0,0 +1,4 @@
+bin
+build.xml
+temp.folder
+htmlencodingtests.jar
diff --git a/tests/org.eclipse.wst.html.tests.encoding/.project b/tests/org.eclipse.wst.html.tests.encoding/.project
new file mode 100644
index 0000000..6068b5b
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.wst.html.tests.encoding</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/tests/org.eclipse.wst.html.tests.encoding/.settings/org.eclipse.core.resources.prefs b/tests/org.eclipse.wst.html.tests.encoding/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..afa5c91
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+#Tue Apr 04 03:36:32 EDT 2006
+eclipse.preferences.version=1
+encoding/<project>=ISO-8859-1
diff --git a/tests/org.eclipse.wst.html.tests.encoding/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.wst.html.tests.encoding/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..2dd8b5c
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,80 @@
+#Sun Apr 16 14:37:21 EDT 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=enabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=ignore
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+org.eclipse.jdt.core.compiler.problem.unusedLabel=error
+org.eclipse.jdt.core.compiler.problem.unusedLocal=error
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.3
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/tests/org.eclipse.wst.html.tests.encoding/.settings/org.eclipse.jdt.ui.prefs b/tests/org.eclipse.wst.html.tests.encoding/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..ef2ac65
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+#Tue Apr 04 03:36:39 EDT 2006
+eclipse.preferences.version=1
+internal.default.compliance=default
diff --git a/tests/org.eclipse.wst.html.tests.encoding/.settings/org.eclipse.ltk.core.refactoring.prefs b/tests/org.eclipse.wst.html.tests.encoding/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..c59368c
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Tue Apr 04 03:36:32 EDT 2006
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/tests/org.eclipse.wst.html.tests.encoding/.settings/org.eclipse.pde.prefs b/tests/org.eclipse.wst.html.tests.encoding/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..f724958
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,15 @@
+#Sun Apr 16 14:05:29 EDT 2006
+compilers.p.build=0
+compilers.p.deprecated=1
+compilers.p.illegal-att-value=0
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=0
+compilers.p.unknown-attribute=0
+compilers.p.unknown-class=0
+compilers.p.unknown-element=0
+compilers.p.unknown-resource=0
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.p.unused-element-or-attribute=0
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/tests/org.eclipse.wst.html.tests.encoding/META-INF/MANIFEST.MF b/tests/org.eclipse.wst.html.tests.encoding/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..b2d7522
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name.0
+Bundle-SymbolicName: org.eclipse.wst.html.tests.encoding
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: htmlencodingtests.jar
+Bundle-Activator: org.eclipse.wst.html.tests.encoding.HTMLEncodingTestsPlugin
+Bundle-Vendor: %Bundle-Vendor.0
+Bundle-Localization: plugin
+Export-Package: org.eclipse.wst.html.tests.encoding,
+ org.eclipse.wst.html.tests.encoding.html
+Require-Bundle: org.eclipse.core.resources,
+ org.eclipse.core.runtime,
+ org.eclipse.wst.xml.tests.encoding,
+ org.eclipse.wst.html.core,
+ org.eclipse.wst.xml.core,
+ org.junit,
+ org.eclipse.wst.sse.core
+Eclipse-LazyStart: true
diff --git a/tests/org.eclipse.wst.html.tests.encoding/about.html b/tests/org.eclipse.wst.html.tests.encoding/about.html
new file mode 100644
index 0000000..4ec5989
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/tests/org.eclipse.wst.html.tests.encoding/build.properties b/tests/org.eclipse.wst.html.tests.encoding/build.properties
new file mode 100644
index 0000000..a3b623d
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/build.properties
@@ -0,0 +1,8 @@
+source.htmlencodingtests.jar = src/
+output.htmlencodingtests.jar = bin/
+bin.includes = htmlencodingtests.jar,\
+               testfiles/,\
+               test.xml,\
+               META-INF/,\
+               about.html
+
diff --git a/tests/org.eclipse.wst.html.tests.encoding/plugin.properties b/tests/org.eclipse.wst.html.tests.encoding/plugin.properties
new file mode 100644
index 0000000..36c1fc1
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/plugin.properties
@@ -0,0 +1,3 @@
+# properties file for org.eclipse.wst.html.tests.encoding
+Bundle-Vendor.0 = Eclipse.org
+Bundle-Name.0 = HTML Encoding Tests Plug-in
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.html.tests.encoding/src/org/eclipse/wst/html/tests/encoding/HTMLEncodingTestSuite.java b/tests/org.eclipse.wst.html.tests.encoding/src/org/eclipse/wst/html/tests/encoding/HTMLEncodingTestSuite.java
new file mode 100644
index 0000000..b9b3f44
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/src/org/eclipse/wst/html/tests/encoding/HTMLEncodingTestSuite.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.html.tests.encoding;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.eclipse.wst.html.tests.encoding.html.HTMLEncodingTests;
+import org.eclipse.wst.html.tests.encoding.html.HTMLHeadTokenizerTester;
+import org.eclipse.wst.html.tests.encoding.html.TestContentTypeDetectionForHTML;
+
+public class HTMLEncodingTestSuite extends TestSuite {
+
+	private static Class[] classes = new Class[]{HTMLEncodingTests.class, HTMLHeadTokenizerTester.class, TestContentTypeDetectionForHTML.class};
+
+	public static Test suite() {
+		return new HTMLEncodingTestSuite();
+	}
+
+	public HTMLEncodingTestSuite() {
+		super("HTML Encoding Test Suite");
+		for (int i = 0; i < classes.length; i++) {
+			addTest(new TestSuite(classes[i], classes[i].getName()));
+		}
+	}
+
+	/**
+	 * @param theClass
+	 */
+	public HTMLEncodingTestSuite(Class theClass) {
+		super(theClass);
+	}
+
+	/**
+	 * @param theClass
+	 * @param name
+	 */
+	public HTMLEncodingTestSuite(Class theClass, String name) {
+		super(theClass, name);
+	}
+
+	/**
+	 * @param name
+	 */
+	public HTMLEncodingTestSuite(String name) {
+		super(name);
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.html.tests.encoding/src/org/eclipse/wst/html/tests/encoding/HTMLEncodingTestsPlugin.java b/tests/org.eclipse.wst.html.tests.encoding/src/org/eclipse/wst/html/tests/encoding/HTMLEncodingTestsPlugin.java
new file mode 100644
index 0000000..fbf9ef8
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/src/org/eclipse/wst/html/tests/encoding/HTMLEncodingTestsPlugin.java
@@ -0,0 +1,141 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.html.tests.encoding;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Reader;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Plugin;
+
+/**
+ * The main plugin class to be used in the desktop.
+ */
+public class HTMLEncodingTestsPlugin extends Plugin {
+	// The shared instance.
+	private static HTMLEncodingTestsPlugin plugin;
+
+	public static List getAllTestFiles(String topDirName) {
+		List result = null;
+		URL installURL = getInstallLocation();
+		// String scheme = installURL.getProtocol();
+		String path = installURL.getPath();
+		String location = path + topDirName;
+		File topDir = new File(location);
+		if (!topDir.isDirectory()) {
+			throw new IllegalArgumentException(topDirName + " is not a directory");
+		}
+		result = getFilesInDir(topDir);
+		return result;
+	}
+
+	/**
+	 * Returns the shared instance.
+	 */
+	public static HTMLEncodingTestsPlugin getDefault() {
+		return plugin;
+	}
+
+	private static List getFilesInDir(File topDir) {
+		List files = new ArrayList();
+		File[] topFiles = topDir.listFiles();
+		for (int i = 0; i < topFiles.length; i++) {
+			File file = topFiles[i];
+			if (file.isFile()) {
+				files.add(file);
+			}
+			else if (file.isDirectory() && !file.getName().endsWith("CVS")) {
+				List innerFiles = getFilesInDir(file);
+				files.addAll(innerFiles);
+			}
+		}
+		return files;
+	}
+
+	public static URL getInstallLocation() {
+		URL installLocation = Platform.getBundle("org.eclipse.wst.html.tests.encoding").getEntry("/");
+		URL resolvedLocation = null;
+		try {
+			resolvedLocation = FileLocator.resolve(installLocation);
+		}
+		catch (IOException e) {
+			// impossible
+			throw new Error(e);
+		}
+		return resolvedLocation;
+	}
+
+	/**
+	 * Returns the string from the plugin's resource bundle, or 'key' if not
+	 * found.
+	 */
+	public static String getResourceString(String key) {
+		ResourceBundle bundle = HTMLEncodingTestsPlugin.getDefault().getResourceBundle();
+		try {
+			return (bundle != null ? bundle.getString(key) : key);
+		}
+		catch (MissingResourceException e) {
+			return key;
+		}
+	}
+
+	public static File getTestFile(String filepath) {
+		URL installURL = getInstallLocation();
+		// String scheme = installURL.getProtocol();
+		String path = installURL.getPath();
+		String location = path + filepath;
+		File result = new File(location);
+		return result;
+	}
+
+	public static Reader getTestReader(String filepath) throws FileNotFoundException {
+		URL installURL = getInstallLocation();
+		// String scheme = installURL.getProtocol();
+		String path = installURL.getPath();
+		String location = path + filepath;
+		Reader result = new FileReader(location);
+		return result;
+	}
+
+	/**
+	 * Returns the workspace instance.
+	 */
+	public static IWorkspace getWorkspace() {
+		return ResourcesPlugin.getWorkspace();
+	}
+
+	/**
+	 * The constructor.
+	 */
+	public HTMLEncodingTestsPlugin() {
+		super();
+		plugin = this;
+	}
+
+	/**
+	 * Returns the plugin's resource bundle,
+	 */
+	public ResourceBundle getResourceBundle() {
+		return null;
+	}
+
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.html.tests.encoding/src/org/eclipse/wst/html/tests/encoding/html/HTMLEncodingTests.java b/tests/org.eclipse.wst.html.tests.encoding/src/org/eclipse/wst/html/tests/encoding/html/HTMLEncodingTests.java
new file mode 100644
index 0000000..49ed8cc
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/src/org/eclipse/wst/html/tests/encoding/html/HTMLEncodingTests.java
@@ -0,0 +1,167 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.html.tests.encoding.html;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CodingErrorAction;
+
+import junit.framework.TestCase;
+
+import org.eclipse.wst.html.core.internal.contenttype.HTMLResourceEncodingDetector;
+import org.eclipse.wst.html.tests.encoding.HTMLEncodingTestsPlugin;
+import org.eclipse.wst.sse.core.internal.encoding.EncodingMemento;
+import org.eclipse.wst.sse.core.internal.encoding.IResourceCharsetDetector;
+
+public class HTMLEncodingTests extends TestCase {
+
+	/**
+	 * Ensures that an InputStream has mark/reset support.
+	 */
+	private static InputStream getMarkSupportedStream(InputStream original) {
+		if (original == null)
+			return null;
+		if (original.markSupported())
+			return original;
+		return new BufferedInputStream(original);
+	}
+
+	private boolean DEBUG = false;
+	private final String fileDir = "html/";
+	private final String fileHome = "testfiles/";
+	private final String fileLocation = fileHome + fileDir;
+	private int READ_BUFFER_SIZE = 8000;
+
+	public HTMLEncodingTests(String name) {
+		super(name);
+	}
+
+	private void doTestFileStream(String filename, String expectedIANAEncoding, IResourceCharsetDetector detector) throws IOException {
+		File file = HTMLEncodingTestsPlugin.getTestFile(filename);
+		if (!file.exists())
+			throw new IllegalArgumentException(filename + " was not found");
+		InputStream inputStream = new FileInputStream(file);
+		// InputStream inStream = getClass().getResourceAsStream(filename);
+		InputStream istream = getMarkSupportedStream(inputStream);
+		try {
+			detector.set(istream);
+			EncodingMemento encodingMemento = ((HTMLResourceEncodingDetector)detector).getEncodingMemento();
+			String foundIANAEncoding = null;
+			if (encodingMemento != null) {
+				foundIANAEncoding = encodingMemento.getJavaCharsetName();
+			}
+			// I changed many "equals" to "equalsIgnoreCase" on 11/4/2002,
+			// since
+			// some issues with SHIFT_JIS vs. Shift_JIS were causing failures.
+			// We do want to be tolerant on input, and accept either, but I
+			// think
+			// that SupportedJavaEncodings needs to be changed to "recommend"
+			// Shift_JIS.
+			boolean expectedIANAResult = false;
+			if (expectedIANAEncoding == null) {
+				expectedIANAResult = (expectedIANAEncoding == foundIANAEncoding);
+			}
+			else {
+				expectedIANAResult = expectedIANAEncoding.equalsIgnoreCase(foundIANAEncoding);
+			}
+
+			assertTrue("encoding test file " + filename + " expected: " + expectedIANAEncoding + " found: " + foundIANAEncoding, expectedIANAResult);
+			// a very simple read test ... will cause JUnit error (not fail)
+			// if
+			// throws exception.
+			if (expectedIANAEncoding != null) {
+				ensureCanRead(filename, foundIANAEncoding, istream);
+			}
+
+		}
+		finally {
+			if (istream != null) {
+				istream.close();
+			}
+			if (inputStream != null) {
+				inputStream.close();
+			}
+		}
+	}
+
+	/**
+	 * This method just reads to stream, to be sure it can be read per
+	 * encoding, without exception.
+	 */
+	private void ensureCanRead(String filename, String encoding, InputStream inStream) throws IOException {
+		Charset charset = Charset.forName(encoding);
+		CharsetDecoder charsetDecoder = charset.newDecoder();
+		charsetDecoder.onMalformedInput(CodingErrorAction.REPORT);
+		charsetDecoder.onUnmappableCharacter(CodingErrorAction.REPORT);
+
+		InputStreamReader reader = new InputStreamReader(inStream, charsetDecoder);
+		StringBuffer stringBuffer = readInputStream(reader);
+		if (DEBUG) {
+			System.out.println();
+			System.out.println(filename);
+			System.out.println(stringBuffer.toString());
+		}
+	}
+
+	private StringBuffer readInputStream(Reader reader) throws IOException {
+
+		StringBuffer buffer = new StringBuffer();
+		int numRead = 0;
+		char tBuff[] = new char[READ_BUFFER_SIZE];
+		while ((numRead = reader.read(tBuff, 0, tBuff.length)) != -1) {
+			buffer.append(tBuff, 0, numRead);
+		}
+		return buffer;
+	}
+
+	public void testEmptyFile() throws IOException {
+		String filename = fileLocation + "EmptyFile.html";
+		// HTML has no spec default encoding. Will use platform default encoding.
+		doTestFileStream(filename, System.getProperty("file.encoding"), new HTMLResourceEncodingDetector());
+	}
+
+	public void testIllformedNormalNonDefault() throws IOException {
+		String filename = fileLocation + "IllformedNormalNonDefault.html";
+		String ianaInFile = "UTF-8";
+		doTestFileStream(filename, ianaInFile, new HTMLResourceEncodingDetector());
+	}
+
+	public void testMultiNonDefault() throws IOException {
+		String filename = fileLocation + "MultiNonDefault.html";
+		doTestFileStream(filename, "ISO-8859-6", new HTMLResourceEncodingDetector());
+	}
+
+	public void testNoEncoding() throws IOException {
+		String filename = fileLocation + "NoEncoding.html";
+		// HTML has no spec default encoding. Will use platform default encoding.
+		doTestFileStream(filename, System.getProperty("file.encoding"), new HTMLResourceEncodingDetector());
+	}
+
+	public void testnoquotes() throws IOException {
+		String filename = fileLocation + "noquotes.html";
+		doTestFileStream(filename, "UTF-8", new HTMLResourceEncodingDetector());
+
+	}
+
+	public void testNormalNonDefault() throws IOException {
+		String filename = fileLocation + "NormalNonDefault.html";
+		String ianaInFile = "UTF-8";
+		doTestFileStream(filename, ianaInFile, new HTMLResourceEncodingDetector());
+	}
+
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.html.tests.encoding/src/org/eclipse/wst/html/tests/encoding/html/HTMLHeadTokenizerTester.java b/tests/org.eclipse.wst.html.tests.encoding/src/org/eclipse/wst/html/tests/encoding/html/HTMLHeadTokenizerTester.java
new file mode 100644
index 0000000..60ec4b2
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/src/org/eclipse/wst/html/tests/encoding/html/HTMLHeadTokenizerTester.java
@@ -0,0 +1,260 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.html.tests.encoding.html;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.util.regex.Pattern;
+
+import junit.framework.TestCase;
+
+import org.eclipse.wst.html.core.internal.contenttype.HTMLHeadTokenizer;
+import org.eclipse.wst.html.core.internal.contenttype.HTMLHeadTokenizerConstants;
+import org.eclipse.wst.html.core.internal.contenttype.HeadParserToken;
+import org.eclipse.wst.html.tests.encoding.HTMLEncodingTestsPlugin;
+import org.eclipse.wst.xml.core.internal.contenttype.EncodingParserConstants;
+
+public class HTMLHeadTokenizerTester extends TestCase {
+	private boolean DEBUG = false;
+	private String fCharset;
+
+	private String fContentTypeValue;
+	private final String fileDir = "html/";
+	private final String fileHome = "testfiles/";
+	private final String fileLocation = this.fileHome + this.fileDir;
+	private String fPageEncodingValue = null;
+	private String fXMLDecEncodingName;
+
+	private void doTestFile(String filename, String expectedName) throws IOException {
+		doTestFile(filename, expectedName, null);
+	}
+
+	private void doTestFile(String filename, String expectedName, String finalTokenType) throws IOException {
+		HTMLHeadTokenizer tokenizer = null;
+		Reader fileReader = null;
+		try {
+			if (this.DEBUG) {
+				System.out.println();
+				System.out.println("       " + filename);
+				System.out.println();
+			}
+			fileReader = HTMLEncodingTestsPlugin.getTestReader(filename);
+			tokenizer = new HTMLHeadTokenizer(fileReader);
+		}
+		catch (IOException e) {
+			System.out.println("Error opening file \"" + filename + "\"");
+		}
+
+		HeadParserToken resultToken = null;
+		HeadParserToken token = parseHeader(tokenizer);
+		String resultValue = getAppropriateEncoding();
+		fileReader.close();
+		if (finalTokenType != null) {
+			assertTrue("did not end as expected. found:  " + token.getType(), finalTokenType.equals(token.getType()));
+		}
+		else {
+			if (expectedName == null) {
+				assertTrue("expected no encoding, but found: " + resultValue, resultToken == null);
+			}
+			else {
+				// TODO: need to work on case issues
+				assertTrue("expected " + expectedName + " but found " + resultValue, expectedName.equals(resultValue.toUpperCase()));
+			}
+		}
+
+	}
+
+	// public void testMalformedNoEncoding() {
+	// String filename = fileLocation + "MalformedNoEncoding.jsp";
+	// doTestFile(filename);
+	// }
+	// public void testMalformedNoEncodingXSL() {
+	// String filename = fileLocation + "MalformedNoEncodingXSL.jsp";
+	// doTestFile(filename);
+	// }
+	// public void testNoEncoding() {
+	// String filename = fileLocation + "NoEncoding.jsp";
+	// doTestFile(filename);
+	// }
+	// public void testNormalNonDefault() {
+	// String filename = fileLocation + "NormalNonDefault.jsp";
+	// doTestFile(filename);
+	// }
+	// public void testNormalPageCaseNonDefault() {
+	// String filename = fileLocation + "NormalPageCaseNonDefault.jsp";
+	// doTestFile(filename);
+	// }
+	// public void testdefect223365() {
+	// String filename = fileLocation + "SelColBeanRow12ResultsForm.jsp";
+	// doTestFile(filename);
+	// }
+	/**
+	 * returns encoding according to priority: 1. XML Declaration 2. page
+	 * directive pageEncoding name 3. page directive contentType charset name
+	 */
+	private String getAppropriateEncoding() {
+		String result = null;
+		if (this.fXMLDecEncodingName != null) {
+			result = this.fXMLDecEncodingName;
+		}
+		else if (this.fPageEncodingValue != null) {
+			result = this.fPageEncodingValue;
+		}
+		else if (this.fCharset != null) {
+			result = this.fCharset;
+		}
+		return result;
+	}
+
+	private boolean isLegalString(String tokenType) {
+		boolean result = false;
+		if (tokenType == null) {
+			result = false;
+		}
+		else {
+			result = tokenType.equals(EncodingParserConstants.StringValue) || tokenType.equals(EncodingParserConstants.UnDelimitedStringValue) || tokenType.equals(EncodingParserConstants.InvalidTerminatedStringValue) || tokenType.equals(EncodingParserConstants.InvalidTermintatedUnDelimitedStringValue);
+		}
+		return result;
+	}
+
+	private void parseContentTypeValue(String contentType) {
+		Pattern pattern = Pattern.compile(";\\s*charset\\s*=\\s*");
+		String[] parts = pattern.split(contentType);
+		if (parts.length > 0) {
+			// if only one item, it can still be charset instead of
+			// contentType
+			if (parts.length == 1) {
+				if (parts[0].length() > 6) {
+					String checkForCharset = parts[0].substring(0, 7);
+					if (checkForCharset.equalsIgnoreCase("charset")) {
+						int eqpos = parts[0].indexOf('=');
+						eqpos = eqpos + 1;
+						if (eqpos < parts[0].length()) {
+							this.fCharset = parts[0].substring(eqpos);
+							this.fCharset = this.fCharset.trim();
+						}
+					}
+				}
+			}
+			else {
+				// fContentType = parts[0];
+			}
+
+		}
+		if (parts.length > 1) {
+			this.fCharset = parts[1];
+		}
+	}
+
+	/**
+	 * Give's priority to encoding value, if found else, looks for contentType
+	 * value;
+	 */
+	private HeadParserToken parseHeader(HTMLHeadTokenizer tokenizer) throws IOException {
+		this.fPageEncodingValue = null;
+		this.fCharset = null;
+		/*
+		 * if (tokenType == XMLHeadTokenizerConstants.XMLDelEncoding) { if
+		 * (tokenizer.hasMoreTokens()) { ITextHeadRegion valueToken =
+		 * tokenizer.getNextToken(); String valueTokenType =
+		 * valueToken.getType(); if (isLegal(valueTokenType)) { resultValue =
+		 * valueToken.getText(); if (DEBUG) { System.out.println("XML Head
+		 * Tokenizer Found Encoding: " + resultValue); } } } }
+		 */
+		HeadParserToken token = null;
+		HeadParserToken finalToken = null;
+		do {
+			token = tokenizer.getNextToken();
+			if (this.DEBUG) {
+				System.out.println(token);
+			}
+			String tokenType = token.getType();
+			if (tokenType == HTMLHeadTokenizerConstants.MetaTagContentType) {
+				if (tokenizer.hasMoreTokens()) {
+					HeadParserToken valueToken = tokenizer.getNextToken();
+					if (this.DEBUG) {
+						System.out.println(valueToken);
+					}
+					String valueTokenType = valueToken.getType();
+					if (isLegalString(valueTokenType)) {
+						this.fContentTypeValue = valueToken.getText();
+
+					}
+				}
+			}
+
+		}
+		while (tokenizer.hasMoreTokens());
+		if (this.fContentTypeValue != null) {
+			parseContentTypeValue(this.fContentTypeValue);
+		}
+		finalToken = token;
+		return finalToken;
+
+	}
+
+	public void testBestCase() throws IOException {
+		String filename = this.fileLocation + "NormalNonDefault.html";
+		doTestFile(filename, "UTF-8");
+
+	}
+
+	// public void testIllFormed() {
+	// String filename = fileLocation + "testIllFormed.jsp";
+	// doTestFile(filename);
+	// }
+	// public void testIllFormed2() {
+	// String filename = fileLocation + "testIllFormed2.jsp";
+	// doTestFile(filename);
+	// }
+	// public void testIllformedNormalNonDefault() {
+	// String filename = fileLocation + "IllformedNormalNonDefault.jsp";
+	// doTestFile(filename);
+	// }
+	public void testEmptyFile() throws IOException {
+		String filename = this.fileLocation + "EmptyFile.html";
+		doTestFile(filename, null);
+	}
+
+	public void testIllFormedNormalNonDefault() throws IOException {
+		String filename = this.fileLocation + "IllformedNormalNonDefault.html";
+		doTestFile(filename, "UTF-8");
+	}
+
+	public void testLargeCase() throws IOException {
+		String filename = this.fileLocation + "LargeNonDefault.html";
+		doTestFile(filename, "ISO-8859-1");
+
+	}
+
+	public void testLargeNoEncoding() throws IOException {
+		String filename = this.fileLocation + "LargeNoEncoding.html";
+		doTestFile(filename, null, EncodingParserConstants.MAX_CHARS_REACHED);
+
+	}
+
+	public void testMultiNonDefault() throws IOException {
+		String filename = this.fileLocation + "MultiNonDefault.html";
+		doTestFile(filename, "ISO-8859-6");
+	}
+
+	public void testNoEncoding() throws IOException {
+		String filename = this.fileLocation + "NoEncoding.html";
+		doTestFile(filename, null);
+	}
+
+	public void testnoquotes() throws IOException {
+		String filename = this.fileLocation + "noquotes.html";
+		doTestFile(filename, "UTF-8");
+
+	}
+
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.html.tests.encoding/src/org/eclipse/wst/html/tests/encoding/html/TestContentTypeDetectionForHTML.java b/tests/org.eclipse.wst.html.tests.encoding/src/org/eclipse/wst/html/tests/encoding/html/TestContentTypeDetectionForHTML.java
new file mode 100644
index 0000000..dab37b9
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/src/org/eclipse/wst/html/tests/encoding/html/TestContentTypeDetectionForHTML.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.html.tests.encoding.html;
+
+import java.io.IOException;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.wst.xml.tests.encoding.read.TestContentTypeDetection;
+
+public class TestContentTypeDetectionForHTML extends TestContentTypeDetection {
+	public void testFile57() throws CoreException, IOException {
+		doTest("org.eclipse.wst.html.core.htmlsource", "testfiles/html/EmptyFile.html", null);
+	}
+
+	public void testFile58() throws CoreException, IOException {
+		doTest("org.eclipse.wst.html.core.htmlsource", "testfiles/html/IllformedNormalNonDefault.html", null);
+	}
+
+	public void testFile59() throws CoreException, IOException {
+		doTest("org.eclipse.wst.html.core.htmlsource", "testfiles/html/LargeNoEncoding.html", null);
+	}
+
+
+	public void testFile60() throws CoreException, IOException {
+		doTest("org.eclipse.wst.html.core.htmlsource", "testfiles/html/LargeNonDefault.html", null);
+	}
+
+	public void testFile61() throws CoreException, IOException {
+		doTest("org.eclipse.wst.html.core.htmlsource", "testfiles/html/MultiNonDefault.html", null);
+	}
+
+	public void testFile62() throws CoreException, IOException {
+		doTest("org.eclipse.wst.html.core.htmlsource", "testfiles/html/NoEncoding.html", null);
+	}
+
+	public void testFile63() throws CoreException, IOException {
+		doTest("org.eclipse.wst.html.core.htmlsource", "testfiles/html/noquotes.html", null);
+	}
+
+	public void testFile64() throws CoreException, IOException {
+		doTest("org.eclipse.wst.html.core.htmlsource", "testfiles/html/NormalNonDefault.html", null);
+	}
+
+}
diff --git a/tests/org.eclipse.wst.html.tests.encoding/test.xml b/tests/org.eclipse.wst.html.tests.encoding/test.xml
new file mode 100644
index 0000000..772fa96
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/test.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0"?>
+
+<project
+	name="testsuite"
+	default="run"
+	basedir=".">
+
+	<!-- Configurable Properties -->
+
+	<!-- The property ${eclipse-home} should be passed into this script -->
+	<!-- Set a meaningful default value for when it is not. -->
+	<!-- <property name="eclipse-home" value="${basedir}\..\.." /> -->
+
+	<echo message="basedir ${basedir}" />
+	<echo message="eclipse place ${eclipse-home}" />
+
+	<!-- sets the properties plugin-name, and library-file -->
+	<property
+		name="plugin-name"
+		value="org.eclipse.wst.html.tests.encoding" />
+	<property
+		name="library-file"
+		value="${eclipse-home}/plugins/org.eclipse.test_3.1.0/library.xml" />
+
+	<!-- This target holds all initialization code that needs to be done for -->
+	<!-- all tests that are to be run. Initialization for individual tests -->
+	<!-- should be done within the body of the suite target. -->
+	<target name="init">
+		<delete>
+			<fileset
+				dir="${eclipse-home}"
+				includes="org.eclipse.wst.html.tests.encoding.*xml" />
+		</delete>
+	</target>
+
+	<!-- This target defines the tests that need to be run. -->
+	<target name="suite">
+		<property
+			name="wst-folder"
+			value="${eclipse-home}/wst_folder" />
+		<delete
+			dir="${wst-folder}"
+			quiet="true" />
+		<ant
+			target="core-test"
+			antfile="${library-file}"
+			dir="${eclipse-home}">
+			<property
+				name="data-dir"
+				value="${wst-folder}" />
+			<property
+				name="plugin-name"
+				value="org.eclipse.wst.html.tests.encoding" />
+			<property
+				name="classname"
+				value="org.eclipse.wst.html.tests.encoding.HTMLEncodingTestSuite" />
+			<property
+				name="plugin-path"
+				value="${eclipse-home}/plugins/${plugin-name}" />
+		</ant>
+	</target>
+
+	<!-- This target holds code to cleanup the testing environment after -->
+	<!-- after all of the tests have been run. You can use this target to -->
+	<!-- delete temporary files that have been created. -->
+	<target name="cleanup">
+		<!--<delete dir="${workspace}" quiet="true" />-->
+	</target>
+
+	<!-- This target runs the test suite. Any actions that need to happen -->
+	<!-- after all the tests have been run should go here. -->
+	<target
+		name="run"
+		depends="init,suite,cleanup">
+		<ant
+			target="collect"
+			antfile="${library-file}"
+			dir="${eclipse-home}">
+			<property
+				name="includes"
+				value="org.eclipse.wst.html.tests.encoding.*xml" />
+			<property
+				name="output-file"
+				value="${plugin-name}.xml" />
+		</ant>
+		<!--<emailResults resultsFile="${build-results-home}/${plugin-name}.xml" addresslist="david_williams@us.ibm.com" /> -->
+	</target>
+
+</project>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/EmptyFile.html b/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/EmptyFile.html
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/EmptyFile.html
diff --git a/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/IllformedNormalNonDefault.html b/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/IllformedNormalNonDefault.html
new file mode 100644
index 0000000..ef8b5c8
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/IllformedNormalNonDefault.html
@@ -0,0 +1,20 @@
+<HEAD>
+<META http-equiv="Content-Style-Type" content="text/css">
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8>
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-6">
+<META name="GENERATOR" content="IBM WebSphere Studio">
+<TITLE>IBM WebSphere Samples Gallery</TITLE>
+</HEAD>
+<FRAMESET rows="75,*">
+	<FRAME name="title" marginwidth="0" marginheight="0" frameborder="0" src="Menu/Title.html" scrolling="NO" noresize>
+	<FRAMESET cols="160,*">
+		<FRAME name="menu" marginwidth="0" marginheight="0" frameborder="0" src="Menu/Menu.html" scrolling="auto" noresize>
+		<FRAME name="main" marginwidth="0" marginheight="0" frameborder="0" src="Menu/SamplesIntro.html" scrolling="auto" noresize>
+	</FRAMESET>
+	<NOFRAMES>
+	<BODY>
+	<P>To view this page, you need a browser that supports frames.</P>
+	</BODY>
+	</NOFRAMES>
+</FRAMESET>
+</HTML>
diff --git a/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/LargeNoEncoding.html b/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/LargeNoEncoding.html
new file mode 100644
index 0000000..84ca60e
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/LargeNoEncoding.html
@@ -0,0 +1,664 @@
+<!DOCTYPE HTML PUBLIC "-//W3C/DTD/ HTML 4.01 Transitional//EN">
+
+<html>
+<head>
+<meta name="GENERATOR" content="Mozilla/4.7 [en] (WinNT; U) [Netscape]">
+<META content="text/css" http-equiv="Content-Style-Type">
+<title>smoke</title>
+</head>
+<body>
+<h2> Smoke Test - XML Editor</h2>
+Last updated: June 25, 2001
+<P>This Smoke Test primarily focuses on the RTP portion of the XML 
+Editior, which is the Source page of the XML Editor. It also performs 
+some integration testing. For example, it tests synchronization between 
+the Design and Source pages of the XML Editor, as well as with the 
+Outline and Properties views. It also verifies that files created 
+through the XML File wizard and references to the XML Catalog are 
+supported as expected.</P>
+<P><FONT color="#ff0000"><B>NOTE</B>: XML files are case-sensitive so be sure that things appear 
+exactly as noted.</FONT></P>
+
+<!-- ===========================================================
+                           Setup
+     ===========================================================
+-->
+<H2><FONT color="#0000ff">Setup</FONT></H2>
+<P><B>Starting Clean</B></P>
+<ul>
+    <li> Delete any existing workbench</li>
+    <li> Start Eclipse</li>
+</ul>
+<P><B>Open an XML Perspective<BR>
+</B></P>
+<UL>
+    <LI>Select the <B>Open Perspective</B> toolbar button in the upper left</LI>
+    <LI>Select <B>Other...</B></LI>
+    <LI>Select <B>XML</B></LI>
+    <LI>Verify the following views appear in the XML perspective: <FONT color="#ff0000">The location of the Outline and Navigator views are reversed from the Resource and Web perspectives. Do we want to try to be consistent across the perspectives? Also, I opened <B>defect</B> 177664 to enable easy access to the Properties view from within the XML perspective. If this view isn't included in the Perspective because its use is limited, then recommend we at least provide a Show or Hide Properties View toolbar button (similar to the buttons that Page Designer provides).</FONT></LI>
+</UL>
+<P><B>Project Creation and File Imports<BR>
+</B></P>
+<UL>
+    <LI>Create a Project, <B>XMLTest2</B> </LI>
+    <LI>Import the following files into this project:
+    <UL>
+        <LI><B>PurchaseOrder.xsd</B></LI>
+        <LI><B>Invoice.dtd</B></LI>
+    <LI><B>JobDesc.xml</B></LI>
+    <LI><B>Wireless.xml</B></LI>
+    <LI><B>gotchaTCBeans.set</B></LI>
+    <LI><B>ATS.dtd</B></LI>
+    <LI><FONT color="#ff0000">any others?</FONT></LI>
+    </UL>
+    </LI>
+</UL>
+
+<!-- ===========================================================
+                    Create/Open/Edit test cases
+     ===========================================================
+-->
+<H2><FONT color="#0000ff">Create/Open/Edit test cases</FONT></H2>
+<P><B>Create an XML File from scratch</B></P>
+<UL>
+    <LI>Select the <B>Create a new XML file</B> toolbar button.</LI>
+    <LI>Verify the Create a XML File wizard appears and the Finish button is disabled. <FONT color="#ff0000"><B>DEFECT:</B> 177660 - XML File wizard: disable Finish button on the first page</FONT>.</LI>
+    <LI>Accept the default to <B>Create a new XML file</B></LI>
+    <LI>Go to the Next page
+    <UL>
+        <LI>Select <B>XMLTest2</B> as the folder</LI>
+        <LI>Specify a File name of <B>fromScratch</B></LI>
+        <LI>Select <B>Finish</B></LI>
+    </UL>
+    </LI>
+    <LI>Verify the following:
+    <UL>
+        <LI>fromScratch.xml appears in the Navigator view.</LI>
+        <LI>fromScratch.xml is open to the Design page of the XML Editor and has focus.</LI>
+        <LI>the Design tab appears before the Source tab in the XML Editor.</LI>
+        <LI>the Design and Source page show no content.</LI>
+        <LI>the Outline and Properties views show nothing.</LI>
+    </UL>
+    </LI>
+    <LI>Switch to the Source page. Verify the cursor appears at the beginning of the file.</LI>
+    <LI>Right mouse button 2 and verify a popup menu appears.</LI>
+    <LI>Hit <B>Ctrl+Space</B>. Verify the content assist proposal list appears.</LI>
+    <LI>Select <B>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</B></LI>
+    <LI>Verify &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; is inserted and appears syntax highlighted and an entry appears for it in the Outline view.</LI>
+    <LI>Position the cursor within the XML declaration and verify <B>version</B> and <B>encoding</B> appear in the Properties view. <FONT color="#ff0000">This used to work, but now it's not working. Opened <B>defect</B> 177662 - XML declaration attributes not appearing in Properties view. If we decide to not treat version and encoding as attributes, then this step should be removed.</FONT></LI>
+    <LI>Continue to the next section.</LI>
+</UL>
+<P><B>Identify a local DTD (</B>verifies a DTD is immediately recognized; in the past, you had to close and reopen the Workbench<B>)</B></P>
+<UL>
+    <LI>Type the following after the XML declaration in <B>fromScratch.xml</B>: <B>&lt;!DOCTYPE Invoice SYSTEM &quot;Invoice.dtd&quot;&gt;</B>. The text should be syntax highlighted as you type and you should see an entry get added to the Outline view.</LI>
+    <LI>Hit <B>Enter</B> to create a new line after the DOCTYPE declaration.</LI>
+    <LI>Hit <B>Ctrl+Space</B>.Verify only <B>Invoice</B> and <B>comment</B> appear in the proposal list. (<B>NOTE</B>: <B>Invoice</B> is the root element)</LI>
+    <LI>Hit <B>Enter</B> to accept <B>Invoice</B> as a selection. Verify the Invoice start and end tags are inserted into the Source and the cursor appears between them. An element entry should appear for Invoice in the Outline view. (<B>NOTE</B>: XML is case-sensitive so be sure you see Invoice and not invoice everywhere).</LI>
+    <LI>Hit <B>Ctrl+Space</B>. Verify the following appears in the proposal list (in the order shown): <FONT color="#ff0000">Item is appearing before Header. The default is not to sort the list alphabetically. That means the list should be sorted based on the order in which the child tags are defined in the element definition for Invoice in the DTD. In other words, users should see child tags listed according to their sequencing order in the DTD, which the DTD Editor shows. Violating the sequencing order causes an XML file to become not valid. <B>DEFECT:</B> 177668</FONT>
+    <UL>
+        <LI>Header</LI>
+        <LI>Item</LI>
+        <LI>comment</LI>
+    </UL>
+    </LI>
+    <LI>Hit <B>Enter</B> to accept <B>Header</B> as a selection.</LI>
+    <LI>Verify the Source now looks like the following and the cursor appears before <B>invoiceNumber</B>:<IMG border="0" height="83" src="identifyDTD.jpg" width="485"></LI>
+    <LI>Verify <B>Header</B> appears nested under <B>Invoice</B> in the Outline view.</LI>
+  <LI>Close this file, and respond <B>Yes</B> when prompted to save the changes.</LI>
+  <LI>Reopen the file and verify the changes were saved.</LI>
+  <LI>Close the file. Verify no save changes prompt appears.</LI>
+</UL>
+<P><B>Create an XML File from an imported DTD</B></P>
+<UL>
+    <LI>Select the <B>File-&gt;New-&gt;XML File</B>.</LI>
+    <LI>Verify the Create a XML File wizard appears.</LI>
+    <LI>Select to <B>Create a new XML file from a DTD file</B></LI>
+    <LI>Go to the Next page
+    <UL>
+        <LI>Select <B>XMLTest2</B> as the folder</LI>
+        <LI>Specify a File name of <B>fromLocalDTD</B></LI>
+        <LI>Go to the Next page</LI>
+    </UL>
+    </LI>
+    <LI>Select the <B>Import File</B> button
+    <UL>
+        <LI>Use the Browse button to find <B>testcase.dtd</B></LI>
+        <LI>Select <B>XMLTest2</B> as the folder. <FONT color="#ff0000">Would be nice if this were already filled in. Open a defect.</FONT></LI>
+        <LI>Select <B>Finish</B> to close the Import File wizard</LI>
+    </UL>
+    </LI>
+    <LI>Expand <B>XMLtest2</B> and then select <B>testcase.dtd</B>. <FONT color="#ff0000">Was expecting to see the imported file selected in the Workbench files list, but it wasn't. Open a defect.</FONT></LI>
+    <LI>Go to the Next page.</LI>
+    <LI>Select <B>testcase</B> as the Root Element.</LI>
+    <LI>Accept the default to <B>Create required content only</B>.</LI>
+    <LI>Verify <B>testcase.dtd</B> appears as the System Id.</LI>
+    <LI>Select Finish. Verify <B>fromLocalDTD.xml</B> appears in the XML Editor. Verify the Source page looks like the following: <IMG border="0" height="290" src="importDTD.jpg" width="660"></LI>
+  <LI>Verify the Outline view and the formatting indentation reflect the proper element/tag hierarchy. Here's what the Outline view should look like:<IMG border="0" height="297" src="outline1.jpg" width="655"></LI>
+  <LI>Verify selection synchronization between the Design page, Source page, Outline view, 
+        and Properties view.
+    <UL>
+        <LI>From the Source page, click within the <B>header</B> start tag. 
+            Verify <B>header</B> is selected in the Outline view and in the Design 
+            page and that the following properties and property values appear in the 
+            Properties view:
+        <TABLE border="1">
+            <TBODY>
+                <TR>
+                    <TD width="100"><B>Property</B></TD>
+                    <TD width="76"><B>Value</B></TD>
+                </TR>
+                <TR>
+                    <TD width="100">category</TD>
+                    <TD width="76">webtool</TD>
+                </TR>
+                <TR>
+                    <TD width="100">number</TD>
+                    <TD width="76">idvalue0</TD>
+                </TR>
+                <TR>
+                    <TD width="100">state</TD>
+                    <TD width="76">&nbsp;</TD>
+                </TR>
+                <TR>
+                    <TD width="100">subCategory</TD>
+                    <TD width="76">Accessability</TD>
+                </TR>
+                <TR>
+                    <TD width="100">subSubCategory</TD>
+                    <TD width="76">&nbsp;</TD>
+                </TR>
+            </TBODY>
+        </TABLE>
+        </LI>
+	<LI>From the Outline view, select the <B>testBucket</B> tag.
+            Verify <B>testBucket</B> is selected in the Design page and the current marker
+            in the lefthand margin of the Source page indicates the range of the 
+            <B>testBucket</B> tag. The Properties view should show a property of <B>type</B>
+            with a value of <B>ComponentTest</B>.
+        </LI>
+    </UL>   
+    </LI> 
+    <LI>Verify edit synchronization between the Design page, Source page, and 
+        Properties view (focus here is on adding attributes and attribute values).
+    <UL>
+        <LI>From the Source page, use content assist to insert an attribute and attribute value
+            for the <B>header</B> start tag.
+            <UL>
+            <LI>Position the cursor after the <B>category</B> attribute in the <B>header</B> start tag.</LI>
+            <LI>Type <B>space</B> and then hit prompt for content assist.</LI>
+            <LI>Verify only <B>state</B> and <B>subSubCategory</B> appear in the proposal list (content assist is smart enough not to list any attributes that already exist in the start tag since attributes can only appear once. <FONT color="#0000ff">Cool!</FONT>).</LI>
+            <LI>Select <B>state</B>.</LI>   
+            <LI>Verify <B>state="UnderConstruction"</B> is inserted in the Source page (content assist automatically inserts any default values. <FONT color="#0000ff">Cool!</FONT>). Verify the Design page and Properties view reflect this change.</LI>         
+            </UL>
+        </LI>
+        <LI>From the Properties view, update the <B>state</B> attribute value to "UnderReview" 
+            (a pulldown list of values should be available). Verify the change is reflected
+            in the Source and Design pages.
+        </LI>
+        <LI>From the Design page, add an attribute and attribute value to the <B>header</B> tag.
+            <UL>
+            <LI>Bring up the popup menu for the <B>header</B> tag.</LI>
+            <LI>Select <B>Add Attribute->subSubCategory</B> from the popup menu (it's smart
+                enough to know which attributes haven't been specified yet ... like content 
+                assist. Cool!).</LI>
+            <LI>Type in a value of <B>Keyboard support</B>.</LI>
+            <LI>Verify the change is reflected in the Source page and Properties view</LI>
+            </UL>
+        </LI>
+    </UL>
+    </LI>
+</UL>
+<P><B>Open an XML File that references a remote DTD</B></P>
+<UL>
+    <LI>Open the <B>Wireless.xml</B> file.</LI>
+    <LI>Verify it looks like the following in the Source page:<IMG border="0" height="239" src="wireless.jpg" width="656"></LI>
+    <LI>Verify the Outline view and the formatting indentation reflect the proper 
+        element/tag hierarchy. Here's what the Outline view should look like: <IMG border="0" height="189" src="outline2.jpg" width="656"></LI> 
+    <LI>Verify content assist <FONT color="#ff0000">Defect 176379 (in verify state, but still not working)</FONT>.</LI>
+        <UL>
+           <LI>Create a new line after the <B>wml</B> start tag.</LI>
+           <LI>Prompt for content assist on the new line.</LI>
+           <LI>Verify the following appear as proposals (in the order shown): 
+               <UL>
+                   <LI>head</LI>
+                   <LI>template</LI>
+                   <LI>card</LI>
+               </UL>
+           </LI>
+           <LI>Create a new line after the <B>wml</B> start tag.</LI>
+           <LI>Type a space before the ending delimiter on the card start tag.</LI>
+           <LI>Prompt for content assist</LI>
+           <LI>Verify the following appear as proposals (not necessarily in the
+               order shown). 
+               <UL>
+                   <LI>title</LI>
+                   <LI>newcontext</LI>
+                   <LI>ordered</LI>
+                   <LI>xml:lang</LI>
+                   <LI>onenterbackward</LI>
+                   <LI>ontimer</LI>
+                   <LI>id</LI>
+                   <LI>class</LI>
+               </UL>
+           </LI>
+           <LI>Position the cursor within the <B>method</B> attribute value in the <B>go</B> start tag.</LI>
+           <LI>Prompt for content assist</LI>
+           <LI>Verify <B>post</B> and <B>get</B> appear as proposals.</LI>
+        </UL>
+    <LI>Verify selection synchronization between the Design page, Source page, Outline view, 
+        and Properties view.
+    <UL>
+        <LI>From the Source page, click within the <B>card</B> start tag. 
+            Verify <B>card</B> is selected in the Outline view and in the Design 
+            page and that the content assist proposals listed above for the
+            <B>card</B> tag appear as properties in the Properties view. No values should appear for these properties.</LI>
+	<LI>From the Outline view, select the <B>postfield</B> tag.
+            Verify <B>postfield</B> is selected in the Design page and the current marker
+            in the lefthand margin of the Source page indicates the range of the 
+            <B>postfield</B> tag. The Properties view should show the following properties,
+            none of which should have a value:
+               <UL>
+                   <LI>name</LI>
+                   <LI>value</LI>
+                   <LI>id</LI>
+                   <LI>class</LI>
+               </UL>
+           </LI>
+    </UL>   
+    </LI>
+    <LI>Verify edit synchronization between the Design page, Source page, Outline view, and 
+        Properties view (focus here is on adding elements/tags).
+    <UL>
+        <LI>From the Source page, copy and paste the <B>card</B> tag.
+            <UL>
+            <LI>Position the cursor in the <B>card</B> start tag.</LI>
+            <LI>Notice the range of the <B>card</B> tag in the lefthand margin area.</LI>
+            <LI>Copy this range of lines using the <B>Edit->Copy</B> pulldown menu selection.</LI>
+            <LI>Paste after the <B>card</B> end tag using Ctrl+V.</LI>
+            <LI>Verify the appropriate lines were pasted n the Source page.
+                Verify the Design page, Outline view, and the Properties 
+                view reflect this change.</LI>         
+            </UL>
+        </LI>
+        <LI>From the Design page, add another <B>card</B> tag.
+            <UL>
+            <LI>Bring up the popup menu for the <B>wml</B> tag.</LI>
+            <LI>Select <B>Add Child->card</B> from the popup menu.</LI>
+            <LI>Verify the Source page, Outline view, and the Properties
+                view reflect this change. NOTE: it should have generated out
+                the same thing as the original card tag, with the exception
+                that a <B>method</B> attribute should not exist in the <B>go</B> start tag. </LI>
+            </UL>
+        </LI>
+    </UL>
+    </LI> 
+</UL>
+<P><B>Create and Validate an XML File from a schema</B><BR>
+
+<P>(these steps are taken from the 'Design' smoke test, except the Source Page is the focus)</P>
+<ul>
+<li>
+Right mouse button 2 on the PurchaseOrder.xsd and select <b>Create XML
+File</b>.</li>
+
+<li>
+Accept the default file names.</li>
+
+<li>
+In the Select Root Element page, choose <b>purchaseOrder</b> as root element.</li>
+
+<li>
+Choose <b>Create required and optional content</b> to create a minimal
+document.</li>
+
+<li>
+Enter <b>po</b> as the namespace prefix.</li>
+
+<li>On Finish, a PurchaseOrder.xml is created and the XML Editor is opened. (Select Source Page if not already there.)</li>
+
+<li>
+Run Validate. The PurchaseOrder.xml should be invalid.</li>
+
+<li>
+Double click on the error message. It should be positioned to the line
+in error, i.e. the <b>partNum</b> attribute. It is invalid because the
+value is not set to match the XML schema pattern facet "d3-[A-Z]{2}" (3
+digits followed by 2 characters).</li>
+
+<li>In the Source View, locate the <b>partNum</b> attribute under element item.
+Enter the value 333-AB.</li>
+
+<li>
+Run Validate. The PurchaseOrder.xml document should now be valid.</li>
+</UL>
+<UL>
+  <LI>
+  <HR></LI>
+  <li>Place the cursor after the &lt;items&gt; tag and besure "item" is 
+  listed in the content assist list. </li>
+<li>Rename the purchaseOrder.xsd to, say, purchaseOrderHOLD.xsd</li>
+<li>Verify that content assist still gives you "item" as above.</li>
+<li>Now select the "Reload Dependancies" button.</li>
+<li>Verify that now content assist no longer lists any items other 
+that the macro "comment".</li>
+<li>Repeat making purchaseOrder.xsd workable again.</li>
+</ul>
+<P></P><P></P><P></P><P></P><P></P></P>
+<P><B>Open an XML File for a shipped DTD catalog entry</B><BR>
+<BR>
+[put in optional section .. this isn't a customer scenerio]<BR>
+To verify that shipped DTDs are working:<BR>
+<UL>
+<LI>
+Use a web project with a standard web.xml file in it. Be sure 
+there is no web-app_2_2.dtd file in the directory. In the web.xml file 
+itself, mangle the web-app_2_2.dtd filename in the system id a little, such as 
+change it to xeb-app_2_2.dtd to be sure it can't be found via the
+normal http method (This isn't really necessary for the funtion to work,
+its just to be sure only the catalog function is in effect).
+</LI>
+<LI>
+Go to the preferences page, and open the XML Catalog. Verify there 
+is an entry for -//Sun Microsystems, Inc.//DTD Web Application 2.2//EN.
+</LI>
+<LI>
+Once all the prep work is done (files deleted, text modified), you should 
+exit and restart Eclipse to be sure you have a fresh start.
+</LI>
+<LI>
+Open the web.xml file and be sure that content assist works for that file.
+For example, right after the end of the &lt;/display-name&gt; tag, ctrl-space 
+should provide a long list of elements, starting with servlet, servlet-mapping, etc.
+This indicates the shipped DTD function is working and configured 
+correctly (at least for the web.xml file).
+</LI>
+</UL>
+</P>
+<P><B>Create an XML File from a new DTD catalog entry</B><BR><IMG border="0" height="63" src="u011ani.gif" width="63"></P>
+
+<b>The following comes directly from the 'Design' Smoke Test: XML Catalog for XML Schema</b>
+<ul>
+<li>
+Run Validate on PurchaseOrder.xml to make sure it is valid</li>
+
+<li>
+Create a new project, XMLTest2</li>
+
+<li>
+Move the PurchaseOrder.xsd into XMLTest2.</li>
+
+<li>
+Run Validate on PurchaseOrder.xml. You will notice that it is no longer
+valid. The error message should give you a hint that the file PurchaseOrder.xsd
+can no longer be found.</li>
+
+<li>
+Open the Window->Preferences and select the XML Catalog.</li>
+
+<li>
+Enter the pair <b>Id = PurchaseOrder.xsd Uri = f:\eclipse\XMLTest2\PurchaseOrder.xsd</b></li>
+
+<br>Or alternatively, you can use a relative path to the install directory
+of the workbench as follows:
+<br><b>Id = PurchaseOrder.xsd Uri = .\XMLTest2\PurchaseOrder.xsd</b>
+<li>
+Click on the Reload button to reload the catalog settings.</li>
+
+<li>
+Run Validate. The PurchaseOrder.xml document should now be valid.</li>
+</ul>
+<!-- ===========================================================
+                      Save/Validate test cases
+     ===========================================================
+-->
+<H2><FONT color="#0000ff">Save/Validate test cases</FONT></H2>
+<P><B>Saving an XML File</B><BR>
+(NOTE: the <B>Identify a local DTD</B> test case tests the save prompt on a file close.)</P>
+<UL>
+  <LI>If any files are open, select <B>File-&gt;Close All</B> (or <B>Ctrl+Shift+F4</B>) to close them.</LI>
+  <LI>Open any xml file in the <B>XMLTest2</B> project.</LI>
+  <LI>Verify the following (no-changes-made condition):
+  <UL>
+    <LI><B>File-&gt;Save</B> is disabled.</LI>
+    <LI><B>File-&gt;Save All</B> is disabled.</LI>
+    <LI><B>File-&gt;Save As</B> is enabled.</LI>
+    <LI>the <B>Save</B> toolbar button (a diskette) is disabled.</LI>
+    <LI>the <B>Save As</B> toolbar button is enabled.</LI>
+    <LI><B>Save</B> is disabled on the Source popup menu. <FONT color="#ff0000">Would be nice if the Design popup menu also had a Save selection. Open a suggestion defect.</FONT></LI>
+    <LI>no <B>*</B> appears in the file tab.</LI>
+  </UL></LI>
+  <LI>Make a change in the Source page.</LI>
+  <LI>Verify the following (changes-made condition):
+  <UL>
+    <LI><B>File-&gt;Save</B> is enabled.</LI>
+    <LI><B>File-&gt;Save All</B> is enabled</LI>
+    <LI>the <B>Save</B> toolbar button (a diskette) is enabled.</LI>
+    <LI><B>Save</B> is enabled on the Source popup menu.</LI>
+    <LI>a <B>*</B> appears in the file tab.</LI>
+  </UL></LI>
+  <LI>Hit <B>Ctrl+S</B>. </LI>
+  <LI>Verify the no-changes-made conditions apply.</LI>
+  <LI>Make a change in the Design page.</LI>
+  <LI>Verify the changes-made conditions apply.</LI>
+  <LI>File-&gt;Save All<B></B>.</LI>
+  <LI>Verify the no-changes-made conditions apply.</LI>
+  <LI>Make a change in the Properties view.</LI>
+  <LI>Verify the changes-made conditions apply.</LI>
+  <LI>Select <B>Save</B> from the Source popup menu.</LI>
+  <LI>Verify the no-changes-made conditions apply.</LI>
+  <LI>Close and then reopen the file.</LI>
+  <LI>Verify the changes that were made in the previous steps appear in the Design and Source pages.</LI>
+</UL>
+<P><B>Saving an XML File across multiple perspectives (optional)</B></P>
+<UL>
+  <LI>Open any xml file in the <B>XMLTest2</B> project.</LI>
+  <LI>Make a change to the file.</LI>
+  <LI>Open another XML Perspective by:
+  <UL>
+    <LI><B>selecting Perspective-&gt;Open-&gt;Other...</B></LI>
+    <LI>while holding down the <B>Shift</B> key, select <B>XML</B>.</LI>
+  </UL></LI>
+  <LI>Verify another XML Perspective button appears in the lefthand side of the Workbench to represent this second perspective.</LI>
+  <LI>Open the same xml file as in the first step above.</LI>
+  <LI>Verify the changes-made conditions apply in both XML Perspectives and verify that the changes made to the file in the first perspective appear in the same file in the second perspective. <FONT color="#ff0000">The * never appears in the file tab of the second perspective even when make changes to the file in the second perspective. Talk to David.</FONT></LI>
+  <LI>Make some changes to the file in the second perspective.</LI>
+  <LI>Verify these changes appear in the same file in the first perspective.</LI>
+  <LI>Close the file in the second perspective and respond <B>Yes</B> to the save changes prompt.</LI>
+  <LI>Verify the no-changes-made condition applies in the first perspective.</LI>
+</UL>
+<P><B>Validating a non well formed XML File (no DTD/Schema)</B><BR>
+(NOTE: it's important that the following be typed in. This test case tries to cover some of the more common errors that render an XML file as not being well-formed. It is not intended to verify that all possible errors are being detected and gracefully handled. )</P>
+<UL>
+  <LI>Select the <B>Create a new XML file</B> toolbar button.</LI><LI>Accept the default to <B>Create a new XML file</B></LI>
+  <LI>Go to the Next page
+    <UL>
+        <LI>Select <B>XMLTest2</B> as the folder</LI>
+        <LI>Specify a File name of <B>NonWellFormed</B></LI>
+        <LI>Select <B>Finish</B></LI>
+  </UL></LI>
+  <LI>Prompt for content assist.</LI>
+  <LI>Select <B>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;.</B></LI>
+  <LI>Create a new line after the XML declaration.</LI>
+  <LI>Prompt for content assist.</LI>
+  <LI>Select comment.</LI>
+  <LI>Embed more than 2 consecutive dashes in the comment. 
+        <FONT color="#0000ff">(NOTE: more than 2 consecutive dashes can not be embedded within a comment)</FONT></LI>
+  <LI>Type in the remaining lines as shown below: 
+        <FONT color="#ff0000">(I can't show the lines until defect 177755 is fixed ... until then, here's the type of things that cause 
+        a document to not be well-formed):</FONT>
+  <UL>
+    <LI>create a start and end tag that don't match in their case sensitivity 
+        (e.g., &lt;tag&gt; and &lt;/Tag&gt;). </LI>
+    <LI>create a start and end tag where the start tag contains an attribute value that is not 
+        enclosed in quotes.
+        <FONT color="#0000ff">(NOTE: this is permitted in HTML, but not XML)</FONT></LI>
+    <LI>create tags that are not properly nested.
+        <FONT color="#0000ff">(NOTE: a child tag must be completed before its parent tag)</FONT></LI>
+    <LI>create a start tag without a corresonding end tag.
+        <FONT color="#0000ff">(NOTE: all start tags must have a corresponding end tag unless the 
+        tag is an empty tag, in which case the shorthand version can be used (&lt;shortTag/&gt;)).</FONT></LI>
+    <LI>do not provide an attribute value (=&quot;value&quot;).
+        <FONT color="#0000ff">(NOTE: this is permitted in HTML for those attributes that have 
+        only one value, but it's not valid in XML)</FONT></LI>
+     <LI>define an attribute more than once in a start tag.</LI>
+  </UL></LI>
+  <LI>Save the file.</LI>
+  <LI>Verify errors are listed in the Tasks view for the above violations and that error markers appear on the appropriate 
+         lines in the Source page. <FONT color="#ff0000">I'm not sure how the Design page handles any of these violations 
+         and what will appear in the Outline and Properties view. Talk to Craig and David.</FONT></LI>
+  <LI>Reopen the file and verify everything was saved.</LI>
+</UL>
+
+
+<P><B>Validate an XML File based on a DTD</B></P>
+<UL>
+<LI>Open <B>fromScratch.xml</B>.</LI>
+<LI>Delete a character from one of the start tags (mistyping a tag is not uncommon).</LI>
+<LI>Prompt for content assist within the bad tag. Verify a message appears in the status area
+of the Workbench indicating that the bad tag is an unknown tag.</LI>
+<LI>Select the <B>Validate</B> toolbar button.</LI>
+<LI>Verify an error appears in the Tasks view and an error marker appears in the Source page
+to flag the invalid tag.</LI>
+<LI>Select <B>Edit->Undo</B> from the Source page.</LI>
+<LI>Verify the bad tag error no longer appears in the Tasks view.</LI>
+<LI>Remove the <B>Header</B> end tag from the Source page.</LI>
+<LI>Save the file.</LI>
+<LI>Verify an error appears in the Tasks view indicating that the <B>Header</B> end tag is missing</LI>
+<LI>Close the file, responding <B>Yes</B> to the save changes prompt.</LI>
+<LI>Double-click on the error in the Tasks view, and verify <B>fromScratch.xml</B> opens to the
+appropriate line in the Source page of the XML Editor.</LI>
+<LI>Here's some other violations that can be attempted:
+<UL>
+<LI>Specify a bad attribute.</LI>
+<LI>Specify a bad attribute value.</LI>
+<LI>Specify child tags out of sequencing order</LI>
+<LI>Violate the occurrence indicator for a tag (e.g., if the DTD shows ?, then only
+0 or 1 occurrences of the tag is permitted).
+</UL></LI>
+<LI>Save the file.</LI>
+<LI>Verify errors are listed in the Tasks view for the above violations and that error markers appear on the appropriate 
+lines in the Source page. <FONT color="#ff0000">I'm not sure how the Design page handles any of these violations 
+and what will appear in the Outline and Properties view. Talk to Craig and David.</FONT></LI>
+<LI>Reopen the file and verify everything was saved.</LI>
+</UL>
+
+<!--  removed since done elsewhere as part of other scenerios
+<P><B>Validate an XML File based on a Schema</B><BR>
+-->
+<IMG border="0" height="63" src="u011ani.gif" width="63"></P>
+
+<!-- ===========================================================
+                        Source Specific test cases
+     ===========================================================
+-->
+<H2><B><FONT color="#0000ff">Source Specific test cases (optional)</FONT></B></H2>
+<P><B>Using the Auto Completion Content Assist Preference</B><BR>
+<UL>
+<LI>Open a any XML file that has enough tags to provide syntax hightlighting.</LI>
+<LI>While that file is left open, go to the Preferences page, select
+XML Editor, then Source Styles. </LI>
+<LI>On that page, use the mouse to "select" a tag name. The tag name is not literally
+selected, but when you click on an element in the example text, the list
+above it will display the type of element it is, and what its current colors are.</LI>
+<LI>For "tag name", select the bold check box. Then press Apply, and you should
+see the change take effect in your active editor.</LI>
+<LI>Select "Defaults" and make sure the tag names are set back to not bold.</LI>
+</UL>
+<IMG border="0" height="63" src="u011ani.gif" width="63"></P>
+<P><B>Double-Clicking Within the Source</B> <BR>
+(NOTE: if you continue to double-click at a given cursor position, the selection area will continue to expand. When the maximum region area has been reached, the next double-click will cause the original selection. So, the selections will wrap/cycle. <FONT color="#0000ff">Cool!</FONT>).</P>
+<UL>
+  <LI>Open <B>JobDesc.xml</B>.</LI>
+  <LI>Double-clicking within tag content:
+  <UL>
+    <LI>Double-click within <B>Middleware</B> on line 7.</LI>
+    <LI>Verify <B>Middleware</B> is selected in the Source and Design pages and <B>BusType</B> is selected in the Outline view. <FONT color="#ff0000">Not sure what the Properties view is supposed to show. It goes blank. See defect 177753. Also, <B>Middleware</B> wasn't selected in the Design page as had expected. The Design page only seems to stay in sync at the element/tag level like the Outline view. Talk to Craig about this.</FONT></LI>
+    <LI>Double-click again at the same cursor position.</LI>
+    <LI>Verify <B>Application and Middleware Software</B> is selected in the Source and Design pages and <B>BusType</B> remains to be the only thing selected in the Outline view.</LI>
+    <LI>Double-clicking again will cause cycling back to the original selection.</LI>
+  </UL></LI>
+  <LI>Double-clicking within a tag name:
+  <UL>
+    <LI>Double-click within <B>HowToApply</B> on line 61.</LI>
+    <LI>Verify <B>HowToApply</B> is selected in the Source page, Design page, and Outline view. 
+        <B>class</B>, <B>distribute</B>, <B>id</B>, and <B>name</B> should appear in the 
+        Properties view. Only <B>distribute</B> should show a value.</LI>
+    <LI>Double-click again at the same cursor position.</LI>
+    <LI>Verify the whole <B>HowToApply</B> start tag (including its delimiters) is selected 
+        in the Source page. <B>HowToApply</B> should remain selected in
+        the Design page and Outline view. <B><FONT color="#ff0000">HowToApply</FONT></B><FONT color="#ff0000"> and all descendents become selected in the Outline view (defect 177752). Also, the Properties view shows no properties (defect 177753).</FONT></LI>
+    <LI>Double-clicking again will cause cycling back to the original selection.</LI>
+  </UL></LI>
+  <LI>Double-clicking within an attribute name:
+  <UL>
+    <LI>Type <B>Ctrl+End</B> to position the cursor at the end of the file.</LI>
+    <LI>Double-click within <B>distribute</B> on line 61. Verify <B>distribute</B> is selected 
+        in the Source page and <B>HowToApply</B> is selected in the Design page and Outline 
+        view. <B>class</B>, <B>distribute</B>, <B>id</B>, and <B>name</B> should appear in 
+        the Properties view. Only <B>distribute</B> should show a value.</LI>
+    <LI>Double-click at the same cursor position. Verify <B>distribute="internal"</B> is
+        selected in the Source. Nothing should change in the Design page or views.</LI>                 
+    <LI>Double-click at the same cursor position. Verify the whole <B>HowToApply</B> start tag is selected in the Source page (including its delimiters). Nothing should change in the Design page or views.<B><FONT color="#ff0000">HowToApply</FONT></B><FONT color="#ff0000"> and all descendents become selected in the Outline view (defect 177752). Also, the Properties view shows no properties (defect 177753).</FONT></LI>
+    <LI>Double-clicking again will cause cycling back to the original selection.</LI>
+  </UL></LI>
+ <LI>Double-clicking within an attribute value:
+  <UL>
+    <LI>Type <B>Ctrl+Home</B> to position the cursor at the beginning of the file.</LI>
+    <LI>Scroll down such that line 61 is visible.</LI>
+    <LI>Double-click within <B>internal</B> on line 61. Verify <B>internal</B> is selected 
+        in the Source page and <B>HowToApply</B> is selected in the Design page and Outline 
+        view. <B>class</B>, <B>distribute</B>, <B>id</B>, and <B>name</B> should appear in 
+        the Properties view. Only <B>distribute</B> should show a value.</LI>
+    <LI>Double-click at the same cursor position. Verify <B>"internal"</B> is
+        selected in the Source. Nothing should change in the Design page or views.</LI>
+    <LI>Double-click at the same cursor position. Verify <B>distribute="internal"</B> is
+        selected in the Source. Nothing should change in the Design page or views.</LI>                 
+    <LI>Double-click at the same cursor position. Verify the whole <B>HowToApply</B> start tag is selected in the Source page (including its delimiters). Nothing should change in the Design page or views. <B><FONT color="#ff0000">HowToApply</FONT></B><FONT color="#ff0000"> and all descendents become selected in the Outline view (defect 177752). Also, the Properties view shows no properties (defect 177753).</FONT></LI>
+    <LI>Double-clicking again will cause cycling back to the original selection.</LI>
+  </UL></LI>
+</UL>
+
+<P><B>Formatting a File Created by Different Editors</B><BR>
+<ul>
+<li>
+Import the <b>JobPosting.dtd</b> and <b>JobDesc.xml</b></li>
+
+<li>
+Open the JobDesc.xml. Check the source for indentation to see if it preserves
+the white space from the original document.</li>
+
+<li>
+The orignal document uses spaces and tabs, so the formatting will appear a little wrong.
+By using the right/left arrows, verify that some space is spaces and some space
+is tab characters.</li>
+<LI>Use 'format document' to be sure it formats. </LI>
+<LI>The default is to format with spaces ... verify only spaces remain in file, not tab charactes. 
+(Just a little movement with the arrow keys should suffice.</LI>
+<LI>Go to the preference page to change the format settings for the XML Editor
+to use the tab character instead of 4 spaces. While there, verify that the dialog
+will not allow other values to be intered except "whitespace" ...'\t's and blanks.
+</LI>
+<LI>Format the document again and be sure this time tab characters were used.</LI>
+</ul>
+<IMG border="0" height="63" src="u011ani.gif" width="63"></P>
+<!-- ===========================================================
+                           Other test cases
+     ===========================================================
+-->
+<H2><B><FONT color="#0000ff">Other test cases</FONT></B></H2>
+<P><B>Associate the XML Editor to a new file type</B></P>
+<UL>
+  <LI>Window-&gt;Preferences<B></B>.</LI>
+  <LI>Expand <B>Workbench</B>.</LI>
+  <LI>Select <B>File Editors</B>.</LI>
+  <LI>Select the <B>Add</B> button to add a new file type.</LI>
+  <LI>Specify a file type of <B>*.set</B> and then close the Add dialog.</LI>
+  <LI>Verify <B>*.set</B> is selected in the list of file types.</LI>
+  <LI>Select the <B>Add</B> button to associate the XML Editor to the new file type.</LI>
+  <LI>Select <B>XML Editor</B> from the list of editors. Verify it appears with its own special icon. Close the dialog. <FONT color="#ff0000">NOTE: waiting to hear back from OTI on how can prevent 2 XML Editor entries from appearing in the list.</FONT></LI>
+  <LI>Verify <B>XML Editor</B> appears as the default editor now for the <B>*.set</B> file type.</LI>
+  <LI>Open <B>gotchaTCBeans.set</B> from the Navigator view. Verify it opens to the XML Editor.</LI>
+</UL>
+<P><FONT color="#0000ff">THE END!</FONT></P>
+</body>
+</html>
diff --git a/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/LargeNonDefault.html b/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/LargeNonDefault.html
new file mode 100644
index 0000000..3bcdd14
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/LargeNonDefault.html
@@ -0,0 +1,665 @@
+<!DOCTYPE HTML PUBLIC "-//W3C/DTD/ HTML 4.01 Transitional//EN">
+
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<meta name="GENERATOR" content="Mozilla/4.7 [en] (WinNT; U) [Netscape]">
+<META content="text/css" http-equiv="Content-Style-Type">
+<title>smoke</title>
+</head>
+<body>
+<h2> Smoke Test - XML Editor</h2>
+Last updated: June 25, 2001
+<P>This Smoke Test primarily focuses on the RTP portion of the XML 
+Editior, which is the Source page of the XML Editor. It also performs 
+some integration testing. For example, it tests synchronization between 
+the Design and Source pages of the XML Editor, as well as with the 
+Outline and Properties views. It also verifies that files created 
+through the XML File wizard and references to the XML Catalog are 
+supported as expected.</P>
+<P><FONT color="#ff0000"><B>NOTE</B>: XML files are case-sensitive so be sure that things appear 
+exactly as noted.</FONT></P>
+
+<!-- ===========================================================
+                           Setup
+     ===========================================================
+-->
+<H2><FONT color="#0000ff">Setup</FONT></H2>
+<P><B>Starting Clean</B></P>
+<ul>
+    <li> Delete any existing workbench</li>
+    <li> Start Eclipse</li>
+</ul>
+<P><B>Open an XML Perspective<BR>
+</B></P>
+<UL>
+    <LI>Select the <B>Open Perspective</B> toolbar button in the upper left</LI>
+    <LI>Select <B>Other...</B></LI>
+    <LI>Select <B>XML</B></LI>
+    <LI>Verify the following views appear in the XML perspective: <FONT color="#ff0000">The location of the Outline and Navigator views are reversed from the Resource and Web perspectives. Do we want to try to be consistent across the perspectives? Also, I opened <B>defect</B> 177664 to enable easy access to the Properties view from within the XML perspective. If this view isn't included in the Perspective because its use is limited, then recommend we at least provide a Show or Hide Properties View toolbar button (similar to the buttons that Page Designer provides).</FONT></LI>
+</UL>
+<P><B>Project Creation and File Imports<BR>
+</B></P>
+<UL>
+    <LI>Create a Project, <B>XMLTest2</B> </LI>
+    <LI>Import the following files into this project:
+    <UL>
+        <LI><B>PurchaseOrder.xsd</B></LI>
+        <LI><B>Invoice.dtd</B></LI>
+    <LI><B>JobDesc.xml</B></LI>
+    <LI><B>Wireless.xml</B></LI>
+    <LI><B>gotchaTCBeans.set</B></LI>
+    <LI><B>ATS.dtd</B></LI>
+    <LI><FONT color="#ff0000">any others?</FONT></LI>
+    </UL>
+    </LI>
+</UL>
+
+<!-- ===========================================================
+                    Create/Open/Edit test cases
+     ===========================================================
+-->
+<H2><FONT color="#0000ff">Create/Open/Edit test cases</FONT></H2>
+<P><B>Create an XML File from scratch</B></P>
+<UL>
+    <LI>Select the <B>Create a new XML file</B> toolbar button.</LI>
+    <LI>Verify the Create a XML File wizard appears and the Finish button is disabled. <FONT color="#ff0000"><B>DEFECT:</B> 177660 - XML File wizard: disable Finish button on the first page</FONT>.</LI>
+    <LI>Accept the default to <B>Create a new XML file</B></LI>
+    <LI>Go to the Next page
+    <UL>
+        <LI>Select <B>XMLTest2</B> as the folder</LI>
+        <LI>Specify a File name of <B>fromScratch</B></LI>
+        <LI>Select <B>Finish</B></LI>
+    </UL>
+    </LI>
+    <LI>Verify the following:
+    <UL>
+        <LI>fromScratch.xml appears in the Navigator view.</LI>
+        <LI>fromScratch.xml is open to the Design page of the XML Editor and has focus.</LI>
+        <LI>the Design tab appears before the Source tab in the XML Editor.</LI>
+        <LI>the Design and Source page show no content.</LI>
+        <LI>the Outline and Properties views show nothing.</LI>
+    </UL>
+    </LI>
+    <LI>Switch to the Source page. Verify the cursor appears at the beginning of the file.</LI>
+    <LI>Right mouse button 2 and verify a popup menu appears.</LI>
+    <LI>Hit <B>Ctrl+Space</B>. Verify the content assist proposal list appears.</LI>
+    <LI>Select <B>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</B></LI>
+    <LI>Verify &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; is inserted and appears syntax highlighted and an entry appears for it in the Outline view.</LI>
+    <LI>Position the cursor within the XML declaration and verify <B>version</B> and <B>encoding</B> appear in the Properties view. <FONT color="#ff0000">This used to work, but now it's not working. Opened <B>defect</B> 177662 - XML declaration attributes not appearing in Properties view. If we decide to not treat version and encoding as attributes, then this step should be removed.</FONT></LI>
+    <LI>Continue to the next section.</LI>
+</UL>
+<P><B>Identify a local DTD (</B>verifies a DTD is immediately recognized; in the past, you had to close and reopen the Workbench<B>)</B></P>
+<UL>
+    <LI>Type the following after the XML declaration in <B>fromScratch.xml</B>: <B>&lt;!DOCTYPE Invoice SYSTEM &quot;Invoice.dtd&quot;&gt;</B>. The text should be syntax highlighted as you type and you should see an entry get added to the Outline view.</LI>
+    <LI>Hit <B>Enter</B> to create a new line after the DOCTYPE declaration.</LI>
+    <LI>Hit <B>Ctrl+Space</B>.Verify only <B>Invoice</B> and <B>comment</B> appear in the proposal list. (<B>NOTE</B>: <B>Invoice</B> is the root element)</LI>
+    <LI>Hit <B>Enter</B> to accept <B>Invoice</B> as a selection. Verify the Invoice start and end tags are inserted into the Source and the cursor appears between them. An element entry should appear for Invoice in the Outline view. (<B>NOTE</B>: XML is case-sensitive so be sure you see Invoice and not invoice everywhere).</LI>
+    <LI>Hit <B>Ctrl+Space</B>. Verify the following appears in the proposal list (in the order shown): <FONT color="#ff0000">Item is appearing before Header. The default is not to sort the list alphabetically. That means the list should be sorted based on the order in which the child tags are defined in the element definition for Invoice in the DTD. In other words, users should see child tags listed according to their sequencing order in the DTD, which the DTD Editor shows. Violating the sequencing order causes an XML file to become not valid. <B>DEFECT:</B> 177668</FONT>
+    <UL>
+        <LI>Header</LI>
+        <LI>Item</LI>
+        <LI>comment</LI>
+    </UL>
+    </LI>
+    <LI>Hit <B>Enter</B> to accept <B>Header</B> as a selection.</LI>
+    <LI>Verify the Source now looks like the following and the cursor appears before <B>invoiceNumber</B>:<IMG border="0" height="83" src="identifyDTD.jpg" width="485"></LI>
+    <LI>Verify <B>Header</B> appears nested under <B>Invoice</B> in the Outline view.</LI>
+  <LI>Close this file, and respond <B>Yes</B> when prompted to save the changes.</LI>
+  <LI>Reopen the file and verify the changes were saved.</LI>
+  <LI>Close the file. Verify no save changes prompt appears.</LI>
+</UL>
+<P><B>Create an XML File from an imported DTD</B></P>
+<UL>
+    <LI>Select the <B>File-&gt;New-&gt;XML File</B>.</LI>
+    <LI>Verify the Create a XML File wizard appears.</LI>
+    <LI>Select to <B>Create a new XML file from a DTD file</B></LI>
+    <LI>Go to the Next page
+    <UL>
+        <LI>Select <B>XMLTest2</B> as the folder</LI>
+        <LI>Specify a File name of <B>fromLocalDTD</B></LI>
+        <LI>Go to the Next page</LI>
+    </UL>
+    </LI>
+    <LI>Select the <B>Import File</B> button
+    <UL>
+        <LI>Use the Browse button to find <B>testcase.dtd</B></LI>
+        <LI>Select <B>XMLTest2</B> as the folder. <FONT color="#ff0000">Would be nice if this were already filled in. Open a defect.</FONT></LI>
+        <LI>Select <B>Finish</B> to close the Import File wizard</LI>
+    </UL>
+    </LI>
+    <LI>Expand <B>XMLtest2</B> and then select <B>testcase.dtd</B>. <FONT color="#ff0000">Was expecting to see the imported file selected in the Workbench files list, but it wasn't. Open a defect.</FONT></LI>
+    <LI>Go to the Next page.</LI>
+    <LI>Select <B>testcase</B> as the Root Element.</LI>
+    <LI>Accept the default to <B>Create required content only</B>.</LI>
+    <LI>Verify <B>testcase.dtd</B> appears as the System Id.</LI>
+    <LI>Select Finish. Verify <B>fromLocalDTD.xml</B> appears in the XML Editor. Verify the Source page looks like the following: <IMG border="0" height="290" src="importDTD.jpg" width="660"></LI>
+  <LI>Verify the Outline view and the formatting indentation reflect the proper element/tag hierarchy. Here's what the Outline view should look like:<IMG border="0" height="297" src="outline1.jpg" width="655"></LI>
+  <LI>Verify selection synchronization between the Design page, Source page, Outline view, 
+        and Properties view.
+    <UL>
+        <LI>From the Source page, click within the <B>header</B> start tag. 
+            Verify <B>header</B> is selected in the Outline view and in the Design 
+            page and that the following properties and property values appear in the 
+            Properties view:
+        <TABLE border="1">
+            <TBODY>
+                <TR>
+                    <TD width="100"><B>Property</B></TD>
+                    <TD width="76"><B>Value</B></TD>
+                </TR>
+                <TR>
+                    <TD width="100">category</TD>
+                    <TD width="76">webtool</TD>
+                </TR>
+                <TR>
+                    <TD width="100">number</TD>
+                    <TD width="76">idvalue0</TD>
+                </TR>
+                <TR>
+                    <TD width="100">state</TD>
+                    <TD width="76">&nbsp;</TD>
+                </TR>
+                <TR>
+                    <TD width="100">subCategory</TD>
+                    <TD width="76">Accessability</TD>
+                </TR>
+                <TR>
+                    <TD width="100">subSubCategory</TD>
+                    <TD width="76">&nbsp;</TD>
+                </TR>
+            </TBODY>
+        </TABLE>
+        </LI>
+	<LI>From the Outline view, select the <B>testBucket</B> tag.
+            Verify <B>testBucket</B> is selected in the Design page and the current marker
+            in the lefthand margin of the Source page indicates the range of the 
+            <B>testBucket</B> tag. The Properties view should show a property of <B>type</B>
+            with a value of <B>ComponentTest</B>.
+        </LI>
+    </UL>   
+    </LI> 
+    <LI>Verify edit synchronization between the Design page, Source page, and 
+        Properties view (focus here is on adding attributes and attribute values).
+    <UL>
+        <LI>From the Source page, use content assist to insert an attribute and attribute value
+            for the <B>header</B> start tag.
+            <UL>
+            <LI>Position the cursor after the <B>category</B> attribute in the <B>header</B> start tag.</LI>
+            <LI>Type <B>space</B> and then hit prompt for content assist.</LI>
+            <LI>Verify only <B>state</B> and <B>subSubCategory</B> appear in the proposal list (content assist is smart enough not to list any attributes that already exist in the start tag since attributes can only appear once. <FONT color="#0000ff">Cool!</FONT>).</LI>
+            <LI>Select <B>state</B>.</LI>   
+            <LI>Verify <B>state="UnderConstruction"</B> is inserted in the Source page (content assist automatically inserts any default values. <FONT color="#0000ff">Cool!</FONT>). Verify the Design page and Properties view reflect this change.</LI>         
+            </UL>
+        </LI>
+        <LI>From the Properties view, update the <B>state</B> attribute value to "UnderReview" 
+            (a pulldown list of values should be available). Verify the change is reflected
+            in the Source and Design pages.
+        </LI>
+        <LI>From the Design page, add an attribute and attribute value to the <B>header</B> tag.
+            <UL>
+            <LI>Bring up the popup menu for the <B>header</B> tag.</LI>
+            <LI>Select <B>Add Attribute->subSubCategory</B> from the popup menu (it's smart
+                enough to know which attributes haven't been specified yet ... like content 
+                assist. Cool!).</LI>
+            <LI>Type in a value of <B>Keyboard support</B>.</LI>
+            <LI>Verify the change is reflected in the Source page and Properties view</LI>
+            </UL>
+        </LI>
+    </UL>
+    </LI>
+</UL>
+<P><B>Open an XML File that references a remote DTD</B></P>
+<UL>
+    <LI>Open the <B>Wireless.xml</B> file.</LI>
+    <LI>Verify it looks like the following in the Source page:<IMG border="0" height="239" src="wireless.jpg" width="656"></LI>
+    <LI>Verify the Outline view and the formatting indentation reflect the proper 
+        element/tag hierarchy. Here's what the Outline view should look like: <IMG border="0" height="189" src="outline2.jpg" width="656"></LI> 
+    <LI>Verify content assist <FONT color="#ff0000">Defect 176379 (in verify state, but still not working)</FONT>.</LI>
+        <UL>
+           <LI>Create a new line after the <B>wml</B> start tag.</LI>
+           <LI>Prompt for content assist on the new line.</LI>
+           <LI>Verify the following appear as proposals (in the order shown): 
+               <UL>
+                   <LI>head</LI>
+                   <LI>template</LI>
+                   <LI>card</LI>
+               </UL>
+           </LI>
+           <LI>Create a new line after the <B>wml</B> start tag.</LI>
+           <LI>Type a space before the ending delimiter on the card start tag.</LI>
+           <LI>Prompt for content assist</LI>
+           <LI>Verify the following appear as proposals (not necessarily in the
+               order shown). 
+               <UL>
+                   <LI>title</LI>
+                   <LI>newcontext</LI>
+                   <LI>ordered</LI>
+                   <LI>xml:lang</LI>
+                   <LI>onenterbackward</LI>
+                   <LI>ontimer</LI>
+                   <LI>id</LI>
+                   <LI>class</LI>
+               </UL>
+           </LI>
+           <LI>Position the cursor within the <B>method</B> attribute value in the <B>go</B> start tag.</LI>
+           <LI>Prompt for content assist</LI>
+           <LI>Verify <B>post</B> and <B>get</B> appear as proposals.</LI>
+        </UL>
+    <LI>Verify selection synchronization between the Design page, Source page, Outline view, 
+        and Properties view.
+    <UL>
+        <LI>From the Source page, click within the <B>card</B> start tag. 
+            Verify <B>card</B> is selected in the Outline view and in the Design 
+            page and that the content assist proposals listed above for the
+            <B>card</B> tag appear as properties in the Properties view. No values should appear for these properties.</LI>
+	<LI>From the Outline view, select the <B>postfield</B> tag.
+            Verify <B>postfield</B> is selected in the Design page and the current marker
+            in the lefthand margin of the Source page indicates the range of the 
+            <B>postfield</B> tag. The Properties view should show the following properties,
+            none of which should have a value:
+               <UL>
+                   <LI>name</LI>
+                   <LI>value</LI>
+                   <LI>id</LI>
+                   <LI>class</LI>
+               </UL>
+           </LI>
+    </UL>   
+    </LI>
+    <LI>Verify edit synchronization between the Design page, Source page, Outline view, and 
+        Properties view (focus here is on adding elements/tags).
+    <UL>
+        <LI>From the Source page, copy and paste the <B>card</B> tag.
+            <UL>
+            <LI>Position the cursor in the <B>card</B> start tag.</LI>
+            <LI>Notice the range of the <B>card</B> tag in the lefthand margin area.</LI>
+            <LI>Copy this range of lines using the <B>Edit->Copy</B> pulldown menu selection.</LI>
+            <LI>Paste after the <B>card</B> end tag using Ctrl+V.</LI>
+            <LI>Verify the appropriate lines were pasted n the Source page.
+                Verify the Design page, Outline view, and the Properties 
+                view reflect this change.</LI>         
+            </UL>
+        </LI>
+        <LI>From the Design page, add another <B>card</B> tag.
+            <UL>
+            <LI>Bring up the popup menu for the <B>wml</B> tag.</LI>
+            <LI>Select <B>Add Child->card</B> from the popup menu.</LI>
+            <LI>Verify the Source page, Outline view, and the Properties
+                view reflect this change. NOTE: it should have generated out
+                the same thing as the original card tag, with the exception
+                that a <B>method</B> attribute should not exist in the <B>go</B> start tag. </LI>
+            </UL>
+        </LI>
+    </UL>
+    </LI> 
+</UL>
+<P><B>Create and Validate an XML File from a schema</B><BR>
+
+<P>(these steps are taken from the 'Design' smoke test, except the Source Page is the focus)</P>
+<ul>
+<li>
+Right mouse button 2 on the PurchaseOrder.xsd and select <b>Create XML
+File</b>.</li>
+
+<li>
+Accept the default file names.</li>
+
+<li>
+In the Select Root Element page, choose <b>purchaseOrder</b> as root element.</li>
+
+<li>
+Choose <b>Create required and optional content</b> to create a minimal
+document.</li>
+
+<li>
+Enter <b>po</b> as the namespace prefix.</li>
+
+<li>On Finish, a PurchaseOrder.xml is created and the XML Editor is opened. (Select Source Page if not already there.)</li>
+
+<li>
+Run Validate. The PurchaseOrder.xml should be invalid.</li>
+
+<li>
+Double click on the error message. It should be positioned to the line
+in error, i.e. the <b>partNum</b> attribute. It is invalid because the
+value is not set to match the XML schema pattern facet "d3-[A-Z]{2}" (3
+digits followed by 2 characters).</li>
+
+<li>In the Source View, locate the <b>partNum</b> attribute under element item.
+Enter the value 333-AB.</li>
+
+<li>
+Run Validate. The PurchaseOrder.xml document should now be valid.</li>
+</UL>
+<UL>
+  <LI>
+  <HR></LI>
+  <li>Place the cursor after the &lt;items&gt; tag and besure "item" is 
+  listed in the content assist list. </li>
+<li>Rename the purchaseOrder.xsd to, say, purchaseOrderHOLD.xsd</li>
+<li>Verify that content assist still gives you "item" as above.</li>
+<li>Now select the "Reload Dependancies" button.</li>
+<li>Verify that now content assist no longer lists any items other 
+that the macro "comment".</li>
+<li>Repeat making purchaseOrder.xsd workable again.</li>
+</ul>
+<P></P><P></P><P></P><P></P><P></P></P>
+<P><B>Open an XML File for a shipped DTD catalog entry</B><BR>
+<BR>
+[put in optional section .. this isn't a customer scenerio]<BR>
+To verify that shipped DTDs are working:<BR>
+<UL>
+<LI>
+Use a web project with a standard web.xml file in it. Be sure 
+there is no web-app_2_2.dtd file in the directory. In the web.xml file 
+itself, mangle the web-app_2_2.dtd filename in the system id a little, such as 
+change it to xeb-app_2_2.dtd to be sure it can't be found via the
+normal http method (This isn't really necessary for the funtion to work,
+its just to be sure only the catalog function is in effect).
+</LI>
+<LI>
+Go to the preferences page, and open the XML Catalog. Verify there 
+is an entry for -//Sun Microsystems, Inc.//DTD Web Application 2.2//EN.
+</LI>
+<LI>
+Once all the prep work is done (files deleted, text modified), you should 
+exit and restart Eclipse to be sure you have a fresh start.
+</LI>
+<LI>
+Open the web.xml file and be sure that content assist works for that file.
+For example, right after the end of the &lt;/display-name&gt; tag, ctrl-space 
+should provide a long list of elements, starting with servlet, servlet-mapping, etc.
+This indicates the shipped DTD function is working and configured 
+correctly (at least for the web.xml file).
+</LI>
+</UL>
+</P>
+<P><B>Create an XML File from a new DTD catalog entry</B><BR><IMG border="0" height="63" src="u011ani.gif" width="63"></P>
+
+<b>The following comes directly from the 'Design' Smoke Test: XML Catalog for XML Schema</b>
+<ul>
+<li>
+Run Validate on PurchaseOrder.xml to make sure it is valid</li>
+
+<li>
+Create a new project, XMLTest2</li>
+
+<li>
+Move the PurchaseOrder.xsd into XMLTest2.</li>
+
+<li>
+Run Validate on PurchaseOrder.xml. You will notice that it is no longer
+valid. The error message should give you a hint that the file PurchaseOrder.xsd
+can no longer be found.</li>
+
+<li>
+Open the Window->Preferences and select the XML Catalog.</li>
+
+<li>
+Enter the pair <b>Id = PurchaseOrder.xsd Uri = f:\eclipse\XMLTest2\PurchaseOrder.xsd</b></li>
+
+<br>Or alternatively, you can use a relative path to the install directory
+of the workbench as follows:
+<br><b>Id = PurchaseOrder.xsd Uri = .\XMLTest2\PurchaseOrder.xsd</b>
+<li>
+Click on the Reload button to reload the catalog settings.</li>
+
+<li>
+Run Validate. The PurchaseOrder.xml document should now be valid.</li>
+</ul>
+<!-- ===========================================================
+                      Save/Validate test cases
+     ===========================================================
+-->
+<H2><FONT color="#0000ff">Save/Validate test cases</FONT></H2>
+<P><B>Saving an XML File</B><BR>
+(NOTE: the <B>Identify a local DTD</B> test case tests the save prompt on a file close.)</P>
+<UL>
+  <LI>If any files are open, select <B>File-&gt;Close All</B> (or <B>Ctrl+Shift+F4</B>) to close them.</LI>
+  <LI>Open any xml file in the <B>XMLTest2</B> project.</LI>
+  <LI>Verify the following (no-changes-made condition):
+  <UL>
+    <LI><B>File-&gt;Save</B> is disabled.</LI>
+    <LI><B>File-&gt;Save All</B> is disabled.</LI>
+    <LI><B>File-&gt;Save As</B> is enabled.</LI>
+    <LI>the <B>Save</B> toolbar button (a diskette) is disabled.</LI>
+    <LI>the <B>Save As</B> toolbar button is enabled.</LI>
+    <LI><B>Save</B> is disabled on the Source popup menu. <FONT color="#ff0000">Would be nice if the Design popup menu also had a Save selection. Open a suggestion defect.</FONT></LI>
+    <LI>no <B>*</B> appears in the file tab.</LI>
+  </UL></LI>
+  <LI>Make a change in the Source page.</LI>
+  <LI>Verify the following (changes-made condition):
+  <UL>
+    <LI><B>File-&gt;Save</B> is enabled.</LI>
+    <LI><B>File-&gt;Save All</B> is enabled</LI>
+    <LI>the <B>Save</B> toolbar button (a diskette) is enabled.</LI>
+    <LI><B>Save</B> is enabled on the Source popup menu.</LI>
+    <LI>a <B>*</B> appears in the file tab.</LI>
+  </UL></LI>
+  <LI>Hit <B>Ctrl+S</B>. </LI>
+  <LI>Verify the no-changes-made conditions apply.</LI>
+  <LI>Make a change in the Design page.</LI>
+  <LI>Verify the changes-made conditions apply.</LI>
+  <LI>File-&gt;Save All<B></B>.</LI>
+  <LI>Verify the no-changes-made conditions apply.</LI>
+  <LI>Make a change in the Properties view.</LI>
+  <LI>Verify the changes-made conditions apply.</LI>
+  <LI>Select <B>Save</B> from the Source popup menu.</LI>
+  <LI>Verify the no-changes-made conditions apply.</LI>
+  <LI>Close and then reopen the file.</LI>
+  <LI>Verify the changes that were made in the previous steps appear in the Design and Source pages.</LI>
+</UL>
+<P><B>Saving an XML File across multiple perspectives (optional)</B></P>
+<UL>
+  <LI>Open any xml file in the <B>XMLTest2</B> project.</LI>
+  <LI>Make a change to the file.</LI>
+  <LI>Open another XML Perspective by:
+  <UL>
+    <LI><B>selecting Perspective-&gt;Open-&gt;Other...</B></LI>
+    <LI>while holding down the <B>Shift</B> key, select <B>XML</B>.</LI>
+  </UL></LI>
+  <LI>Verify another XML Perspective button appears in the lefthand side of the Workbench to represent this second perspective.</LI>
+  <LI>Open the same xml file as in the first step above.</LI>
+  <LI>Verify the changes-made conditions apply in both XML Perspectives and verify that the changes made to the file in the first perspective appear in the same file in the second perspective. <FONT color="#ff0000">The * never appears in the file tab of the second perspective even when make changes to the file in the second perspective. Talk to David.</FONT></LI>
+  <LI>Make some changes to the file in the second perspective.</LI>
+  <LI>Verify these changes appear in the same file in the first perspective.</LI>
+  <LI>Close the file in the second perspective and respond <B>Yes</B> to the save changes prompt.</LI>
+  <LI>Verify the no-changes-made condition applies in the first perspective.</LI>
+</UL>
+<P><B>Validating a non well formed XML File (no DTD/Schema)</B><BR>
+(NOTE: it's important that the following be typed in. This test case tries to cover some of the more common errors that render an XML file as not being well-formed. It is not intended to verify that all possible errors are being detected and gracefully handled. )</P>
+<UL>
+  <LI>Select the <B>Create a new XML file</B> toolbar button.</LI><LI>Accept the default to <B>Create a new XML file</B></LI>
+  <LI>Go to the Next page
+    <UL>
+        <LI>Select <B>XMLTest2</B> as the folder</LI>
+        <LI>Specify a File name of <B>NonWellFormed</B></LI>
+        <LI>Select <B>Finish</B></LI>
+  </UL></LI>
+  <LI>Prompt for content assist.</LI>
+  <LI>Select <B>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;.</B></LI>
+  <LI>Create a new line after the XML declaration.</LI>
+  <LI>Prompt for content assist.</LI>
+  <LI>Select comment.</LI>
+  <LI>Embed more than 2 consecutive dashes in the comment. 
+        <FONT color="#0000ff">(NOTE: more than 2 consecutive dashes can not be embedded within a comment)</FONT></LI>
+  <LI>Type in the remaining lines as shown below: 
+        <FONT color="#ff0000">(I can't show the lines until defect 177755 is fixed ... until then, here's the type of things that cause 
+        a document to not be well-formed):</FONT>
+  <UL>
+    <LI>create a start and end tag that don't match in their case sensitivity 
+        (e.g., &lt;tag&gt; and &lt;/Tag&gt;). </LI>
+    <LI>create a start and end tag where the start tag contains an attribute value that is not 
+        enclosed in quotes.
+        <FONT color="#0000ff">(NOTE: this is permitted in HTML, but not XML)</FONT></LI>
+    <LI>create tags that are not properly nested.
+        <FONT color="#0000ff">(NOTE: a child tag must be completed before its parent tag)</FONT></LI>
+    <LI>create a start tag without a corresonding end tag.
+        <FONT color="#0000ff">(NOTE: all start tags must have a corresponding end tag unless the 
+        tag is an empty tag, in which case the shorthand version can be used (&lt;shortTag/&gt;)).</FONT></LI>
+    <LI>do not provide an attribute value (=&quot;value&quot;).
+        <FONT color="#0000ff">(NOTE: this is permitted in HTML for those attributes that have 
+        only one value, but it's not valid in XML)</FONT></LI>
+     <LI>define an attribute more than once in a start tag.</LI>
+  </UL></LI>
+  <LI>Save the file.</LI>
+  <LI>Verify errors are listed in the Tasks view for the above violations and that error markers appear on the appropriate 
+         lines in the Source page. <FONT color="#ff0000">I'm not sure how the Design page handles any of these violations 
+         and what will appear in the Outline and Properties view. Talk to Craig and David.</FONT></LI>
+  <LI>Reopen the file and verify everything was saved.</LI>
+</UL>
+
+
+<P><B>Validate an XML File based on a DTD</B></P>
+<UL>
+<LI>Open <B>fromScratch.xml</B>.</LI>
+<LI>Delete a character from one of the start tags (mistyping a tag is not uncommon).</LI>
+<LI>Prompt for content assist within the bad tag. Verify a message appears in the status area
+of the Workbench indicating that the bad tag is an unknown tag.</LI>
+<LI>Select the <B>Validate</B> toolbar button.</LI>
+<LI>Verify an error appears in the Tasks view and an error marker appears in the Source page
+to flag the invalid tag.</LI>
+<LI>Select <B>Edit->Undo</B> from the Source page.</LI>
+<LI>Verify the bad tag error no longer appears in the Tasks view.</LI>
+<LI>Remove the <B>Header</B> end tag from the Source page.</LI>
+<LI>Save the file.</LI>
+<LI>Verify an error appears in the Tasks view indicating that the <B>Header</B> end tag is missing</LI>
+<LI>Close the file, responding <B>Yes</B> to the save changes prompt.</LI>
+<LI>Double-click on the error in the Tasks view, and verify <B>fromScratch.xml</B> opens to the
+appropriate line in the Source page of the XML Editor.</LI>
+<LI>Here's some other violations that can be attempted:
+<UL>
+<LI>Specify a bad attribute.</LI>
+<LI>Specify a bad attribute value.</LI>
+<LI>Specify child tags out of sequencing order</LI>
+<LI>Violate the occurrence indicator for a tag (e.g., if the DTD shows ?, then only
+0 or 1 occurrences of the tag is permitted).
+</UL></LI>
+<LI>Save the file.</LI>
+<LI>Verify errors are listed in the Tasks view for the above violations and that error markers appear on the appropriate 
+lines in the Source page. <FONT color="#ff0000">I'm not sure how the Design page handles any of these violations 
+and what will appear in the Outline and Properties view. Talk to Craig and David.</FONT></LI>
+<LI>Reopen the file and verify everything was saved.</LI>
+</UL>
+
+<!--  removed since done elsewhere as part of other scenerios
+<P><B>Validate an XML File based on a Schema</B><BR>
+-->
+<IMG border="0" height="63" src="u011ani.gif" width="63"></P>
+
+<!-- ===========================================================
+                        Source Specific test cases
+     ===========================================================
+-->
+<H2><B><FONT color="#0000ff">Source Specific test cases (optional)</FONT></B></H2>
+<P><B>Using the Auto Completion Content Assist Preference</B><BR>
+<UL>
+<LI>Open a any XML file that has enough tags to provide syntax hightlighting.</LI>
+<LI>While that file is left open, go to the Preferences page, select
+XML Editor, then Source Styles. </LI>
+<LI>On that page, use the mouse to "select" a tag name. The tag name is not literally
+selected, but when you click on an element in the example text, the list
+above it will display the type of element it is, and what its current colors are.</LI>
+<LI>For "tag name", select the bold check box. Then press Apply, and you should
+see the change take effect in your active editor.</LI>
+<LI>Select "Defaults" and make sure the tag names are set back to not bold.</LI>
+</UL>
+<IMG border="0" height="63" src="u011ani.gif" width="63"></P>
+<P><B>Double-Clicking Within the Source</B> <BR>
+(NOTE: if you continue to double-click at a given cursor position, the selection area will continue to expand. When the maximum region area has been reached, the next double-click will cause the original selection. So, the selections will wrap/cycle. <FONT color="#0000ff">Cool!</FONT>).</P>
+<UL>
+  <LI>Open <B>JobDesc.xml</B>.</LI>
+  <LI>Double-clicking within tag content:
+  <UL>
+    <LI>Double-click within <B>Middleware</B> on line 7.</LI>
+    <LI>Verify <B>Middleware</B> is selected in the Source and Design pages and <B>BusType</B> is selected in the Outline view. <FONT color="#ff0000">Not sure what the Properties view is supposed to show. It goes blank. See defect 177753. Also, <B>Middleware</B> wasn't selected in the Design page as had expected. The Design page only seems to stay in sync at the element/tag level like the Outline view. Talk to Craig about this.</FONT></LI>
+    <LI>Double-click again at the same cursor position.</LI>
+    <LI>Verify <B>Application and Middleware Software</B> is selected in the Source and Design pages and <B>BusType</B> remains to be the only thing selected in the Outline view.</LI>
+    <LI>Double-clicking again will cause cycling back to the original selection.</LI>
+  </UL></LI>
+  <LI>Double-clicking within a tag name:
+  <UL>
+    <LI>Double-click within <B>HowToApply</B> on line 61.</LI>
+    <LI>Verify <B>HowToApply</B> is selected in the Source page, Design page, and Outline view. 
+        <B>class</B>, <B>distribute</B>, <B>id</B>, and <B>name</B> should appear in the 
+        Properties view. Only <B>distribute</B> should show a value.</LI>
+    <LI>Double-click again at the same cursor position.</LI>
+    <LI>Verify the whole <B>HowToApply</B> start tag (including its delimiters) is selected 
+        in the Source page. <B>HowToApply</B> should remain selected in
+        the Design page and Outline view. <B><FONT color="#ff0000">HowToApply</FONT></B><FONT color="#ff0000"> and all descendents become selected in the Outline view (defect 177752). Also, the Properties view shows no properties (defect 177753).</FONT></LI>
+    <LI>Double-clicking again will cause cycling back to the original selection.</LI>
+  </UL></LI>
+  <LI>Double-clicking within an attribute name:
+  <UL>
+    <LI>Type <B>Ctrl+End</B> to position the cursor at the end of the file.</LI>
+    <LI>Double-click within <B>distribute</B> on line 61. Verify <B>distribute</B> is selected 
+        in the Source page and <B>HowToApply</B> is selected in the Design page and Outline 
+        view. <B>class</B>, <B>distribute</B>, <B>id</B>, and <B>name</B> should appear in 
+        the Properties view. Only <B>distribute</B> should show a value.</LI>
+    <LI>Double-click at the same cursor position. Verify <B>distribute="internal"</B> is
+        selected in the Source. Nothing should change in the Design page or views.</LI>                 
+    <LI>Double-click at the same cursor position. Verify the whole <B>HowToApply</B> start tag is selected in the Source page (including its delimiters). Nothing should change in the Design page or views.<B><FONT color="#ff0000">HowToApply</FONT></B><FONT color="#ff0000"> and all descendents become selected in the Outline view (defect 177752). Also, the Properties view shows no properties (defect 177753).</FONT></LI>
+    <LI>Double-clicking again will cause cycling back to the original selection.</LI>
+  </UL></LI>
+ <LI>Double-clicking within an attribute value:
+  <UL>
+    <LI>Type <B>Ctrl+Home</B> to position the cursor at the beginning of the file.</LI>
+    <LI>Scroll down such that line 61 is visible.</LI>
+    <LI>Double-click within <B>internal</B> on line 61. Verify <B>internal</B> is selected 
+        in the Source page and <B>HowToApply</B> is selected in the Design page and Outline 
+        view. <B>class</B>, <B>distribute</B>, <B>id</B>, and <B>name</B> should appear in 
+        the Properties view. Only <B>distribute</B> should show a value.</LI>
+    <LI>Double-click at the same cursor position. Verify <B>"internal"</B> is
+        selected in the Source. Nothing should change in the Design page or views.</LI>
+    <LI>Double-click at the same cursor position. Verify <B>distribute="internal"</B> is
+        selected in the Source. Nothing should change in the Design page or views.</LI>                 
+    <LI>Double-click at the same cursor position. Verify the whole <B>HowToApply</B> start tag is selected in the Source page (including its delimiters). Nothing should change in the Design page or views. <B><FONT color="#ff0000">HowToApply</FONT></B><FONT color="#ff0000"> and all descendents become selected in the Outline view (defect 177752). Also, the Properties view shows no properties (defect 177753).</FONT></LI>
+    <LI>Double-clicking again will cause cycling back to the original selection.</LI>
+  </UL></LI>
+</UL>
+
+<P><B>Formatting a File Created by Different Editors</B><BR>
+<ul>
+<li>
+Import the <b>JobPosting.dtd</b> and <b>JobDesc.xml</b></li>
+
+<li>
+Open the JobDesc.xml. Check the source for indentation to see if it preserves
+the white space from the original document.</li>
+
+<li>
+The orignal document uses spaces and tabs, so the formatting will appear a little wrong.
+By using the right/left arrows, verify that some space is spaces and some space
+is tab characters.</li>
+<LI>Use 'format document' to be sure it formats. </LI>
+<LI>The default is to format with spaces ... verify only spaces remain in file, not tab charactes. 
+(Just a little movement with the arrow keys should suffice.</LI>
+<LI>Go to the preference page to change the format settings for the XML Editor
+to use the tab character instead of 4 spaces. While there, verify that the dialog
+will not allow other values to be intered except "whitespace" ...'\t's and blanks.
+</LI>
+<LI>Format the document again and be sure this time tab characters were used.</LI>
+</ul>
+<IMG border="0" height="63" src="u011ani.gif" width="63"></P>
+<!-- ===========================================================
+                           Other test cases
+     ===========================================================
+-->
+<H2><B><FONT color="#0000ff">Other test cases</FONT></B></H2>
+<P><B>Associate the XML Editor to a new file type</B></P>
+<UL>
+  <LI>Window-&gt;Preferences<B></B>.</LI>
+  <LI>Expand <B>Workbench</B>.</LI>
+  <LI>Select <B>File Editors</B>.</LI>
+  <LI>Select the <B>Add</B> button to add a new file type.</LI>
+  <LI>Specify a file type of <B>*.set</B> and then close the Add dialog.</LI>
+  <LI>Verify <B>*.set</B> is selected in the list of file types.</LI>
+  <LI>Select the <B>Add</B> button to associate the XML Editor to the new file type.</LI>
+  <LI>Select <B>XML Editor</B> from the list of editors. Verify it appears with its own special icon. Close the dialog. <FONT color="#ff0000">NOTE: waiting to hear back from OTI on how can prevent 2 XML Editor entries from appearing in the list.</FONT></LI>
+  <LI>Verify <B>XML Editor</B> appears as the default editor now for the <B>*.set</B> file type.</LI>
+  <LI>Open <B>gotchaTCBeans.set</B> from the Navigator view. Verify it opens to the XML Editor.</LI>
+</UL>
+<P><FONT color="#0000ff">THE END!</FONT></P>
+</body>
+</html>
diff --git a/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/MultiNonDefault.html b/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/MultiNonDefault.html
new file mode 100644
index 0000000..f772113
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/MultiNonDefault.html
@@ -0,0 +1,20 @@
+<HEAD>
+<META http-equiv="Content-Style-Type" content="text/css">
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-6">
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<META name="GENERATOR" content="IBM WebSphere Studio">
+<TITLE>IBM WebSphere Samples Gallery</TITLE>
+</HEAD>
+<FRAMESET rows="75,*">
+	<FRAME name="title" marginwidth="0" marginheight="0" frameborder="0" src="Menu/Title.html" scrolling="NO" noresize>
+	<FRAMESET cols="160,*">
+		<FRAME name="menu" marginwidth="0" marginheight="0" frameborder="0" src="Menu/Menu.html" scrolling="auto" noresize>
+		<FRAME name="main" marginwidth="0" marginheight="0" frameborder="0" src="Menu/SamplesIntro.html" scrolling="auto" noresize>
+	</FRAMESET>
+	<NOFRAMES>
+	<BODY>
+	<P>To view this page, you need a browser that supports frames.</P>
+	</BODY>
+	</NOFRAMES>
+</FRAMESET>
+</HTML>
diff --git a/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/NoEncoding.html b/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/NoEncoding.html
new file mode 100644
index 0000000..070e4fe
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/NoEncoding.html
@@ -0,0 +1,18 @@
+<HEAD>
+<META http-equiv="Content-Style-Type" content="text/css">
+<META name="GENERATOR" content="IBM WebSphere Studio">
+<TITLE>IBM WebSphere Samples Gallery</TITLE>
+</HEAD>
+<FRAMESET rows="75,*">
+	<FRAME name="title" marginwidth="0" marginheight="0" frameborder="0" src="Menu/Title.html" scrolling="NO" noresize>
+	<FRAMESET cols="160,*">
+		<FRAME name="menu" marginwidth="0" marginheight="0" frameborder="0" src="Menu/Menu.html" scrolling="auto" noresize>
+		<FRAME name="main" marginwidth="0" marginheight="0" frameborder="0" src="Menu/SamplesIntro.html" scrolling="auto" noresize>
+	</FRAMESET>
+	<NOFRAMES>
+	<BODY>
+	<P>To view this page, you need a browser that supports frames.</P>
+	</BODY>
+	</NOFRAMES>
+</FRAMESET>
+</HTML>
diff --git a/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/NormalNonDefault.html b/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/NormalNonDefault.html
new file mode 100644
index 0000000..ba30c9f
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/NormalNonDefault.html
@@ -0,0 +1,19 @@
+<HEAD>
+<META http-equiv="Content-Style-Type" content="text/css">
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<META name="GENERATOR" content="IBM WebSphere Studio">
+<TITLE>IBM WebSphere Samples Gallery</TITLE>
+</HEAD>
+<FRAMESET rows="75,*">
+	<FRAME name="title" marginwidth="0" marginheight="0" frameborder="0" src="Menu/Title.html" scrolling="NO" noresize>
+	<FRAMESET cols="160,*">
+		<FRAME name="menu" marginwidth="0" marginheight="0" frameborder="0" src="Menu/Menu.html" scrolling="auto" noresize>
+		<FRAME name="main" marginwidth="0" marginheight="0" frameborder="0" src="Menu/SamplesIntro.html" scrolling="auto" noresize>
+	</FRAMESET>
+	<NOFRAMES>
+	<BODY>
+	<P>To view this page, you need a browser that supports frames.</P>
+	</BODY>
+	</NOFRAMES>
+</FRAMESET>
+</HTML>
diff --git a/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/noquotes.html b/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/noquotes.html
new file mode 100644
index 0000000..254cde4
--- /dev/null
+++ b/tests/org.eclipse.wst.html.tests.encoding/testfiles/html/noquotes.html
@@ -0,0 +1,20 @@
+<HEAD>
+<META http-equiv="Content-Style-Type" content="text/css">
+<META http-equiv="Content-Type" content=text/html; charset=UTF-8>
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-6">
+<META name="GENERATOR" content="IBM WebSphere Studio">
+<TITLE>IBM WebSphere Samples Gallery</TITLE>
+</HEAD>
+<FRAMESET rows="75,*">
+	<FRAME name="title" marginwidth="0" marginheight="0" frameborder="0" src="Menu/Title.html" scrolling="NO" noresize>
+	<FRAMESET cols="160,*">
+		<FRAME name="menu" marginwidth="0" marginheight="0" frameborder="0" src="Menu/Menu.html" scrolling="auto" noresize>
+		<FRAME name="main" marginwidth="0" marginheight="0" frameborder="0" src="Menu/SamplesIntro.html" scrolling="auto" noresize>
+	</FRAMESET>
+	<NOFRAMES>
+	<BODY>
+	<P>To view this page, you need a browser that supports frames.</P>
+	</BODY>
+	</NOFRAMES>
+</FRAMESET>
+</HTML>
diff --git a/tests/org.eclipse.wst.html.ui.tests/.classpath b/tests/org.eclipse.wst.html.ui.tests/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/tests/org.eclipse.wst.html.ui.tests/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.wst.html.ui.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.wst.html.ui.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..04516c2
--- /dev/null
+++ b/tests/org.eclipse.wst.html.ui.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,26 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name.0
+Bundle-SymbolicName: org.eclipse.wst.html.ui.tests; singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: htmluitests.jar
+Bundle-Activator: org.eclipse.wst.html.ui.tests.HTMLUITestsPlugin
+Bundle-Vendor: %Bundle-Vendor.0
+Bundle-Localization: plugin
+Export-Package: org.eclipse.wst.html.ui.tests,
+ org.eclipse.wst.html.ui.tests.viewer
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.jface.text,
+ org.eclipse.wst.html.ui,
+ org.eclipse.wst.xml.ui,
+ org.eclipse.wst.sse.ui,
+ org.eclipse.wst.html.core,
+ org.eclipse.wst.xml.core,
+ org.eclipse.wst.sse.core,
+ org.eclipse.ui.workbench.texteditor,
+ org.junit,
+ org.eclipse.ui.views,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ com.ibm.icu
+Eclipse-LazyStart: true
diff --git a/tests/org.eclipse.wst.html.ui.tests/about.html b/tests/org.eclipse.wst.html.ui.tests/about.html
new file mode 100644
index 0000000..4ec5989
--- /dev/null
+++ b/tests/org.eclipse.wst.html.ui.tests/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/tests/org.eclipse.wst.html.ui.tests/build.properties b/tests/org.eclipse.wst.html.ui.tests/build.properties
index 5610d30..a23f581 100644
--- a/tests/org.eclipse.wst.html.ui.tests/build.properties
+++ b/tests/org.eclipse.wst.html.ui.tests/build.properties
@@ -1,10 +1,10 @@
 ###############################################################################
-# Copyright (c) 2004, 2006 IBM Corporation and others.
+# Copyright (c) 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
 ###############################################################################
diff --git a/tests/org.eclipse.wst.html.ui.tests/plugin.properties b/tests/org.eclipse.wst.html.ui.tests/plugin.properties
index ed966bb..ec61822 100644
--- a/tests/org.eclipse.wst.html.ui.tests/plugin.properties
+++ b/tests/org.eclipse.wst.html.ui.tests/plugin.properties
@@ -1,13 +1,3 @@
-###############################################################################
-# Copyright (c) 2005, 2006 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
-###############################################################################
 # properties file for org.eclipse.wst.html.ui.tests
 Bundle-Vendor.0 = Eclipse.org
 Bundle-Name.0 = Structured Source Editor for HTML Tests
diff --git a/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/HTMLUIPreferencesTest.java b/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/HTMLUIPreferencesTest.java
new file mode 100644
index 0000000..2a662af
--- /dev/null
+++ b/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/HTMLUIPreferencesTest.java
@@ -0,0 +1,114 @@
+/*******************************************************************************
+ * Copyright (c) 2005 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.wst.html.ui.tests;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.wst.html.ui.internal.HTMLUIPlugin;
+import org.eclipse.wst.html.ui.internal.preferences.HTMLUIPreferenceNames;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleException;
+
+/**
+ * The purpose of this test is to verify the validity of the HTML Source
+ * editor preferences. Tests include setting/getting preferences.
+ * 
+ * NOTE: This test should be preformed on a clean workspace. If performed on
+ * an existing workspace, this test will manipulate preferences in the
+ * workspace, though attempts will be made to restore original values after
+ * testing.
+ */
+public class HTMLUIPreferencesTest extends TestCase {
+	/**
+	 * Tests existance of preference values when getting preference values
+	 * through Platform.getPreferencesService()
+	 */
+	public void testBundleGetPreferences() {
+		final String bundleName = "org.eclipse.wst.html.ui";
+
+		// need to start up bundle for default values to be loaded
+		Bundle bundle = Platform.getBundle(bundleName);
+		try {
+			if (bundle != null)
+				bundle.start();
+			else
+				fail("Get preference value failed because could not find bundle: " + bundleName);
+		} catch (BundleException e) {
+			fail("Get preference value failed because of exception starting bundle: " + bundleName + " exception: " + e);
+		}
+
+		bundleGetPreference(bundleName, HTMLUIPreferenceNames.AUTO_PROPOSE);
+		bundleGetPreference(bundleName, HTMLUIPreferenceNames.AUTO_PROPOSE_CODE);
+	}
+
+	private void bundleGetPreference(String bundleName, String prefKey) {
+		String defaultValue = Long.toString(System.currentTimeMillis()); // random
+																			// string
+
+		String value = Platform.getPreferencesService().getString(bundleName, prefKey, defaultValue, null);
+		assertNotSame("Get preference value failed using Platform.getPreferencesService. Key: " + prefKey, defaultValue, value);
+	}
+
+	/**
+	 * Tests default values of preferences.
+	 * 
+	 * NOTE: Expected default values are hard-coded, so if default values do
+	 * get changed, assertions need to be updated as well
+	 */
+	public void testPluginGetDefaultPreferences() {
+		IPreferenceStore store = HTMLUIPlugin.getDefault().getPreferenceStore();
+
+		pluginGetDefaultPreference(store, HTMLUIPreferenceNames.AUTO_PROPOSE, Boolean.toString(true));
+		pluginGetDefaultPreference(store, HTMLUIPreferenceNames.AUTO_PROPOSE_CODE, "<");
+	}
+
+	private void pluginGetDefaultPreference(IPreferenceStore store, String prefKey, String expected) {
+		String defaultValue = store.getDefaultString(prefKey);
+		assertEquals("Get default preference value failed using plugin.getPreferenceStore. Key: " + prefKey, expected, defaultValue);
+	}
+
+	/**
+	 * Tests setting preference values by setting preference value to be a
+	 * certain value, then getting the preference value to verify it was set.
+	 */
+	public void testPluginSetPreferences() {
+		IPreferenceStore store = HTMLUIPlugin.getDefault().getPreferenceStore();
+
+		pluginSetPreferenceBoolean(store, HTMLUIPreferenceNames.AUTO_PROPOSE);
+		pluginSetPreferenceString(store, HTMLUIPreferenceNames.AUTO_PROPOSE_CODE);
+	}
+
+	private void pluginSetPreferenceBoolean(IPreferenceStore store, String prefKey) {
+		boolean originalValue = store.getBoolean(prefKey);
+		boolean expectedValue = !originalValue;
+		store.setValue(prefKey, expectedValue);
+		boolean foundValue = store.getBoolean(prefKey);
+		assertEquals("Set preference value failed using plugin.getPreferenceStore. Key: " + prefKey + "  expected: " + expectedValue + " found: " + foundValue, expectedValue, foundValue);
+
+		// attempt to restore original preference value
+		store.setValue(prefKey, originalValue);
+	}
+
+	private void pluginSetPreferenceString(IPreferenceStore store, String prefKey) {
+		String originalValue = store.getString(prefKey);
+		String expectedValue = Long.toString(System.currentTimeMillis()); // random
+																			// string
+		store.setValue(prefKey, expectedValue);
+		String foundValue = store.getString(prefKey);
+		assertEquals("Set preference value failed using plugin.getPreferenceStore. Key: " + prefKey + "  expected: " + expectedValue + " found: " + foundValue, expectedValue, foundValue);
+
+		// attempt to restore original preference value
+		store.setValue(prefKey, originalValue);
+	}
+}
diff --git a/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/HTMLUITestSuite.java b/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/HTMLUITestSuite.java
index ad8564f..3353690 100644
--- a/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/HTMLUITestSuite.java
+++ b/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/HTMLUITestSuite.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 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
  *******************************************************************************/
@@ -31,4 +31,4 @@
 		//		addTest(new SSEModelTestSuite());
 
 	}
-}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/Logger.java b/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/Logger.java
index ddf14df..c5c53ac 100644
--- a/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/Logger.java
+++ b/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/Logger.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
+ * Copyright (c) 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
  *******************************************************************************/
@@ -141,4 +141,4 @@
 	public static void trace(String category, String message) {
 		_trace(category, message, null);
 	}
-}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/TestEditorConfigurationHTML.java b/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/TestEditorConfigurationHTML.java
index 3881762..b3378d4 100644
--- a/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/TestEditorConfigurationHTML.java
+++ b/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/TestEditorConfigurationHTML.java
@@ -1,14 +1,15 @@
-/*******************************************************************************
+/*
  * Copyright (c) 2005 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
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
  * Contributors:
  *   IBM - Initial API and implementation
  *   Jens Lukowski/Innoopract - initial renaming/restructuring
- *******************************************************************************/
+ * 
+ */
 package org.eclipse.wst.html.ui.tests;
 
 import junit.framework.TestCase;
diff --git a/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/VerifyEditorPlugin.java b/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/VerifyEditorPlugin.java
index 5c7b94b..f3a0bbf 100644
--- a/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/VerifyEditorPlugin.java
+++ b/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/VerifyEditorPlugin.java
@@ -1,13 +1,12 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 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
- *******************************************************************************/
+/*****************************************************************************
+ * Copyright (c) 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.wst.html.ui.tests;
 
 import junit.framework.TestCase;
diff --git a/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/viewer/TestViewerConfigurationHTML.java b/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/viewer/TestViewerConfigurationHTML.java
index 2473bad..319721f 100644
--- a/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/viewer/TestViewerConfigurationHTML.java
+++ b/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/viewer/TestViewerConfigurationHTML.java
@@ -1,13 +1,3 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 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.wst.html.ui.tests.viewer;
 
 import junit.framework.TestCase;
diff --git a/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/viewer/ViewerTestHTML.java b/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/viewer/ViewerTestHTML.java
index 4ab2114..54b9892 100644
--- a/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/viewer/ViewerTestHTML.java
+++ b/tests/org.eclipse.wst.html.ui.tests/src/org/eclipse/wst/html/ui/tests/viewer/ViewerTestHTML.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
+ * Copyright (c) 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
  *******************************************************************************/
@@ -493,4 +493,4 @@
 		}
 	}
 
-}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.html.ui.tests/test.xml b/tests/org.eclipse.wst.html.ui.tests/test.xml
index 2ba6ac2..e1e1f3b 100644
--- a/tests/org.eclipse.wst.html.ui.tests/test.xml
+++ b/tests/org.eclipse.wst.html.ui.tests/test.xml
@@ -1,114 +1,87 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0"?>
 
 <project
-    name="testsuite"
-    default="run"
-    basedir=".">
-    
-    <!-- The following properties should be passed into this script -->
-    <!-- ${eclipse-home}   -->
-    <!-- ${buildDirectory}  -->
-    <!-- ${buildLabel}        -->
+	name="testsuite"
+	default="run"
+	basedir=".">
+	<!-- The property ${eclipse-home} should be passed into this script -->
+	<!-- Set a meaningful default value for when it is not. -->
+	<!-- <property name="eclipse-home" value="${basedir}\..\.." /> -->
 
-    <!-- should be little need to change what's above  -->
+	<echo message="basedir ${basedir}" />
+	<echo message="eclipse place ${eclipse-home}" />
+
+	<!-- sets the properties plugin-name, and library-file -->
 	<property
 		name="plugin-name"
 		value="org.eclipse.wst.html.ui.tests" />
-    <property
-        name="classname"
-        value="org.eclipse.wst.html.ui.tests.HTMLUITestSuite" />
-    <property
-        name="testType"
-        value="ui-test" />
+	<property
+		name="library-file"
+		value="${eclipse-home}/plugins/org.eclipse.test_3.1.0/library.xml" />
 
-    <!-- should be little need to change what's below -->
+	<!-- This target holds all initialization code that needs to be done for -->
+	<!-- all tests that are to be run. Initialization for individual tests -->
+	<!-- should be done within the body of the suite target. -->
+	<target name="init">
+		<tstamp />
+		<delete>
+			<fileset
+				dir="${eclipse-home}"
+				includes="org.eclipse.wst.html.ui.tests.*xml" />
+		</delete>
+	</target>
 
-    <echo message="basedir: ${basedir}" />
-    <echo message="eclipse-home: ${eclipse-home}" />
-    <echo message="buildDirectory: ${buildDirectory}" />
-    <echo message="plugin-name: ${plugin-name}" />
-    <echo message="classname: ${classname}" />
-    <echo message="testType ${testType}" />
+	<!-- This target defines the tests that need to be run. -->
+	<target name="suite">
+		<property
+			name="wst-folder"
+			value="${eclipse-home}/wst_folder" />
+		<delete
+			dir="${wst-folder}"
+			quiet="true" />
+		<ant
+			target="ui-test"
+			antfile="${library-file}"
+			dir="${eclipse-home}">
+			<property
+				name="data-dir"
+				value="${wst-folder}" />
+			<property
+				name="plugin-name"
+				value="${plugin-name}" />
+			<property
+				name="classname"
+				value="org.eclipse.wst.html.ui.tests.HTMLUITestSuite" />
+			<property
+				name="plugin-path"
+				value="${eclipse-home}/plugins/${plugin-name}" />
+		</ant>
+	</target>
 
+	<!-- This target holds code to cleanup the testing environment after -->
+	<!-- after all of the tests have been run. You can use this target to -->
+	<!-- delete temporary files that have been created. -->
+	<target name="cleanup">
+		<!--<delete dir="${workspace}" quiet="true" />-->
+	</target>
 
-    <property
-        name="library-file"
-        value="${eclipse-home}/plugins/org.eclipse.test_3.1.0/library.xml" />
-    <property
-        name="workspace"
-        value="${eclipse-home}/junitworkspaces/${plugin-name}" />
-        
-    <!-- This target holds all initialization code that needs to be done for -->
-    <!-- all tests that are to be run. Initialization for individual tests -->
-    <!-- should be done within the body of the suite target. -->
-    <target name="init">
-        <tstamp />
-        <delete>
-            <fileset
-                dir="${eclipse-home}"
-                includes="${plugin-name}.*xml" />
-        </delete>
-        <!-- make directory, in case path doesn't exist yet -->
-        <mkdir dir="${workspace}" />
-        <!--  but delete to make sure fresh contents-->
-        <delete
-            dir="${workspace}"
-            quiet="true" />
-
-    </target>
-
-    <!-- This target defines the tests that need to be run. -->
-    <target name="suite">
-
-        <ant
-            target="${testType}"
-            antfile="${library-file}"
-            dir="${eclipse-home}">
-            <property
-                name="data-dir"
-                value="${workspace}" />
-            <property
-                name="plugin-name"
-                value="${plugin-name}" />
-            <property
-                name="classname"
-                value="${classname}" />
-            <property
-                name="plugin-path"
-                value="${eclipse-home}/plugins/${plugin-name}" />
-        </ant>
-
-        <copy
-            failonerror="false"
-            file="${workspace}/.metadata/.log"
-            tofile="${buildDirectory}/${buildLabel}/testResults/consolelogs/${plugin-name}.consolelog.txt" />
-
-    </target>
-
-    <!-- This target holds code to cleanup the testing environment after -->
-    <!-- after all of the tests have been run. You can use this target to -->
-    <!-- delete temporary files that have been created. -->
-    <target name="cleanup">
-        <!-- usually no need to delete workspace until next run, and leaving it allows inspection -->
-        <!-- <delete dir="${workspace}" quiet="true" /> -->
-    </target>
-
-    <!-- This target runs the test suite. Any actions that need to happen -->
-    <!-- after all the tests have been run should go here. -->
-    <target
-        name="run"
-        depends="init,suite,cleanup">
-        <ant
-            target="collect"
-            antfile="${library-file}"
-            dir="${eclipse-home}">
-            <property
-                name="includes"
-                value="${plugin-name}.*xml" />
-            <property
-                name="output-file"
-                value="${plugin-name}.xml" />
-        </ant>
-    </target>
+	<!-- This target runs the test suite. Any actions that need to happen -->
+	<!-- after all the tests have been run should go here. -->
+	<target
+		name="run"
+		depends="init,suite,cleanup">
+		<ant
+			target="collect"
+			antfile="${library-file}"
+			dir="${eclipse-home}">
+			<property
+				name="includes"
+				value="org.eclipse.wst.html.ui.tests.*xml" />
+			<property
+				name="output-file"
+				value="${plugin-name}.xml" />
+		</ant>
+		<!--		<emailResults resultsFile="${build-results-home}/${plugin-name}.xml" addresslist="david_williams@us.ibm.com" /> -->
+	</target>
 
 </project>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.core.tests/.classpath b/tests/org.eclipse.wst.sse.core.tests/.classpath
new file mode 100644
index 0000000..1d8baf7
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src/"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry path="org.eclipse.pde.core.requiredPlugins" kind="con">
+		<accessrules>
+			<accessrule kind="accessible" pattern="org/eclipse/wst/**"/>
+		</accessrules>
+	</classpathentry>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.wst.sse.core.tests/.cvsignore b/tests/org.eclipse.wst.sse.core.tests/.cvsignore
new file mode 100644
index 0000000..7dd370a
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/.cvsignore
@@ -0,0 +1,4 @@
+bin
+build.xml
+temp.folder
+ssemodeltests.jar
diff --git a/tests/org.eclipse.wst.sse.core.tests/.project b/tests/org.eclipse.wst.sse.core.tests/.project
new file mode 100644
index 0000000..b073ff4
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/.project
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.wst.sse.core.tests</name>
+	<comment></comment>
+	<projects></projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/tests/org.eclipse.wst.sse.core.tests/.settings/org.eclipse.core.resources.prefs b/tests/org.eclipse.wst.sse.core.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..afa5c91
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+#Tue Apr 04 03:36:32 EDT 2006
+eclipse.preferences.version=1
+encoding/<project>=ISO-8859-1
diff --git a/tests/org.eclipse.wst.sse.core.tests/.settings/org.eclipse.core.runtime.prefs b/tests/org.eclipse.wst.sse.core.tests/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..7ec5750
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,3 @@
+#Mon Apr 17 01:48:39 EDT 2006
+eclipse.preferences.version=1
+line.separator=\r\n
diff --git a/tests/org.eclipse.wst.sse.core.tests/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.wst.sse.core.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..5f7bac7
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,80 @@
+#Sat Aug 19 16:31:43 EDT 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=error
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=enabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=ignore
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+org.eclipse.jdt.core.compiler.problem.unusedLabel=error
+org.eclipse.jdt.core.compiler.problem.unusedLocal=error
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.3
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/tests/org.eclipse.wst.sse.core.tests/.settings/org.eclipse.jdt.ui.prefs b/tests/org.eclipse.wst.sse.core.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..301c7ad
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,4 @@
+#Mon Apr 17 01:48:39 EDT 2006
+eclipse.preferences.version=1
+internal.default.compliance=default
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?>\r\n<templates/>
diff --git a/tests/org.eclipse.wst.sse.core.tests/.settings/org.eclipse.ltk.core.refactoring.prefs b/tests/org.eclipse.wst.sse.core.tests/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..c59368c
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Tue Apr 04 03:36:32 EDT 2006
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/tests/org.eclipse.wst.sse.core.tests/.settings/org.eclipse.pde.prefs b/tests/org.eclipse.wst.sse.core.tests/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..fc522bb
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,16 @@
+#Mon Apr 17 02:01:33 EDT 2006
+compilers.incompatible-environment=0
+compilers.p.build=0
+compilers.p.deprecated=1
+compilers.p.illegal-att-value=0
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=0
+compilers.p.unknown-attribute=0
+compilers.p.unknown-class=0
+compilers.p.unknown-element=0
+compilers.p.unknown-resource=0
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.p.unused-element-or-attribute=0
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/tests/org.eclipse.wst.sse.core.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.wst.sse.core.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..6c7381e
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name.0
+Bundle-SymbolicName: org.eclipse.wst.sse.core.tests
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: ssemodeltests.jar
+Bundle-Activator: org.eclipse.wst.sse.core.tests.SSEModelTestsPlugin
+Bundle-Vendor: %Bundle-Vendor.0
+Bundle-Localization: plugin
+Export-Package: org.eclipse.wst.sse.core.tests,
+ org.eclipse.wst.sse.core.tests.adaptdom,
+ org.eclipse.wst.sse.core.tests.document,
+ org.eclipse.wst.sse.core.tests.events,
+ org.eclipse.wst.sse.core.tests.examples,
+ org.eclipse.wst.sse.core.tests.life,
+ org.eclipse.wst.sse.core.tests.threading
+Require-Bundle: org.eclipse.core.resources,
+ org.junit,
+ org.eclipse.wst.sse.core,
+ org.eclipse.core.runtime,
+ com.ibm.icu
+Eclipse-LazyStart: true
diff --git a/tests/org.eclipse.wst.sse.core.tests/about.html b/tests/org.eclipse.wst.sse.core.tests/about.html
new file mode 100644
index 0000000..4ec5989
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/tests/org.eclipse.wst.sse.core.tests/build.properties b/tests/org.eclipse.wst.sse.core.tests/build.properties
new file mode 100644
index 0000000..07cd48f
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/build.properties
@@ -0,0 +1,16 @@
+###############################################################################
+# Copyright (c) 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
+###############################################################################
+bin.includes = ssemodeltests.jar,\
+               test.xml,\
+               META-INF/,\
+               about.html
+source.ssemodeltests.jar = src/
+output.ssemodeltests.jar = bin/
diff --git a/tests/org.eclipse.wst.sse.core.tests/plugin.properties b/tests/org.eclipse.wst.sse.core.tests/plugin.properties
new file mode 100644
index 0000000..da827dc
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/plugin.properties
@@ -0,0 +1,3 @@
+# properties file for org.eclipse.wst.sse.core.tests
+Bundle-Vendor.0 = Eclipse.org
+Bundle-Name.0 = Tests Plug-in
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/ExistenceTest.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/ExistenceTest.java
new file mode 100644
index 0000000..b19ccdc
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/ExistenceTest.java
@@ -0,0 +1,14 @@
+package org.eclipse.wst.sse.core.tests;
+
+
+import junit.framework.TestCase;
+
+import org.eclipse.wst.sse.core.internal.SSECorePlugin;
+
+
+public class ExistenceTest extends TestCase {
+
+	public void testPluginExists(){
+		assertNotNull(SSECorePlugin.getDefault());
+	}
+}
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/Logger.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/Logger.java
new file mode 100644
index 0000000..0ff3213
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/Logger.java
@@ -0,0 +1,144 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests;
+
+import com.ibm.icu.util.StringTokenizer;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.osgi.framework.Bundle;
+
+/**
+ * Small convenience class to log messages to plugin's log file and also, if desired,
+ * the console. This class should only be used by classes in this plugin. Other
+ * plugins should make their own copy, with appropriate ID.
+ */
+public class Logger {
+	private static final String PLUGIN_ID = "org.eclipse.wst.sse.core.tests"; //$NON-NLS-1$
+	
+	private static final String TRACEFILTER_LOCATION = "/debug/tracefilter"; //$NON-NLS-1$
+
+	public static final int OK = IStatus.OK; // 0
+	public static final int INFO = IStatus.INFO; // 1
+	public static final int WARNING = IStatus.WARNING; // 2
+	public static final int ERROR = IStatus.ERROR; // 4
+
+	public static final int OK_DEBUG = 200 + OK;
+	public static final int INFO_DEBUG = 200 + INFO;
+	public static final int WARNING_DEBUG = 200 + WARNING;
+	public static final int ERROR_DEBUG = 200 + ERROR;
+
+	/**
+	 * Adds message to log.
+	 * @param level severity level of the message (OK, INFO, WARNING, ERROR, OK_DEBUG, INFO_DEBUG, WARNING_DEBUG, ERROR_DEBUG)
+	 * @param message text to add to the log
+	 * @param exception exception thrown
+	 */
+	protected static void _log(int level, String message, Throwable exception) {
+		if (level == OK_DEBUG || level == INFO_DEBUG || level == WARNING_DEBUG || level == ERROR_DEBUG) {
+			if (!isDebugging())
+				return;
+		}
+
+		int severity = IStatus.OK;
+		switch (level) {
+			case INFO_DEBUG :
+			case INFO :
+				severity = IStatus.INFO;
+				break;
+			case WARNING_DEBUG :
+			case WARNING :
+				severity = IStatus.WARNING;
+				break;
+			case ERROR_DEBUG :
+			case ERROR :
+				severity = IStatus.ERROR;
+		}
+		message = (message != null) ? message : "null"; //$NON-NLS-1$
+		Status statusObj = new Status(severity, PLUGIN_ID, severity, message, exception);
+		Bundle bundle = Platform.getBundle(PLUGIN_ID);
+		if (bundle != null) 
+			Platform.getLog(bundle).log(statusObj);
+	}
+
+	/**
+	 * Prints message to log if category matches /debug/tracefilter option.
+	 * @param message text to print
+	 * @param category category of the message, to be compared with /debug/tracefilter
+	 */
+	protected static void _trace(String category, String message, Throwable exception) {
+		if (isTracing(category)) {
+			message = (message != null) ? message : "null"; //$NON-NLS-1$
+			Status statusObj = new Status(IStatus.OK, PLUGIN_ID, IStatus.OK, message, exception);
+			Bundle bundle = Platform.getBundle(PLUGIN_ID);
+			if (bundle != null) 
+				Platform.getLog(bundle).log(statusObj);
+		}
+	}
+
+	/**
+	 * @return true if the platform is debugging
+	 */
+	public static boolean isDebugging() {
+		return Platform.inDebugMode();
+	}
+
+	/**
+	 * Determines if currently tracing a category
+	 * @param category
+	 * @return true if tracing category, false otherwise
+	 */
+	public static boolean isTracing(String category) {
+		if (!isDebugging())
+			return false;
+
+		String traceFilter = Platform.getDebugOption(PLUGIN_ID + TRACEFILTER_LOCATION);
+		if (traceFilter != null) {
+			StringTokenizer tokenizer = new StringTokenizer(traceFilter, ","); //$NON-NLS-1$
+			while (tokenizer.hasMoreTokens()) {
+				String cat = tokenizer.nextToken().trim();
+				if (category.equals(cat)) {
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+
+	public static void log(int level, String message) {
+		_log(level, message, null);
+	}
+
+	public static void log(int level, String message, Throwable exception) {
+		_log(level, message, exception);
+	}
+
+	public static void logException(String message, Throwable exception) {
+		_log(ERROR, message, exception);
+	}
+
+	public static void logException(Throwable exception) {
+		_log(ERROR, exception.getMessage(), exception);
+	}
+
+	public static void traceException(String category, String message, Throwable exception) {
+		_trace(category, message, exception);
+	}
+
+	public static void traceException(String category, Throwable exception) {
+		_trace(category, exception.getMessage(), exception);
+	}
+
+	public static void trace(String category, String message) {
+		_trace(category, message, null);
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/SSEModelTestSuite.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/SSEModelTestSuite.java
new file mode 100644
index 0000000..843cb40
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/SSEModelTestSuite.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.eclipse.wst.sse.core.tests.events.TestAboutToBeChangedEvent;
+import org.eclipse.wst.sse.core.tests.events.TestNewDocumentContentEvent;
+import org.eclipse.wst.sse.core.tests.events.TestNewDocumentEvent;
+import org.eclipse.wst.sse.core.tests.events.TestNoChangeEvent;
+import org.eclipse.wst.sse.core.tests.events.TestRegionChangedEvent;
+import org.eclipse.wst.sse.core.tests.events.TestRegionsReplacedEvent;
+import org.eclipse.wst.sse.core.tests.events.TestStructuredDocumentRegionsReplacedEvent;
+
+
+public class SSEModelTestSuite extends TestSuite {
+
+	/**
+	 * to get picked up by BVT
+	 * 
+	 * @return
+	 */
+	public static Test suite() {
+		return new SSEModelTestSuite();
+	}
+
+	// not ready for threaded tests, yet.
+	// private static Class[] classes = new
+	// Class[]{TestOfThreadLocalImprovement.class,
+	// TestOfThreadLocalWithChanges.class, TestCreation.class};
+
+	// private static Class[] classes = new Class[]{TestCreation.class,
+	// TestDocumentReader.class};
+	// private static Class[] classes = new Class[]{TestCreation.class,
+	// TestDocumentReader.class, TestCharSequenceReader.class,
+	// TestRegionMatches.class};
+
+	private static Class[] classes = new Class[]{ExistenceTest.class, TestNewDocumentContentEvent.class, TestAboutToBeChangedEvent.class, TestNewDocumentEvent.class, TestNoChangeEvent.class, TestRegionChangedEvent.class,TestRegionsReplacedEvent.class,TestStructuredDocumentRegionsReplacedEvent.class};
+
+	public SSEModelTestSuite() {
+		super("SSE Model Basic Test Suite");
+		for (int i = 0; i < classes.length; i++) {
+			addTest(new TestSuite(classes[i], classes[i].getName()));
+		}
+	}
+
+	public SSEModelTestSuite(Class theClass, String name) {
+		super(theClass, name);
+	}
+
+	public SSEModelTestSuite(Class theClass) {
+		super(theClass);
+	}
+
+	public SSEModelTestSuite(String name) {
+		super(name);
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/SSEModelTestsPlugin.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/SSEModelTestsPlugin.java
new file mode 100644
index 0000000..bbd670d
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/SSEModelTestsPlugin.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Plugin;
+
+/**
+ * The main plugin class to be used in the desktop.
+ */
+public class SSEModelTestsPlugin extends Plugin {
+	//The shared instance.
+	private static SSEModelTestsPlugin plugin;
+	//Resource bundle.
+	private ResourceBundle resourceBundle;
+
+	/**
+	 * The constructor.
+	 */
+	public SSEModelTestsPlugin() {
+		super();
+		plugin = this;
+		try {
+			resourceBundle = ResourceBundle.getBundle("org.eclipse.wst.sse.core.tests.TestsPluginResources");
+		}
+		catch (MissingResourceException x) {
+			resourceBundle = null;
+		}
+	}
+
+	/**
+	 * Returns the shared instance.
+	 */
+	public static SSEModelTestsPlugin getDefault() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the workspace instance.
+	 */
+	public static IWorkspace getWorkspace() {
+		return ResourcesPlugin.getWorkspace();
+	}
+
+	/**
+	 * Returns the string from the plugin's resource bundle,
+	 * or 'key' if not found.
+	 */
+	public static String getResourceString(String key) {
+		ResourceBundle bundle = SSEModelTestsPlugin.getDefault().getResourceBundle();
+		try {
+			return (bundle != null ? bundle.getString(key) : key);
+		}
+		catch (MissingResourceException e) {
+			return key;
+		}
+	}
+
+	/**
+	 * Returns the plugin's resource bundle,
+	 */
+	public ResourceBundle getResourceBundle() {
+		return resourceBundle;
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/TestAbstractAdapterFactory.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/TestAbstractAdapterFactory.java
new file mode 100644
index 0000000..ee942f0
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/TestAbstractAdapterFactory.java
@@ -0,0 +1,56 @@
+package org.eclipse.wst.sse.core.tests;
+
+import junit.framework.TestCase;
+
+import org.eclipse.wst.sse.core.internal.provisional.AbstractAdapterFactory;
+import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
+import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
+
+/**
+ * 
+ * @author pavery
+ */
+public class TestAbstractAdapterFactory extends TestCase {
+	
+	private AbstractAdapterFactory fFactory = null;
+	
+	class MyClass implements INodeAdapter {
+		public boolean isAdapterForType(Object type) {
+			return type instanceof MyClass;
+		}
+		public void notifyChanged(INodeNotifier notifier,int eventType,Object changedFeature,Object oldValue,Object newValue,int pos) {
+			// noop
+		}
+	}
+	
+	protected void setUp() throws Exception {
+		super.setUp();
+		setUpAdapterFactory();
+	}
+	
+	private void setUpAdapterFactory() {
+		fFactory = new AbstractAdapterFactory(TestAbstractAdapterFactory.MyClass.class, false) {
+			protected INodeAdapter createAdapter(INodeNotifier target) {
+				return new MyClass();
+			}
+		};
+	}
+	
+	public void testAdapt() {
+		fFactory.adapt(null);
+	}
+	
+//	public void testAdaptNew() {
+//		fFactory.adaptNew(null);
+//	}
+	
+//	public void testCopy() {
+//		AdapterFactory f = fFactory.copy();
+//		assertNotNull(f);
+//	}
+	
+	public void testCreate() {
+		// TODO: create unit test
+
+	}
+}
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/adaptdom/AdapterFactoryTestOnly.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/adaptdom/AdapterFactoryTestOnly.java
new file mode 100644
index 0000000..a8c3993
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/adaptdom/AdapterFactoryTestOnly.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests.adaptdom;
+
+import java.util.Iterator;
+
+import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
+import org.eclipse.wst.sse.core.internal.provisional.INodeAdapterFactory;
+import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+
+/**
+ * This class exists only to satisfy some of the unit tests.
+ * 
+ * To test, use following line in client, such as when it intitialized.
+ * FactoryRegistry.getFactoryRegistry().addFactory(new
+ * AdapterFactoryTestOnly());
+ * 
+ * Creation date: (11/14/00 7:08:18 PM)
+ * 
+ * @author: David Williams
+ */
+public class AdapterFactoryTestOnly implements INodeAdapterFactory {
+	// This factory deals with three adapters
+	java.util.List adapters = new java.util.ArrayList();
+
+	/**
+	 * CAAdapterFactory constructor.
+	 */
+	public AdapterFactoryTestOnly() {
+		super();
+		adapters.add(new AdapterForDocumentTestOnly());
+		adapters.add(new AdapterForElementTestOnly());
+		adapters.add(new AdapterForAttrTestOnly());
+	}
+
+	/**
+	 * Method that returns the adapter associated with the this factory and
+	 * the given object, and "sets up" the adaptable object to use the
+	 * adapter.
+	 * 
+	 * The adapter may be a singleton or not ... depending on the needs of the
+	 * INodeAdapter ... but in general it is recommended for an adapter to be
+	 * stateless, so the efficiencies of a singleton can be gained.
+	 * 
+	 * The implementation of this method should call addAdapter on the adapted
+	 * object with the correct instance of the adapter.
+	 */
+	public INodeAdapter adapt(INodeNotifier target) {
+		// object.addAdapter(adapterInstance);
+		// return adapterInstance;
+		INodeAdapter result = null;
+
+		Iterator adaptersList = adapters.iterator();
+		while (adaptersList.hasNext()) {
+			INodeAdapter adapter = (INodeAdapter) adaptersList.next();
+			if (adapter.isAdapterForType(target)) {
+				INodeAdapter existingAdapter = target.getExistingAdapter(adapter);
+				if (existingAdapter == null) {
+					target.addAdapter(adapter);
+					result = adapter;
+				}
+			}
+		}
+
+		return result;
+
+	}
+
+	/**
+	 * isFactoryForType method comment.
+	 */
+	public boolean isFactoryForType(java.lang.Object type) {
+		boolean result = false;
+
+		// for now, one adapter for documents, elements, and attr.
+		//
+		if (type instanceof Document) {
+			result = true;
+		}
+		else {
+			if (type instanceof Element) {
+				result = true;
+			}
+			else {
+				if (type instanceof Attr) {
+					result = true;
+				}
+			}
+		}
+
+		return result;
+	}
+
+	/**
+	 * 
+	 */
+	public void release() {
+		// TODO: create unit test
+
+	}
+
+	public INodeAdapterFactory copy() {
+		return new AdapterFactoryTestOnly();
+	}
+
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/adaptdom/AdapterForAttrTestOnly.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/adaptdom/AdapterForAttrTestOnly.java
new file mode 100644
index 0000000..e86b84c
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/adaptdom/AdapterForAttrTestOnly.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests.adaptdom;
+
+import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
+import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
+import org.w3c.dom.Attr;
+
+
+/**
+ * Insert the type's description here. Creation date: (1/9/01 3:37:01 PM)
+ * 
+ * @author: David Williams
+ */
+public class AdapterForAttrTestOnly implements INodeAdapter {
+	/**
+	 * CAAdapterTestOnly constructor comment.
+	 */
+	public AdapterForAttrTestOnly() {
+		super();
+	}
+
+	/**
+	 * Allowing the INodeAdapter to compare itself against the type allows it
+	 * to return true in more than one case.
+	 */
+	public boolean isAdapterForType(Object type) {
+		boolean result = false;
+		if (type instanceof Attr) {
+			result = true;
+		}
+		return result;
+	}
+
+	/**
+	 */
+	public void notifyChanged(INodeNotifier notifier, int eventType, Object changedFeature, Object oldValue, Object newValue, int pos) {
+		System.out.println("INodeAdapter AdapterForAttrTestOnly " + this.hashCode() + " has been notified of " + INodeNotifier.EVENT_TYPE_STRINGS[eventType] + " (when " + notifier + " notified it)");
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/adaptdom/AdapterForDocumentTestOnly.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/adaptdom/AdapterForDocumentTestOnly.java
new file mode 100644
index 0000000..f8875c9
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/adaptdom/AdapterForDocumentTestOnly.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests.adaptdom;
+
+import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
+import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
+import org.w3c.dom.Document;
+
+
+/**
+ * Insert the type's description here. Creation date: (1/9/01 3:37:01 PM)
+ * 
+ * @author: David Williams
+ */
+public class AdapterForDocumentTestOnly implements INodeAdapter {
+	/**
+	 * CAAdapterTestOnly constructor comment.
+	 */
+	public AdapterForDocumentTestOnly() {
+		super();
+	}
+
+	/**
+	 * Allowing the INodeAdapter to compare itself against the type allows it
+	 * to return true in more than one case.
+	 */
+	public boolean isAdapterForType(Object type) {
+		boolean result = false;
+		if (type instanceof Document) {
+			result = true;
+		}
+		return result;
+	}
+
+	/**
+	 */
+	public void notifyChanged(INodeNotifier notifier, int eventType, Object changedFeature, Object oldValue, Object newValue, int pos) {
+		System.out.println("INodeAdapter AdapterForDocumentTestOnly " + this.hashCode() + " has been notified of " + INodeNotifier.EVENT_TYPE_STRINGS[eventType] + " (when " + notifier + " notified it)");
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/adaptdom/AdapterForElementTestOnly.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/adaptdom/AdapterForElementTestOnly.java
new file mode 100644
index 0000000..0781564
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/adaptdom/AdapterForElementTestOnly.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests.adaptdom;
+
+import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
+import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
+import org.w3c.dom.Element;
+
+
+/**
+ * Insert the type's description here. Creation date: (1/9/01 3:37:01 PM)
+ * 
+ * @author: David Williams
+ */
+public class AdapterForElementTestOnly implements INodeAdapter {
+	/**
+	 * CAAdapterTestOnly constructor comment.
+	 */
+	public AdapterForElementTestOnly() {
+		super();
+	}
+
+	/**
+	 * Allowing the INodeAdapter to compare itself against the type allows it
+	 * to return true in more than one case.
+	 */
+	public boolean isAdapterForType(Object type) {
+		boolean result = false;
+		if (type instanceof Element) {
+			result = true;
+		}
+		return result;
+	}
+
+	/**
+	 */
+	public void notifyChanged(INodeNotifier notifier, int eventType, Object changedFeature, Object oldValue, Object newValue, int pos) {
+		System.out.println("INodeAdapter AdapterForElementTestOnly " + this.hashCode() + " has been notified of " + INodeNotifier.EVENT_TYPE_STRINGS[eventType] + " (when " + notifier + " notified it)");
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/document/TestCharSequenceReader.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/document/TestCharSequenceReader.java
new file mode 100644
index 0000000..1a585c1
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/document/TestCharSequenceReader.java
@@ -0,0 +1,194 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests.document;
+
+import java.io.IOException;
+
+import org.eclipse.wst.sse.core.internal.text.CharSequenceReader;
+
+import junit.framework.TestCase;
+
+
+
+public class TestCharSequenceReader extends TestCase {
+
+
+	public TestCharSequenceReader() {
+		super();
+	}
+
+
+	public TestCharSequenceReader(String name) {
+		super(name);
+	}
+
+	String fStandardString = "test123";
+
+	public void testStandardBeginning() {
+		CharSequenceReader reader = new CharSequenceReader(fStandardString, 0, 3);
+		char char1 = (char) reader.read();
+		assertTrue(char1 == 't');
+		char char2 = (char) reader.read();
+		assertTrue(char2 == 'e');
+		char char3 = (char) reader.read();
+		assertTrue(char3 == 's');
+		int eof = reader.read();
+		assertTrue(eof == -1);
+	}
+
+	public void testStandardMiddle() {
+		CharSequenceReader reader = new CharSequenceReader(fStandardString, 2, 3);
+		char char1 = (char) reader.read();
+		assertTrue(char1 == 's');
+		char char2 = (char) reader.read();
+		assertTrue(char2 == 't');
+		char char3 = (char) reader.read();
+		assertTrue(char3 == '1');
+		int eof = reader.read();
+		assertTrue(eof == -1);
+	}
+
+	public void testStandardEnd() {
+		CharSequenceReader reader = new CharSequenceReader(fStandardString, 4, 3);
+		char char1 = (char) reader.read();
+		assertTrue(char1 == '1');
+		char char2 = (char) reader.read();
+		assertTrue(char2 == '2');
+		char char3 = (char) reader.read();
+		assertTrue(char3 == '3');
+		int eof = reader.read();
+		assertTrue(eof == -1);
+	}
+
+	public void testStandardOutOfRange() {
+		CharSequenceReader reader = new CharSequenceReader(fStandardString, 50, 3);
+		int eof = reader.read();
+		assertTrue(eof == -1);
+	}
+
+	public void testStandardPartiallyOutOfRange() {
+		CharSequenceReader reader = new CharSequenceReader(fStandardString, 5, 3);
+		char char1 = (char) reader.read();
+		assertTrue(char1 == '2');
+		char char2 = (char) reader.read();
+		assertTrue(char2 == '3');
+		int eof = reader.read();
+		assertTrue(eof == -1);
+	}
+
+	public void testBufferBegining() throws IOException {
+		CharSequenceReader reader = new CharSequenceReader(fStandardString, 0, 3);
+		String targetString = "tes";
+		
+		// intentionally small sized buffer
+		char[] charbuffer = new char[2];
+		StringBuffer stringBuffer = new StringBuffer();
+		int nRead = 0;
+		while (nRead != -1) {
+			nRead = reader.read(charbuffer);
+			if (nRead > 0) {
+				stringBuffer.append(charbuffer, 0, nRead);
+			}
+		}
+		String testString = stringBuffer.toString();
+		
+		assertEquals(targetString, testString);
+		
+	}
+	public void testBufferEnd() throws IOException {
+		CharSequenceReader reader = new CharSequenceReader(fStandardString, 4, 3);
+		String targetString = "123";
+		
+		// intentionally small sized buffer
+		char[] charbuffer = new char[2];
+		StringBuffer stringBuffer = new StringBuffer();
+		int nRead = 0;
+		while (nRead != -1) {
+			nRead = reader.read(charbuffer);
+			if (nRead > 0) {
+				stringBuffer.append(charbuffer, 0, nRead);
+			}
+		}
+		String testString = stringBuffer.toString();
+		
+		assertEquals(targetString, testString);
+		
+	}	public void testBufferEndEnlarged() throws IOException {
+		CharSequenceReader reader = new CharSequenceReader(fStandardString, 4, 3);
+		String targetString = "123";
+		
+		// intentionally small sized buffer
+		char[] charbuffer = new char[200];
+		StringBuffer stringBuffer = new StringBuffer();
+		int nRead = 0;
+		while (nRead != -1) {
+			nRead = reader.read(charbuffer);
+			if (nRead > 0) {
+				stringBuffer.append(charbuffer, 0, nRead);
+			}
+		}
+		String testString = stringBuffer.toString();
+		
+		assertEquals(targetString, testString);
+		
+	}
+	public void testBufferBeginingEnlarged() throws IOException {
+		CharSequenceReader reader = new CharSequenceReader(fStandardString, 0, 3);
+		String targetString = "tes";
+		
+		// intentionally small sized buffer
+		char[] charbuffer = new char[200];
+		StringBuffer stringBuffer = new StringBuffer();
+		int nRead = 0;
+		while (nRead != -1) {
+			nRead = reader.read(charbuffer);
+			if (nRead > 0) {
+				stringBuffer.append(charbuffer, 0, nRead);
+			}
+		}
+		String testString = stringBuffer.toString();
+		
+		assertEquals(targetString, testString);
+		
+	}
+	public void testBufferBeginingReduced() throws IOException {
+		CharSequenceReader reader = new CharSequenceReader(fStandardString, 0, 3);
+		String targetString = "te";
+		
+		// intentionally small sized buffer
+		char[] charbuffer = new char[2];
+		StringBuffer stringBuffer = new StringBuffer();
+		int nRead = 0;
+		//while (nRead != -1) {
+			nRead = reader.read(charbuffer, 0, 2);
+			if (nRead > 0) {
+				stringBuffer.append(charbuffer, 0, nRead);
+			}
+		//}
+		String testString = stringBuffer.toString();
+		
+		assertEquals(targetString, testString);
+		/// now continue reading same reader
+		targetString = "s";
+		stringBuffer = new StringBuffer();
+		nRead = 0;
+		//while (nRead != -1) {
+			nRead = reader.read(charbuffer, 0, 2);
+			if (nRead > 0) {
+				stringBuffer.append(charbuffer, 0, nRead);
+			}
+		//}
+		testString = stringBuffer.toString();
+		assertEquals(targetString, testString);
+		
+	}
+
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/document/TestRegionMatches.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/document/TestRegionMatches.java
new file mode 100644
index 0000000..c93d1aa
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/document/TestRegionMatches.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests.document;
+
+import org.eclipse.wst.sse.core.internal.text.StructuredDocumentTextStore;
+
+import junit.framework.TestCase;
+
+
+
+public class TestRegionMatches extends TestCase {
+
+	/**
+	 *  
+	 */
+	public TestRegionMatches() {
+		super();
+
+	}
+
+	/**
+	 * @param name
+	 */
+	public TestRegionMatches(String name) {
+		super(name);
+
+	}
+
+	public void testRegionMatches1() {
+		StructuredDocumentTextStore structuredDocumentTextStore = new StructuredDocumentTextStore();
+		structuredDocumentTextStore.set("testing123");
+		boolean result = structuredDocumentTextStore.regionMatches(0, 1, "t");
+		assertEquals(true, result);
+	}
+
+	public void testRegionMatches2() {
+		StructuredDocumentTextStore structuredDocumentTextStore = new StructuredDocumentTextStore();
+		structuredDocumentTextStore.set("testing123");
+		boolean result = structuredDocumentTextStore.regionMatches(0, 2, "t");
+		assertEquals(false, result);
+	}
+	public void testRegionMatches3() {
+		StructuredDocumentTextStore structuredDocumentTextStore = new StructuredDocumentTextStore();
+		structuredDocumentTextStore.set("testing123");
+		boolean result = structuredDocumentTextStore.regionMatches(7, 3, "123");
+		assertEquals(true, result);
+	}
+	public void testRegionMatches4() {
+		StructuredDocumentTextStore structuredDocumentTextStore = new StructuredDocumentTextStore();
+		structuredDocumentTextStore.set("testing123");
+		boolean result = structuredDocumentTextStore.regionMatches(8, 3, "234");
+		assertEquals(false, result);
+	}
+	
+	public void testRegionMatchesIgnoreCase() {
+		StructuredDocumentTextStore structuredDocumentTextStore = new StructuredDocumentTextStore();
+		String test = "testing123";
+		String compare = "TeSting123";
+		structuredDocumentTextStore.set(test);
+		boolean result = structuredDocumentTextStore.regionMatches(0, test.length(), compare);
+		assertEquals(false, result);
+		result = structuredDocumentTextStore.regionMatchesIgnoreCase(0, test.length(), compare);
+		assertEquals(true, result);
+	}
+	public void testRegionMatchesIgnoreCase2() {
+		StructuredDocumentTextStore structuredDocumentTextStore = new StructuredDocumentTextStore();
+		String test = "test\u0130ng123";
+		String compare = "TeStIng123";
+		structuredDocumentTextStore.set(test);
+		boolean result = structuredDocumentTextStore.regionMatches(0, test.length(), compare);
+		assertEquals(false, result);
+		result = structuredDocumentTextStore.regionMatchesIgnoreCase(0, test.length(), compare);
+		assertEquals(true, result);
+	}
+	public void testRegionMatchesIgnoreCase3() {
+		StructuredDocumentTextStore structuredDocumentTextStore = new StructuredDocumentTextStore();
+		String test = "testing123";
+		String compare = "TeSt\u0131ng123";
+		structuredDocumentTextStore.set(test);
+		boolean result = structuredDocumentTextStore.regionMatches(0, test.length(), compare);
+		assertEquals(false, result);
+		result = structuredDocumentTextStore.regionMatchesIgnoreCase(0, test.length(), compare);
+		assertEquals(true, result);
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/NullParser.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/NullParser.java
new file mode 100644
index 0000000..46ab20b
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/NullParser.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests.events;
+
+import java.io.Reader;
+import java.util.List;
+
+import org.eclipse.wst.sse.core.internal.ltk.parser.RegionParser;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
+
+public class NullParser implements RegionParser {
+
+	public IStructuredDocumentRegion getDocumentRegions() {
+
+		return null;
+	}
+
+	public List getRegions() {
+
+		return null;
+	}
+
+	public RegionParser newInstance() {
+
+		return this;
+	}
+
+	public void reset(Reader reader) {
+		// do nothing
+
+	}
+
+	public void reset(Reader reader, int offset) {
+		// do nothing
+
+	}
+
+	public void reset(String input) {
+		// do nothing
+
+	}
+
+	public void reset(String input, int offset) {
+		// do nothing
+	}
+
+}
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/TestAboutToBeChangedEvent.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/TestAboutToBeChangedEvent.java
new file mode 100644
index 0000000..79f84da
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/TestAboutToBeChangedEvent.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests.events;
+
+import junit.framework.TestCase;
+
+import org.eclipse.wst.sse.core.internal.document.StructuredDocumentFactory;
+import org.eclipse.wst.sse.core.internal.provisional.events.AboutToBeChangedEvent;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
+
+public class TestAboutToBeChangedEvent extends TestCase {
+
+	public void testAboutToBeChangedEvent() {
+		AboutToBeChangedEvent event = getBasicEvent();
+		assertNotNull(event);
+	}
+
+	public void testGetDeletedText() {
+		AboutToBeChangedEvent event = getBasicEvent();
+		String d = event.getDeletedText();
+		assertEquals(d, null);
+	}
+
+	public void testGetOriginalRequester() {
+		AboutToBeChangedEvent event = getBasicEvent();
+		Object r = event.getOriginalRequester();
+		assertEquals(this, r);
+	}
+
+	public void testGetStructuredDocument() {
+		AboutToBeChangedEvent event = getBasicEvent();
+		IStructuredDocument d = event.getStructuredDocument();
+		assertNotNull(d);
+	}
+
+	public void testSetDeletedText() {
+		AboutToBeChangedEvent event = getBasicEvent();
+		event.setDeletedText("junkyNothing");
+		// assume ok if no exception
+		assertTrue(true);
+	}
+
+	private AboutToBeChangedEvent getBasicEvent() {
+		IStructuredDocument document = StructuredDocumentFactory.getNewStructuredDocumentInstance(new NullParser());
+		AboutToBeChangedEvent event = new AboutToBeChangedEvent(document, this, "test", 0, 0);
+		return event;
+
+	}
+
+}
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/TestNewDocumentContentEvent.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/TestNewDocumentContentEvent.java
new file mode 100644
index 0000000..ce26378
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/TestNewDocumentContentEvent.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests.events;
+
+import junit.framework.TestCase;
+
+import org.eclipse.wst.sse.core.internal.document.StructuredDocumentFactory;
+import org.eclipse.wst.sse.core.internal.provisional.events.NewDocumentContentEvent;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
+
+public class TestNewDocumentContentEvent extends TestCase {
+	final private static String testString = "testing";
+
+	public void testNewDocumentContentEvent() {
+		NewDocumentContentEvent event = getBasicEvent();
+		assertNotNull(event);
+	}
+
+	public void testGetOffset() {
+		NewDocumentContentEvent event = getBasicEvent();
+		int o = event.getOffset();
+		assertEquals(0, o);
+	}
+
+	public void testGetLength() {
+		NewDocumentContentEvent event = getBasicEvent();
+		int i = event.getLength();
+		assertEquals(testString.length(), i);
+	}
+
+	/*
+	 * Class under test for String getText()
+	 */
+	public void testGetText() {
+		NewDocumentContentEvent event = getBasicEvent();
+		String text = event.getText();
+		assertEquals(testString, text);
+	}
+
+	private NewDocumentContentEvent getBasicEvent() {
+		IStructuredDocument document = StructuredDocumentFactory.getNewStructuredDocumentInstance(new NullParser());
+		document.setText(this, testString);
+		NewDocumentContentEvent event = new NewDocumentContentEvent(document, this);
+		return event;
+
+	}
+}
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/TestNewDocumentEvent.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/TestNewDocumentEvent.java
new file mode 100644
index 0000000..8f8ae73
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/TestNewDocumentEvent.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests.events;
+
+import junit.framework.TestCase;
+
+import org.eclipse.wst.sse.core.internal.document.StructuredDocumentFactory;
+import org.eclipse.wst.sse.core.internal.provisional.events.NewDocumentEvent;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
+
+public class TestNewDocumentEvent extends TestCase {
+	final private static String testString = "testing";
+
+	public void testGetOffset() {
+		NewDocumentEvent event = getBasicEvent();
+		int o = event.getOffset();
+		assertEquals(0, o);
+	}
+
+	public void testGetLength() {
+		NewDocumentEvent event = getBasicEvent();
+		int i = event.getLength();
+		assertEquals(testString.length(), i);
+	}
+
+	public void testNewDocumentEvent() {
+		NewDocumentEvent event = getBasicEvent();
+		assertNotNull(event);
+	}
+
+
+	public void testGetText() {
+		NewDocumentEvent event = getBasicEvent();
+		String text = event.getText();
+		assertEquals(testString, text);
+	}
+
+	private NewDocumentEvent getBasicEvent() {
+		IStructuredDocument document = StructuredDocumentFactory.getNewStructuredDocumentInstance(new NullParser());
+		document.setText(this, testString);
+		NewDocumentEvent event = new NewDocumentEvent(document, this);
+		return event;
+
+	}
+}
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/TestNoChangeEvent.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/TestNoChangeEvent.java
new file mode 100644
index 0000000..134fc93
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/TestNoChangeEvent.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests.events;
+
+import junit.framework.TestCase;
+
+import org.eclipse.wst.sse.core.internal.document.StructuredDocumentFactory;
+import org.eclipse.wst.sse.core.internal.provisional.events.NoChangeEvent;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
+
+public class TestNoChangeEvent extends TestCase {
+	final private static String testString = "testing";
+
+	public void testNoChangeEvent() {
+		NoChangeEvent event = getBasicEvent();
+		assertNotNull(event);
+		assertEquals(NoChangeEvent.NO_CONTENT_CHANGE, event.reason);
+	}
+
+	private NoChangeEvent getBasicEvent() {
+		IStructuredDocument document = StructuredDocumentFactory.getNewStructuredDocumentInstance(new NullParser());
+		document.setText(this, testString);
+		NoChangeEvent event = new NoChangeEvent(document, this, "", 0, 0);
+		event.reason = NoChangeEvent.NO_CONTENT_CHANGE;
+		return event;
+	}
+
+}
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/TestRegionChangedEvent.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/TestRegionChangedEvent.java
new file mode 100644
index 0000000..e7cb82f
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/TestRegionChangedEvent.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests.events;
+
+import junit.framework.TestCase;
+
+import org.eclipse.wst.sse.core.internal.document.StructuredDocumentFactory;
+import org.eclipse.wst.sse.core.internal.provisional.events.RegionChangedEvent;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
+import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
+
+public class TestRegionChangedEvent extends TestCase {
+	final private static String testString = "testing";
+
+	public void testRegionChangedEvent() {
+		RegionChangedEvent event = getBasicEvent();
+		assertNotNull(event);
+	}
+
+	public void testGetRegion() {
+		RegionChangedEvent event = getBasicEvent();
+		IStructuredDocumentRegion structuredDocumentRegion = event.getStructuredDocumentRegion();
+		assertEquals(null, structuredDocumentRegion);
+	}
+
+	public void testGetStructuredDocumentRegion() {
+		RegionChangedEvent event = getBasicEvent();
+		ITextRegion region = event.getRegion();
+		assertEquals(null, region);
+	}
+
+	private RegionChangedEvent getBasicEvent() {
+		IStructuredDocument document = StructuredDocumentFactory.getNewStructuredDocumentInstance(new NullParser());
+		document.setText(this, testString);
+		RegionChangedEvent event = new RegionChangedEvent(document, this, null, null, "", 0, 0);
+		return event;
+	}
+}
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/TestRegionsReplacedEvent.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/TestRegionsReplacedEvent.java
new file mode 100644
index 0000000..b7b1168
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/TestRegionsReplacedEvent.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests.events;
+
+import junit.framework.TestCase;
+
+import org.eclipse.wst.sse.core.internal.document.StructuredDocumentFactory;
+import org.eclipse.wst.sse.core.internal.provisional.events.RegionsReplacedEvent;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
+
+public class TestRegionsReplacedEvent extends TestCase {
+
+	final private static String testString = "testing";
+
+	public void testRegionsReplacedEvent() {
+		RegionsReplacedEvent event = getBasicEvent();
+		assertNotNull(event);
+	}
+
+	public void testGetNewRegions() {
+		RegionsReplacedEvent event = getBasicEvent();
+		assertNull(event.getNewRegions());
+	}
+
+	public void testGetOldRegions() {
+		RegionsReplacedEvent event = getBasicEvent();
+		assertNull(event.getOldRegions());
+	}
+
+	public void testGetStructuredDocumentRegion() {
+		RegionsReplacedEvent event = getBasicEvent();
+		assertNull(event.getStructuredDocumentRegion());
+	}
+
+	private RegionsReplacedEvent getBasicEvent() {
+		IStructuredDocument document = StructuredDocumentFactory.getNewStructuredDocumentInstance(new NullParser());
+		document.setText(this, testString);
+		RegionsReplacedEvent event = new RegionsReplacedEvent(document, this, null, null, null, "", 0, 0);
+		return event;
+	}
+}
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/TestStructuredDocumentRegionsReplacedEvent.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/TestStructuredDocumentRegionsReplacedEvent.java
new file mode 100644
index 0000000..735b358
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/events/TestStructuredDocumentRegionsReplacedEvent.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests.events;
+
+import junit.framework.TestCase;
+
+import org.eclipse.wst.sse.core.internal.document.StructuredDocumentFactory;
+import org.eclipse.wst.sse.core.internal.provisional.events.StructuredDocumentRegionsReplacedEvent;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
+
+public class TestStructuredDocumentRegionsReplacedEvent extends TestCase {
+	final private static String testString = "testing";
+
+	public void testStructuredDocumentRegionsReplacedEvent() {
+		StructuredDocumentRegionsReplacedEvent event = getBasicEvent();
+		assertNotNull(event);
+	}
+
+	public void testGetNewStructuredDocumentRegions() {
+		StructuredDocumentRegionsReplacedEvent event = getBasicEvent();
+		assertNull(event.getNewStructuredDocumentRegions());
+	}
+
+	public void testGetOldStructuredDocumentRegions() {
+		StructuredDocumentRegionsReplacedEvent event = getBasicEvent();
+		assertNull(event.getOldStructuredDocumentRegions());
+	}
+
+	private StructuredDocumentRegionsReplacedEvent getBasicEvent() {
+		IStructuredDocument document = StructuredDocumentFactory.getNewStructuredDocumentInstance(new NullParser());
+		document.setText(this, testString);
+		StructuredDocumentRegionsReplacedEvent event = new StructuredDocumentRegionsReplacedEvent(document, this, null, null, "", 0, 0);
+		return event;
+	}
+}
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/examples/TestAtSign.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/examples/TestAtSign.java
new file mode 100644
index 0000000..9d91000
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/examples/TestAtSign.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests.examples;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
+
+public class TestAtSign {
+
+	public TestAtSign() {
+		super();
+	}
+
+	public static void main(String[] args) throws IOException {
+		Properties properties = new Properties(); //System.getProperties();
+		properties.put("at sign", "this is an \u0040 sign");
+		properties.list(System.out);
+		FileOutputStream outputStream = new FileOutputStream("testAt.txt");
+		properties.store(outputStream, "tests");
+		outputStream.close();
+		InputStream inStream = new FileInputStream("testAt.txt");
+		Properties readProperties = new Properties();
+		readProperties.load(inStream);
+		String atSign = (String) readProperties.get("at sign");
+		System.out.println("at sign from read: " + atSign);
+
+
+
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/life/EmptyModelForTests.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/life/EmptyModelForTests.java
new file mode 100644
index 0000000..52b95d8
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/life/EmptyModelForTests.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests.life;
+
+import org.eclipse.wst.sse.core.internal.model.AbstractStructuredModel;
+import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
+
+
+
+public class EmptyModelForTests extends AbstractStructuredModel {
+
+	public EmptyModelForTests() {
+
+		super();
+		// TODO Auto-generated constructor stub
+	}
+
+	public IndexedRegion getIndexedRegion(int offset) {
+
+		// TODO Auto-generated method stub
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/life/TestCreation.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/life/TestCreation.java
new file mode 100644
index 0000000..18112c5
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/life/TestCreation.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests.life;
+
+import org.eclipse.wst.sse.core.internal.model.ModelLifecycleEvent;
+import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+
+import junit.framework.TestCase;
+
+
+
+
+public class TestCreation extends TestCase {
+	private boolean DEBUG = false;
+
+	public void testCreation() {
+		IStructuredModel structuredModel = new EmptyModelForTests();
+		ModelLifecycleEvent event = new ModelLifecycleEvent(structuredModel, ModelLifecycleEvent.MODEL_RELEASED);
+		if (DEBUG) {
+			System.out.println(event);
+		}
+		event = new ModelLifecycleEvent(structuredModel, ModelLifecycleEvent.MODEL_DIRTY_STATE);
+		if (DEBUG) {
+			System.out.println(event);
+		}
+		event = new ModelLifecycleEvent(structuredModel, ModelLifecycleEvent.MODEL_DOCUMENT_CHANGED);
+		if (DEBUG) {
+			System.out.println(event);
+		}
+		/*        event = new ModelLifecycleEvent(structuredModel, ModelLifecycleEvent.MODEL_REINITIALIZED);
+		 if (DEBUG) {
+		 System.out.println(event);
+		 }
+		 event = new ModelLifecycleEvent(structuredModel, ModelLifecycleEvent.ADAPTERS_NOTIFIED);
+		 if (DEBUG) {
+		 System.out.println(event);
+		 }
+		 event = new ModelLifecycleEvent(structuredModel, ModelLifecycleEvent.MODEL_RELOADED);
+		 if (DEBUG) {
+		 System.out.println(event);
+		 }
+		 event = new ModelLifecycleEvent(structuredModel, ModelLifecycleEvent.MODEL_RESOURCE_DELETED);
+		 if (DEBUG) {
+		 System.out.println(event);
+		 }
+		 event = new ModelLifecycleEvent(structuredModel, ModelLifecycleEvent.MODEL_RESOURCE_MOVED);
+		 if (DEBUG) {
+		 System.out.println(event);
+		 }
+		 */
+		event = new ModelLifecycleEvent(structuredModel, ModelLifecycleEvent.MODEL_SAVED);
+		if (DEBUG) {
+			System.out.println(event);
+		}
+
+
+		// if gets to here without exception, assume ok.
+		assertTrue(true);
+
+
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/threading/TestOfThreadLocalImprovement.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/threading/TestOfThreadLocalImprovement.java
new file mode 100644
index 0000000..a193ad5
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/threading/TestOfThreadLocalImprovement.java
@@ -0,0 +1,187 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests.threading;
+
+import java.io.IOException;
+
+import junit.framework.TestCase;
+
+import org.eclipse.wst.sse.core.StructuredModelManager;
+import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
+import org.eclipse.wst.sse.core.internal.text.BasicStructuredDocument;
+
+
+/**
+ * To print out timings, set DEBUG_TEST to true, other wise, this test passes
+ * if no exceptions thrown.
+ */
+public class TestOfThreadLocalImprovement extends TestCase {
+	// number of times a pair of tests (with and without) thread local are 
+	// repeated (for more accurate averages).
+	int nTrials = 3;
+	IStructuredDocument fDocument = null;
+	private static final boolean DEBUG_TEST = false;
+	private static final boolean DEBUG_TEST_DETAIL = false;
+	// tests from 1 to MAX_TREADS-1 threads
+	private int MAX_THREADS = 5;
+	private long SLEEP_TIME = 0;
+
+	public TestOfThreadLocalImprovement() throws IOException {
+		super();
+	}
+
+	private final String getContent() {
+		return "<test>" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "</test>";
+	}
+
+	private IStructuredDocument getDocument(String content) throws IOException {
+		if (fDocument == null) {
+			IModelManager modelManager = StructuredModelManager.getModelManager();
+			fDocument = modelManager.createStructuredDocumentFor("testPerf.xml", content, null);
+		}
+		return fDocument;
+	}
+
+	void linkRunner(final Boolean direction, IStructuredDocument document) {
+		IStructuredDocument structuredDocument = document;
+		IStructuredDocumentRegion previousDocumentRegion = null;
+		long startTime = System.currentTimeMillis();
+		int start = 0;
+		int length = structuredDocument.getLength();
+		int nRegions = 0;
+		for (int i = start; i < length; i++) {
+			int index = i;
+			if (!direction.booleanValue()) {
+				index = (length - 1) - i;
+			}
+			IStructuredDocumentRegion currentDocumentRegion = structuredDocument.getRegionAtCharacterOffset(index);
+			if (currentDocumentRegion != previousDocumentRegion) {
+				nRegions++;
+				previousDocumentRegion = currentDocumentRegion;
+			}
+			Thread.yield();
+			try {
+				Thread.sleep(SLEEP_TIME);
+			}
+			catch (InterruptedException e) {
+				e.printStackTrace();
+			}
+		}
+		long endTime = System.currentTimeMillis();
+		if (DEBUG_TEST_DETAIL) {
+			System.out.println("Thread: " + Thread.currentThread() + "   from " + length + " characters, found " + nRegions + " regions in " + (endTime - startTime) + " msecs.");
+		}
+	}
+
+	private long dotestDocumentWalkingWithThreadLocal(int nThreads) throws IOException {
+		BasicStructuredDocument.setUSE_LOCAL_THREAD(true);
+		fDocument = getDocument(getContent());
+		long startTimeOverall = System.currentTimeMillis();
+		doDocumentWalking(nThreads);
+		long endTimeOverall = System.currentTimeMillis();
+		long finalOverall = endTimeOverall - startTimeOverall;
+		if (DEBUG_TEST_DETAIL) {
+			System.out.println("Overall time using Local_Thread: " + finalOverall);
+		}
+		return finalOverall;
+	}
+
+	private long dotestDocumentWalkingWithoutThreadLocal(int nThreads) throws IOException {
+		BasicStructuredDocument.setUSE_LOCAL_THREAD(false);
+		fDocument = getDocument(getContent());
+		long startTimeOverall = System.currentTimeMillis();
+		doDocumentWalking(nThreads);
+		long endTimeOverall = System.currentTimeMillis();
+		long finalOverall = endTimeOverall - startTimeOverall;
+		if (DEBUG_TEST_DETAIL) {
+			System.out.println("Overall time NOT using Local_Thread: " + finalOverall);
+		}
+		return finalOverall;
+	}
+
+	private void doDocumentWalking(int nThreads) throws IOException {
+		Thread[] threads = new Thread[nThreads];
+		boolean toggle = true;
+		for (int i = 0; i < threads.length; i++) {
+			final Boolean direction = new Boolean(toggle);
+			toggle = !toggle;
+			ThreadGroup threadGroup = new ThreadGroup("sse unit tests");
+			Thread thread = new Thread(threadGroup, new Runnable() {
+				public void run() {
+					linkRunner(direction, fDocument);
+				}
+			}, ("sse unit test thread " + i));
+			// I used MIN_PRIORITY since that makes it easier to "see" in debugger list of threads
+			thread.setPriority(Thread.MIN_PRIORITY);
+			threads[i] = thread;
+		}
+		for (int i = 0; i < threads.length; i++) {
+			threads[i].start();
+		}
+		try {
+			for (int i = 0; i < threads.length; i++) {
+				threads[i].join();
+
+			}
+		}
+		catch (InterruptedException e) {
+			e.printStackTrace();
+		}
+	}
+
+	public void testNThreads() throws IOException {
+		for (int i = 1; i < MAX_THREADS; i++) {
+			int nThreads = i;
+			if (DEBUG_TEST_DETAIL) {
+				System.out.println(" >>>>---- N Threads: " + i);
+			}
+			float woCumm = 0;
+			float wCumm = 0;
+
+			for (int j = 0; j < nTrials; j++) {
+				woCumm = woCumm + dotestDocumentWalkingWithoutThreadLocal(nThreads);
+				wCumm = wCumm + dotestDocumentWalkingWithThreadLocal(nThreads);
+			}
+			float averageWO = woCumm / nTrials;
+			float averageW = wCumm / nTrials;
+			float perThreadWO = averageWO / nThreads;
+			float perThreadW = averageW / nThreads;
+			int roundedWO = new Float(perThreadWO).intValue();
+			int roundedW = new Float(perThreadW).intValue();
+			if (DEBUG_TEST) {
+				System.out.println("Average per thread: without: " + roundedWO + " with: " + roundedW);
+				System.out.println(" <<<<<---- N Threads: " + i);
+			}
+		}
+		// if gets to here (with no exceptions) all is ok.
+		assertTrue(0 == 0);
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/threading/TestOfThreadLocalWithChanges.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/threading/TestOfThreadLocalWithChanges.java
new file mode 100644
index 0000000..23c643d
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/threading/TestOfThreadLocalWithChanges.java
@@ -0,0 +1,191 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests.threading;
+
+import java.io.IOException;
+import java.util.Random;
+
+import junit.framework.TestCase;
+
+import org.eclipse.wst.sse.core.StructuredModelManager;
+import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
+import org.eclipse.wst.sse.core.internal.text.BasicStructuredDocument;
+
+
+/**
+ * This class started off as copy of TestOfThreadLocalImprovements, and I just
+ * added another thread with modifies the document.
+ */
+public class TestOfThreadLocalWithChanges extends TestCase {
+	// number of times a pair of tests (with and without) thread local are
+	// repeated (for more accurate averages).
+	int nTrials = 3;
+	IStructuredDocument fDocument = null;
+	private static final boolean DEBUG_TEST_DETAIL = false;
+	// tests from 1 to MAX_TREADS-1 threads
+	private int MAX_THREADS = 14;
+	private long SLEEP_TIME = 2;
+	private int N_CHANGES = 10000;
+
+	public TestOfThreadLocalWithChanges() throws IOException {
+		super();
+	}
+
+	private final String getContent() {
+		return "<test>" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)"
+					+ "<extra> <junk> to make a <large/> file (over <1000> chars)" + "<extra> <junk> to make a <large/> file (over <1000> chars)" + "</test>";
+	}
+
+	private IStructuredDocument getDocument(String content) throws IOException {
+		if (fDocument == null) {
+			IModelManager modelManager = StructuredModelManager.getModelManager();
+			fDocument = modelManager.createStructuredDocumentFor("testPerf.xml", content, null);
+		}
+		return fDocument;
+	}
+
+	void linkRunner(final Boolean direction, IStructuredDocument document) {
+		IStructuredDocument structuredDocument = document;
+		IStructuredDocumentRegion previousDocumentRegion = null;
+		long startTime = System.currentTimeMillis();
+		int start = 0;
+		int length = structuredDocument.getLength();
+		int nRegions = 0;
+		// I made length "dynamic" after adding modification thread
+		for (int i = start; i < structuredDocument.getLength(); i++) {
+			int index = i;
+			if (!direction.booleanValue()) {
+				int currentLength = structuredDocument.getLength();
+				index = (currentLength - 1) - i;
+			}
+			IStructuredDocumentRegion currentDocumentRegion = structuredDocument.getRegionAtCharacterOffset(index);
+			if (currentDocumentRegion != previousDocumentRegion) {
+				nRegions++;
+				previousDocumentRegion = currentDocumentRegion;
+			}
+			Thread.yield();
+			try {
+				Thread.sleep(SLEEP_TIME);
+			}
+			catch (InterruptedException e) {
+				e.printStackTrace();
+			}
+		}
+		long endTime = System.currentTimeMillis();
+		if (DEBUG_TEST_DETAIL) {
+			System.out.println("Thread: " + Thread.currentThread() + "   from " + length + " characters, found " + nRegions + " regions in " + (endTime - startTime) + " msecs.");
+		}
+	}
+
+	private long dotestDocumentWalkingWithThreadLocal(int nThreads) throws IOException {
+		BasicStructuredDocument.setUSE_LOCAL_THREAD(true);
+		fDocument = getDocument(getContent());
+		long startTimeOverall = System.currentTimeMillis();
+		doDocumentWalking(nThreads);
+		long endTimeOverall = System.currentTimeMillis();
+		long finalOverall = endTimeOverall - startTimeOverall;
+		if (DEBUG_TEST_DETAIL) {
+			System.out.println("Overall time using Local_Thread: " + finalOverall);
+		}
+		return finalOverall;
+	}
+
+	private void doDocumentWalking(int nThreads) throws IOException {
+		Thread[] threads = new Thread[nThreads];
+		boolean toggle = true;
+		for (int i = 0; i < threads.length; i++) {
+			final Boolean direction = new Boolean(toggle);
+			// toggle controls whether moves from start to end, or end to start
+			// of document.
+			toggle = !toggle;
+			ThreadGroup threadGroup = new ThreadGroup("unit tests");
+			Thread thread = new Thread(threadGroup, new Runnable() {
+				public void run() {
+					linkRunner(direction, fDocument);
+				}
+			}, ("sse unit test thread " + i));
+			// I used MIN_PRIORITY since that makes it easier to "see" in
+			// debugger list of threads
+			thread.setPriority(Thread.MIN_PRIORITY);
+			threads[i] = thread;
+		}
+		for (int i = 0; i < threads.length; i++) {
+			threads[i].start();
+		}
+		// now that "readers" have started, we'll start a modification thread
+		// too
+		Thread modifyingThread = new Thread(new Runnable() {
+			public void run() {
+				modifiyDocument(fDocument);
+			}
+		}, ("sse unit test modification thread "));
+		// I used MAX_PRIORITY to be sure lots of modifications take place
+		modifyingThread.setPriority(Thread.MIN_PRIORITY);
+		modifyingThread.start();
+		try {
+			for (int i = 0; i < threads.length; i++) {
+				threads[i].join();
+			}
+			modifyingThread.join();
+		}
+		catch (InterruptedException e) {
+			e.printStackTrace();
+		}
+	}
+
+	void modifiyDocument(IStructuredDocument document) {
+		Random random = new Random();
+		for (int i = 0; i < N_CHANGES + 1; i++) {
+			int randomOffset = random.nextInt(document.getLength());
+			// 100 just seems like a good maximum length to replace
+			// (could play with in future).
+			int randomLength = random.nextInt(100);
+			// if we "accidently" get more than the length, just skipit
+			if (randomOffset + randomLength < document.getLength()) {
+				document.replaceText(this, randomOffset, randomLength, "testingtext");
+			}
+		}
+	}
+
+	public void testNThreads() throws IOException {
+		for (int i = 1; i < MAX_THREADS; i++) {
+			int nThreads = i;
+			if (DEBUG_TEST_DETAIL) {
+				System.out.println(" >>>>---- N Threads: " + i);
+			}
+			float wCumm = 0;
+			for (int j = 0; j < nTrials; j++) {
+				wCumm = wCumm + dotestDocumentWalkingWithThreadLocal(nThreads);
+			}
+		}
+		// if gets to here (with no exceptions) all is ok.
+		assertTrue(0 == 0);
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/threading/ThreadLocalExample.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/threading/ThreadLocalExample.java
new file mode 100644
index 0000000..747d01f
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/threading/ThreadLocalExample.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests.threading;
+
+import java.util.Random;
+
+/**
+ * See http://java.sun.com/developer/JDCTechTips/2003/tt1208.html#2 for
+ * informative article.
+ */
+public class ThreadLocalExample {
+
+	// Create thread local class
+	// Initial value is a random number from 0-999
+	private static class MyThreadLocal extends ThreadLocal {
+		private Random innerRandom = new Random();
+
+		protected Object initialValue() {
+			return new Integer(innerRandom.nextInt(1000));
+		}
+	}
+
+	// Create class variable
+	static volatile int counter = 0;
+
+	// Define/create thread local variable
+	static ThreadLocal threadLocal = new MyThreadLocal();
+
+	// For random number generation
+	// static Random random = new Random();
+
+	// Displays thread local variable, counter,
+	// and thread name
+	static void displayValues() {
+		System.out.println(threadLocal.get() + "\t" + counter + "\t" + Thread.currentThread().getName());
+	}
+
+	public static void main(String args[]) {
+
+		// Each thread increments counter
+		// Displays variable info
+		// And sleeps for the random amount of time
+		// Before displaying info again
+		Runnable runner = new Runnable() {
+			public void run() {
+				synchronized (ThreadLocalExample.class) {
+					counter++;
+				}
+				displayValues();
+				try {
+					Thread.sleep(((Integer) threadLocal.get()).intValue());
+					displayValues();
+				}
+				catch (InterruptedException e) {
+					e.printStackTrace();
+				}
+			}
+		};
+
+		// Another instance of class created
+		// and values displayed
+		displayValues();
+
+		// Here's where the other threads
+		// are actually created
+		for (int i = 0; i < 5; i++) {
+			Thread t = new Thread(runner);
+			t.start();
+		}
+	}
+
+	/**
+	 *  
+	 */
+	public ThreadLocalExample() {
+		super();
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/threading/ThreadLocalInstanceExample.java b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/threading/ThreadLocalInstanceExample.java
new file mode 100644
index 0000000..5d08f59
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/src/org/eclipse/wst/sse/core/tests/threading/ThreadLocalInstanceExample.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.core.tests.threading;
+
+import java.util.Random;
+
+/**
+ * See http://java.sun.com/developer/JDCTechTips/2003/tt1208.html#2 for
+ * informative article.
+ */
+public class ThreadLocalInstanceExample {
+
+	// Create thread local class
+	// Initial value is a random number from 0-999
+	private class MyThreadLocal extends ThreadLocal {
+		private Random innerRandom = new Random();
+
+		protected Object initialValue() {
+			return new Integer(innerRandom.nextInt(1000));
+		}
+	}
+
+	// Create class variable
+	static volatile int counter = 0;
+
+	// Define/create thread local variable
+	ThreadLocal threadLocal = new MyThreadLocal();
+
+	// For random number generation
+	// static Random random = new Random();
+
+	// Displays thread local variable, counter,
+	// and thread name
+	void displayValues() {
+		System.out.println(threadLocal.get() + "\t" + counter + "\t" + Thread.currentThread().getName());
+	}
+
+	public static void main(String args[]) {
+		new ThreadLocalInstanceExample().startRun();
+	}
+
+	private void startRun() {
+
+		// Each thread increments counter
+		// Displays variable info
+		// And sleeps for the random amount of time
+		// Before displaying info again
+		Runnable runner = new Runnable() {
+			public void run() {
+				synchronized (this) {
+					counter++;
+				}
+				displayValues();
+				try {
+					Thread.sleep(((Integer) threadLocal.get()).intValue());
+					displayValues();
+				}
+				catch (InterruptedException e) {
+					e.printStackTrace();
+				}
+			}
+		};
+
+		// Another instance of class created
+		// and values displayed
+		displayValues();
+
+		// Here's where the other threads
+		// are actually created
+		for (int i = 0; i < 5; i++) {
+			Thread t = new Thread(runner);
+			t.start();
+		}
+	}
+
+	/**
+	 *  
+	 */
+	public ThreadLocalInstanceExample() {
+		super();
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.core.tests/test.xml b/tests/org.eclipse.wst.sse.core.tests/test.xml
new file mode 100644
index 0000000..024ba6d
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.core.tests/test.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0"?>
+
+<project
+	name="testsuite"
+	default="run"
+	basedir=".">
+	<!-- The property ${eclipse-home} should be passed into this script -->
+	<!-- Set a meaningful default value for when it is not. -->
+	<!-- <property name="eclipse-home" value="${basedir}\..\.." /> -->
+
+	<echo message="basedir ${basedir}" />
+	<echo message="eclipse place ${eclipse-home}" />
+
+	<!-- sets the properties plugin-name, and library-file -->
+	<property
+		name="plugin-name"
+		value="org.eclipse.wst.sse.core.tests" />
+	<property
+		name="library-file"
+		value="${eclipse-home}/plugins/org.eclipse.test_3.1.0/library.xml" />
+	<property
+		name="workspace"
+		value="${eclipse-home}/junitworkspace-${plugin-name}" />
+	<!-- This target holds all initialization code that needs to be done for -->
+	<!-- all tests that are to be run. Initialization for individual tests -->
+	<!-- should be done within the body of the suite target. -->
+	<target name="init">
+		<tstamp />
+		<delete>
+			<fileset
+				dir="${eclipse-home}"
+				includes="org.eclipse.wst.sse.core.tests.*xml" />
+		</delete>
+	</target>
+
+	<!-- This target defines the tests that need to be run. -->
+	<target name="suite">
+		<property
+			name="wst-folder"
+			value="${eclipse-home}/wst_folder" />
+		<delete
+			dir="${wst-folder}"
+			quiet="true" />
+		<ant
+			target="core-test"
+			antfile="${library-file}"
+			dir="${eclipse-home}">
+			<property
+				name="data-dir"
+				value="${wst-folder}" />
+			<property
+				name="plugin-name"
+				value="${plugin-name}" />
+			<property
+				name="classname"
+				value="org.eclipse.wst.sse.core.tests.SSEModelTestSuite" />
+			<property
+				name="plugin-path"
+				value="${eclipse-home}/plugins/${plugin-name}" />
+		</ant>
+	</target>
+
+	<!-- This target holds code to cleanup the testing environment after -->
+	<!-- after all of the tests have been run. You can use this target to -->
+	<!-- delete temporary files that have been created. -->
+	<target name="cleanup">
+		<!--<delete dir="${workspace}" quiet="true" />-->
+	</target>
+
+	<!-- This target runs the test suite. Any actions that need to happen -->
+	<!-- after all the tests have been run should go here. -->
+	<target
+		name="run"
+		depends="init,suite,cleanup">
+		<ant
+			target="collect"
+			antfile="${library-file}"
+			dir="${eclipse-home}">
+			<property
+				name="includes"
+				value="org.eclipse.wst.sse.core.tests.*xml" />
+			<property
+				name="output-file"
+				value="${plugin-name}.xml" />
+		</ant>
+		<!--		<emailResults resultsFile="${build-results-home}/${plugin-name}.xml" addresslist="david_williams@us.ibm.com" /> -->
+	</target>
+
+</project>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.ui.tests/.cvsignore b/tests/org.eclipse.wst.sse.ui.tests/.cvsignore
new file mode 100644
index 0000000..f72a1d8
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/.cvsignore
@@ -0,0 +1,4 @@
+bin
+build.xml
+temp.folder
+sseeditortests.jar
diff --git a/tests/org.eclipse.wst.sse.ui.tests/.project b/tests/org.eclipse.wst.sse.ui.tests/.project
new file mode 100644
index 0000000..0b072b9
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/.project
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.wst.sse.ui.tests</name>
+	<comment></comment>
+	<projects></projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/tests/org.eclipse.wst.sse.ui.tests/.settings/org.eclipse.core.resources.prefs b/tests/org.eclipse.wst.sse.ui.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..afa5c91
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+#Tue Apr 04 03:36:32 EDT 2006
+eclipse.preferences.version=1
+encoding/<project>=ISO-8859-1
diff --git a/tests/org.eclipse.wst.sse.ui.tests/.settings/org.eclipse.core.runtime.prefs b/tests/org.eclipse.wst.sse.ui.tests/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..7ec5750
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,3 @@
+#Mon Apr 17 01:48:39 EDT 2006
+eclipse.preferences.version=1
+line.separator=\r\n
diff --git a/tests/org.eclipse.wst.sse.ui.tests/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.wst.sse.ui.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..5f7bac7
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,80 @@
+#Sat Aug 19 16:31:43 EDT 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=error
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=enabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=ignore
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+org.eclipse.jdt.core.compiler.problem.unusedLabel=error
+org.eclipse.jdt.core.compiler.problem.unusedLocal=error
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.3
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/tests/org.eclipse.wst.sse.ui.tests/.settings/org.eclipse.jdt.ui.prefs b/tests/org.eclipse.wst.sse.ui.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..301c7ad
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,4 @@
+#Mon Apr 17 01:48:39 EDT 2006
+eclipse.preferences.version=1
+internal.default.compliance=default
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?>\r\n<templates/>
diff --git a/tests/org.eclipse.wst.sse.ui.tests/.settings/org.eclipse.ltk.core.refactoring.prefs b/tests/org.eclipse.wst.sse.ui.tests/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..c59368c
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Tue Apr 04 03:36:32 EDT 2006
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/tests/org.eclipse.wst.sse.ui.tests/.settings/org.eclipse.pde.prefs b/tests/org.eclipse.wst.sse.ui.tests/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..fc522bb
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,16 @@
+#Mon Apr 17 02:01:33 EDT 2006
+compilers.incompatible-environment=0
+compilers.p.build=0
+compilers.p.deprecated=1
+compilers.p.illegal-att-value=0
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=0
+compilers.p.unknown-attribute=0
+compilers.p.unknown-class=0
+compilers.p.unknown-element=0
+compilers.p.unknown-resource=0
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.p.unused-element-or-attribute=0
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/tests/org.eclipse.wst.sse.ui.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.wst.sse.ui.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..3aadc77
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name.0
+Bundle-SymbolicName: org.eclipse.wst.sse.ui.tests; singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: sseeditortests.jar
+Bundle-Activator: org.eclipse.wst.sse.ui.tests.SSETestsPlugin
+Bundle-Vendor: %Bundle-Vendor.0
+Bundle-Localization: plugin
+Export-Package: org.eclipse.wst.sse.ui.tests,
+ org.eclipse.wst.sse.ui.tests.viewer
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.ui.ide,
+ org.eclipse.wst.sse.ui,
+ org.eclipse.wst.sse.core,
+ org.junit,
+ org.eclipse.core.resources,
+ org.eclipse.ui.workbench.texteditor,
+ org.eclipse.ui.editors,
+ org.eclipse.jface.text,
+ org.eclipse.core.runtime,
+ org.eclipse.wst.common.modulecore,
+ com.ibm.icu
+Eclipse-LazyStart: true
diff --git a/tests/org.eclipse.wst.sse.ui.tests/about.html b/tests/org.eclipse.wst.sse.ui.tests/about.html
new file mode 100644
index 0000000..4ec5989
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/tests/org.eclipse.wst.sse.ui.tests/build.properties b/tests/org.eclipse.wst.sse.ui.tests/build.properties
new file mode 100644
index 0000000..5a7f41d
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/build.properties
@@ -0,0 +1,17 @@
+###############################################################################
+# Copyright (c) 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
+###############################################################################
+source.sseeditortests.jar = src/
+output.sseeditortests.jar = bin/
+bin.includes = plugin.xml,\
+               sseeditortests.jar,\
+               test.xml,\
+               META-INF/,\
+               about.html
diff --git a/tests/org.eclipse.wst.sse.ui.tests/icons/sourceEditor.gif b/tests/org.eclipse.wst.sse.ui.tests/icons/sourceEditor.gif
new file mode 100644
index 0000000..75ebdb8
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/icons/sourceEditor.gif
Binary files differ
diff --git a/tests/org.eclipse.wst.sse.ui.tests/plugin.properties b/tests/org.eclipse.wst.sse.ui.tests/plugin.properties
new file mode 100644
index 0000000..9f4e1fb
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/plugin.properties
@@ -0,0 +1,8 @@
+# properties file for org.eclipse.wst.sse.ui.tests
+Bundle-Vendor.0 = Eclipse.org
+Bundle-Name.0 = Structured Source Editor Tests
+editor.name.0 = Generic Structured Text Editor
+category.name.0 = SSE Testing
+view.name.0 = ExtendedStorageEditorInput Management Tester
+view.name.1 = Action Tester
+action.label.0 = org.eclipse.ui.popupMenus Test Action
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.ui.tests/plugin.xml b/tests/org.eclipse.wst.sse.ui.tests/plugin.xml
new file mode 100644
index 0000000..7e00f81
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/plugin.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+
+	<extension point="org.eclipse.ui.editors">
+		<editor
+			name="%editor.name.0"
+			extensions="project, classpath, websettings, serverPreference"
+			icon="$nl$/icons/sourceEditor.gif"
+			class="org.eclipse.wst.sse.ui.StructuredTextEditor"
+			contributorClass="org.eclipse.wst.sse.ui.internal.actions.ActionContributor"
+			id="org.eclipse.wst.sse.ui.StructuredTextEditor.test">
+		</editor>
+	</extension>
+	
+	<!-- Editor actionsets -->
+	<extension point="org.eclipse.ui.actionSetPartAssociations">
+		<actionSetPartAssociation
+			targetID="org.eclipse.ui.edit.text.actionSet.annotationNavigation">
+			<part
+				id="org.eclipse.wst.sse.ui.StructuredTextEditor.test">
+			</part>
+		</actionSetPartAssociation>
+		<actionSetPartAssociation
+			targetID="org.eclipse.ui.NavigateActionSet">
+			<part
+				id="org.eclipse.wst.sse.ui.StructuredTextEditor.test">
+			</part>
+		</actionSetPartAssociation>
+	</extension>
+
+	<extension point="org.eclipse.ui.views">
+		<category
+			name="%category.name.0"
+			id="org.eclipse.wst.sse.ui.tests">
+		</category>
+		<view
+			name="%view.name.0"
+			category="org.eclipse.wst.sse.ui.tests"
+			class="org.eclipse.wst.sse.ui.tests.ExtendedStorageEditorInputView"
+			id="org.eclipse.wst.sse.ui.tests.ExtendedStorageEditorInputView">
+		</view>
+		<view
+			name="%view.name.1"
+			category="org.eclipse.wst.sse.ui.tests"
+			class="org.eclipse.wst.sse.ui.tests.ActionTestView"
+			id="org.eclipse.wst.sse.ui.tests.ActionTestView">
+		</view>
+	</extension>
+
+	<extension point="org.eclipse.ui.popupMenus">
+		<viewerContribution
+			targetID="org.eclipse.wst.sse.ui.StructuredTextEditor.EditorContext"
+			id="org.eclipse.wst.sse.ui.tests.test">
+			<action
+				label="%action.label.0"
+				class="org.eclipse.wst.sse.ui.tests.TestActionDelegate"
+				menubarPath="additions"
+				id="org.eclipse.wst.sse.ui.tests.test.1" />
+		</viewerContribution>
+	</extension>
+
+	<extension point="org.eclipse.wst.sse.ui.editorConfiguration">
+		<provisionalConfiguration
+			type="linestyleprovider"
+			class="org.eclipse.wst.sse.ui.tests.TestLineStyleProvider"
+			target="org.eclipse.wst.html.SCRIPT.language.BLUE" />
+		<provisionalConfiguration
+			type="linestyleprovider"
+			class="org.eclipse.wst.sse.ui.tests.TestLineStyleProvider"
+			target="org.eclipse.wst.html.SCRIPT.type.TEXT/BLUE" />
+		<provisionalConfiguration
+			type="linestyleprovider"
+			class="org.eclipse.wst.sse.ui.tests.TestLineStyleProvider"
+			target="org.eclipse.jst.jsp.SCRIPT.BLUE" />
+	</extension>
+	
+</plugin>
diff --git a/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/ActionTestView.java b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/ActionTestView.java
new file mode 100644
index 0000000..1c8c7f7
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/ActionTestView.java
@@ -0,0 +1,172 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.ui.tests;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.text.Document;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.jface.text.TextViewer;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.ISelectionListener;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.part.ViewPart;
+import org.eclipse.ui.texteditor.ITextEditor;
+import org.eclipse.wst.common.componentcore.ComponentCore;
+import org.eclipse.wst.common.componentcore.resources.IVirtualResource;
+
+
+/**
+ * @author nitin
+ * 
+ * A view to hang actions off of to execute arbitrary code at arbitrary times.
+ */
+public class ActionTestView extends ViewPart {
+
+	private class ComponentViewer extends Action {
+		public void run() {
+			super.run();
+			if (fSelection != null && !fSelection.isEmpty() && fSelection instanceof IStructuredSelection) {
+				IStructuredSelection selection = (IStructuredSelection) fSelection;
+				if (selection.getFirstElement() instanceof IResource) {
+					IResource resource = (IResource) selection.getFirstElement();
+					IVirtualResource[] virtualResources = ComponentCore.createResources(resource.getProject());
+					// Only return results for Flexible projects
+					if (virtualResources != null) {
+						for (int i = 0; i < virtualResources.length; i++) {
+							System.out.println(virtualResources[i].getComponent().getRootFolder().getWorkspaceRelativePath());
+						}
+					}
+				}
+			}
+		}
+	}
+
+	class EmptyTextSetter extends Action {
+		public EmptyTextSetter() {
+			super("Set Text Editor text to empty");
+			setToolTipText("Set Text Editor text to empty using set() API");
+		}
+
+		public void run() {
+			super.run();
+			IEditorPart editor = getViewSite().getPage().getActiveEditor();
+			ITextEditor textEditor = null;
+			if (editor instanceof ITextEditor)
+				textEditor = (ITextEditor) editor;
+			else
+				textEditor = (ITextEditor) editor.getAdapter(ITextEditor.class);
+			if (textEditor != null) {
+				IDocument document = textEditor.getDocumentProvider().getDocument(editor.getEditorInput());
+				document.set("");
+			}
+			else {
+				print("Error getting IDocument.\n");
+			}
+		}
+	}
+
+	Control fControl = null;
+
+	ISelection fSelection;
+	private ISelectionListener fSelectionListener;
+
+	private List createActions() {
+		List actions = new ArrayList();
+
+		actions.add(new EmptyTextSetter());
+		actions.add(new ComponentViewer());
+		return actions;
+	}
+
+	/**
+	 * @return
+	 */
+	private List createContribututions() {
+		List actions = new ArrayList();
+		return actions;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IWorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
+	 */
+	public void createPartControl(Composite parent) {
+		ITextViewer text = new TextViewer(parent, SWT.READ_ONLY);
+		text.setDocument(new Document());
+		fControl = text.getTextWidget();
+		text.getDocument().set("Use either the toolbar or the menu to run your actions\n\n");
+	}
+
+	private ISelectionListener getSelectionListener() {
+		if (fSelectionListener == null) {
+			fSelectionListener = new ISelectionListener() {
+				public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+					fSelection = selection;
+				}
+			};
+		}
+		return fSelectionListener;
+	}
+
+
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IViewPart#init(org.eclipse.ui.IViewSite)
+	 */
+	public void init(IViewSite site) throws PartInitException {
+		super.init(site);
+		List actions = createActions();
+		for (int i = 0; i < actions.size(); i++) {
+			site.getActionBars().getToolBarManager().add((IAction) actions.get(i));
+			site.getActionBars().getMenuManager().add((IAction) actions.get(i));
+		}
+		List contributions = createContribututions();
+		for (int i = 0; i < contributions.size(); i++) {
+			site.getActionBars().getToolBarManager().add((IContributionItem) contributions.get(i));
+			site.getActionBars().getMenuManager().add((IContributionItem) contributions.get(i));
+		}
+		site.getWorkbenchWindow().getSelectionService().addPostSelectionListener(getSelectionListener());
+	}
+
+	void print(String s) {
+		((StyledText) fControl).append(s);
+	}
+
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IWorkbenchPart#setFocus()
+	 */
+	public void setFocus() {
+		if (fControl != null && !fControl.isDisposed()) {
+			fControl.setFocus();
+		}
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/CommonEditorPreferencesTest.java b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/CommonEditorPreferencesTest.java
new file mode 100644
index 0000000..a442c0d
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/CommonEditorPreferencesTest.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2005 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.wst.sse.ui.tests;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.wst.sse.ui.internal.SSEUIPlugin;
+import org.eclipse.wst.sse.ui.internal.provisional.preferences.CommonEditorPreferenceNames;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleException;
+
+/**
+ * The purpose of this test is to verify the validity of the
+ * StructuredTextEditor's common editor preferences. Tests include
+ * setting/getting preferences.
+ * 
+ * NOTE: This test should be preformed on a clean workspace. If performed on
+ * an existing workspace, this test will manipulate preferences in the
+ * workspace, though attempts will be made to restore original values after
+ * testing.
+ */
+public class CommonEditorPreferencesTest extends TestCase {
+	/**
+	 * Tests existance of preference values when getting preference values
+	 * through Platform.getPreferencesService()
+	 */
+	public void testBundleGetPreferences() {
+		final String bundleName = "org.eclipse.wst.sse.ui";
+
+		// need to start up bundle for default values to be loaded
+		Bundle bundle = Platform.getBundle(bundleName);
+		try {
+			if (bundle != null)
+				bundle.start();
+			else
+				fail("Get preference value failed because could not find bundle: " + bundleName);
+		} catch (BundleException e) {
+			fail("Get preference value failed because of exception starting bundle: " + bundleName + " exception: " + e);
+		}
+
+		bundleGetPreference(bundleName, CommonEditorPreferenceNames.EVALUATE_TEMPORARY_PROBLEMS);
+	}
+	
+	private void bundleGetPreference(String bundleName, String prefKey) {
+		String defaultValue = Long.toString(System.currentTimeMillis());	// random string
+		
+		String value = Platform.getPreferencesService().getString(bundleName, prefKey, defaultValue, null);
+		assertNotSame("Get preference value failed using Platform.getPreferencesService. Key: "+prefKey, defaultValue, value);		
+	}
+
+	/**
+	 * Tests default values of preferences.
+	 * 
+	 * NOTE: Expected default values are hard-coded, so if default values do
+	 * get changed, assertions need to be updated as well
+	 */
+	public void testPluginGetDefaultPreferences() {
+		IPreferenceStore store = SSEUIPlugin.getDefault().getPreferenceStore();
+		
+		pluginGetDefaultPreference(store, CommonEditorPreferenceNames.EVALUATE_TEMPORARY_PROBLEMS, Boolean.toString(true));
+	}
+	
+	private void pluginGetDefaultPreference(IPreferenceStore store, String prefKey, String expected) {
+		String defaultValue = store.getDefaultString(prefKey);
+		assertEquals("Get default preference value failed using plugin.getPreferenceStore. Key: "+prefKey, expected, defaultValue);
+	}
+
+	/**
+	 * Tests setting preference values by setting preference value to be a
+	 * certain value, then getting the preference value to verify it was set.
+	 */
+	public void testPluginSetPreferences() {
+		IPreferenceStore store = SSEUIPlugin.getDefault().getPreferenceStore();
+		
+		pluginSetPreferenceBoolean(store, CommonEditorPreferenceNames.EVALUATE_TEMPORARY_PROBLEMS);
+	}
+	
+	private void pluginSetPreferenceBoolean(IPreferenceStore store, String prefKey) {
+		boolean originalValue = store.getBoolean(prefKey);
+		boolean expectedValue = !originalValue;
+		store.setValue(prefKey, expectedValue);
+		boolean foundValue = store.getBoolean(prefKey);
+		assertEquals("Set preference value failed using plugin.getPreferenceStore. Key: "+prefKey+"  expected: " + expectedValue + " found: " + foundValue, expectedValue, foundValue);
+
+		// attempt to restore original preference value
+		store.setValue(prefKey, originalValue);
+	}
+}
diff --git a/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/ExtendedStorageEditorInputView.java b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/ExtendedStorageEditorInputView.java
new file mode 100644
index 0000000..f0d320e
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/ExtendedStorageEditorInputView.java
@@ -0,0 +1,820 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.ui.tests;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Vector;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IStorage;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.ui.IEditorDescriptor;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorRegistry;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.IPersistableElement;
+import org.eclipse.ui.IReusableEditor;
+import org.eclipse.ui.IStorageEditorInput;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.ResourceSelectionDialog;
+import org.eclipse.ui.editors.text.EditorsUI;
+import org.eclipse.ui.model.WorkbenchLabelProvider;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ViewPart;
+import org.eclipse.ui.texteditor.IElementStateListener;
+import org.eclipse.ui.texteditor.IUpdate;
+import org.eclipse.wst.sse.core.utils.StringUtils;
+import org.eclipse.wst.sse.ui.internal.SSEUIPlugin;
+import org.eclipse.wst.sse.ui.internal.provisional.extensions.breakpoint.IExtendedStorageEditorInput;
+
+
+/**
+ * @author nitin
+ * 
+ * A view to assist in testing out StructuredTextEditor's IEditorInput
+ * handling.
+ * 
+ * Permanently in-progress.
+ */
+public class ExtendedStorageEditorInputView extends ViewPart {
+	/**
+	 * Adds an IFileEditorInput to the list of inputs with which to test
+	 */
+	class AddFileInputAction extends Action {
+		public AddFileInputAction() {
+			super("Add FileEditorInput");
+		}
+
+		public void run() {
+			super.run();
+			ResourceSelectionDialog dlg = new ResourceSelectionDialog(fInputList.getControl().getShell(), ResourcesPlugin.getWorkspace().getRoot(), "Choose");
+			int retval = dlg.open();
+			if (retval == Window.OK) {
+				Object[] files = dlg.getResult();
+				for (int i = 0; i < files.length; i++) {
+					fInputs.add(new FileEditorInput((IFile) files[i]));
+				}
+				fInputList.refresh(true);
+			}
+		}
+	}
+
+	/**
+	 * Adds an IStorageEditorInput to the list of inputs with which to test
+	 */
+	class AddStorageInputAction extends Action {
+		public AddStorageInputAction() {
+			super("Add StorageEditorInput");
+		}
+
+		public void run() {
+			super.run();
+			FileDialog dlg = new FileDialog(fInputList.getControl().getShell());
+			String fileName = dlg.open();
+			if (fileName != null) {
+				fInputs.add(new FileBasedStorageEditorInput(new File(fileName)));
+				fInputList.refresh(true);
+			}
+		}
+	}
+
+	/**
+	 * Handler for double-click 
+	 */
+	class DoubleClickListener implements IDoubleClickListener {
+		public void doubleClick(DoubleClickEvent event) {
+			new InputOpenAction().run();
+		}
+	}
+
+	class EditorInputLabelProvider implements ITableLabelProvider {
+		ILabelProvider baseProvider = new WorkbenchLabelProvider();
+
+		public void addListener(ILabelProviderListener listener) {
+			// not implemented
+		}
+
+		public void dispose() {
+			// no need
+		}
+
+		public Image getColumnImage(Object element, int columnIndex) {
+			if (element instanceof IFileEditorInput && columnIndex == 0) {
+				return baseProvider.getImage(((IFileEditorInput) element).getFile());
+			}
+			return null;
+		}
+
+		public String getColumnText(Object element, int columnIndex) {
+			IEditorInput input = (IEditorInput) element;
+			String text = null;
+			switch (columnIndex) {
+				case 0 :
+					try {
+						if (element instanceof FileBasedStorageEditorInput) {
+							IPath fullpath = ((FileBasedStorageEditorInput) element).getStorage().getFullPath();
+							text = fullpath != null ? fullpath.toString() : ((FileBasedStorageEditorInput) element).getName();
+							if (((FileBasedStorageEditorInput) element).isDirty()) {
+								text = "*" + text;
+							}
+						}
+						else if (element instanceof IFileEditorInput) {
+							text = ((IFileEditorInput) element).getFile().getFullPath().toString();
+						}
+					}
+					catch (CoreException e) {
+						e.printStackTrace();
+					}
+
+					break;
+				case 1 :
+					if (element instanceof FileBasedStorageEditorInput) {
+						text = "FileBasedStorageEditorInput";
+					}
+					else if (element instanceof IFileEditorInput) {
+						text = "FileEditorInput";
+					}
+					else {
+						text = input.getClass().getName();
+					}
+					break;
+			}
+			if (text == null)
+				text = "";
+			return text;
+		}
+
+		public boolean isLabelProperty(Object element, String property) {
+			return false;
+		}
+
+		public void removeListener(ILabelProviderListener listener) {
+			// not implemented
+		}
+	}
+
+
+	class FileBackedStorage implements IStorage {
+		File fFile = null;
+
+		FileBackedStorage(File file) {
+			super();
+			fFile = file;
+		}
+
+		boolean exists() {
+			return fFile.exists();
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
+		 */
+		public Object getAdapter(Class adapter) {
+			return null;
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.eclipse.core.resources.IStorage#getContents()
+		 */
+		public InputStream getContents() throws CoreException {
+			InputStream contents = null;
+			try {
+				contents = new FileInputStream(fFile);
+				ByteBuffer buffer = ByteBuffer.allocate((int) fFile.length());
+				byte[] bytes = new byte[2048];
+				while (contents.available() > 0) {
+					int count = contents.read(bytes);
+					buffer.put(bytes, 0, count);
+				}
+				contents.close();
+
+				contents = new ByteArrayInputStream(buffer.array());
+			}
+			catch (FileNotFoundException e) {
+				contents = new ByteArrayInputStream(new byte[0]);
+			}
+			catch (IOException e) {
+				contents = new ByteArrayInputStream(new byte[0]);
+			}
+			return contents;
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.eclipse.core.resources.IStorage#getFullPath()
+		 */
+		public IPath getFullPath() {
+			if (provideIStorageFullPath) {
+				return new Path(fFile.getAbsolutePath());
+			}
+			return null;
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.eclipse.core.resources.IStorage#getName()
+		 */
+		public String getName() {
+			return fFile.getName();
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.eclipse.core.resources.IStorage#isReadOnly()
+		 */
+		public boolean isReadOnly() {
+			return true;
+		}
+	}
+
+	class FileBasedStorageEditorInput implements IExtendedStorageEditorInput {
+		List fElementStateListeners = new Vector(0);
+		boolean fIsDirty = false;
+		FileBackedStorage fStorage = null;
+
+		FileBasedStorageEditorInput(File file) {
+			fStorage = new FileBackedStorage(file);
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.eclipse.wst.sse.ui.extensions.breakpoint.IExtendedStorageEditorInput#addElementStateListener(org.eclipse.ui.texteditor.IElementStateListener)
+		 */
+		public void addElementStateListener(IElementStateListener listener) {
+			fElementStateListeners.add(listener);
+		}
+
+		void elementContentAboutToBeReplaced() {
+			for (int i = 0; i < fElementStateListeners.size(); i++) {
+				((IElementStateListener) fElementStateListeners.get(i)).elementContentAboutToBeReplaced(FileBasedStorageEditorInput.this);
+			}
+		}
+
+		void elementContentReplaced() {
+			for (int i = 0; i < fElementStateListeners.size(); i++) {
+				((IElementStateListener) fElementStateListeners.get(i)).elementContentReplaced(FileBasedStorageEditorInput.this);
+			}
+		}
+
+		void elementDeleted() {
+			for (int i = 0; i < fElementStateListeners.size(); i++) {
+				((IElementStateListener) fElementStateListeners.get(i)).elementDeleted(FileBasedStorageEditorInput.this);
+			}
+		}
+
+		void elementDirtyStateChanged(boolean dirty) {
+			setDirty(dirty);
+			for (int i = 0; i < fElementStateListeners.size(); i++) {
+				((IElementStateListener) fElementStateListeners.get(i)).elementDirtyStateChanged(FileBasedStorageEditorInput.this, dirty);
+			}
+		}
+
+		void elementMoved(Object oldElement, Object newElement) {
+			for (int i = 0; i < fElementStateListeners.size(); i++) {
+				((IElementStateListener) fElementStateListeners.get(i)).elementMoved(FileBasedStorageEditorInput.this, FileBasedStorageEditorInput.this);
+			}
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.eclipse.ui.IEditorInput#exists()
+		 */
+		public boolean exists() {
+			return fStorage.exists();
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
+		 */
+		public Object getAdapter(Class adapter) {
+			return null;
+		}
+
+		File getFile() {
+			return fStorage.fFile;
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.eclipse.ui.IEditorInput#getImageDescriptor()
+		 */
+		public ImageDescriptor getImageDescriptor() {
+			return null;
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.eclipse.ui.IEditorInput#getName()
+		 */
+		public String getName() {
+			return fStorage.getName();
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.eclipse.ui.IEditorInput#getPersistable()
+		 */
+		public IPersistableElement getPersistable() {
+			return null;
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.eclipse.ui.IStorageEditorInput#getStorage()
+		 */
+		public IStorage getStorage() throws CoreException {
+			return fStorage;
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.eclipse.ui.IEditorInput#getToolTipText()
+		 */
+		public String getToolTipText() {
+			return fStorage.getFullPath() != null ? fStorage.getFullPath().toString() : fStorage.getName();
+		}
+
+		boolean isDirty() {
+			return fIsDirty;
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.eclipse.wst.sse.ui.extensions.breakpoint.IExtendedStorageEditorInput#removeElementStateListener(org.eclipse.ui.texteditor.IElementStateListener)
+		 */
+		public void removeElementStateListener(IElementStateListener listener) {
+			fElementStateListeners.remove(listener);
+		}
+
+		void setDirty(boolean dirty) {
+			fIsDirty = dirty;
+		}
+	}
+
+	class InputChangeDirtyStateAction extends Action implements IUpdate {
+		public InputChangeDirtyStateAction() {
+			super("Toggle dirty flag");
+		}
+
+		public void run() {
+			super.run();
+			IEditorInput[] inputs = getSelectedInputs();
+			for (int i = 0; i < inputs.length; i++) {
+				if (inputs[i] instanceof FileBasedStorageEditorInput) {
+					((FileBasedStorageEditorInput) inputs[i]).elementDirtyStateChanged(!((FileBasedStorageEditorInput) inputs[i]).isDirty());
+				}
+			}
+			fInputList.refresh(true);
+		}
+
+		public void update() {
+			setEnabled(fSelectedElement != null && fSelectedElement instanceof FileBasedStorageEditorInput);
+		}
+	}
+
+	class InputDeleteAction extends Action implements IUpdate {
+		public InputDeleteAction() {
+			super("Delete Input");
+		}
+
+		public void run() {
+			super.run();
+			IEditorInput[] inputs = getSelectedInputs();
+			for (int i = 0; i < inputs.length; i++) {
+				if (inputs[i] instanceof FileBasedStorageEditorInput) {
+					((FileBasedStorageEditorInput) inputs[i]).elementDeleted();
+				}
+			}
+			for (int i = 0; i < inputs.length; i++) {
+				fInputs.remove(inputs[i]);
+			}
+			fInputList.refresh();
+		}
+
+		public void update() {
+			setEnabled(fSelectedElement != null && fSelectedElement instanceof FileBasedStorageEditorInput);
+		}
+	}
+
+	class InputMoveAction extends Action implements IUpdate {
+		public InputMoveAction() {
+			super("Move Input");
+		}
+
+		public void run() {
+			super.run();
+			IEditorInput[] inputs = getSelectedInputs();
+			for (int i = 0; i < inputs.length; i++) {
+				if (inputs[i] instanceof FileBasedStorageEditorInput) {
+					((FileBasedStorageEditorInput) inputs[i]).elementMoved(inputs[i], inputs[i]);
+				}
+			}
+		}
+
+		public void update() {
+			setEnabled(fSelectedElement != null && fSelectedElement instanceof FileBasedStorageEditorInput);
+		}
+	}
+
+	class InputOpenAction extends Action {
+		public InputOpenAction() {
+			super("Open");
+		}
+
+		public void run() {
+			super.run();
+			IEditorInput[] inputs = getSelectedInputs();
+			for (int i = 0; i < inputs.length; i++) {
+				try {
+					getSite().getWorkbenchWindow().getActivePage().openEditor(inputs[i], getEditorId(inputs[i]));
+				}
+				catch (PartInitException e) {
+					openError(getSite().getWorkbenchWindow().getActivePage().getWorkbenchWindow().getShell(), "OpenSystemEditorAction.dialogTitle", e.getMessage(), e);
+				}
+			}
+		}
+	}
+
+	class InputReplaceContentsAction extends Action implements IUpdate {
+		public InputReplaceContentsAction() {
+			super("Replace Input's Contents");
+		}
+
+		public void run() {
+			super.run();
+			IEditorInput[] inputs = getSelectedInputs();
+			for (int i = 0; i < inputs.length; i++) {
+				((FileBasedStorageEditorInput) inputs[i]).elementContentAboutToBeReplaced();
+				((FileBasedStorageEditorInput) inputs[i]).elementContentReplaced();
+			}
+		}
+
+		public void update() {
+			setEnabled(fSelectedElement != null && fSelectedElement instanceof FileBasedStorageEditorInput);
+		}
+	}
+
+	class RemoveInputAction extends Action {
+		public RemoveInputAction() {
+			super("Remove");
+		}
+
+		public void run() {
+			super.run();
+			IEditorInput[] inputs = getSelectedInputs();
+			for (int i = 0; i < inputs.length; i++) {
+				fInputs.remove(inputs[i]);
+			}
+			fInputList.refresh();
+		}
+	}
+
+	class ReuseEditorAction extends Action implements IUpdate {
+		public ReuseEditorAction() {
+			super("Reuse Editor");
+		}
+
+		public void run() {
+			super.run();
+			IEditorInput[] inputs = getSelectedInputs();
+			for (int i = 0; i < inputs.length; i++) {
+				IEditorPart editor = getSite().getWorkbenchWindow().getActivePage().getActiveEditor();
+				if (editor instanceof IReusableEditor) {
+					getSite().getWorkbenchWindow().getActivePage().reuseEditor(((IReusableEditor) editor), inputs[i]);
+				}
+				else {
+					SSEUIPlugin.getDefault().getWorkbench().getDisplay().beep();
+				}
+			}
+		}
+
+		public void update() {
+			boolean enable = true;
+			try {
+				enable = fSelectedElement != null && getSite().getWorkbenchWindow().getActivePage().getActiveEditor() instanceof IReusableEditor;
+			}
+			catch (Exception e) {
+				enable = true;
+			}
+			setEnabled(enable);
+		}
+	}
+
+
+	public static final boolean provideIStorageFullPath = true;
+
+	/**
+	 * Open an error style dialog for PartInitException by including any extra
+	 * information from the nested CoreException if present.
+	 */
+	public static void openError(Shell parent, String title, String message, PartInitException exception) {
+		// Check for a nested CoreException
+		CoreException nestedException = null;
+		IStatus status = exception.getStatus();
+		if (status != null && status.getException() instanceof CoreException)
+			nestedException = (CoreException) status.getException();
+
+		if (nestedException != null) {
+			// Open an error dialog and include the extra
+			// status information from the nested CoreException
+			ErrorDialog.openError(parent, title, message, nestedException.getStatus());
+		}
+		else {
+			// Open a regular error dialog since there is no
+			// extra information to display
+			MessageDialog.openError(parent, title, message);
+		}
+	}
+
+	private List actions = null;
+
+	TableViewer fInputList = null;
+
+	List fInputs = new ArrayList(0);
+
+	Object fSelectedElement = null;
+
+
+	public ExtendedStorageEditorInputView() {
+		super();
+		actions = new ArrayList();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IWorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
+	 */
+	public void createPartControl(Composite parent) {
+		fInputList = new TableViewer(parent, SWT.FULL_SELECTION | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
+		fInputList.setContentProvider(new ArrayContentProvider());
+		fInputList.setLabelProvider(new EditorInputLabelProvider());
+		fInputList.addDoubleClickListener(new DoubleClickListener());
+		fInputList.getTable().setHeaderVisible(true);
+		fInputList.getTable().setLinesVisible(true);
+		String[] columns = new String[]{"Path", "Type"};
+		fInputList.setLabelProvider(new EditorInputLabelProvider());
+
+
+		TableLayout tlayout = new TableLayout();
+		CellEditor[] cellEditors = new CellEditor[5];
+		for (int i = 0; i < columns.length; i++) {
+			tlayout.addColumnData(new ColumnWeightData(1));
+			TableColumn tc = new TableColumn(fInputList.getTable(), SWT.NONE);
+			tc.setText(columns[i]);
+			tc.setResizable(true);
+			tc.setWidth(Display.getCurrent().getBounds().width / 14);
+		}
+		fInputList.setCellEditors(cellEditors);
+		fInputList.setColumnProperties(columns);
+
+		GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+		fInputList.getTable().setLayoutData(gd);
+
+		MenuManager menuManager = new MenuManager("#popup"); //$NON-NLS-1$
+		menuManager.setRemoveAllWhenShown(false);
+
+		menuManager.add(new InputOpenAction());
+		menuManager.add(new Separator());
+		menuManager.add(new InputMoveAction());
+		menuManager.add(new InputChangeDirtyStateAction());
+		menuManager.add(new InputDeleteAction());
+		menuManager.add(new InputReplaceContentsAction());
+		menuManager.add(new Separator());
+		menuManager.add(new RemoveInputAction());
+		Menu menu = menuManager.createContextMenu(fInputList.getControl());
+		fInputList.getControl().setMenu(menu);
+
+
+		SSETestsPlugin.getDefault().getPluginPreferences().setDefault(getInputsPreferenceName(), "");
+		String paths[] = StringUtils.unpack(SSETestsPlugin.getDefault().getPluginPreferences().getString(getInputsPreferenceName()));
+		for (int i = 0; i < paths.length; i++) {
+			if (paths[i].startsWith("S!")) {
+				fInputs.add(new FileBasedStorageEditorInput(new File(paths[i].substring(2))));
+			}
+			else if (paths[i].startsWith("F!")) {
+				fInputs.add(new FileEditorInput(ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(paths[i].substring(2)))));
+			}
+		}
+
+		fInputList.setInput(fInputs);
+		fInputList.addSelectionChangedListener(new ISelectionChangedListener() {
+			public void selectionChanged(SelectionChangedEvent event) {
+				IStructuredSelection sel = ((IStructuredSelection) event.getSelection());
+				fSelectedElement = sel.getFirstElement();
+			}
+		});
+	}
+
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IWorkbenchPart#dispose()
+	 */
+	public void dispose() {
+		List paths = new ArrayList(0);
+		for (int i = 0; i < fInputs.size(); i++) {
+			try {
+				Object input = fInputs.get(i);
+				String path = null;
+				if (input instanceof FileBasedStorageEditorInput) {
+					path = "S!" + ((FileBasedStorageEditorInput) input).getFile().getCanonicalPath();
+				}
+				else if (input instanceof IFileEditorInput) {
+					path = "F!" + ((IFileEditorInput) input).getFile().getFullPath().toString();
+				}
+				if (path != null) {
+					paths.add(path);
+				}
+			}
+			catch (IOException e) {
+				e.printStackTrace();
+			}
+		}
+		SSETestsPlugin.getDefault().getPluginPreferences().setValue(getInputsPreferenceName(), StringUtils.pack((String[]) paths.toArray(new String[0])));
+		SSETestsPlugin.getDefault().savePluginPreferences();
+	}
+
+	String getEditorId(IEditorInput input) {
+		IWorkbench workbench = PlatformUI.getWorkbench();
+		IEditorRegistry editorRegistry = workbench.getEditorRegistry();
+		IContentType[] types = null;
+		String editorID = null;
+		if (input instanceof IStorageEditorInput) {
+			InputStream inputStream = null;
+			try {
+				inputStream = ((IStorageEditorInput) input).getStorage().getContents();
+			}
+			catch (CoreException e) {
+				e.printStackTrace();
+			}
+			try {
+				types = Platform.getContentTypeManager().findContentTypesFor(inputStream, input.getName());
+			}
+			catch (IOException e) {
+				e.printStackTrace();
+			}
+			try {
+				if (inputStream != null) {
+					inputStream.close();
+				}
+			}
+			catch (IOException e) {
+				e.printStackTrace();
+			}
+		}
+
+		IEditorDescriptor descriptor = editorRegistry.getDefaultEditor(input.getName(), types[0]);
+		if (descriptor != null) {
+			editorID = descriptor.getId();
+		}
+		if (editorID == null) {
+			editorID = EditorsUI.DEFAULT_TEXT_EDITOR_ID;
+		}
+		return editorID;
+	}
+
+	/**
+	 * @return
+	 */
+	String getInputsPreferenceName() {
+		return "ExtendedStorageEditorInputView:inputs";
+	}
+
+	IEditorInput[] getSelectedInputs() {
+		ISelection selection = fInputList.getSelection();
+		if (selection instanceof IStructuredSelection) {
+			IStructuredSelection sel = (IStructuredSelection) selection;
+			if (sel.isEmpty()) {
+				return new IEditorInput[0];
+			}
+			Object[] arr = sel.toArray();
+			IEditorInput[] inputs = new IEditorInput[arr.length];
+			System.arraycopy(arr, 0, inputs, 0, inputs.length);
+			return inputs;
+		}
+		return new IEditorInput[0];
+	}
+
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IViewPart#init(org.eclipse.ui.IViewSite)
+	 */
+	public void init(IViewSite site) throws PartInitException {
+		super.init(site);
+
+		site.getActionBars().getToolBarManager().add(rememberAction(new AddStorageInputAction()));
+		site.getActionBars().getToolBarManager().add(rememberAction(new AddFileInputAction()));
+		site.getActionBars().getToolBarManager().add(rememberAction(new ReuseEditorAction()));
+		site.getActionBars().getToolBarManager().add(rememberAction(new RemoveInputAction()));
+
+		site.getActionBars().getMenuManager().add(rememberAction(new InputOpenAction()));
+		site.getActionBars().getMenuManager().add(rememberAction(new ReuseEditorAction()));
+		site.getActionBars().getMenuManager().add(new Separator());
+		site.getActionBars().getMenuManager().add(rememberAction(new InputMoveAction()));
+		site.getActionBars().getMenuManager().add(rememberAction(new InputChangeDirtyStateAction()));
+		site.getActionBars().getMenuManager().add(rememberAction(new InputDeleteAction()));
+		site.getActionBars().getMenuManager().add(rememberAction(new InputReplaceContentsAction()));
+	}
+
+	IAction rememberAction(IAction action) {
+		actions.add(action);
+		return action;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IWorkbenchPart#setFocus()
+	 */
+	public void setFocus() {
+		fInputList.getControl().setFocus();
+	}
+
+
+	protected void updateEnablement() {
+		for (int i = 0; i < actions.size(); i++) {
+			Object action = actions.get(i);
+			if (action instanceof IUpdate) {
+				((IUpdate) action).update();
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/Logger.java b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/Logger.java
new file mode 100644
index 0000000..9376676
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/Logger.java
@@ -0,0 +1,154 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.ui.tests;
+
+import com.ibm.icu.util.StringTokenizer;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.osgi.framework.Bundle;
+
+/**
+ * Small convenience class to log messages to plugin's log file and also, if
+ * desired, the console. This class should only be used by classes in this
+ * plugin. Other plugins should make their own copy, with appropriate ID.
+ */
+public class Logger {
+	private static final String PLUGIN_ID = "org.eclipse.wst.ui.tests"; //$NON-NLS-1$
+
+	private static final String TRACEFILTER_LOCATION = "/debug/tracefilter"; //$NON-NLS-1$
+
+	public static final int OK = IStatus.OK; // 0
+	public static final int INFO = IStatus.INFO; // 1
+	public static final int WARNING = IStatus.WARNING; // 2
+	public static final int ERROR = IStatus.ERROR; // 4
+
+	public static final int OK_DEBUG = 200 + OK;
+	public static final int INFO_DEBUG = 200 + INFO;
+	public static final int WARNING_DEBUG = 200 + WARNING;
+	public static final int ERROR_DEBUG = 200 + ERROR;
+
+	/**
+	 * Adds message to log.
+	 * 
+	 * @param level
+	 *            severity level of the message (OK, INFO, WARNING, ERROR,
+	 *            OK_DEBUG, INFO_DEBUG, WARNING_DEBUG, ERROR_DEBUG)
+	 * @param message
+	 *            text to add to the log
+	 * @param exception
+	 *            exception thrown
+	 */
+	protected static void _log(int level, String message, Throwable exception) {
+		if (level == OK_DEBUG || level == INFO_DEBUG || level == WARNING_DEBUG || level == ERROR_DEBUG) {
+			if (!isDebugging())
+				return;
+		}
+
+		int severity = IStatus.OK;
+		switch (level) {
+			case INFO_DEBUG :
+			case INFO :
+				severity = IStatus.INFO;
+				break;
+			case WARNING_DEBUG :
+			case WARNING :
+				severity = IStatus.WARNING;
+				break;
+			case ERROR_DEBUG :
+			case ERROR :
+				severity = IStatus.ERROR;
+		}
+		message = (message != null) ? message : "null"; //$NON-NLS-1$
+		Status statusObj = new Status(severity, PLUGIN_ID, severity, message, exception);
+		Bundle bundle = Platform.getBundle(PLUGIN_ID);
+		if (bundle != null) 
+			Platform.getLog(bundle).log(statusObj);
+	}
+
+	/**
+	 * Prints message to log if category matches /debug/tracefilter option.
+	 * 
+	 * @param message
+	 *            text to print
+	 * @param category
+	 *            category of the message, to be compared with
+	 *            /debug/tracefilter
+	 */
+	protected static void _trace(String category, String message, Throwable exception) {
+		if (isTracing(category)) {
+			message = (message != null) ? message : "null"; //$NON-NLS-1$
+			Status statusObj = new Status(IStatus.OK, PLUGIN_ID, IStatus.OK, message, exception);
+			Bundle bundle = Platform.getBundle(PLUGIN_ID);
+			if (bundle != null) 
+				Platform.getLog(bundle).log(statusObj);
+		}
+	}
+
+	/**
+	 * @return true if the platform is debugging
+	 */
+	public static boolean isDebugging() {
+		return Platform.inDebugMode();
+	}
+
+	/**
+	 * Determines if currently tracing a category
+	 * 
+	 * @param category
+	 * @return true if tracing category, false otherwise
+	 */
+	public static boolean isTracing(String category) {
+		if (!isDebugging())
+			return false;
+
+		String traceFilter = Platform.getDebugOption(PLUGIN_ID + TRACEFILTER_LOCATION);
+		if (traceFilter != null) {
+			StringTokenizer tokenizer = new StringTokenizer(traceFilter, ","); //$NON-NLS-1$
+			while (tokenizer.hasMoreTokens()) {
+				String cat = tokenizer.nextToken().trim();
+				if (category.equals(cat)) {
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+
+	public static void log(int level, String message) {
+		_log(level, message, null);
+	}
+
+	public static void log(int level, String message, Throwable exception) {
+		_log(level, message, exception);
+	}
+
+	public static void logException(String message, Throwable exception) {
+		_log(ERROR, message, exception);
+	}
+
+	public static void logException(Throwable exception) {
+		_log(ERROR, exception.getMessage(), exception);
+	}
+
+	public static void traceException(String category, String message, Throwable exception) {
+		_trace(category, message, exception);
+	}
+
+	public static void traceException(String category, Throwable exception) {
+		_trace(category, exception.getMessage(), exception);
+	}
+
+	public static void trace(String category, String message) {
+		_trace(category, message, null);
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/SSETestsPlugin.java b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/SSETestsPlugin.java
new file mode 100644
index 0000000..5c4d91e
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/SSETestsPlugin.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.ui.tests;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import org.eclipse.core.runtime.Plugin;
+
+/**
+ * The main plugin class to be used in the desktop.
+ */
+public class SSETestsPlugin extends Plugin {
+	//The shared instance.
+	private static SSETestsPlugin plugin;
+	//Resource bundle.
+	private ResourceBundle resourceBundle;
+
+	/**
+	 * The constructor.
+	 */
+	public SSETestsPlugin() {
+		super();
+		plugin = this;
+		try {
+			resourceBundle = ResourceBundle.getBundle("org.eclipse.wst.sse.ui.tests.TestsPluginResources");
+		} catch (MissingResourceException x) {
+			resourceBundle = null;
+		}
+	}
+
+	/**
+	 * Returns the shared instance.
+	 */
+	public static SSETestsPlugin getDefault() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the string from the plugin's resource bundle, or 'key' if not
+	 * found.
+	 */
+	public static String getResourceString(String key) {
+		ResourceBundle bundle = SSETestsPlugin.getDefault().getResourceBundle();
+		try {
+			return (bundle != null) ? bundle.getString(key) : key;
+		} catch (MissingResourceException e) {
+			return key;
+		}
+	}
+
+	/**
+	 * Returns the plugin's resource bundle,
+	 */
+	public ResourceBundle getResourceBundle() {
+		return resourceBundle;
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/SSEUITestSuite.java b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/SSEUITestSuite.java
new file mode 100644
index 0000000..12cb458
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/SSEUITestSuite.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.sse.ui.tests;
+
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.eclipse.wst.sse.ui.tests.viewer.TestViewerConfiguration;
+
+/**
+ * @author pavery
+ */
+public class SSEUITestSuite extends TestSuite {
+	public static Test suite() {
+		return new SSEUITestSuite();
+	}
+
+	public SSEUITestSuite() {
+		super("SSE UI Test Suite");
+		addTest(new TestSuite(VerifyEditorPlugin.class));
+		addTest(new TestSuite(CommonEditorPreferencesTest.class));
+		addTest(new TestSuite(TestViewerConfiguration.class));
+		addTest(new TestSuite(TestStructuredTextEditor.class));
+	}
+}
diff --git a/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/TestActionDelegate.java b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/TestActionDelegate.java
new file mode 100644
index 0000000..36c0e50
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/TestActionDelegate.java
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 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.wst.sse.ui.tests;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IEditorActionDelegate;
+import org.eclipse.ui.IEditorPart;
+
+/**
+ * @author nsd
+ * 
+ */
+public class TestActionDelegate extends Action implements IEditorActionDelegate {
+	IEditorPart editor = null;
+	IAction faction = null;
+
+	/**
+	 * 
+	 */
+	public TestActionDelegate() {
+		super();
+	}
+
+	/**
+	 * @param text
+	 */
+	public TestActionDelegate(String text) {
+		super(text);
+	}
+
+	/**
+	 * @param text
+	 * @param image
+	 */
+	public TestActionDelegate(String text, ImageDescriptor image) {
+		super(text, image);
+	}
+
+	/**
+	 * @param text
+	 * @param style
+	 */
+	public TestActionDelegate(String text, int style) {
+		super(text, style);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IEditorActionDelegate#setActiveEditor(org.eclipse.jface.action.IAction,
+	 *      org.eclipse.ui.IEditorPart)
+	 */
+	public void setActiveEditor(IAction targetAction, IEditorPart targetEditor) {
+		editor = targetEditor;
+		faction = targetAction;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+	 */
+	public void run(IAction runAction) {
+		MessageDialog.openInformation(editor.getEditorSite().getShell(), "Test", "Completed");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction,
+	 *      org.eclipse.jface.viewers.ISelection)
+	 */
+	public void selectionChanged(IAction action, ISelection selection) {
+		// do nothing
+	}
+}
diff --git a/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/TestEmailNotice.java b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/TestEmailNotice.java
new file mode 100644
index 0000000..c4c3eea
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/TestEmailNotice.java
@@ -0,0 +1,27 @@
+/*****************************************************************************
+ * Copyright (c) 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.wst.sse.ui.tests;
+
+import junit.framework.TestCase;
+
+public class TestEmailNotice extends TestCase {
+	private boolean sendNotifications = false;
+
+	public TestEmailNotice() {
+		super();
+	}
+
+	public TestEmailNotice(String name) {
+		super(name);
+	}
+
+	public void testEmail() {
+		assertFalse("Simple test to be sure email gets sent on failure", sendNotifications);
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/TestLineStyleProvider.java b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/TestLineStyleProvider.java
new file mode 100644
index 0000000..81f3ae4
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/TestLineStyleProvider.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 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.wst.sse.ui.tests;
+
+import java.util.Collection;
+
+import org.eclipse.jface.text.ITypedRegion;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StyleRange;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
+import org.eclipse.wst.sse.ui.internal.provisional.style.Highlighter;
+import org.eclipse.wst.sse.ui.internal.provisional.style.LineStyleProvider;
+import org.eclipse.wst.sse.ui.internal.util.EditorUtility;
+
+public class TestLineStyleProvider implements LineStyleProvider {
+
+	Color foreground = null;
+
+	/**
+	 * 
+	 */
+	public TestLineStyleProvider() {
+		super();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.sse.ui.style.LineStyleProvider#init(org.eclipse.wst.sse.core.text.IStructuredDocument,
+	 *      org.eclipse.wst.sse.ui.style.Highlighter)
+	 */
+	public void init(IStructuredDocument document, Highlighter highlighter) {
+		// nothing to init
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.sse.ui.style.LineStyleProvider#prepareRegions(org.eclipse.jface.text.ITypedRegion,
+	 *      int, int, java.util.Collection)
+	 */
+	public boolean prepareRegions(ITypedRegion currentRegion, int start, int length, Collection styleRanges) {
+		// make everything bold grey
+		if (foreground == null)
+			foreground = EditorUtility.getColor(new RGB(127, 127, 127));
+		styleRanges.add(new StyleRange(start, length, foreground, null, SWT.BOLD));
+		return true;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.sse.ui.style.LineStyleProvider#release()
+	 */
+	public void release() {
+		// nothing to release
+	}
+
+}
diff --git a/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/TestStructuredTextEditor.java b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/TestStructuredTextEditor.java
new file mode 100644
index 0000000..eccd14b
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/TestStructuredTextEditor.java
@@ -0,0 +1,180 @@
+/*******************************************************************************
+ * Copyright (c) 2005 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.wst.sse.ui.tests;
+
+import java.io.ByteArrayInputStream;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.swt.SWT;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.IShowInTargetList;
+import org.eclipse.wst.sse.ui.StructuredTextEditor;
+import org.eclipse.wst.sse.ui.internal.StructuredTextViewer;
+
+public class TestStructuredTextEditor extends TestCase {
+	private final String PROJECT_NAME = "TestStructuredTextEditor";
+	private final String FILE_NAME = "testStructuredTextEditor.xml";
+
+	private static StructuredTextEditor fEditor;
+	private static IFile fFile;
+	private static boolean fIsSetup = false;
+
+	public TestStructuredTextEditor() {
+		super("TestStructredTextEditor");
+	}
+
+	protected void setUp() throws Exception {
+		if (!fIsSetup) {
+			// create project
+			createProject(PROJECT_NAME);
+			fFile = getOrCreateFile(PROJECT_NAME + "/" + FILE_NAME);
+			fIsSetup = true;
+		}
+
+		if (fIsSetup && fEditor == null) {
+			IWorkbenchWindow workbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+			IWorkbenchPage page = workbenchWindow.getActivePage();
+			IEditorInput input = new FileEditorInput(fFile);
+			/*
+			 * This should take care of testing init, createPartControl,
+			 * beginBackgroundOperation, endBackgroundOperation methods
+			 */
+			IEditorPart part = page.openEditor(input, "org.eclipse.wst.sse.ui.StructuredTextEditor", true);
+			if (part instanceof StructuredTextEditor)
+				fEditor = (StructuredTextEditor) part;
+			else
+				assertTrue("Unable to open structured text editor", false);
+		}
+	}
+
+	protected void tearDown() throws Exception {
+		if (fEditor != null) {
+			/*
+			 * This should take care of testing close and dispose methods
+			 */
+			fEditor.close(false);
+			assertTrue("Unable to close editor", true);
+			fEditor = null;
+		}
+	}
+
+	private void createProject(String projName) {
+		IProjectDescription description = ResourcesPlugin.getWorkspace().newProjectDescription(projName);
+
+		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projName);
+		try {
+			project.create(description, new NullProgressMonitor());
+			project.open(new NullProgressMonitor());
+		}
+		catch (CoreException e) {
+			e.printStackTrace();
+		}
+	}
+
+	protected IFile getOrCreateFile(String filePath) {
+		IFile blankJspFile = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(filePath));
+		if (blankJspFile != null && !blankJspFile.exists()) {
+			try {
+				blankJspFile.create(new ByteArrayInputStream(new byte[0]), true, new NullProgressMonitor());
+			}
+			catch (CoreException e) {
+				e.printStackTrace();
+			}
+		}
+		return blankJspFile;
+	}
+
+	public void testDoSaving() {
+		fEditor.doRevertToSaved();
+		assertTrue("Unable to revert to saved", true);
+		fEditor.doSave(new NullProgressMonitor());
+		assertTrue("Unable to save", true);
+	}
+
+	public void testEditorContextMenuAboutToShow() {
+		IMenuManager menu = new MenuManager();
+		fEditor.editorContextMenuAboutToShow(menu);
+		assertTrue("Unable to prepare for context menu about to show", true);
+		menu.dispose();
+		menu = null;
+	}
+
+	public void testGetAdapter() {
+		Object adapter = fEditor.getAdapter(IShowInTargetList.class);
+		assertTrue("Get adapter for show in target failed", adapter instanceof IShowInTargetList);
+	}
+
+	public void testGetSetEditorPart() {
+		fEditor.setEditorPart(null);
+		assertTrue("Unable to set editor part", true);
+		IEditorPart part = fEditor.getEditorPart();
+		assertTrue("Did not get expected editor part", part instanceof StructuredTextEditor);
+	}
+
+	public void testInitializeDocumentProvider() {
+		fEditor.initializeDocumentProvider(null);
+		assertTrue("Unable to initialize document provider", true);
+	}
+
+	public void testGetOrientation() {
+		int or = fEditor.getOrientation();
+		assertEquals(SWT.LEFT_TO_RIGHT, or);
+	}
+
+	public void testGetSelectionProvider() {
+		ISelectionProvider provider = fEditor.getSelectionProvider();
+		assertNotNull("Editor's selection provider was null", provider);
+	}
+
+	public void testGetTextViewer() {
+		StructuredTextViewer viewer = fEditor.getTextViewer();
+		assertNotNull("Editor's text viewer was null", viewer);
+	}
+
+	public void testRememberRestoreSelection() {
+		fEditor.rememberSelection();
+		assertTrue("Unable to remember editor selection", true);
+		fEditor.restoreSelection();
+		assertTrue("Unable to restore editor selection", true);
+	}
+
+	public void testSafelySanityCheck() {
+		fEditor.safelySanityCheckState(fEditor.getEditorInput());
+		assertTrue("Unable to safely sanity check editor state", true);
+	}
+
+	public void testShowBusy() {
+		fEditor.showBusy(false);
+		assertTrue("Unable to show editor is busy", true);
+	}
+
+	public void testUpdate() {
+		fEditor.update();
+		assertTrue("Unable to update editor", true);
+	}
+}
diff --git a/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/VerifyEditorPlugin.java b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/VerifyEditorPlugin.java
new file mode 100644
index 0000000..6753f6a
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/VerifyEditorPlugin.java
@@ -0,0 +1,66 @@
+package org.eclipse.wst.sse.ui.tests;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.wst.sse.ui.internal.SSEUIPlugin;
+
+/*****************************************************************************
+ * Copyright (c) 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
+ * 
+ ****************************************************************************/
+
+public class VerifyEditorPlugin extends TestCase {
+
+	List colorList = new ArrayList();
+
+	public void testPluginExists() {
+		Plugin plugin = null;
+		try {
+			plugin = SSEUIPlugin.getDefault();
+
+		}
+		catch (Exception e) {
+			plugin = null;
+		}
+		assertNotNull("sse editor plugin could not be instantiated", plugin);
+
+	}
+
+	/**
+	 * The purpose of this test is just to test if we can directly create lots
+	 * of RBG colors, even if display set to "256" (on Linux). And, BTW, it
+	 * does not fail even with 256 colors set, at least on Linux, in dev. env.
+	 * Varying all three RGB numbers, though, it is easy to run out of memory!
+	 * 
+	 */
+	public void testColorHandles() {
+		Display display = Display.getCurrent();
+		if (display == null)
+			display = Display.getDefault();
+		assertNotNull("display could not be instantiated", display);
+		for (int i = 0; i < 256; i++) {
+			for (int j = 0; j < 256; j++) {
+				// 256 cubed runs out of memory
+				// for (int k = 0; k < 256; k++) {
+				colorList.add(new Color(display, new RGB(i, j, 50)));
+				// }
+
+			}
+
+		}
+		// if we get this far without error, all is ok.
+		assertTrue(true);
+	}
+}
diff --git a/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/viewer/TestViewerConfiguration.java b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/viewer/TestViewerConfiguration.java
new file mode 100644
index 0000000..ab14982
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/src/org/eclipse/wst/sse/ui/tests/viewer/TestViewerConfiguration.java
@@ -0,0 +1,270 @@
+package org.eclipse.wst.sse.ui.tests.viewer;
+
+import junit.framework.TestCase;
+
+import org.eclipse.jface.text.IAutoEditStrategy;
+import org.eclipse.jface.text.IInformationControlCreator;
+import org.eclipse.jface.text.ITextDoubleClickStrategy;
+import org.eclipse.jface.text.IUndoManager;
+import org.eclipse.jface.text.contentassist.IContentAssistant;
+import org.eclipse.jface.text.formatter.IContentFormatter;
+import org.eclipse.jface.text.hyperlink.IHyperlinkDetector;
+import org.eclipse.jface.text.hyperlink.IHyperlinkPresenter;
+import org.eclipse.jface.text.information.IInformationPresenter;
+import org.eclipse.jface.text.presentation.IPresentationReconciler;
+import org.eclipse.jface.text.reconciler.IReconciler;
+import org.eclipse.jface.text.source.IAnnotationHover;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredPartitioning;
+import org.eclipse.wst.sse.core.text.IStructuredPartitions;
+import org.eclipse.wst.sse.ui.StructuredTextViewerConfiguration;
+import org.eclipse.wst.sse.ui.internal.StructuredTextViewer;
+import org.eclipse.wst.sse.ui.internal.provisional.style.LineStyleProvider;
+import org.eclipse.wst.sse.ui.tests.Logger;
+
+public class TestViewerConfiguration extends TestCase {
+
+	private StructuredTextViewerConfiguration fConfig = null;
+	private boolean fDisplayExists = true;
+	private StructuredTextViewer fViewer = null;
+	private boolean isSetup = false;
+
+	public TestViewerConfiguration() {
+		super("TestViewerConfiguration");
+	}
+
+	protected void setUp() throws Exception {
+
+		super.setUp();
+		if (!this.isSetup) {
+			setUpViewerConfiguration();
+			this.isSetup = true;
+		}
+	}
+
+	private void setUpViewerConfiguration() {
+		if (Display.getCurrent() != null) {
+
+			Shell shell = null;
+			Composite parent = null;
+
+			if (PlatformUI.isWorkbenchRunning()) {
+				shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+			}
+			else {
+				shell = new Shell(Display.getCurrent());
+			}
+			parent = new Composite(shell, SWT.NONE);
+
+			// dummy viewer
+			fViewer = new StructuredTextViewer(parent, null, null, false, SWT.NONE);
+			fConfig = new StructuredTextViewerConfiguration();
+		}
+		else {
+			fDisplayExists = false;
+			Logger.log(Logger.INFO, "Remember, viewer configuration tests are not run because workbench is not open (normal on build machine)");
+		}
+	}
+
+	public void testGetAnnotationHover() {
+
+		// probably no display
+		if (!fDisplayExists)
+			return;
+
+		IAnnotationHover hover = fConfig.getAnnotationHover(fViewer);
+		assertNotNull("AnnotationHover is null", hover);
+	}
+
+	/**
+	 * Not necessary
+	 */
+	public void testGetAutoEditStrategies() {
+
+		// probably no display
+		if (!fDisplayExists)
+			return;
+
+		IAutoEditStrategy[] strategies = fConfig.getAutoEditStrategies(fViewer, IStructuredPartitions.DEFAULT_PARTITION);
+		assertNotNull(strategies);
+		assertTrue("there are no auto edit strategies", strategies.length > 0);
+	}
+
+	/**
+	 * Not necessary
+	 */
+	public void testGetConfiguredContentTypes() {
+
+		// probably no display
+		if (!fDisplayExists)
+			return;
+
+		String[] configuredContentTypes = fConfig.getConfiguredContentTypes(fViewer);
+		assertNotNull(configuredContentTypes);
+		assertTrue(configuredContentTypes.length == 1);
+	}
+
+	public void testGetConfiguredDocumentPartitioning() {
+
+		// probably no display
+		if (!fDisplayExists)
+			return;
+
+		String partitioning = fConfig.getConfiguredDocumentPartitioning(fViewer);
+		assertEquals(IStructuredPartitioning.DEFAULT_STRUCTURED_PARTITIONING, partitioning);
+	}
+
+	public void testGetConfiguredTextHoverStateMasks() {
+
+		// probably no display
+		if (!fDisplayExists)
+			return;
+
+		int[] masks = fConfig.getConfiguredTextHoverStateMasks(fViewer, IStructuredPartitions.DEFAULT_PARTITION);
+		assertEquals(2, masks.length);
+	}
+
+	public void testGetContentAssistant() {
+
+		// probably no display
+		if (!fDisplayExists)
+			return;
+
+		IContentAssistant ca = fConfig.getContentAssistant(fViewer);
+		assertNotNull("there is no content assistant", ca);
+	}
+
+	public void testGetContentFormatter() {
+
+		// probably no display
+		if (!fDisplayExists)
+			return;
+
+		IContentFormatter cf = fConfig.getContentFormatter(fViewer);
+		assertNull("there is a content formatter", cf);
+	}
+
+	/**
+	 * Not necessary
+	 */
+	public void testGetDoubleClickStrategy() {
+
+		// probably no display
+		if (!fDisplayExists)
+			return;
+
+		String[] contentTypes = fConfig.getConfiguredContentTypes(fViewer);
+		for (int i = 0; i < contentTypes.length; i++) {
+			ITextDoubleClickStrategy strategy = fConfig.getDoubleClickStrategy(fViewer, contentTypes[i]);
+			if (strategy != null) {
+				return;
+			}
+		}
+		assertTrue("there are no configured double click strategies", false);
+	}
+
+	/**
+	 * Not necessary
+	 */
+	public void testGetHyperlinkDetectors() {
+
+		// probably no display
+		if (!fDisplayExists)
+			return;
+
+		IHyperlinkDetector[] detectors = fConfig.getHyperlinkDetectors(fViewer);
+		assertNotNull("there are no hyperlink detectors", detectors);
+		assertTrue("there are no hyperlink detectors", detectors.length > 0);
+	}
+
+	public void testGetHyperlinkPresenter() {
+
+		// probably no display
+		if (!fDisplayExists)
+			return;
+
+		IHyperlinkPresenter presenter = fConfig.getHyperlinkPresenter(fViewer);
+		assertNotNull("hyperlink presenter shouldn't be null", presenter);
+	}
+
+	public void testGetInformationControlCreator() {
+
+		// probably no display
+		if (!fDisplayExists)
+			return;
+
+		IInformationControlCreator infoControlCreator = fConfig.getInformationControlCreator(fViewer);
+		assertNotNull("info control creator was null", infoControlCreator);
+	}
+
+	public void testGetInformationPresenter() {
+
+		// probably no display
+		if (!fDisplayExists)
+			return;
+
+		IInformationPresenter presenter = fConfig.getInformationPresenter(fViewer);
+		assertNotNull("InformationPresenter was null", presenter);
+	}
+
+	public void testGetLineStyleProviders() {
+		// probably no display
+		if (!fDisplayExists)
+			return;
+
+		// there should be no linestyleproviders for default
+		String[] contentTypes = fConfig.getConfiguredContentTypes(fViewer);
+		for (int i = 0; i < contentTypes.length; i++) {
+			LineStyleProvider providers[] = fConfig.getLineStyleProviders(fViewer, contentTypes[i]);
+			assertNull("line style providers is not null", providers);
+		}
+	}
+
+	/**
+	 * Not necessary
+	 */
+	public void testGetOverviewRulerAnnotationHover() {
+
+		// probably no display
+		if (!fDisplayExists)
+			return;
+
+		IAnnotationHover annotationHover = fConfig.getOverviewRulerAnnotationHover(fViewer);
+		assertNotNull("annotation hover was null", annotationHover);
+	}
+
+	public void testGetPresentationReconciler() {
+
+		// probably no display
+		if (!fDisplayExists)
+			return;
+
+		IPresentationReconciler presentationReconciler = fConfig.getPresentationReconciler(fViewer);
+		// our default presentation reconciler is null
+		assertNull("presentation reconciler was not null", presentationReconciler);
+	}
+
+	public void testGetReconciler() {
+
+		// probably no display
+		if (!fDisplayExists)
+			return;
+
+		IReconciler r = fConfig.getReconciler(fViewer);
+		assertNotNull("Reconciler was null", r);
+	}
+
+	public void testGetUndoManager() {
+
+		// probably no display
+		if (!fDisplayExists)
+			return;
+
+		IUndoManager undoManager = fConfig.getUndoManager(fViewer);
+		assertNotNull("undo manager was null", undoManager);
+	}
+}
diff --git a/tests/org.eclipse.wst.sse.ui.tests/test.xml b/tests/org.eclipse.wst.sse.ui.tests/test.xml
new file mode 100644
index 0000000..da34e59
--- /dev/null
+++ b/tests/org.eclipse.wst.sse.ui.tests/test.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0"?>
+
+<project
+	name="testsuite"
+	default="run"
+	basedir=".">
+	<!-- The property ${eclipse-home} should be passed into this script -->
+	<!-- Set a meaningful default value for when it is not. -->
+	<!-- <property name="eclipse-home" value="${basedir}\..\.."/> -->
+
+	<echo message="basedir ${basedir}" />
+	<echo message="eclipse place ${eclipse-home}" />
+
+	<!-- sets the properties plugin-name, and library-file -->
+	<property
+		name="plugin-name"
+		value="org.eclipse.wst.sse.ui.tests" />
+	<property
+		name="library-file"
+		value="${eclipse-home}/plugins/org.eclipse.test_3.1.0/library.xml" />
+	<property
+		name="workspace"
+		value="${eclipse-home}/junitworkspace-${plugin-name}" />
+	<!-- This target holds all initialization code that needs to be done for -->
+	<!-- all tests that are to be run. Initialization for individual tests -->
+	<!-- should be done within the body of the suite target. -->
+	<target name="init">
+		<tstamp />
+		<delete>
+			<fileset
+				dir="${eclipse-home}"
+				includes="org.eclipse.wst.sse.ui.tests.*xml" />
+		</delete>
+	</target>
+
+	<!-- This target defines the tests that need to be run. -->
+	<target name="suite">
+		<property
+			name="wst-folder"
+			value="${eclipse-home}/wst_folder" />
+		<delete
+			dir="${workspace}"
+			quiet="true" />
+		<ant
+			target="ui-test"
+			antfile="${library-file}"
+			dir="${eclipse-home}">
+			<property
+				name="data-dir"
+				value="${wst-folder}" />
+			<property
+				name="plugin-name"
+				value="${plugin-name}" />
+			<property
+				name="classname"
+				value="org.eclipse.wst.sse.ui.tests.SSEUITestSuite" />
+			<property
+				name="plugin-path"
+				value="${eclipse-home}/plugins/${plugin-name}" />
+		</ant>
+	</target>
+
+	<!-- This target holds code to cleanup the testing environment after -->
+	<!-- after all of the tests have been run. You can use this target to -->
+	<!-- delete temporary files that have been created. -->
+	<target name="cleanup">
+		<!--<delete dir="${workspace}" quiet="true"/>-->
+	</target>
+
+	<!-- This target runs the test suite. Any actions that need to happen -->
+	<!-- after all the tests have been run should go here. -->
+	<target
+		name="run"
+		depends="init,suite,cleanup">
+		<ant
+			target="collect"
+			antfile="${library-file}"
+			dir="${eclipse-home}">
+			<property
+				name="includes"
+				value="org.eclipse.wst.sse.ui.tests.*xml" />
+			<property
+				name="output-file"
+				value="${plugin-name}.xml" />
+		</ant>
+		<!--		<emailResults resultsFile="${build-results-home}/${plugin-name}.xml" addresslist="david_williams@us.ibm.com" /> -->
+	</target>
+
+</project>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/.classpath b/tests/org.eclipse.wst.xml.tests.encoding/.classpath
new file mode 100644
index 0000000..1d8baf7
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src/"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry path="org.eclipse.pde.core.requiredPlugins" kind="con">
+		<accessrules>
+			<accessrule kind="accessible" pattern="org/eclipse/wst/**"/>
+		</accessrules>
+	</classpathentry>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/.cvsignore b/tests/org.eclipse.wst.xml.tests.encoding/.cvsignore
new file mode 100644
index 0000000..57763eb
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/.cvsignore
@@ -0,0 +1,4 @@
+bin
+build.xml
+temp.folder
+tests.jar
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/.project b/tests/org.eclipse.wst.xml.tests.encoding/.project
new file mode 100644
index 0000000..6ac370c
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/.project
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.wst.xml.tests.encoding</name>
+	<comment></comment>
+	<projects></projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/.settings/org.eclipse.core.resources.prefs b/tests/org.eclipse.wst.xml.tests.encoding/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..afa5c91
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+#Tue Apr 04 03:36:32 EDT 2006
+eclipse.preferences.version=1
+encoding/<project>=ISO-8859-1
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/.settings/org.eclipse.core.runtime.prefs b/tests/org.eclipse.wst.xml.tests.encoding/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..7ec5750
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,3 @@
+#Mon Apr 17 01:48:39 EDT 2006
+eclipse.preferences.version=1
+line.separator=\r\n
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.wst.xml.tests.encoding/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..5f7bac7
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,80 @@
+#Sat Aug 19 16:31:43 EDT 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=error
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=enabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=ignore
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+org.eclipse.jdt.core.compiler.problem.unusedLabel=error
+org.eclipse.jdt.core.compiler.problem.unusedLocal=error
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.3
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/.settings/org.eclipse.jdt.ui.prefs b/tests/org.eclipse.wst.xml.tests.encoding/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..301c7ad
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,4 @@
+#Mon Apr 17 01:48:39 EDT 2006
+eclipse.preferences.version=1
+internal.default.compliance=default
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?>\r\n<templates/>
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/.settings/org.eclipse.ltk.core.refactoring.prefs b/tests/org.eclipse.wst.xml.tests.encoding/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..c59368c
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Tue Apr 04 03:36:32 EDT 2006
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/.settings/org.eclipse.pde.prefs b/tests/org.eclipse.wst.xml.tests.encoding/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..fc522bb
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,16 @@
+#Mon Apr 17 02:01:33 EDT 2006
+compilers.incompatible-environment=0
+compilers.p.build=0
+compilers.p.deprecated=1
+compilers.p.illegal-att-value=0
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=0
+compilers.p.unknown-attribute=0
+compilers.p.unknown-class=0
+compilers.p.unknown-element=0
+compilers.p.unknown-resource=0
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.p.unused-element-or-attribute=0
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/LargeNoEncoding.html b/tests/org.eclipse.wst.xml.tests.encoding/LargeNoEncoding.html
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/LargeNoEncoding.html
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/LargeNonDefault.html b/tests/org.eclipse.wst.xml.tests.encoding/LargeNonDefault.html
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/LargeNonDefault.html
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/META-INF/MANIFEST.MF b/tests/org.eclipse.wst.xml.tests.encoding/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..beb6b81
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/META-INF/MANIFEST.MF
@@ -0,0 +1,25 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name.0
+Bundle-SymbolicName: org.eclipse.wst.xml.tests.encoding
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: tests.jar
+Bundle-Activator: org.eclipse.wst.xml.tests.encoding.TestsPlugin
+Bundle-Vendor: %Bundle-Vendor.0
+Bundle-Localization: plugin
+Export-Package: org.eclipse.wst.xml.tests.encoding,
+ org.eclipse.wst.xml.tests.encoding.pref,
+ org.eclipse.wst.xml.tests.encoding.properties,
+ org.eclipse.wst.xml.tests.encoding.read,
+ org.eclipse.wst.xml.tests.encoding.util,
+ org.eclipse.wst.xml.tests.encoding.write,
+ org.eclipse.wst.xml.tests.encoding.xml
+Require-Bundle: org.eclipse.core.resources,
+ org.junit,
+ org.eclipse.ui,
+ org.eclipse.ui.workbench,
+ org.eclipse.ui.ide,
+ org.eclipse.wst.xml.core,
+ org.eclipse.core.runtime,
+ org.eclipse.wst.sse.core
+Eclipse-LazyStart: true
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/about.html b/tests/org.eclipse.wst.xml.tests.encoding/about.html
new file mode 100644
index 0000000..4ec5989
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/build.properties b/tests/org.eclipse.wst.xml.tests.encoding/build.properties
new file mode 100644
index 0000000..641c2ff
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/build.properties
@@ -0,0 +1,18 @@
+###############################################################################
+# Copyright (c) 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
+###############################################################################
+bin.includes = tests.jar,\
+               testfiles/,\
+               testfiles.zip,\
+               test.xml,\
+               META-INF/,\
+               about.html
+source.tests.jar = src/
+output.tests.jar = bin/
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/outputFromListCharsets/IBM14_0128.txt b/tests/org.eclipse.wst.xml.tests.encoding/outputFromListCharsets/IBM14_0128.txt
new file mode 100644
index 0000000..adfb1d2
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/outputFromListCharsets/IBM14_0128.txt
@@ -0,0 +1,857 @@
+
+Current Locale: en_US
+
+JRE version: J2RE 1.4.2 IBM Windows 32 build cndev-20040128 (JIT enabled: jitc)
+-- listing properties --
+java.assistive=ON
+java.runtime.name=Java(TM) 2 Runtime Environment, Stand...
+sun.boot.library.path=D:\builds\Daily\wswb-SDK-I20040226-wi...
+java.vm.version=1.4.2
+java.vm.vendor=IBM Corporation
+java.vendor.url=http://www.ibm.com/
+path.separator=;
+java.vm.name=Classic VM
+file.encoding.pkg=sun.io
+user.country=US
+sun.os.patch.level=Service Pack 1
+java.vm.specification.name=Java Virtual Machine Specification
+user.dir=D:\builds\Daily\eclipse-SDK-I20040304...
+java.runtime.version=1.4.2
+java.fullversion=J2RE 1.4.2 IBM Windows 32 build cndev...
+java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
+java.endorsed.dirs=D:\builds\Daily\wswb-SDK-I20040226-wi...
+os.arch=x86
+java.io.tmpdir=C:\DOCUME~1\DAVIDW~1.DMW\LOCALS~1\Temp\
+line.separator=
+
+java.vm.specification.vendor=Sun Microsystems Inc.
+user.variant=
+java.awt.fonts=
+os.name=Windows XP
+sun.java2d.fontpath=
+java.library.path=D:\builds\Daily\wswb-SDK-I20040226-wi...
+java.specification.name=Java Platform API Specification
+java.class.version=48.0
+ibm.system.encoding=Cp1252
+java.util.prefs.PreferencesFactory=java.util.prefs.WindowsPreferencesFac...
+invokedviajava=
+os.version=5.1
+user.home=C:\Documents and Settings\davidw.DMW2T23
+user.timezone=
+java.awt.printerjob=sun.awt.windows.WPrinterJob
+java.specification.version=1.4
+file.encoding=Cp1252
+user.name=davidw
+java.class.path=D:\builds\Daily\eclipse-SDK-I20040304...
+java.vm.specification.version=1.0
+sun.arch.data.model=32
+java.home=D:\builds\Daily\wswb-SDK-I20040226-wi...
+java.specification.vendor=Sun Microsystems Inc.
+user.language=en
+awt.toolkit=sun.awt.windows.WToolkit
+java.vm.info=J2RE 1.4.2 IBM Windows 32 build cndev...
+java.version=1.4.2
+java.ext.dirs=D:\builds\Daily\wswb-SDK-I20040226-wi...
+sun.boot.class.path=D:\builds\Daily\wswb-SDK-I20040226-wi...
+java.vendor=IBM Corporation
+file.separator=\
+java.vendor.url.bug=
+java.compiler=jitc
+sun.io.unicode.encoding=UnicodeLittle
+Available Locales
+ar
+ar_AE
+ar_BH
+ar_DZ
+ar_EG
+ar_IQ
+ar_JO
+ar_KW
+ar_LB
+ar_LY
+ar_MA
+ar_OM
+ar_QA
+ar_SA
+ar_SD
+ar_SY
+ar_TN
+ar_YE
+be
+be_BY
+bg
+bg_BG
+bn_IN
+ca
+ca_ES
+ca_ES_PREEURO
+cs
+cs_CZ
+da
+da_DK
+da_DK_EURO
+de
+de_AT
+de_AT_PREEURO
+de_CH
+de_DE
+de_DE_PREEURO
+de_LU
+de_LU_PREEURO
+el
+el_GR
+el_GR_PREEURO
+en
+en_AU
+en_BE
+en_BE_PREEURO
+en_CA
+en_GB
+en_GB_EURO
+en_HK
+en_IE
+en_IE_PREEURO
+en_IN
+en_NZ
+en_PH
+en_SG
+en_US
+en_ZA
+es
+es_AR
+es_BO
+es_CL
+es_CO
+es_CR
+es_DO
+es_EC
+es_ES
+es_ES_PREEURO
+es_GT
+es_HN
+es_MX
+es_NI
+es_PA
+es_PE
+es_PR
+es_PY
+es_SV
+es_US
+es_UY
+es_VE
+et
+et_EE
+fi
+fi_FI
+fi_FI_PREEURO
+fr
+fr_BE
+fr_BE_PREEURO
+fr_CA
+fr_CH
+fr_FR
+fr_FR_PREEURO
+fr_LU
+fr_LU_PREEURO
+gu
+gu_IN
+hi
+hi_IN
+hr
+hr_HR
+hu
+hu_HU
+in
+in_ID
+is
+is_IS
+it
+it_CH
+it_IT
+it_IT_PREEURO
+iw
+iw_IL
+ja
+ja_JP
+kk
+kk_KZ
+kn
+kn_IN
+ko
+kok_IN
+ko_KR
+lt
+lt_LT
+lv
+lv_LV
+mk
+mk_MK
+ml_IN
+mr
+mr_IN
+ms
+ms_MY
+nb_NO
+nl
+nl_BE
+nl_BE_PREEURO
+nl_NL
+nl_NL_PREEURO
+no
+no_NO
+no_NO_NY
+or_IN
+pa
+pa_IN
+pl
+pl_PL
+pt
+pt_BR
+pt_PT
+pt_PT_PREEURO
+ro
+ro_RO
+ru
+ru_RU
+sa
+sa_IN
+sh
+sh_YU
+sk
+sk_SK
+sl
+sl_SI
+sq
+sq_AL
+sr
+sr_YU
+sv
+sv_SE
+sv_SE_EURO
+ta
+ta_IN
+te
+te_IN
+th
+th_TH
+th_TH_TH
+tr
+tr_TR
+uk
+uk_UA
+vi
+vi_VN
+zh
+zh_CN
+zh_CN_HK
+zh_HK
+zh_SG
+zh_TW
+file.encoding.pkg: sun.io
+file.encoding: Cp1252
+
+
+Available Charsets
+1.  Charsetname: Big5
+	displayName: Big5: PC Taiwan Big 5
+	aliases: [big5, Big5-HKSCS]
+2.  Charsetname: CESU-8
+	displayName: CESU-8: Unicode UTF-8 (without surrogates)
+	aliases: [CESU8]
+3.  Charsetname: COMPOUND_TEXT
+	displayName: COMPOUND_TEXT: X11 Compound Text
+	aliases: [x-compound-text, x11-compound-text]
+4.  Charsetname: EUC-CN
+	displayName: EUC-CN: EUC China
+	aliases: [euc_cn, euccn, ibm-euccn]
+5.  Charsetname: EUC-JP
+	displayName: EUC-JP: EUC Japan
+	aliases: [euc-jp-linux, x-euc-jp, x-eucjp, euc_jp_linux, eucjp, euc_jp]
+6.  Charsetname: EUC-KR
+	displayName: EUC-KR: EUC Korea
+	aliases: [5601, ksc5601_1987, ksc_5601, ibm-euckr, ksc5601-1987, ibm-970, euc_kr, Cp970, ks_c_5601-1987, euckr]
+7.  Charsetname: EUC-TW
+	displayName: EUC-TW: EUC Taiwan
+	aliases: [euc_tw, cns11643, euctw]
+8.  Charsetname: GB18030
+	displayName: GB18030: PC China GB18030
+	aliases: [windows-54936, ibm-1392, gb18030-2000]
+9.  Charsetname: GB2312
+	displayName: GB2312
+	aliases: [gb2312-80, gb2312-1980]
+10.  Charsetname: GBK
+	displayName: GBK: PC China GBK
+	aliases: [GBK]
+11.  Charsetname: hp-roman8
+	displayName: hp-roman8: HP Roman 8
+	aliases: [Cp1051, ibm-1051, roman8, r8]
+12.  Charsetname: IBM-037
+	displayName: IBM-037: EBCDIC United States
+	aliases: [ibm-37]
+13.  Charsetname: IBM-1006
+	displayName: IBM-1006: ISO Urdu
+	aliases: [ibm1006, Cp1006]
+14.  Charsetname: IBM-1025
+	displayName: IBM-1025: EBCDIC Cyrillic
+	aliases: [ibm1025, Cp1025]
+15.  Charsetname: IBM-1026
+	displayName: IBM-1026: EBCDIC Latin 5 (Turkey)
+	aliases: [Cp1026, ibm1026]
+16.  Charsetname: IBM-1027
+	displayName: IBM-1027: EBCDIC SBCS Japan
+	aliases: [ibm1027, Cp1027]
+17.  Charsetname: IBM-1041
+	displayName: IBM-1041: PC SBCS-only Japan
+	aliases: [Cp1041, ibm1041]
+18.  Charsetname: IBM-1043
+	displayName: IBM-1043: PC SBCS-only Taiwan
+	aliases: [Cp1043, ibm1043]
+19.  Charsetname: IBM-1046
+	displayName: IBM-1046: EBCDIC Arabic
+	aliases: [ibm1046, Cp1046]
+20.  Charsetname: IBM-1046S
+	displayName: IBM-1046S: EBCDIC Arabic (shaped)
+	aliases: [Cp1046S, ibm1046S]
+21.  Charsetname: IBM-1047
+	displayName: IBM-1047: EBCDIC Open Edition
+	aliases: [Cp1047, ibm1047]
+22.  Charsetname: IBM-1088
+	displayName: IBM-1088: PC SBCS-only Korean KS
+	aliases: [Cp1088, ibm1088]
+23.  Charsetname: IBM-1097
+	displayName: IBM-1097: EBCDIC Farsi
+	aliases: [Cp1097, ibm1097]
+24.  Charsetname: IBM-1098
+	displayName: IBM-1098: ISO Farsi
+	aliases: [Cp1098, ibm1098]
+25.  Charsetname: IBM-1112
+	displayName: IBM-1112: EBCDIC Baltic
+	aliases: [Cp1112, ibm1112]
+26.  Charsetname: IBM-1114
+	displayName: IBM-1114: PC SBCS-only Taiwan
+	aliases: [Cp1114, ibm1114]
+27.  Charsetname: IBM-1115
+	displayName: IBM-1115: PC SBCS-only China
+	aliases: [Cp1115, ibm1115]
+28.  Charsetname: IBM-1122
+	displayName: IBM-1122: EBCDIC Estonia
+	aliases: [Cp1122, ibm1122]
+29.  Charsetname: IBM-1123
+	displayName: IBM-1123: EBCDIC Ukraine
+	aliases: [Cp1123, ibm1123]
+30.  Charsetname: IBM-1124
+	displayName: IBM-1124: PC Ukraine
+	aliases: [Cp1124, ibm1124]
+31.  Charsetname: IBM-1140
+	displayName: IBM-1140: EBCDIC United States (euro)
+	aliases: [Cp1140, ibm1140]
+32.  Charsetname: IBM-1141
+	displayName: IBM-1141: EBCDIC Germany (euro)
+	aliases: [Cp1141, ibm1141]
+33.  Charsetname: IBM-1142
+	displayName: IBM-1142: EBCDIC Denmark, Norway (euro)
+	aliases: [Cp1142, ibm1142]
+34.  Charsetname: IBM-1143
+	displayName: IBM-1143: EBCDIC Finland, Sweden (euro)
+	aliases: [ibm1143, Cp1143]
+35.  Charsetname: IBM-1144
+	displayName: IBM-1144: EBCDIC Italy (euro)
+	aliases: [Cp1144, ibm1144]
+36.  Charsetname: IBM-1145
+	displayName: IBM-1145: EBCDIC Spain (euro)
+	aliases: [ibm1145, Cp1145]
+37.  Charsetname: IBM-1146
+	displayName: IBM-1146: EBCDIC UK, Ireland (euro)
+	aliases: [Cp1146, ibm1146]
+38.  Charsetname: IBM-1147
+	displayName: IBM-1147: EBCDIC France (euro)
+	aliases: [Cp1147, ibm1147]
+39.  Charsetname: IBM-1148
+	displayName: IBM-1148: EBCDIC Multilingual (euro)
+	aliases: [Cp1148, ibm1148]
+40.  Charsetname: IBM-1149
+	displayName: IBM-1149: EBCDIC Iceland
+	aliases: [Cp1149, ibm1149]
+41.  Charsetname: IBM-1351
+	displayName: IBM-1351: PC DBCS-only Japan
+	aliases: [Cp1351, ibm1351]
+42.  Charsetname: IBM-1362
+	displayName: IBM-1362: PC DBCS-only Korea KS extended
+	aliases: [Cp1362, ibm1362]
+43.  Charsetname: IBM-1363
+	displayName: IBM-1363: PC Korea KS extended
+	aliases: [Cp1363, ibm1363]
+44.  Charsetname: IBM-1363C
+	displayName: IBM-1363C: PC Korea KS extended (syntax)
+	aliases: [ibm1363C, Cp1363C]
+45.  Charsetname: IBM-1364
+	displayName: IBM-1364: EBCDIC Korea KS extended
+	aliases: [ibm1364, Cp1364]
+46.  Charsetname: IBM-1370
+	displayName: IBM-1370: PC Taiwan (euro)
+	aliases: [Cp1370, ibm1370]
+47.  Charsetname: IBM-1371
+	displayName: IBM-1371: EBCDIC Taiwan (euro)
+	aliases: [Cp1371, ibm1371]
+48.  Charsetname: IBM-1380
+	displayName: IBM-1380: PC DBCS-only China GB
+	aliases: [ibm1380, Cp1380]
+49.  Charsetname: IBM-1381
+	displayName: IBM-1381: PC China GB
+	aliases: [Cp1381, ibm1381]
+50.  Charsetname: IBM-1382
+	displayName: IBM-1382: EUC DBCS-only China GB
+	aliases: [ibm1382, Cp1382]
+51.  Charsetname: IBM-1383
+	displayName: IBM-1383: EUC China
+	aliases: [Cp1383, ibm1383]
+52.  Charsetname: IBM-1385
+	displayName: IBM-1385: PC DBCS-only China GBK
+	aliases: [Cp1385, ibm1385]
+53.  Charsetname: IBM-1386
+	displayName: IBM-1386: PC China GBK
+	aliases: [Cp1386, ibm1386]
+54.  Charsetname: IBM-1388
+	displayName: IBM-1388: EBCDIC China GBK
+	aliases: [ibm1388, Cp1388]
+55.  Charsetname: IBM-1390
+	displayName: IBM-1390: EBCDIC Japan Katakana (euro)
+	aliases: [Cp1390, ibm1390]
+56.  Charsetname: IBM-1399
+	displayName: IBM-1399: EBCDIC Japan Latin (euro)
+	aliases: [Cp1399, ibm1399]
+57.  Charsetname: IBM-273
+	displayName: IBM-273: EBCDIC Germany
+	aliases: [ibm273, Cp273]
+58.  Charsetname: IBM-277
+	displayName: IBM-277: EBCDIC Denmark, Norway
+	aliases: [Cp277, ibm277]
+59.  Charsetname: IBM-278
+	displayName: IBM-278: EBCDIC Finland, Sweden
+	aliases: [ibm278, Cp278]
+60.  Charsetname: IBM-280
+	displayName: IBM-280: EBCDIC Italy 
+	aliases: [ibm280, Cp280]
+61.  Charsetname: IBM-284
+	displayName: IBM-284: EBCDIC Spain, Latin America
+	aliases: [Cp284, ibm284]
+62.  Charsetname: IBM-285
+	displayName: IBM-285: EBCDIC UK, Ireland
+	aliases: [Cp285, ibm285]
+63.  Charsetname: IBM-290
+	displayName: IBM-290: EBCDIC SBCS Japan Katakana
+	aliases: [Cp290, ibm290]
+64.  Charsetname: IBM-297
+	displayName: IBM-297: EBCDIC France
+	aliases: [Cp297, ibm297]
+65.  Charsetname: IBM-300
+	displayName: IBM-300: EBCDIC DBCS-only Japan
+	aliases: [Cp300, ibm300]
+66.  Charsetname: IBM-301
+	displayName: IBM-301: PC DBCS-only Japan
+	aliases: [ibm301, Cp301]
+67.  Charsetname: IBM-33722
+	displayName: IBM-33722: EUC Japan
+	aliases: [Cp33722, ibm33722]
+68.  Charsetname: IBM-33722C
+	displayName: IBM-33722C: EUC Japan syntax
+	aliases: [ibm33722C, Cp33722C]
+69.  Charsetname: IBM-420
+	displayName: IBM-420: EBCDIC Arabic
+	aliases: [Cp420, ibm420]
+70.  Charsetname: IBM-420S
+	displayName: IBM-420S: EBCDIC Arabic shaped
+	aliases: [Cp420S, ibm420S]
+71.  Charsetname: IBM-424
+	displayName: IBM-424: EBCDIC Hebrew
+	aliases: [ibm424, Cp424]
+72.  Charsetname: IBM-437
+	displayName: IBM-437: PC United States
+	aliases: [Cp437, cspc8codepage437, ibm437]
+73.  Charsetname: IBM-500
+	displayName: IBM-500: EBCDIC Latin 1
+	aliases: [ibm500, Cp500]
+74.  Charsetname: IBM-737
+	displayName: IBM-737: MS-DOS Greek
+	aliases: [ibm737, Cp737]
+75.  Charsetname: IBM-775
+	displayName: IBM-775: MS-DOS Baltic Rim
+	aliases: [ibm775, Cp775]
+76.  Charsetname: IBM-808
+	displayName: IBM-808: PC Russian (euro)
+	aliases: [ibm808, Cp808]
+77.  Charsetname: IBM-833
+	displayName: IBM-833: EBCDIC SBCS Korean
+	aliases: [ibm833, Cp833]
+78.  Charsetname: IBM-834
+	displayName: IBM-834: EBCDIC DBCS-only Korean
+	aliases: [Cp834, ibm834]
+79.  Charsetname: IBM-835
+	displayName: IBM-835: EBCDIC DBCS-only Taiwan
+	aliases: [Cp835, ibm835]
+80.  Charsetname: IBM-836
+	displayName: IBM-836: EBCDIC SBCS China
+	aliases: [Cp836, ibm836]
+81.  Charsetname: IBM-837
+	displayName: IBM-837: EBCDIC DBCS-only China
+	aliases: [Cp837, ibm837]
+82.  Charsetname: IBM-838
+	displayName: IBM-838: EBCDIC Thai
+	aliases: [Cp838, ibm838]
+83.  Charsetname: IBM-850
+	displayName: IBM-850: PC Latin 1
+	aliases: [cspc850multilingual, Cp850, ibm850]
+84.  Charsetname: IBM-852
+	displayName: IBM-852: PC Latin 2
+	aliases: [Cp852, cspcp852, ibm852]
+85.  Charsetname: IBM-855
+	displayName: IBM-855: PC Cyrillic
+	aliases: [Cp855, ibm855]
+86.  Charsetname: IBM-856
+	displayName: IBM-856: PC Hebrew (old)
+	aliases: [Cp856, ibm856]
+87.  Charsetname: IBM-857
+	displayName: IBM-857: PC Latin 5
+	aliases: [csibm857, ibm857, Cp857]
+88.  Charsetname: IBM-858
+	displayName: IBM-858: PC Latin 1 (euro)
+	aliases: [Cp858, ibm858]
+89.  Charsetname: IBM-859
+	displayName: IBM-859: PC Latin 9
+	aliases: [Cp859, ibm859]
+90.  Charsetname: IBM-860
+	displayName: IBM-860: PC Portugal
+	aliases: [ibm860, Cp860]
+91.  Charsetname: IBM-861
+	displayName: IBM-861: PC Iceland
+	aliases: [Cp861, ibm861]
+92.  Charsetname: IBM-862
+	displayName: IBM-862: PC Israel
+	aliases: [Cp862, ibm862]
+93.  Charsetname: IBM-863
+	displayName: IBM-863: PC Canadian French 
+	aliases: [ibm863, Cp863]
+94.  Charsetname: IBM-864
+	displayName: IBM-864: PC Arabic
+	aliases: [ibm864, Cp864]
+95.  Charsetname: IBM-864S
+	displayName: IBM-864S: PC Arabic (shaped)
+	aliases: [ibm864S, Cp864S]
+96.  Charsetname: IBM-865
+	displayName: IBM-865: PC Nordic
+	aliases: [Cp865, ibm865]
+97.  Charsetname: IBM-866
+	displayName: IBM-866: PC Russia
+	aliases: [Cp866, ibm866]
+98.  Charsetname: IBM-867
+	displayName: IBM-867: PC Israel
+	aliases: [Cp867, ibm867]
+99.  Charsetname: IBM-868
+	displayName: IBM-868: PC Urdu
+	aliases: [Cp868, ibm868]
+100.  Charsetname: IBM-869
+	displayName: IBM-869: PC Greece
+	aliases: [Cp869, ibm869]
+101.  Charsetname: IBM-870
+	displayName: IBM-870: EBCDIC Latin 2
+	aliases: [Cp870, ibm870]
+102.  Charsetname: IBM-871
+	displayName: IBM-871: EBCDIC Iceland
+	aliases: [Cp871, ibm871]
+103.  Charsetname: IBM-874
+	displayName: IBM-874: PC Thai
+	aliases: [ibm874, Cp874]
+104.  Charsetname: IBM-875
+	displayName: IBM-875: EBCDIC Greek
+	aliases: [Cp875, ibm875]
+105.  Charsetname: IBM-897
+	displayName: IBM-897: PC SBCS-only Japan
+	aliases: [Cp897, ibm897]
+106.  Charsetname: IBM-918
+	displayName: IBM-918: EBCDIC Urdu
+	aliases: [ibm918, Cp918]
+107.  Charsetname: IBM-921
+	displayName: IBM-921: PC Baltic
+	aliases: [ibm921, Cp921]
+108.  Charsetname: IBM-922
+	displayName: IBM-922: PC Estonian
+	aliases: [Cp922, ibm922]
+109.  Charsetname: IBM-924
+	displayName: IBM-924: EBCDIC Latin 9
+	aliases: [ibm924, Cp924]
+110.  Charsetname: IBM-927
+	displayName: IBM-927: PC DBCS-only Taiwan
+	aliases: [ibm927, Cp927]
+111.  Charsetname: IBM-930
+	displayName: IBM-930: EBCDIC Japan DBCS
+	aliases: [Cp930, ibm930]
+112.  Charsetname: IBM-932
+	displayName: IBM-932: PC Japan SJIS-78 syntax
+	aliases: [Cp932, ibm932]
+113.  Charsetname: IBM-933
+	displayName: IBM-933: EBCDIC Korea DBCS
+	aliases: [Cp933, ibm933]
+114.  Charsetname: IBM-935
+	displayName: IBM-935: EBCDIC China DBCS
+	aliases: [Cp935, ibm935]
+115.  Charsetname: IBM-937
+	displayName: IBM-937: EBCDIC Taiwan DBCS
+	aliases: [Cp937, ibm937]
+116.  Charsetname: IBM-939
+	displayName: IBM-939: EBCDIC Japan Extended DBCS
+	aliases: [Cp939, ibm939]
+117.  Charsetname: IBM-942
+	displayName: IBM-942: PC Japan SJIS-78
+	aliases: [ibm942, Cp942]
+118.  Charsetname: IBM-942C
+	displayName: IBM-942C: PC Japan SJIS-78 syntax
+	aliases: [ibm942C, Cp942C]
+119.  Charsetname: IBM-943
+	displayName: IBM-943: PC Japan SJIS-90
+	aliases: [ibm943, Cp943]
+120.  Charsetname: IBM-943C
+	displayName: IBM-943C: PC Japan SJIS-90 syntax
+	aliases: [Cp943C, ibm943C]
+121.  Charsetname: IBM-947
+	displayName: IBM-947: PC DBCS-only Taiwan
+	aliases: [ibm947, Cp947]
+122.  Charsetname: IBM-948
+	displayName: IBM-948: PC Taiwan SAA
+	aliases: [ibm948, Cp948]
+123.  Charsetname: IBM-949
+	displayName: IBM-949: PC Korea (KS)
+	aliases: [Cp949, ibm949]
+124.  Charsetname: IBM-949C
+	displayName: IBM-949C: PC Korea (KS)
+	aliases: [Cp949C, ibm949C]
+125.  Charsetname: IBM-950
+	displayName: IBM-950: PC Taiwan
+	aliases: [ibm950, Cp950]
+126.  Charsetname: IBM-951
+	displayName: IBM-951: PC DBCS-only Korean
+	aliases: [Cp951, ibm951]
+127.  Charsetname: IBM-954
+	displayName: IBM-954: EUC Japan (full)
+	aliases: [Cp954, ibm954]
+128.  Charsetname: IBM-954C
+	displayName: IBM-954C: EUC Japan (full) with syntax
+	aliases: [Cp954c, ibm-eucjp]
+129.  Charsetname: IBM-964
+	displayName: IBM-964: EUC Taiwan
+	aliases: [Cp964, ibm-euctw]
+130.  Charsetname: IBM-971
+	displayName: IBM-971: EUC DBCS-only Korean
+	aliases: [Cp971, ibm971]
+131.  Charsetname: ISCII91
+	displayName: ISCII91: ISCII Devenagari 91
+	aliases: [iscii]
+132.  Charsetname: ISO-2022-CN
+	displayName: ISO-2022-CN: ISO 2022 Traditional Chinese
+	aliases: [iso2022-cn-cns, iso-2022-cn-cns, iso2022cn-cns, iso2022cn, iso2022-cn]
+133.  Charsetname: ISO-2022-CN-GB
+	displayName: ISO-2022-CN-GB: ISO 2022 Simplified Chinese
+	aliases: [iso2022cn-gb, iso2022-cn-gb]
+134.  Charsetname: ISO-2022-JP
+	displayName: ISO-2022-JP: ISO 2022 Japan
+	aliases: [jis, csiso2022jp2, iso2022-jp, csjisencoding, jis-encoding, iso-2022-jp2, iso2022jp]
+135.  Charsetname: ISO-2022-KR
+	displayName: ISO-2022-KR: ISO 2022 Korea
+	aliases: [iso2022-kr, csiso2022kr, iso2022kr]
+136.  Charsetname: ISO-8859-1
+	displayName: ISO-8859-1: ISO Latin 1 - Western Europe
+	aliases: [csisolatin1, iso-ir-100, iso8859-1, ibm-819, iso8859_1, latin1, 8859-1, ibm819, iso-8859-1:1987, Cp819, l1]
+137.  Charsetname: ISO-8859-10
+	displayName: ISO-8859-10: ISO Latin 6 - Nordic
+	aliases: [iso8859-10, ISO_8859-10:1992, latin6, ibm-919, 8859-10, iso-ir-157, l6, iso8859_10, csisolatin6]
+138.  Charsetname: ISO-8859-13
+	displayName: ISO-8859-13: ISO Latin 7 - Baltic Rim
+	aliases: [iso8859-13, iso8859_13, 8859-13]
+139.  Charsetname: ISO-8859-14
+	displayName: ISO-8859-14: ISO Latin 8 - Celtic
+	aliases: [8859-14, iso8859_14, iso-ir-199, ISO_8859-14:1998, latin8, iso8859-14, isoceltic, l8]
+140.  Charsetname: ISO-8859-15
+	displayName: ISO-8859-15: ISO Latin 9 - Euro
+	aliases: [l9, ibm923, csisolatin9, 8859-9, iso8859-15, ibm-923, latin9, iso8859_15, Cp923, iso8859_15_fdis, latin0]
+141.  Charsetname: ISO-8859-16
+	displayName: ISO-8859-16: ISO Romanian
+	aliases: [iso8859_16, iso8859-16, 8859-16]
+142.  Charsetname: ISO-8859-2
+	displayName: ISO-8859-2: ISO Latin 2 - Central Europe
+	aliases: [ibm912, l2, ibm-912, iso-ir-101, csisolatin2, iso-8859-2:1987, latin2, iso8859_2, Cp912, iso8859-2, 8859-2]
+143.  Charsetname: ISO-8859-3
+	displayName: ISO-8859-3: ISO Latin 3 - Latin/Esperanto
+	aliases: [iso-8859-3:1988, csisolatin3, iso8859_3, 8859-3, iso8859-3, Cp913, iso-ir-109, ibm-913, l3, latin3]
+144.  Charsetname: ISO-8859-4
+	displayName: ISO-8859-4: ISO Latin 4 - Baltic
+	aliases: [iso-ir-110, Cp914, l4, ibm-914, latin4, iso8859_4, iso-8859-4:1988, iso8859-4, 8859-4, csisolatin4]
+145.  Charsetname: ISO-8859-5
+	displayName: ISO-8859-5: ISO Cyrillic
+	aliases: [iso8859_5, 8859-5, ibm915, iso-8859-5:1988, csisolatincyrillic, cyrillic, Cp915, iso-ir-144, iso8859-5, ibm-915]
+146.  Charsetname: ISO-8859-6
+	displayName: ISO-8859-6: ISO Arabic
+	aliases: [iso-ir-127, csisolatinarabic, iso8859-6, ibm1089, ecma-114, asmo-708, arabic, ibm-1089, iso8859_6, 8859-6, Cp1089, iso-8859-6:1987]
+147.  Charsetname: ISO-8859-6S
+	displayName: ISO-8859-6S: ISO Arabic (shaped)
+	aliases: [iso8859-6S, iso8859_6S]
+148.  Charsetname: ISO-8859-7
+	displayName: ISO-8859-7: ISO Greek
+	aliases: [iso-8859-7:1987, Cp813, 8859-7, iso-ir-126, ibm-813, iso8859_7, ecma-118, greek8, ibm813, elot-928, csisolatingreek, iso8859-7, greek]
+149.  Charsetname: ISO-8859-8
+	displayName: ISO-8859-8: ISO Hebrew
+	aliases: [iso-ir-138, iso8859-8, ibm-916, iso8859_8, csisolatinhebrew, hebrew, iso-8859-8:1988, ibm916, Cp916, 8859-8]
+150.  Charsetname: ISO-8859-9
+	displayName: ISO-8859-9: ISO Latin 5 - Turkey
+	aliases: [Cp920, latin5, iso-ir-148, 8859-9, l5, csisolatin5, ibm-920, ibm920, iso8859_9, iso8859-9]
+151.  Charsetname: JIS0201
+	displayName: JIS0201: Japan JIS 0201 (katakana)
+	aliases: []
+152.  Charsetname: JIS0208
+	displayName: JIS0208: Japan JIS 0208
+	aliases: []
+153.  Charsetname: JIS0212
+	displayName: JIS0212: Japan JIS 0212 (extended)
+	aliases: []
+154.  Charsetname: Johab
+	displayName: Johab: PC Korean Johab
+	aliases: []
+155.  Charsetname: KOI8-R
+	displayName: KOI8-R: Internet Russia
+	aliases: [ibm-878, cskoi8r, koi8, koi8_r]
+156.  Charsetname: KOI8-RU
+	displayName: KOI8-RU: Internet Belarus
+	aliases: [ibm-1168, koi8_ru]
+157.  Charsetname: KOI8-U
+	displayName: KOI8-U: Internet Ukraine
+	aliases: [ibm-1167, koi8_u]
+158.  Charsetname: KSC5601
+	displayName: KSC5601: Korea KSC
+	aliases: []
+159.  Charsetname: MacArabic
+	displayName: MacArabic: Apple Arabic
+	aliases: []
+160.  Charsetname: MacCentralEurope
+	displayName: MacCentralEurope: Apple Central Europe
+	aliases: [ibm-1282]
+161.  Charsetname: MacCroatian
+	displayName: MacCroatian: Apple Croatian 
+	aliases: [ibm-1284]
+162.  Charsetname: MacCyrillic
+	displayName: MacCyrillic: Apple Cyrillic
+	aliases: [ibm-1283]
+163.  Charsetname: MacDingbat
+	displayName: MacDingbat: Apple Dingbat
+	aliases: []
+164.  Charsetname: MacGreek
+	displayName: MacGreek: Apple Greek
+	aliases: [ibm-1280]
+165.  Charsetname: MacHebrew
+	displayName: MacHebrew: Apple Hebrew 
+	aliases: []
+166.  Charsetname: MacIceland
+	displayName: MacIceland: Apple Iceland
+	aliases: [ibm-1286]
+167.  Charsetname: MacRoman
+	displayName: MacRoman: Apple Roman
+	aliases: [ibm-1275]
+168.  Charsetname: MacRomania
+	displayName: MacRomania: Apple Romania
+	aliases: [ibm-1285]
+169.  Charsetname: MacSymbol
+	displayName: MacSymbol: Apple PostScript Symbol
+	aliases: [Adobe-Symbol-Encoding, ibm-1038]
+170.  Charsetname: MacThai
+	displayName: MacThai: Apple Thai
+	aliases: []
+171.  Charsetname: MacTurkish
+	displayName: MacTurkish: Apple Turkish
+	aliases: [ibm-1281]
+172.  Charsetname: MacUkraine
+	displayName: MacUkraine: Apple Ukraine
+	aliases: []
+173.  Charsetname: PTCP154
+	displayName: PTCP154: Windows Cyrillic Asian
+	aliases: [IBM-1169, csPTCP154, Cyrillic-Asian, PT154]
+174.  Charsetname: Shift_JIS
+	displayName: Shift_JIS: Shift JIS Japan
+	aliases: []
+175.  Charsetname: TIS-620
+	displayName: TIS-620: PC Thailand
+	aliases: [tis620.2533, tis620]
+176.  Charsetname: US-ASCII
+	displayName: US-ASCII: ASCII 7 bit
+	aliases: [iso-646.irv:1983, ISO646-US, ASCII, default, ISO-646.irv:1991, direct, ascii7, ANSI_X3.4-1986, iso-ir-6, us, ibm-367, 646, csASCII, ANSI_X3.4-1968, Cp367]
+177.  Charsetname: UTF-16
+	displayName: UTF-16
+	aliases: [Unicode, UTF16, UTF_16, UCS-2]
+178.  Charsetname: UTF-16BE
+	displayName: UTF-16BE: Unicode UTF-16 Big-endian
+	aliases: [X-UTF-16BE, UnicodeBigUnmarked, UTF16BE, UTF_16BE, ISO-10646-UCS-2]
+179.  Charsetname: UTF-16LE
+	displayName: UTF-16LE: Unicode UTF-16 Little-endian
+	aliases: [UTF_16LE, UTF16LE, UnicodeLittleUnmarked, X-UTF-16LE]
+180.  Charsetname: UTF-32
+	displayName: UTF-32: Unicode UTF-32
+	aliases: [ISO-10646-UCS-4, UTF32, UCS-4, UTF_32BE]
+181.  Charsetname: UTF-32BE
+	displayName: UTF-32BE: Unicode UTF-32 Big-endian
+	aliases: [UTF32BE, X-UTF-32BE, UTF_32BE]
+182.  Charsetname: UTF-32LE
+	displayName: UTF-32LE: Unicode UTF-32 Little-endian
+	aliases: [UTF_32LE, UTF32LE, X-UTF-32LE]
+183.  Charsetname: UTF-8
+	displayName: UTF-8: Unicode UTF-8
+	aliases: [UTF_8, UTF8]
+184.  Charsetname: UTF-8J
+	displayName: UTF-8J: Unicode UTF-8 (Java)
+	aliases: [UTF8J]
+185.  Charsetname: windows-1250
+	displayName: windows-1250: Windows Latin 2
+	aliases: [ibm-1250, Cp1250]
+186.  Charsetname: windows-1251
+	displayName: windows-1251: Windows Cyrillic
+	aliases: [ibm-1251, Cp1251]
+187.  Charsetname: windows-1252
+	displayName: windows-1252: Windows Latin 1 
+	aliases: [Cp1252, ibm-1252]
+188.  Charsetname: windows-1253
+	displayName: windows-1253: Windows Greek
+	aliases: [Cp1253, ibm-1253]
+189.  Charsetname: windows-1254
+	displayName: windows-1254: Windows Latin 5 (Turkey)
+	aliases: [Cp1254, ibm-1254]
+190.  Charsetname: windows-1255
+	displayName: windows-1255: Windows Hebrew
+	aliases: [Cp1255, ibm-1255]
+191.  Charsetname: windows-1256
+	displayName: windows-1256: Windows Arabic
+	aliases: [Cp1256, ibm-1256]
+192.  Charsetname: windows-1256S
+	displayName: windows-1256S: Windows Arabic (shaped)
+	aliases: [ibm-1256s, Cp1256s]
+193.  Charsetname: windows-1257
+	displayName: windows-1257: Windows Latin 4 (Balttic)
+	aliases: [Cp1257, ibm-1257]
+194.  Charsetname: windows-1258
+	displayName: windows-1258: Windows Vietnamese
+	aliases: [ibm-1129, ibm-1258, Cp1258]
+195.  Charsetname: windows-874
+	displayName: windows-874: Windows Thai
+	aliases: [MS874]
+196.  Charsetname: windows-932
+	displayName: windows-932: Windows Japan
+	aliases: [ms_kanji, cswindows31j, MS932, windows-31j]
+197.  Charsetname: windows-936
+	displayName: windows-936: Windows China
+	aliases: [MS936, 936]
+198.  Charsetname: windows-949
+	displayName: windows-949: Windows Korea
+	aliases: [ibm-1361, Cp1361, ibm1361, MS949, ms1361, ksc5601-1992]
+199.  Charsetname: windows-950
+	displayName: windows-950: Windows Taiwan
+	aliases: [MS950]
+200.  Charsetname: X-UnicodeBig
+	displayName: X-UnicodeBig: Unicode UTF-16 Big-endian with mark
+	aliases: [UnicodeBig]
+201.  Charsetname: X-UnicodeLittle
+	displayName: X-UnicodeLittle: Unicode UTF-16 Little-endian with mark
+	aliases: [UnicodeLittle]
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/outputFromListCharsets/Sun1.4.3_02.txt b/tests/org.eclipse.wst.xml.tests.encoding/outputFromListCharsets/Sun1.4.3_02.txt
new file mode 100644
index 0000000..37922ac
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/outputFromListCharsets/Sun1.4.3_02.txt
@@ -0,0 +1,343 @@
+
+Current Locale: en_US
+
+JRE version: 1.4.2_03 (1.4.2_03-b02)
+-- listing properties --
+java.runtime.name=Java(TM) 2 Runtime Environment, Stand...
+sun.boot.library.path=D:\JDKs\j2sdk1.4.2_03\jre\bin
+java.vm.version=1.4.2_03-b02
+java.vm.vendor=Sun Microsystems Inc.
+java.vendor.url=http://java.sun.com/
+path.separator=;
+java.vm.name=Java HotSpot(TM) Client VM
+file.encoding.pkg=sun.io
+user.country=US
+sun.os.patch.level=Service Pack 1
+java.vm.specification.name=Java Virtual Machine Specification
+user.dir=D:\builds\Daily\eclipse-SDK-I20040304...
+java.runtime.version=1.4.2_03-b02
+java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
+java.endorsed.dirs=D:\JDKs\j2sdk1.4.2_03\jre\lib\endorsed
+os.arch=x86
+java.io.tmpdir=C:\DOCUME~1\DAVIDW~1.DMW\LOCALS~1\Temp\
+line.separator=
+
+java.vm.specification.vendor=Sun Microsystems Inc.
+user.variant=
+os.name=Windows XP
+sun.java2d.fontpath=
+java.library.path=D:\JDKs\j2sdk1.4.2_03\bin;.;C:\WINDOW...
+java.specification.name=Java Platform API Specification
+java.class.version=48.0
+java.util.prefs.PreferencesFactory=java.util.prefs.WindowsPreferencesFac...
+os.version=5.1
+user.home=C:\Documents and Settings\davidw.DMW2T23
+user.timezone=
+java.awt.printerjob=sun.awt.windows.WPrinterJob
+file.encoding=Cp1252
+java.specification.version=1.4
+user.name=davidw
+java.class.path=D:\builds\Daily\eclipse-SDK-I20040304...
+java.vm.specification.version=1.0
+sun.arch.data.model=32
+java.home=D:\JDKs\j2sdk1.4.2_03\jre
+java.specification.vendor=Sun Microsystems Inc.
+user.language=en
+awt.toolkit=sun.awt.windows.WToolkit
+java.vm.info=mixed mode
+java.version=1.4.2_03
+java.ext.dirs=D:\JDKs\j2sdk1.4.2_03\jre\lib\ext
+sun.boot.class.path=D:\JDKs\j2sdk1.4.2_03\jre\lib\rt.jar;...
+java.vendor=Sun Microsystems Inc.
+file.separator=\
+java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport...
+sun.cpu.endian=little
+sun.io.unicode.encoding=UnicodeLittle
+sun.cpu.isalist=pentium i486 i386
+Available Locales
+ar
+ar_AE
+ar_BH
+ar_DZ
+ar_EG
+ar_IQ
+ar_JO
+ar_KW
+ar_LB
+ar_LY
+ar_MA
+ar_OM
+ar_QA
+ar_SA
+ar_SD
+ar_SY
+ar_TN
+ar_YE
+hi_IN
+iw
+iw_IL
+ja
+ja_JP
+ko
+ko_KR
+th
+th_TH
+th_TH_TH
+zh
+zh_CN
+zh_HK
+zh_TW
+be
+be_BY
+bg
+bg_BG
+ca
+ca_ES
+cs
+cs_CZ
+da
+da_DK
+de
+de_AT
+de_CH
+de_DE
+de_LU
+el
+el_GR
+en_AU
+en_CA
+en_GB
+en_IE
+en_IN
+en_NZ
+en_ZA
+es
+es_AR
+es_BO
+es_CL
+es_CO
+es_CR
+es_DO
+es_EC
+es_ES
+es_GT
+es_HN
+es_MX
+es_NI
+es_PA
+es_PE
+es_PR
+es_PY
+es_SV
+es_UY
+es_VE
+et
+et_EE
+fi
+fi_FI
+fr
+fr_BE
+fr_CA
+fr_CH
+fr_FR
+fr_LU
+hr
+hr_HR
+hu
+hu_HU
+is
+is_IS
+it
+it_CH
+it_IT
+lt
+lt_LT
+lv
+lv_LV
+mk
+mk_MK
+nl
+nl_BE
+nl_NL
+no
+no_NO
+no_NO_NY
+pl
+pl_PL
+pt
+pt_BR
+pt_PT
+ro
+ro_RO
+ru
+ru_RU
+sh
+sh_YU
+sk
+sk_SK
+sl
+sl_SI
+sq
+sq_AL
+sr
+sr_YU
+sv
+sv_SE
+tr
+tr_TR
+uk
+uk_UA
+en
+en_US
+file.encoding.pkg: sun.io
+file.encoding: Cp1252
+
+
+Available Charsets
+1.  Charsetname: Big5
+	displayName: Big5
+	aliases: [csBig5]
+2.  Charsetname: Big5-HKSCS
+	displayName: Big5-HKSCS
+	aliases: [big5-hkscs, Big5_HKSCS, big5hkscs]
+3.  Charsetname: EUC-JP
+	displayName: EUC-JP
+	aliases: [eucjis, x-eucjp, csEUCPkdFmtjapanese, eucjp, Extended_UNIX_Code_Packed_Format_for_Japanese, x-euc-jp, euc_jp]
+4.  Charsetname: EUC-KR
+	displayName: EUC-KR
+	aliases: [ksc5601, 5601, ksc5601_1987, ksc_5601, ksc5601-1987, euc_kr, ks_c_5601-1987, euckr, csEUCKR]
+5.  Charsetname: GB18030
+	displayName: GB18030
+	aliases: [gb18030-2000]
+6.  Charsetname: GBK
+	displayName: GBK
+	aliases: [windows-936, CP936]
+7.  Charsetname: ISO-2022-JP
+	displayName: ISO-2022-JP
+	aliases: [jis, jis_encoding, csjisencoding, csISO2022JP, iso2022jp]
+8.  Charsetname: ISO-2022-KR
+	displayName: ISO-2022-KR
+	aliases: [ISO2022KR, csISO2022KR]
+9.  Charsetname: ISO-8859-1
+	displayName: ISO-8859-1
+	aliases: [iso-ir-100, 8859_1, ISO_8859-1, ISO8859_1, 819, csISOLatin1, IBM-819, ISO_8859-1:1987, latin1, cp819, ISO8859-1, IBM819, ISO_8859_1, l1]
+10.  Charsetname: ISO-8859-13
+	displayName: ISO-8859-13
+	aliases: [iso8859_13]
+11.  Charsetname: ISO-8859-15
+	displayName: ISO-8859-15
+	aliases: [8859_15, csISOlatin9, IBM923, cp923, 923, L9, IBM-923, ISO8859-15, LATIN9, ISO_8859-15, LATIN0, csISOlatin0, ISO8859_15_FDIS, ISO-8859-15]
+12.  Charsetname: ISO-8859-2
+	displayName: ISO-8859-2
+	aliases: [l2, iso-ir-101, ISO_8859-2:1987, ISO_8859-2, latin2, csISOLatin2, iso8859_2]
+13.  Charsetname: ISO-8859-3
+	displayName: ISO-8859-3
+	aliases: []
+14.  Charsetname: ISO-8859-4
+	displayName: ISO-8859-4
+	aliases: [iso-ir-110, l4, latin4, csISOLatin4, iso8859_4, ISO_8859-4:1988, ISO_8859-4]
+15.  Charsetname: ISO-8859-5
+	displayName: ISO-8859-5
+	aliases: [cyrillic, iso8859_5, ISO_8859-5, iso-ir-144, csISOLatinCyrillic]
+16.  Charsetname: ISO-8859-6
+	displayName: ISO-8859-6
+	aliases: []
+17.  Charsetname: ISO-8859-7
+	displayName: ISO-8859-7
+	aliases: [greek8, ECMA-118, sun_eu_greek, ELOT_928, ISO_8859-7:1987, iso-ir-126, ISO_8859-7, iso8859_7, greek, csISOLatinGreek]
+18.  Charsetname: ISO-8859-8
+	displayName: ISO-8859-8
+	aliases: []
+19.  Charsetname: ISO-8859-9
+	displayName: ISO-8859-9
+	aliases: [iso-ir-148, latin5, l5, ISO_8859-9, ISO_8859-9:1989, csISOLatin5, iso8859_9]
+20.  Charsetname: JIS_X0201
+	displayName: JIS_X0201
+	aliases: [JIS_X0201, X0201, JIS0201, csHalfWidthKatakana]
+21.  Charsetname: JIS_X0212-1990
+	displayName: JIS_X0212-1990
+	aliases: [jis_x0212-1990, iso-ir-159, x0212, JIS0212, csISO159JISX02121990]
+22.  Charsetname: KOI8-R
+	displayName: KOI8-R
+	aliases: [koi8, cskoi8r]
+23.  Charsetname: Shift_JIS
+	displayName: Shift_JIS
+	aliases: [shift-jis, x-sjis, ms_kanji, shift_jis, csShiftJIS, sjis, pck]
+24.  Charsetname: TIS-620
+	displayName: TIS-620
+	aliases: []
+25.  Charsetname: US-ASCII
+	displayName: US-ASCII
+	aliases: [ISO646-US, IBM367, ASCII, cp367, ascii7, ANSI_X3.4-1986, iso-ir-6, us, 646, iso_646.irv:1983, csASCII, ANSI_X3.4-1968, ISO_646.irv:1991]
+26.  Charsetname: UTF-16
+	displayName: UTF-16
+	aliases: [UTF_16]
+27.  Charsetname: UTF-16BE
+	displayName: UTF-16BE
+	aliases: [X-UTF-16BE, UTF_16BE, ISO-10646-UCS-2]
+28.  Charsetname: UTF-16LE
+	displayName: UTF-16LE
+	aliases: [UTF_16LE, X-UTF-16LE]
+29.  Charsetname: UTF-8
+	displayName: UTF-8
+	aliases: [UTF8]
+30.  Charsetname: windows-1250
+	displayName: windows-1250
+	aliases: [cp1250]
+31.  Charsetname: windows-1251
+	displayName: windows-1251
+	aliases: [cp1251]
+32.  Charsetname: windows-1252
+	displayName: windows-1252
+	aliases: [cp1252]
+33.  Charsetname: windows-1253
+	displayName: windows-1253
+	aliases: [cp1253]
+34.  Charsetname: windows-1254
+	displayName: windows-1254
+	aliases: [cp1254]
+35.  Charsetname: windows-1255
+	displayName: windows-1255
+	aliases: []
+36.  Charsetname: windows-1256
+	displayName: windows-1256
+	aliases: []
+37.  Charsetname: windows-1257
+	displayName: windows-1257
+	aliases: [cp1257]
+38.  Charsetname: windows-1258
+	displayName: windows-1258
+	aliases: []
+39.  Charsetname: windows-31j
+	displayName: windows-31j
+	aliases: [csWindows31J, windows-932, MS932]
+40.  Charsetname: x-EUC-CN
+	displayName: x-EUC-CN
+	aliases: [gb2312, EUC_CN, euccn, euc-cn, gb2312-80, gb2312-1980]
+41.  Charsetname: x-euc-jp-linux
+	displayName: x-euc-jp-linux
+	aliases: [euc_jp_linux, euc-jp-linux]
+42.  Charsetname: x-EUC-TW
+	displayName: x-EUC-TW
+	aliases: [cns11643, euc_tw, EUC-TW, euctw]
+43.  Charsetname: x-ISCII91
+	displayName: x-ISCII91
+	aliases: [iscii, ST_SEV_358-88, iso-ir-153, csISO153GOST1976874, ISCII91]
+44.  Charsetname: x-JIS0208
+	displayName: x-JIS0208
+	aliases: [JIS_C6626-1983, JIS0208, csISO87JISX0208, x0208, JIS_X0208-1983, iso-ir-87]
+45.  Charsetname: x-Johab
+	displayName: x-Johab
+	aliases: [johab, ms1361, ksc5601-1992, ksc5601_1992]
+46.  Charsetname: x-MS950-HKSCS
+	displayName: x-MS950-HKSCS
+	aliases: [MS950_HKSCS]
+47.  Charsetname: x-mswin-936
+	displayName: x-mswin-936
+	aliases: [ms936, ms_936]
+48.  Charsetname: x-windows-949
+	displayName: x-windows-949
+	aliases: [windows949, ms_949, ms949]
+49.  Charsetname: x-windows-950
+	displayName: x-windows-950
+	aliases: [windows-950, ms950]
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/plugin.properties b/tests/org.eclipse.wst.xml.tests.encoding/plugin.properties
new file mode 100644
index 0000000..c96f3f0
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/plugin.properties
@@ -0,0 +1,3 @@
+# properties file for org.eclipse.wst.xml.tests.encoding
+Bundle-Vendor.0 = Eclipse.org
+Bundle-Name.0 = Encoding Tests Plug-in
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/CreateCodedReaderTester.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/CreateCodedReaderTester.java
new file mode 100644
index 0000000..761a775
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/CreateCodedReaderTester.java
@@ -0,0 +1,253 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.xml.tests.encoding;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.nio.charset.IllegalCharsetNameException;
+import java.nio.charset.MalformedInputException;
+import java.util.Iterator;
+import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.wst.sse.core.internal.encoding.CodedReaderCreator;
+import org.eclipse.wst.sse.core.internal.encoding.NonContentBasedEncodingRules;
+import org.eclipse.wst.sse.core.internal.exceptions.UnsupportedCharsetExceptionWithDetail;
+import org.eclipse.wst.xml.tests.encoding.util.ProjectUnzipUtility;
+
+/**
+ * This class is intended to be executed only at development time, and it
+ * creates the class to JUnit test all the files found in the testfiles
+ * directory.
+ */
+public class CreateCodedReaderTester extends TestCase {
+	//	private final String fileDir = "html/";
+	//	private final String fileRoot =
+	// "/builds/Workspaces/HeadWorkspace/org.eclipse.wst.xml.tests.encoding/";
+	//	private final String fileLocation = fileRoot + fileDir;
+	private static final String TESTFILES_ZIPFILE_NAME = "testfiles.zip"; //$NON-NLS-1$
+	private static final boolean DEBUG = false;
+	private static final String TEST_FILE_DIR = "testfiles"; //$NON-NLS-1$
+	// needs to be static, since JUnit creates difference instances for each
+	// test
+	private static boolean fTestProjectInitialized;
+	private static final String TEST_PROJECT_NAME = "org.eclipse.wst.xml.tests.encoding"; //$NON-NLS-1$
+	static IProject fTestProject;
+	private static int nSetups = 0;
+	private static final String currentPlatformCharset = getPlatformDefault();
+	private boolean RECREATE_FILES = false;
+
+	/**
+	 *  
+	 */
+	public CreateCodedReaderTester() {
+		super();
+		//System.out.println(currentPlatformCharset);
+	}
+
+	/**
+	 * @return
+	 */
+	private static String getPlatformDefault() {
+		String platformDefault = NonContentBasedEncodingRules.useDefaultNameRules(null);
+		return platformDefault;
+	}
+
+	public static void main(String[] args) {
+		//				try {
+		//					new CreateCodedReaderTester().doCreateAllFiles();
+		//				} catch (CoreException e) {
+		//					e.printStackTrace();
+		//				} catch (IOException e) {
+		//					e.printStackTrace();
+		//				}
+	}
+
+	private static void createProject(IProject project, IPath locationPath, IProgressMonitor monitor) throws CoreException {
+		if (monitor == null) {
+			monitor = new NullProgressMonitor();
+		}
+		monitor.beginTask("creating test project", 10);
+		// create the project
+		try {
+			if (!project.exists()) {
+				IProjectDescription desc = project.getWorkspace().newProjectDescription(project.getName());
+				if (Platform.getLocation().equals(locationPath)) {
+					locationPath = null;
+				}
+				desc.setLocation(locationPath);
+				project.create(desc, monitor);
+				monitor = null;
+			}
+			if (!project.isOpen()) {
+				project.open(monitor);
+				monitor = null;
+			}
+		}
+		finally {
+			if (monitor != null) {
+				monitor.done();
+			}
+		}
+	}
+
+	private static void getAndCreateProject() throws CoreException {
+		//TestsPlugin testsPlugin = (TestsPlugin)
+		// Platform.getPlugin("org.eclipse.wst.xml.tests.encoding");
+		IWorkspace workspace = TestsPlugin.getWorkspace();
+		IWorkspaceRoot root = workspace.getRoot();
+		fTestProject = root.getProject(TEST_PROJECT_NAME);
+		// this form creates project as "linked" back to 'fileRoot'
+		//createProject(testProject, new Path(fileRoot), null);
+		createProject(fTestProject, null, null);
+		fTestProject.refreshLocal(IResource.DEPTH_INFINITE, null);
+		assertTrue(fTestProject.exists());
+		//		IContainer testFiles = testProject.getFolder("testfiles");
+		//		assertTrue(testFiles.exists());
+		//		IResource[] allFolders = testFiles.members();
+		//		assertNotNull(allFolders);
+	}
+
+	private void createTestMethodSource(int count, String filePathAndName, String detectedCharsetName, String javaCharsetName, String expectedException) {
+		String javaCharsetNameOrKey = javaCharsetName;
+		if (null != javaCharsetNameOrKey && javaCharsetNameOrKey.equals(currentPlatformCharset))
+			javaCharsetNameOrKey = "expectPlatformCharset";
+		System.out.println("public void testFile" + count + " () throws CoreException, IOException {" + " doTest( \"" + javaCharsetNameOrKey + "\", \"" + detectedCharsetName + "\",  \"" + filePathAndName + "\", " + expectedException + "); }");
+	}
+
+	protected void setUp() throws Exception {
+		super.setUp();
+		nSetups++;
+		if (!fTestProjectInitialized) {
+			getAndCreateProject();
+			// unzip files to the root of workspace directory
+			String destinationProjectString = fTestProject.getLocation().toOSString();
+			String destinationFolder = destinationProjectString + "/";
+			// this zip file is sitting in the "root" of test plugin
+			File zipFile = TestsPlugin.getTestFile("testfiles.zip");
+			ProjectUnzipUtility projUtil = new ProjectUnzipUtility();
+			projUtil.unzipAndImport(zipFile, destinationFolder);
+			projUtil.initJavaProject(TEST_PROJECT_NAME);
+			fTestProject.refreshLocal(IResource.DEPTH_INFINITE, null);
+			fTestProjectInitialized = true;
+		}
+	}
+
+	protected void tearDown() throws Exception {
+		super.tearDown();
+		nSetups--;
+		if (nSetups == 0) {
+			if (!DEBUG) {
+				//				Display display = PlatformUI.getWorkbench().getDisplay();
+				//				display.asyncExec(new Runnable() {
+				//					public void run() {
+				//						ProjectUnzipUtility projUtil = new ProjectUnzipUtility();
+				//						IProject proj = fTestProject;
+				//						fTestProject = null;
+				//						try {
+				//							projUtil.deleteProject(proj);
+				//						} catch (Exception e) {
+				//							e.printStackTrace();
+				//						}
+				//					}
+				//				});
+			}
+		}
+	}
+
+	public void testCreateAllFiles() throws CoreException, IOException {
+		if (RECREATE_FILES) {
+			List allFiles = TestsPlugin.getAllTestFiles(TEST_FILE_DIR);
+			URL outputDirURL = TestsPlugin.getInstallLocation();
+			File zipoutFile = new File(outputDirURL.getPath(), TESTFILES_ZIPFILE_NAME);
+			java.io.FileOutputStream zipOut = new FileOutputStream(zipoutFile);
+			ZipOutputStream zipOutputStream = new ZipOutputStream(zipOut);
+			int count = 1;
+			for (Iterator iter = allFiles.iterator(); iter.hasNext();) {
+				File file = (File) iter.next();
+				createZipEntry(zipOutputStream, file);
+				CodedReaderCreator codedReaderCreator = new CodedReaderCreator();
+				codedReaderCreator.set(file.getName(), new FileInputStream(file));
+				String detectedCharsetName = null;
+				String javaCharsetName = null;
+				String expectedException = null;
+				try {
+					// just used for debug info, but can throw exception
+					javaCharsetName = codedReaderCreator.getEncodingMemento().getJavaCharsetName();
+					detectedCharsetName = codedReaderCreator.getEncodingMemento().getDetectedCharsetName();
+				}
+				catch (UnsupportedCharsetExceptionWithDetail e) {
+					// ignore for simply creating tests
+					expectedException = e.getClass().getName() + ".class";
+				}
+				catch (MalformedInputException e) {
+					// ignore for simply creating tests
+					expectedException = e.getClass().getName() + ".class";
+				}
+				catch (IllegalCharsetNameException e) {
+					// ignore for simply creating tests
+					expectedException = e.getClass().getName() + ".class";
+				}
+				String subpath = getSubPathName(file);
+				createTestMethodSource(count, subpath, detectedCharsetName, javaCharsetName, expectedException);
+				count++;
+			}
+			zipOutputStream.close();
+			zipOut.close();
+			assertTrue(true);
+		}
+	}
+
+	private String getSubPathName(File file) {
+		String path = file.getPath();
+		int lastIndex = path.lastIndexOf(TEST_FILE_DIR);
+		String subpath = path.substring(lastIndex);
+		subpath = subpath.replace('\\', '/');
+		return subpath;
+	}
+
+	/**
+	 * @param zipOutputStream
+	 * @param element
+	 */
+	private void createZipEntry(ZipOutputStream zipOutputStream, File file) throws IOException {
+		String subPathName = getSubPathName(file);
+		ZipEntry zipEntry = new ZipEntry(subPathName);
+		zipOutputStream.putNextEntry(zipEntry);
+		InputStream inputStream = new FileInputStream(file);
+		int nRead = 0;
+		byte[] buffer = new byte[1024 * 8];
+		while (nRead != -1) {
+			nRead = inputStream.read(buffer);
+			if (nRead > 0) {
+				zipOutputStream.write(buffer, 0, nRead);
+			}
+		}
+		zipOutputStream.flush();
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/EncodingTestSuite.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/EncodingTestSuite.java
new file mode 100644
index 0000000..65856f8
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/EncodingTestSuite.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.xml.tests.encoding;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.eclipse.wst.xml.tests.encoding.properties.TestCommonNames;
+import org.eclipse.wst.xml.tests.encoding.properties.TestOverrides;
+import org.eclipse.wst.xml.tests.encoding.read.TestCodedReader;
+import org.eclipse.wst.xml.tests.encoding.read.TestCodedReaderOnGennedFiles;
+import org.eclipse.wst.xml.tests.encoding.read.TestContentDescription;
+import org.eclipse.wst.xml.tests.encoding.read.TestContentTypeDescriptionOnGennedFiles;
+import org.eclipse.wst.xml.tests.encoding.read.TestContentTypeDetectionForXML;
+import org.eclipse.wst.xml.tests.encoding.read.TestContentTypes;
+import org.eclipse.wst.xml.tests.encoding.write.TestCodedWrite;
+import org.eclipse.wst.xml.tests.encoding.xml.XMLEncodingTests;
+import org.eclipse.wst.xml.tests.encoding.xml.XMLHeadTokenizerTester;
+
+
+public class EncodingTestSuite extends TestSuite {
+
+	// FIXME: commented out lang. spec. tests, until all migrated to org.eclipse 
+	private static Class[] classes = new Class[]{TestOverrides.class, TestCodedReader.class, TestCodedWrite.class, XMLEncodingTests.class, XMLHeadTokenizerTester.class, TestContentTypeDescriptionOnGennedFiles.class, TestCodedReaderOnGennedFiles.class, TestContentDescription.class, TestContentTypes.class, TestCommonNames.class, TestContentTypeDetectionForXML.class};
+	//private static Class[] classes = new Class[]{TestOverrides.class, CSSEncodingTester.class, CSSHeadTokenizerTester.class, HTMLEncodingTests.class, HTMLHeadTokenizerTester.class, JSPEncodingTests.class, JSPHeadTokenizerTester.class, TestCodedReader.class, TestCodedWrite.class, XMLEncodingTests.class, XMLHeadTokenizerTester.class, XMLMalformedInputTests.class, TestContentTypeDescriptionOnGennedFiles.class, TestCodedReaderOnGennedFiles.class, TestContentTypeDetection.class, TestContentDescription.class, TestContentTypes.class, TestCommonNames.class};
+	public EncodingTestSuite() {
+		super("Encoding Test Suite");
+		for (int i = 0; i < classes.length; i++) {
+			addTest(new TestSuite(classes[i], classes[i].getName()));
+		}
+	}
+
+	/**
+	 * @param theClass
+	 * @param name
+	 */
+	public EncodingTestSuite(Class theClass, String name) {
+		super(theClass, name);
+	}
+
+	/**
+	 * @param theClass
+	 */
+	public EncodingTestSuite(Class theClass) {
+		super(theClass);
+	}
+
+	/**
+	 * @param name
+	 */
+	public EncodingTestSuite(String name) {
+		super(name);
+	}
+
+	public static Test suite() {
+		return new EncodingTestSuite();
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/FileUtil.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/FileUtil.java
new file mode 100644
index 0000000..b1fc4eb
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/FileUtil.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.xml.tests.encoding;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+
+import org.eclipse.core.runtime.FileLocator;
+
+/**
+ * @author davidw
+ * 
+ * To change this generated comment edit the template variable "typecomment":
+ * Window>Preferences>Java>Templates. To enable and disable the creation of
+ * type comments go to Window>Preferences>Java>Code Generation.
+ */
+class FileUtil {
+	private static String currentWorkspace = "dev0725";
+	private static boolean printedOnce = false;
+	public static String fLineSeparator = System.getProperty("line.separator");
+	public static String fPathSeparator = System.getProperty("path.separator");
+	public static String fFileSeparator = System.getProperty("file.separator");
+
+	public static File makeFileFor(String directory, String filename, String testResultsDirectoryPrefix) throws IOException {
+		String installPath = "/builds/Workspaces/" + currentWorkspace + "/org.eclipse.wst.xml.tests.encoding/";
+		URL url = new URL("file://" + installPath);
+		String totalDirectory = installPath + directory;
+		String totalPath = totalDirectory + "/" + filename;
+		URL totalURL = new URL(url, totalPath);
+		URL finalurl = FileLocator.toFileURL(totalURL);
+		String finalFile = finalurl.getFile();
+		File file = new File(finalFile);
+		String finalPath = file.getParent();
+		File dir = new File(finalPath);
+		if (!printedOnce) {
+			System.out.println("Output written to " + dir.getAbsolutePath());
+			printedOnce = true;
+		}
+
+		if (!dir.exists()) {
+			dir.mkdirs();
+		}
+		return file;
+	}
+
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/GenerateFiles.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/GenerateFiles.java
new file mode 100644
index 0000000..327f4e6
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/GenerateFiles.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.xml.tests.encoding;
+
+
+public class GenerateFiles {
+
+	public static final String getMainDirectoryBasedOnVMName() {
+		String mainDirectory = "testfiles/genedFiles-" + getJavaVersion();
+		return mainDirectory;
+	}
+
+	private static final String getJavaVersion() {
+		String name = null; //System.getProperty("java.fullversion");
+		if (name == null) {
+			name = System.getProperty("java.version") + " (" + System.getProperty("java.runtime.version") + ")";
+		}
+		return name;
+	}
+
+}
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/GenerateXMLFiles.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/GenerateXMLFiles.java
new file mode 100644
index 0000000..bf1f963
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/GenerateXMLFiles.java
@@ -0,0 +1,409 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.xml.tests.encoding;
+
+import java.io.BufferedWriter;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintStream;
+import java.io.UnsupportedEncodingException;
+import java.io.Writer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CodingErrorAction;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.core.runtime.content.IContentDescription;
+
+/**
+ * The purpose and logic of this class is to create small "XML files" of
+ * various, known encodings, write them to files, and in later tests, be sure
+ * appropriate encoding can be detected, and read in and intact characters.
+ */
+public class GenerateXMLFiles extends GenerateFiles {
+	private String LF = "\n";
+	private String CR = "\r";
+	private String CRLF = CR + LF;
+	// different text strings for comparisons
+	private String textUS_ASCII_LF = "abcdefghijklmnopqrstuvwxyz\n1234567890\nABCDEFGHIJKLMNOPQRSTUVWXYZ";
+	private String textUS_ASCII_CRLF = "abcdefghijklmnopqrstuvwxyz\r\n1234567890\r\nABCDEFGHIJKLMNOPQRSTUVWXYZ";
+	private boolean DEBUG = true;
+	private boolean DEBUGCRLF = false;
+	private boolean DEBUGINFO = true;
+
+
+	public GenerateXMLFiles() {
+		super();
+	}
+
+	public static void main(String[] args) {
+		//junit.textui.TestRunner.run(GenerateXMLFiles.class);
+		GenerateXMLFiles thisApp = new GenerateXMLFiles();
+		try {
+			//thisApp.generateOriginalFiles();
+			thisApp.generateAllFilesForCurrentVM();
+		}
+		catch (IOException e) {
+
+			e.printStackTrace();
+		}
+	}
+
+	private void generateAllFilesForCurrentVM() throws IOException {
+		Map allCharsetMap = Charset.availableCharsets();
+		Set allKeys = allCharsetMap.keySet();
+		Object[] allcharsets = allKeys.toArray();
+		String[] allcharsetNames = new String[allcharsets.length];
+		for (int i = 0; i < allcharsets.length; i++) {
+			allcharsetNames[i] = allcharsets[i].toString();
+
+		}
+		//createFiles(allcharsetNames, false);
+		createFiles(allcharsetNames, true);
+
+	}
+
+	private void createFiles(String[] charsetnames, boolean useCRLF) throws FileNotFoundException, IOException {
+
+		String charsetName = null;
+		Writer out = null;
+		String mainDirectory = getMainDirectoryBasedOnVMNameAndFileExtension();
+		List charsetFilesWritten = new ArrayList();
+		for (int i = 0; i < charsetnames.length; i++) {
+			try {
+
+
+				charsetName = charsetnames[i];
+
+				Charset charset = Charset.forName(charsetName);
+				CharsetEncoder charsetEncoder = charset.newEncoder();
+				charsetEncoder.onMalformedInput(CodingErrorAction.REPORT);
+				charsetEncoder.onUnmappableCharacter(CodingErrorAction.REPORT);
+
+				String header = getHeaderStart() + charsetName + getHeaderEnd();
+				String fulltext = null;
+				if (useCRLF) {
+					fulltext = header + textUS_ASCII_CRLF;
+				}
+				else {
+					fulltext = header + textUS_ASCII_LF;
+				}
+
+				if (!isEbcidic(charsetName, charsetEncoder)) {
+					if (charsetEncoder.canEncode(fulltext)) {
+						//						if (canEncodeCRLF(charsetName, charsetEncoder)
+						// &&
+						// canEncodeSimpleString(charsetName,
+						// charsetEncoder, "<?") &&
+						// charsetEncoder.canEncode(fulltext)) {
+						String outputfilename = "test-" + charsetName + ".xml";
+						File outFile = FileUtil.makeFileFor(mainDirectory, outputfilename, null);
+						//System.out.println(outFile.getAbsolutePath());
+						OutputStream outputStream = new FileOutputStream(outFile);
+						ByteArrayOutputStream bytesout = new ByteArrayOutputStream();
+
+						Writer fileWriter = new OutputStreamWriter(outputStream, charsetEncoder);
+						// this byte writer is created just to be able to
+						// count precise bytes.
+						Writer byteWriter = new OutputStreamWriter(bytesout, charsetEncoder);
+
+						supplyBOMs(charsetName, outputStream, bytesout);
+
+						out = new BufferedWriter(fileWriter);
+
+
+						out.write(fulltext);
+						byteWriter.write(fulltext);
+						out.close();
+						byteWriter.flush();
+						// if we made is this far, with no exceptions,
+						// etc.,
+						// then
+						// must have been
+						// really written.
+						String writtenRecord = charsetName;
+						charsetFilesWritten.add(writtenRecord);
+						if (DEBUG) {
+							printDebugInfo(useCRLF, header, outputfilename, bytesout);
+						}
+					}
+					else {
+						if (DEBUGINFO) {
+							System.out.println(" *** could not convert sample ascii text for " + charsetName);
+						}
+					}
+				}
+			}
+
+			catch (IOException e) {
+				if (DEBUGINFO) {
+					System.out.println(" ***** could not generate for " + charsetName);
+					String msg = e.getMessage();
+					if (msg == null)
+						msg = "";
+					System.out.println("          due to " + e.getClass().getName() + "  " + msg);
+				}
+			}
+			catch (Exception e) {
+				if (DEBUGINFO) {
+					System.out.println(" ***** could not generate for " + charsetName);
+					String msg = e.getMessage();
+					if (msg == null)
+						msg = "";
+					System.out.println("          due to " + e.getClass().getName() + "  " + msg);
+				}
+			}
+			finally {
+				if (out != null) {
+					out.close();
+				}
+			}
+		}
+
+
+		// now create file that summarizes what was written
+		// suitable to paste as method in test class
+		File outFile = FileUtil.makeFileFor(mainDirectory, "testMethods.text", null);
+		FileWriter outproperties = new FileWriter(outFile);
+		outproperties.write(charsetFilesWritten.size() + CRLF);
+		Iterator items = charsetFilesWritten.iterator();
+		int n = 0;
+		while (items.hasNext()) {
+			String itemCreated = (String) items.next();
+			String testMethod = createMethod(n++, itemCreated);
+			outproperties.write(testMethod + CRLF);
+		}
+		outproperties.close();
+
+	}
+
+	/**
+	 * I thought this used to be automatic, but doesn't seem to be now?!
+	 */
+	private void supplyBOMs(String charsetName, OutputStream outputStream, ByteArrayOutputStream bytesout) throws IOException {
+		byte[] nullBytes = new byte[]{0x00, 0x00};
+		if (charsetName.equals("UTF-16")) {
+			outputStream.write(IContentDescription.BOM_UTF_16LE);
+			bytesout.write(IContentDescription.BOM_UTF_16LE);
+		}
+		if (charsetName.equals("UTF-16LE")) {
+			outputStream.write(IContentDescription.BOM_UTF_16LE);
+			bytesout.write(IContentDescription.BOM_UTF_16LE);
+		}
+		if (charsetName.equals("X-UnicodeLittle")) {
+			outputStream.write(IContentDescription.BOM_UTF_16LE);
+			bytesout.write(IContentDescription.BOM_UTF_16LE);
+		}
+		if (charsetName.equals("UTF-16BE")) {
+			outputStream.write(IContentDescription.BOM_UTF_16BE);
+			bytesout.write(IContentDescription.BOM_UTF_16BE);
+		}
+		if (charsetName.equals("X-UnicodeBig")) {
+			outputStream.write(IContentDescription.BOM_UTF_16BE);
+			bytesout.write(IContentDescription.BOM_UTF_16BE);
+		}
+		if (charsetName.equals("UTF-32")) {
+			outputStream.write(nullBytes);
+			outputStream.write(IContentDescription.BOM_UTF_16LE);
+			bytesout.write(nullBytes);
+			bytesout.write(IContentDescription.BOM_UTF_16LE);
+		}
+		if (charsetName.equals("UTF-32LE")) {
+			outputStream.write(nullBytes);
+			outputStream.write(IContentDescription.BOM_UTF_16LE);
+			bytesout.write(nullBytes);
+			bytesout.write(IContentDescription.BOM_UTF_16LE);
+		}
+		if (charsetName.equals("UTF-32BE")) {
+			outputStream.write(nullBytes);
+			outputStream.write(IContentDescription.BOM_UTF_16BE);
+			bytesout.write(nullBytes);
+			bytesout.write(IContentDescription.BOM_UTF_16BE);
+		}
+	}
+
+	/**
+	 * @param i
+	 * @param itemCreated
+	 */
+	private String createMethod(int i, String itemCreated) {
+		String template = "	public void testFile" + i + "() throws CoreException, IOException  {\r\n" + "		String charsetName = \"" + itemCreated + "\";\r\n" + "		doGenTest(charsetName);\r\n" + "	}";
+		return template;
+	}
+
+	private void printDebugInfo(boolean useCRLF, String header, String outputfilename, ByteArrayOutputStream bytesout) {
+		byte[] bytes = bytesout.toByteArray();
+		int nBytes = bytes.length;
+		int nChars = 0;
+		if (useCRLF) {
+			nChars = header.length() + textUS_ASCII_CRLF.length();
+		}
+		else {
+			nChars = header.length() + textUS_ASCII_LF.length();
+		}
+
+		System.out.println("Wrote " + nChars + " characters and " + nBytes + " bytes to " + outputfilename);
+	}
+
+	// TODO: never used
+	 boolean canEncodeSimpleString(String charsetName, CharsetEncoder charsetEncocder, String simpleString) {
+		// this method added since some encoders don't report that they can't
+		// encode something, but they obviously
+		// can't, at least in the normal meaning of the word.
+		// This seems to mostly apply to some IBM varieties where, apparently,
+		// the input can't be interpreted at all without knowing encoding
+		// (that is
+		// could not be used for content based encoding).
+		boolean result = false;
+
+		String newAsciiString = null;
+		byte[] translatedBytes = null;
+		try {
+			translatedBytes = simpleString.getBytes(charsetName);
+			newAsciiString = new String(translatedBytes, "ascii");
+		}
+		catch (UnsupportedEncodingException e) {
+			// impossible, since checked already
+			throw new Error(e);
+		}
+		result = simpleString.equals(newAsciiString);
+		if (!result) {
+			if (charsetEncocder.maxBytesPerChar() != 1) {
+				// don't check mulitbyte encoders, just assume true (for now).
+				result = true;
+				if (charsetEncocder.maxBytesPerChar() == 4) {
+					//except, let's just exclude four byte streams, for now.
+					result = false;
+					if (charsetEncocder.averageBytesPerChar() == 2) {
+						// except, for some reason UTF has max bytes of 4
+						// (average bytes of 2).
+						result = false;
+					}
+				}
+			}
+		}
+
+		return result;
+	}
+
+	/**
+	 * A very heuristic method. Should have table, someday.
+	 */
+	private boolean isEbcidic(String charsetName, CharsetEncoder charsetEncocder) {
+		boolean result = false;
+		String simpleString = "<?";
+		String newAsciiString = null;
+		byte[] translatedBytes = null;
+		try {
+			translatedBytes = simpleString.getBytes(charsetName);
+			newAsciiString = new String(translatedBytes, "ascii");
+		}
+		catch (UnsupportedEncodingException e) {
+			// impossible, since checked already
+			throw new Error(e);
+		}
+		// experimenting/debugging showed the known ebcidic onces always
+		// "mis" tranlated to characters L and o.
+		result = "Lo".equals(newAsciiString);
+		if (result) {
+			System.out.println(charsetName + " assumed to be Edcidic");
+		}
+		return result;
+	}
+
+	/**
+	 * @param charset
+	 */
+	 boolean canEncodeCRLF(String charsetName, CharsetEncoder charsetEncoder) {
+		boolean result = true;
+		//String charsetCononicalName = charsetEncoder.charset().name();
+		if (!charsetEncoder.canEncode(LF)) {
+			if (DEBUGCRLF) {
+				String stringName = "LF";
+				String testString = LF;
+				exploreConversion(charsetName, stringName, testString);
+				System.out.println("can not encode LF for " + charsetEncoder.charset().name());
+			}
+			result = false;
+		}
+		if (!charsetEncoder.canEncode(CR)) {
+			if (DEBUGCRLF) {
+				String stringName = "CR";
+				String testString = CR;
+				exploreConversion(charsetName, stringName, testString);
+				System.out.println("can not encode CR for " + charsetEncoder.charset().name());
+			}
+			result = false;
+		}
+		if (!charsetEncoder.canEncode(CRLF)) {
+			if (DEBUGCRLF) {
+				String stringName = "CRLF";
+				String testString = CRLF;
+				exploreConversion(charsetName, stringName, testString);
+				System.out.println("can not encode CRLF for " + charsetEncoder.charset().name());
+			}
+			result = false;
+		}
+		return result;
+
+	}
+
+	private void exploreConversion(String charsetName, String stringName, String testString) throws Error {
+		try {
+			String newLF = new String(testString.getBytes(charsetName));
+			System.out.print("old " + stringName + " (dec): ");
+			dumpString(System.out, testString);
+			System.out.println();
+			System.out.print("new " + stringName + " (dec): ");
+			dumpString(System.out, newLF);
+			System.out.println();
+		}
+		catch (UnsupportedEncodingException e) {
+			//should never happen, already checked
+			throw new Error(e);
+		}
+	}
+
+	/**
+	 * @param out
+	 * @param lf2
+	 */
+	private void dumpString(PrintStream out, String lf2) {
+		for (int i = 0; i < lf2.length(); i++) {
+			out.print((int) lf2.charAt(i) + " ");
+		}
+
+	}
+
+	public final static String getMainDirectoryBasedOnVMNameAndFileExtension() {
+		String mainDirectory = getMainDirectoryBasedOnVMName() + "/xml";
+		return mainDirectory;
+	}
+
+	private String getHeaderStart() {
+		return "<?xml version=\"1.0\" encoding=\"";
+	}
+
+	private String getHeaderEnd() {
+		return "\"?>";
+	}
+
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/ListCharsets.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/ListCharsets.java
new file mode 100644
index 0000000..eef0edd
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/ListCharsets.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.xml.tests.encoding;
+
+import java.nio.charset.Charset;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Small class to list charset detected for a particular VM. Simple run as Java
+ * Applications to get output to standard out.
+ */
+public class ListCharsets {
+	private final String tab = "\t";
+
+	public static void main(String[] args) {
+
+		ListCharsets thisApp = new ListCharsets();
+
+		System.out.println();
+
+		System.out.println("Current Locale: " + Locale.getDefault());
+
+		System.out.println();
+
+		String name = System.getProperty("java.fullversion");
+		if (name == null) {
+			name = System.getProperty("java.version") + " (" + System.getProperty("java.runtime.version") + ")";
+		}
+		System.out.println("JRE version: " + name);
+
+		System.getProperties().list(System.out);
+
+		thisApp.listOfLocales();
+
+		System.out.println("file.encoding.pkg: " + System.getProperty("file.encoding.pkg"));
+		System.out.println("file.encoding: " + System.getProperty("file.encoding"));
+		System.out.println();
+
+		for (int i = 0; i < args.length; i++) {
+			System.out.println(args[i]);
+		}
+		System.out.println();
+		thisApp.listOfCharsets();
+	}
+
+	private void listOfLocales() {
+		System.out.println("Available Locales");
+		Locale[] locales = Locale.getAvailableLocales();
+		for (int i = 0; i < locales.length; i++) {
+			System.out.println(locales[i]);
+
+		}
+
+	}
+
+	private void listOfCharsets() {
+		System.out.println("Available Charsets");
+		int count = 0;
+		Map map = Charset.availableCharsets();
+		Iterator it = map.keySet().iterator();
+		while (it.hasNext()) {
+			count++;
+			// Get charset name
+			String charsetName = (String) it.next();
+			System.out.println(count + ". " + " Charsetname: " + charsetName);
+			// Get charset
+			Charset charset = Charset.forName(charsetName);
+			System.out.println(tab + "displayName: " + charset.displayName(Locale.getDefault()));
+			Set set = charset.aliases();
+			System.out.println(tab + "aliases: " + set);
+		}
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/TestsPlugin.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/TestsPlugin.java
new file mode 100644
index 0000000..2f3566e
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/TestsPlugin.java
@@ -0,0 +1,150 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.xml.tests.encoding;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Reader;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.ResourceBundle;
+
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.wst.xml.core.internal.contenttype.ByteReader;
+
+/**
+ * The main plugin class to be used in the desktop.
+ */
+public class TestsPlugin extends Plugin {
+	// The shared instance.
+	private static TestsPlugin plugin;
+
+	/**
+	 * The constructor.
+	 */
+	public TestsPlugin() {
+		super();
+		plugin = this;
+	}
+
+	/**
+	 * Returns the shared instance.
+	 */
+	public static TestsPlugin getDefault() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the workspace instance.
+	 */
+	public static IWorkspace getWorkspace() {
+		return ResourcesPlugin.getWorkspace();
+	}
+
+	/**
+	 * Returns the string from the plugin's resource bundle, or 'key' if not
+	 * found.
+	 */
+	public static String getResourceString(String key) {
+		return key;
+	}
+
+	/**
+	 * Returns the plugin's resource bundle,
+	 */
+	public ResourceBundle getResourceBundle() {
+		return null;
+	}
+
+	public static URL getInstallLocation() {
+		URL installLocation = Platform.getBundle("org.eclipse.wst.xml.tests.encoding").getEntry("/");
+		URL resolvedLocation = null;
+		try {
+			resolvedLocation = FileLocator.resolve(installLocation);
+		}
+		catch (IOException e) {
+			// impossible
+			throw new Error(e);
+		}
+		return resolvedLocation;
+	}
+
+	public static File getTestFile(String filepath) {
+		URL installURL = getInstallLocation();
+		// String scheme = installURL.getProtocol();
+		String path = installURL.getPath();
+		String location = path + filepath;
+		File result = new File(location);
+		return result;
+	}
+
+	public static List getAllTestFiles(String topDirName) {
+		List result = null;
+		URL installURL = getInstallLocation();
+		// String scheme = installURL.getProtocol();
+		String path = installURL.getPath();
+		String location = path + topDirName;
+		File topDir = new File(location);
+		if (!topDir.isDirectory()) {
+			throw new IllegalArgumentException(topDirName + " is not a directory");
+		}
+		result = getFilesInDir(topDir);
+		return result;
+	}
+
+	/**
+	 * @param topDir
+	 * @return
+	 */
+	private static List getFilesInDir(File topDir) {
+		List files = new ArrayList();
+		File[] topFiles = topDir.listFiles();
+		for (int i = 0; i < topFiles.length; i++) {
+			File file = topFiles[i];
+			if (file.isFile()) {
+				files.add(file);
+			}
+			else if (file.isDirectory() && !file.getName().endsWith("CVS")) {
+				List innerFiles = getFilesInDir(file);
+				files.addAll(innerFiles);
+			}
+		}
+		return files;
+	}
+
+	public static Reader getTestReader(String filepath) throws FileNotFoundException {
+		URL installURL = getInstallLocation();
+		// String scheme = installURL.getProtocol();
+		String path = installURL.getPath();
+		String location = path + filepath;
+		Reader result = new FileReader(location);
+		return result;
+	}
+
+	public static Reader getByteReader(String filepath) throws FileNotFoundException {
+		URL installURL = getInstallLocation();
+		// String scheme = installURL.getProtocol();
+		String path = installURL.getPath();
+		String location = path + filepath;
+		Reader result = new ByteReader(new BufferedInputStream(new FileInputStream(location)));
+		return result;
+	}
+
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/pref/TestPreferences.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/pref/TestPreferences.java
new file mode 100644
index 0000000..6fdc5ba
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/pref/TestPreferences.java
@@ -0,0 +1,109 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.xml.tests.encoding.pref;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.wst.sse.core.internal.encoding.ContentBasedPreferenceGateway;
+import org.osgi.service.prefs.BackingStoreException;
+import org.osgi.service.prefs.Preferences;
+
+
+public class TestPreferences extends TestCase {
+
+	/**
+	 * @param preferences
+	 * @throws BackingStoreException
+	 */
+	private static void printChildren(Preferences preferences) throws BackingStoreException {
+		System.out.println("\t" + preferences.absolutePath());
+		String [] keys = preferences.keys();
+		printKeys(keys);
+		String[] children = preferences.childrenNames();
+		printChildren(children); 
+		for (int i = 0; i < children.length; i++) {
+			String child = children[i];
+			Preferences subPreferences = preferences.node(child);
+			String [] subkeys = subPreferences.keys();
+			System.out.println();
+			System.out.println(child);
+			System.out.println();
+			printKeys(subkeys);
+		}
+	}
+	static private void printChildren(String[] children) {
+		printStringArray(children, "\t");
+	}
+
+	/**
+	 * @param keys
+	 */
+	private static void printKeys(String[] keys) {
+		printStringArray(keys, "\t\t");
+		
+	}
+
+	static private void printStringArray(String[] array, String tabChars) {
+		for (int i = 0; i < array.length; i++) {
+			String string = array[i];
+			System.out.println(tabChars + string);
+		}
+	}
+
+	private boolean DEBUG = true;
+
+	private void displayPreferenceTree() {
+		IEclipsePreferences eclipsePreferences = Platform.getPreferencesService().getRootNode();
+
+
+		try {
+			String[] children = eclipsePreferences.childrenNames();
+			System.out.println(eclipsePreferences.absolutePath());
+			printChildren(children);
+
+			for (int i = 0; i < children.length; i++) {
+				String string = children[i];
+				Preferences preferences = eclipsePreferences.node(string);
+				printChildren(preferences);
+
+
+			}
+
+		}
+		catch (BackingStoreException e) {
+			e.printStackTrace();
+		}
+
+	}
+
+	public void testAccess() {
+		if (DEBUG) { 
+			displayPreferenceTree();
+		}
+		// always ok if no exceptions thrown
+		assertTrue(true);
+	}
+
+	public void testContentBasedPrefHTML() {
+		IContentType contentType = Platform.getContentTypeManager().findContentTypeFor("test.html");
+		Preferences preferences = ContentBasedPreferenceGateway.getPreferences(contentType);
+		assertNotNull(preferences);
+	}
+
+	public void testContentBasedPrefXML() {
+		IContentType contentType = Platform.getContentTypeManager().findContentTypeFor("test.xml");
+		Preferences preferences = ContentBasedPreferenceGateway.getPreferences(contentType);
+		assertNotNull(preferences);
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/properties/TestCommonNames.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/properties/TestCommonNames.java
new file mode 100644
index 0000000..a91ff0c
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/properties/TestCommonNames.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.xml.tests.encoding.properties;
+
+import junit.framework.TestCase;
+
+import org.eclipse.wst.sse.core.internal.encoding.CommonCharsetNames;
+
+public class TestCommonNames extends TestCase {
+
+	private static final boolean DEBUG = false;
+
+	public void testCommonNames() {
+		String[] names = CommonCharsetNames.getCommonCharsetNames();
+		assertTrue("common charset names could not be loaded", names != null && names.length > 0);
+		if (DEBUG) {
+			for (int i = 0; i < names.length; i++) {
+				String name = names[i];
+				String displayName = CommonCharsetNames.getDisplayString(name);
+				System.out.println( name + "    " + displayName);
+			}
+		}
+	}
+	
+	public void doTestDefaultIanaNames(String stringToCheck, String defaultName, String expected) {
+		String actual = CommonCharsetNames.getPreferredDefaultIanaName(stringToCheck, defaultName);
+		assertEquals("default IANA name test failed for " + stringToCheck, expected, actual);
+	}
+
+	public void testASCII() {
+		doTestDefaultIanaNames("ASCII", "UTF-8", "US-ASCII");
+	}
+	
+	public void testCp1252() {
+		doTestDefaultIanaNames("Cp1252", "UTF-8", "ISO-8859-1");
+	}
+	
+	public void testMS950() {
+		doTestDefaultIanaNames("MS950", "UTF-8", "BIG5");
+	}
+	
+	public void testCp1256() {
+		doTestDefaultIanaNames("Cp1256", "UTF-8", "windows-1256");
+	}
+	
+	public void testMS949() {
+		doTestDefaultIanaNames("MS949", "UTF-8", "EUC-KR");
+	}
+	
+	public void testEUC_JP() {
+		doTestDefaultIanaNames("EUC-JP", "UTF-8", "EUC-JP");
+	}
+	
+	public void testTotallyFake() {
+		doTestDefaultIanaNames("totallyFake", "UTF-8", "UTF-8");
+	}
+	
+	public void testSystemEncoding() {
+		String systemEnc = System.getProperty("file.encoding");
+		if (systemEnc != null) {
+			String actual = CommonCharsetNames.getPreferredDefaultIanaName(systemEnc, "UTF-8");
+			assertNotNull("default IANA name test failed for system encoding " + systemEnc, actual);
+		}
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/properties/TestDisplayNames.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/properties/TestDisplayNames.java
new file mode 100644
index 0000000..b1145c7
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/properties/TestDisplayNames.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.xml.tests.encoding.properties;
+
+import junit.framework.TestCase;
+
+import org.eclipse.wst.sse.core.internal.encoding.CommonCharsetNames;
+
+
+public class TestDisplayNames extends TestCase {
+	private static final boolean DEBUG = false;
+
+	public void testCommonName() {
+		String displayName = CommonCharsetNames.getDisplayString("ISO-8859-2");
+		assertNotNull("display name for charset could not be retrieved", displayName);
+		if (DEBUG) {
+			System.out.println(displayName);
+		}
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/properties/TestOverrides.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/properties/TestOverrides.java
new file mode 100644
index 0000000..412f6d7
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/properties/TestOverrides.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.xml.tests.encoding.properties;
+
+import junit.framework.TestCase;
+
+import org.eclipse.wst.sse.core.internal.encoding.CodedIO;
+
+public class TestOverrides extends TestCase {
+
+	private static final boolean DEBUG = false;
+
+	public String doTestOverride(String stringToCheck) {
+
+		String charset = CodedIO.getAppropriateJavaCharset(stringToCheck);
+		assertNotNull("override test failed for " + stringToCheck, charset);
+		return charset;
+	}
+
+	public void testISO88598I() {
+		String result = doTestOverride("ISO-8859-8-I");
+		assertEquals("mapping override not correct for ISO-8859-8-I", "ISO-8859-8", result);
+		if (DEBUG) {
+			System.out.println(result);
+		}
+	}
+
+	public void testXSJIS() {
+		String result = doTestOverride("X-SJIS");
+		assertEquals("mapping override not correct for X-SJIS", "Shift_JIS", result);
+		if (DEBUG) {
+			System.out.println(result);
+		}
+	}
+
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/read/TestCodedReader.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/read/TestCodedReader.java
new file mode 100644
index 0000000..576afb2
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/read/TestCodedReader.java
@@ -0,0 +1,614 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.xml.tests.encoding.read;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.Reader;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.content.IContentDescription;
+import org.eclipse.wst.sse.core.internal.encoding.CodedReaderCreator;
+import org.eclipse.wst.sse.core.internal.encoding.IContentDescriptionExtended;
+import org.eclipse.wst.sse.core.internal.encoding.NonContentBasedEncodingRules;
+import org.eclipse.wst.xml.tests.encoding.TestsPlugin;
+import org.eclipse.wst.xml.tests.encoding.util.ProjectUnzipUtility;
+
+
+public class TestCodedReader extends TestCase {
+	// private final String fileDir = "html/";
+	// private final String fileRoot =
+	// "/builds/Workspaces/HeadWorkspace/org.eclipse.wst.xml.tests.encoding/";
+	// private final String fileLocation = fileRoot + fileDir;
+	private static final boolean DEBUG = false;
+	private static final boolean DEBUG_TEST_DETAIL = false;
+	// needs to be static, since JUnit creates difference instances for each
+	// test
+	private static boolean fTestProjectInitialized;
+	private static final String TEST_PROJECT_NAME = "org.eclipse.encoding.resource.newtests";
+	static IProject fTestProject;
+	protected static int nSetups = 0;
+
+	private String massageCharset(String foundCharset) {
+		String result = foundCharset;
+		if ("UTF-16LE".equals(foundCharset)) {
+			result = "UTF-16";
+		} else if ("X-UnicodeLittle".equals(foundCharset)) {
+			result = "UTF-16";
+		} else if ("X-UnicodeBig".equals(foundCharset)) {
+			result = "UTF-16BE";
+		}
+
+		return result;
+	}
+
+	/**
+	 * 
+	 */
+	public TestCodedReader() {
+		super();
+		// System.out.println(currentPlatformCharset);
+	}
+
+	public static void main(String[] args) {
+		// try {
+		// new TestCodedReader().doAllFiles();
+		// } catch (CoreException e) {
+		// e.printStackTrace();
+		// } catch (IOException e) {
+		// e.printStackTrace();
+		// }
+	}
+
+	private static void createProject(IProject project, IPath locationPath, IProgressMonitor monitor) throws CoreException {
+		if (monitor == null) {
+			monitor = new NullProgressMonitor();
+		}
+		monitor.beginTask("creating test project", 10);
+		// create the project
+		try {
+			if (!project.exists()) {
+				IProjectDescription desc = project.getWorkspace().newProjectDescription(project.getName());
+				if (Platform.getLocation().equals(locationPath)) {
+					locationPath = null;
+				}
+				desc.setLocation(locationPath);
+				project.create(desc, monitor);
+				monitor = null;
+			}
+			if (!project.isOpen()) {
+				project.open(monitor);
+				monitor = null;
+			}
+		} finally {
+			if (monitor != null) {
+				monitor.done();
+			}
+		}
+	}
+
+	private static void getAndCreateProject() throws CoreException {
+		// TestsPlugin testsPlugin = (TestsPlugin)
+		// Platform.getPlugin("org.eclipse.wst.xml.tests.encoding");
+		IWorkspace workspace = TestsPlugin.getWorkspace();
+		IWorkspaceRoot root = workspace.getRoot();
+		fTestProject = root.getProject(TEST_PROJECT_NAME);
+		// this form creates project as "linked" back to 'fileRoot'
+		// createProject(testProject, new Path(fileRoot), null);
+		createProject(fTestProject, null, null);
+		fTestProject.refreshLocal(IResource.DEPTH_INFINITE, null);
+		assertTrue(fTestProject.exists());
+		// IContainer dotestFiles = testProject.getFolder("dotestFiles");
+		// assertTrue(dotestFiles.exists());
+		// IResource[] allFolders = dotestFiles.members();
+		// assertNotNull(allFolders);
+	}
+
+	private StringBuffer readInputStream(Reader reader) throws IOException {
+		StringBuffer buffer = new StringBuffer();
+		int numRead = 0;
+		char tBuff[] = new char[4000];
+		while ((numRead = reader.read(tBuff, 0, tBuff.length)) != -1) {
+			buffer.append(tBuff, 0, numRead);
+		}
+		return buffer;
+	}
+
+	protected void setUp() throws Exception {
+		super.setUp();
+		nSetups++;
+		if (!fTestProjectInitialized) {
+			getAndCreateProject();
+			// unzip files to the root of workspace directory
+			String destinationProjectString = fTestProject.getLocation().toOSString();
+			String destinationFolder = destinationProjectString + "/";
+			// this zip file is sitting in the "root" of test plugin
+			File zipFile = TestsPlugin.getTestFile("testfiles.zip");
+			ProjectUnzipUtility projUtil = new ProjectUnzipUtility();
+			projUtil.unzipAndImport(zipFile, destinationFolder);
+			projUtil.initJavaProject(TEST_PROJECT_NAME);
+			fTestProject.refreshLocal(IResource.DEPTH_INFINITE, null);
+			fTestProjectInitialized = true;
+		}
+	}
+
+	protected void tearDown() throws Exception {
+		super.tearDown();
+		nSetups--;
+		if (nSetups == 0) {
+			if (!DEBUG) {
+				// Display display = PlatformUI.getWorkbench().getDisplay();
+				// display.asyncExec(new Runnable() {
+				// public void run() {
+				// ProjectUnzipUtility projUtil = new ProjectUnzipUtility();
+				// IProject proj = fTestProject;
+				// fTestProject = null;
+				// try {
+				// projUtil.deleteProject(proj);
+				// } catch (Exception e) {
+				// e.printStackTrace();
+				// }
+				// }
+				// });
+			}
+		}
+	}
+
+	protected void doTest(String expectedJavaCharset, String expectedDetectedCharset, String filePath, Class expectedException) throws CoreException, IOException {
+		Reader reader = null;
+		IFile file = (IFile) fTestProject.findMember(filePath);
+		assertNotNull(file);
+		expectedJavaCharset = massageCharset(expectedJavaCharset);
+		expectedDetectedCharset = massageCharset(expectedDetectedCharset);
+
+		// note: eventually, I should change calling methods so if detected
+		// charset is expected to be same
+		// as the 'used' java charset, then simply pass in null, but for now,
+		// we'll "force" that here in this
+		// method.
+		if (expectedJavaCharset.equals(expectedDetectedCharset)) {
+			expectedDetectedCharset = null;
+		}
+
+		try {
+			reader = doCoreTest(expectedJavaCharset, expectedDetectedCharset, file);
+		} catch (Exception e) {
+			if (expectedException != null) {
+				boolean result = expectedException.isInstance(e);
+				assertTrue("Unexpected Exception: " + getGoodFullMsg(e), result);
+			} else {
+				// will alway assert if gets to here
+				String msg = getGoodFullMsg(e);
+				assertNull("Unexpected Exception: " + msg, e);
+			}
+		} finally {
+			if (reader != null) {
+				reader.close();
+			}
+
+		}
+	}
+
+	protected Reader doCoreTest(String expectedJavaCharset, String expectedDetectedCharset, IFile file) throws CoreException, IOException {
+		Reader reader;
+		// create these first, to test exception being thrown correctly
+		CodedReaderCreator codedReaderCreator = new CodedReaderCreator();
+		codedReaderCreator.set(file);
+		reader = codedReaderCreator.getCodedReader();
+
+		String javaCharsetName = file.getCharset();
+		IContentDescription description = file.getContentDescription();
+		javaCharsetName = massageCharset(javaCharsetName);
+		// codedReaderCreator.getEncodingMemento().getJavaCharsetName();
+		if (expectedJavaCharset.equals("expectPlatformCharset")) {
+			String platformDefault = NonContentBasedEncodingRules.useDefaultNameRules(null);
+			assertTrue(javaCharsetName.equals(platformDefault));
+		} else {
+			boolean asExpected = javaCharsetName.equals(expectedJavaCharset);
+			assertTrue(javaCharsetName + " did not equal the expected " + expectedJavaCharset + " (this is a VM dependent test)", asExpected);
+		}
+		String javaCharsetNameProperty = (String) description.getProperty(IContentDescription.CHARSET);
+		String detectedCharsetNameProperty = getDetectedCharsetName(description);
+		detectedCharsetNameProperty = massageCharset(detectedCharsetNameProperty);
+		// if (detectedCharsetName == null) {
+		// detectedCharsetName = javaCharsetNameProperty;
+		// }
+		if (!expectedJavaCharset.equals("expectPlatformCharset")) {
+			boolean expecedResult = expectedJavaCharset.equals(javaCharsetNameProperty);
+			assertTrue("java based charset name was not as expected", expecedResult);
+		} else {
+			String expectedDefault = NonContentBasedEncodingRules.useDefaultNameRules(null);
+			boolean ExpectedResult = expectedDefault.equals(javaCharsetNameProperty);
+			assertTrue("java based charset name not as expected when platform default expected", ExpectedResult);
+		}
+
+		if (expectedDetectedCharset != null) {
+			boolean expectedResult = expectedDetectedCharset.equals(detectedCharsetNameProperty);
+			assertTrue("detected charset name was not as expected", expectedResult);
+		}
+		// test if can read/write file
+		StringBuffer buffer = readInputStream(reader);
+		if (DEBUG_TEST_DETAIL) {
+			System.out.print(buffer);
+		}
+		return reader;
+	}
+
+	/**
+	 * This method is just to help handle transition from using
+	 * EncodingMemtento to not using encodingMemento.
+	 */
+	private String getDetectedCharsetName(IContentDescription description) {
+		String result = null;
+		result = (String) description.getProperty(IContentDescriptionExtended.DETECTED_CHARSET);
+		return result;
+	}
+
+	/**
+	 * @param e
+	 * @return
+	 */
+	private String getGoodFullMsg(Exception e) {
+		String msg = e.getClass().getName() + ": " + e.getMessage();
+		return msg;
+	}
+
+	public void testFile1() throws CoreException, IOException {
+		doTest("expectPlatformCharset", null, "testfiles/css/emptyFile.css", null);
+	}
+
+	public void testFile2() throws CoreException, IOException {
+		doTest("EUC-JP", "EUC-JP", "testfiles/css/encoding_test_eucjp.css", null);
+	}
+
+	public void testFile3() throws CoreException, IOException {
+		doTest("ISO-2022-JP", "ISO-2022-JP", "testfiles/css/encoding_test_jis.css", null);
+	}
+
+	public void testFile4() throws CoreException, IOException {
+		doTest("Shift_JIS", "SHIFT_JIS", "testfiles/css/encoding_test_sjis.css", null);
+	}
+
+	public void testFile5() throws CoreException, IOException {
+		doTest("expectPlatformCharset", null, "testfiles/css/noEncoding.css", null);
+	}
+
+	public void testFile6() throws CoreException, IOException {
+		doTest("ISO-8859-6", "ISO-8859-6", "testfiles/css/nonStandard.css", null);
+	}
+
+	public void testFile7() throws CoreException, IOException {
+		doTest("ISO-8859-6", "ISO-8859-6", "testfiles/css/nonStandardIllFormed.css", null);
+	}
+
+	public void testFile8() throws CoreException, IOException {
+		doTest("ISO-8859-6", "ISO-8859-6", "testfiles/css/nonStandardIllFormed2.css", null);
+	}
+
+
+	public void testFile57() throws CoreException, IOException {
+		doTest("expectPlatformCharset", null, "testfiles/html/EmptyFile.html", null);
+	}
+
+	public void testFile58() throws CoreException, IOException {
+		doTest("UTF-8", "UTF-8", "testfiles/html/IllformedNormalNonDefault.html", null);
+	}
+
+	public void testFile59() throws CoreException, IOException {
+		doTest("expectPlatformCharset", null, "testfiles/html/LargeNoEncoding.html", null);
+	}
+
+	public void testFile60() throws CoreException, IOException {
+		doTest("ISO-8859-1", "iso-8859-1", "testfiles/html/LargeNonDefault.html", null);
+	}
+
+	public void testFile61() throws CoreException, IOException {
+		doTest("ISO-8859-6", "ISO-8859-6", "testfiles/html/MultiNonDefault.html", null);
+	}
+
+	public void testFile62() throws CoreException, IOException {
+		doTest("expectPlatformCharset", null, "testfiles/html/NoEncoding.html", null);
+	}
+
+	public void testFile63() throws CoreException, IOException {
+		doTest("UTF-8", "UTF-8", "testfiles/html/noquotes.html", null);
+	}
+
+	public void testFile64() throws CoreException, IOException {
+		doTest("UTF-8", "UTF-8", "testfiles/html/NormalNonDefault.html", null);
+	}
+
+	public void testFile65() throws CoreException, IOException {
+		doTest("ISO-8859-1", "ISO-8859-1", "testfiles/jsp/EmptyFile.jsp", null);
+	}
+
+	public void testFile66() throws CoreException, IOException {
+		doTest("ISO-8859-8", null, "testfiles/jsp/IllformedNormalNonDefault.jsp", null);
+	}
+
+	public void testFile67() throws CoreException, IOException {
+		doTest("null", "null", "testfiles/jsp/inValidEncodingValue.jsp", org.eclipse.wst.sse.core.internal.exceptions.UnsupportedCharsetExceptionWithDetail.class);
+	}
+
+	public void testFile68() throws CoreException, IOException {
+		doTest("windows-1252", "Cp1252", "testfiles/jsp/javaEncodingValue.jsp", null);
+	}
+
+	public void testFile69() throws CoreException, IOException {
+		doTest("ISO-8859-1", "ISO-8859-1", "testfiles/jsp/MalformedNoEncoding.jsp", null);
+	}
+
+	public void testFile70() throws CoreException, IOException {
+		doTest("ISO-8859-1", "ISO-8859-1", "testfiles/jsp/MalformedNoEncodingXSL.jsp", null);
+	}
+
+	public void testFile71() throws CoreException, IOException {
+		doTest("ISO-8859-1", "ISO-8859-1", "testfiles/jsp/noEncoding.jsp", null);
+	}
+
+	public void testFile72() throws CoreException, IOException {
+		doTest("ISO-8859-1", "ISO-8859-1", "testfiles/jsp/NoEncodinginXMLDecl.jsp", null);
+	}
+
+	public void testFile73() throws CoreException, IOException {
+		doTest("ISO-8859-2", "ISO-8859-2", "testfiles/jsp/nomalDirectiveCase.jsp", null);
+	}
+
+	public void testFile74() throws CoreException, IOException {
+		doTest("ISO-8859-1", "ISO-8859-1", "testfiles/jsp/nomalDirectiveCaseNoEncoding.jsp", null);
+	}
+
+	public void testFile75() throws CoreException, IOException {
+		doTest("ISO-8859-3", "ISO-8859-3", "testfiles/jsp/nomalDirectiveCaseUsingCharset.jsp", null);
+	}
+
+	public void testFile76() throws CoreException, IOException {
+		doTest("ISO-8859-2", "ISO-8859-2", "testfiles/jsp/nomalDirectiveCaseUsingXMLSyntax.jsp", null);
+	}
+
+	public void testFile77() throws CoreException, IOException {
+		doTest("ISO-8859-8", null, "testfiles/jsp/NormalNonDefault.jsp", null);
+	}
+
+	public void testFile78() throws CoreException, IOException {
+		doTest("ISO-8859-8", "ISO-8859-8", "testfiles/jsp/NormalNonDefaultWithXMLDecl.jsp", null);
+	}
+
+	public void testFile79() throws CoreException, IOException {
+		doTest("ISO-8859-7", "ISO-8859-7", "testfiles/jsp/NormalPageCaseNonDefault.jsp", null);
+	}
+
+	public void testFile80() throws CoreException, IOException {
+		doTest("Shift_JIS", "SHIFT_JIS", "testfiles/jsp/SelColBeanRow12ResultsForm.jsp", null);
+	}
+
+	public void testFile81() throws CoreException, IOException {
+		doTest("ISO-8859-3", "ISO-8859-3", "testfiles/jsp/testBrokenLine.jsp", null);
+	}
+
+	public void testFile82() throws CoreException, IOException {
+		doTest("null", "null", "testfiles/jsp/testDefaultEncoding.jsp", org.eclipse.wst.sse.core.internal.exceptions.UnsupportedCharsetExceptionWithDetail.class);
+	}
+
+	public void testFile83() throws CoreException, IOException {
+		doTest("null", "null", "testfiles/jsp/testDefaultEncodingWithJunk.jsp", org.eclipse.wst.sse.core.internal.exceptions.UnsupportedCharsetExceptionWithDetail.class);
+	}
+
+	public void testFile84() throws CoreException, IOException {
+		doTest("ISO-8859-1", "ISO-8859-1", "testfiles/jsp/testExtraJunk.jsp", null);
+	}
+
+	public void testFile85() throws CoreException, IOException {
+		doTest("UTF-8", "UTF-8", "testfiles/jsp/testExtraValidStuff.jsp", null);
+	}
+
+	public void testFile86() throws CoreException, IOException {
+		doTest("ISO-8859-1", null, "testfiles/jsp/testIllFormed.jsp", null);
+	}
+
+	public void testFile87() throws CoreException, IOException {
+		doTest("UTF-8", "UTF-8", "testfiles/jsp/testIllFormed2.jsp", null);
+	}
+
+	public void testFile88() throws CoreException, IOException {
+		doTest("ISO-8859-1", "ISO-8859-1", "testfiles/jsp/testNoEncodingValue.jsp", null);
+	}
+
+	public void testFile89() throws CoreException, IOException {
+		doTest("ISO-8859-1", "ISO-8859-1", "testfiles/jsp/testNoPageDirective.jsp", null);
+	}
+
+	public void testFile90() throws CoreException, IOException {
+		doTest("ISO-8859-2", "ISO-8859-2", "testfiles/jsp/testNoPageDirectiveAtFirst.jsp", null);
+	}
+
+	public void testFile91() throws CoreException, IOException {
+		doTest("ISO-8859-1", "ISO-8859-1", "testfiles/jsp/testNoPageDirectiveInLargeFile.jsp", null);
+	}
+
+	public void testFile92() throws CoreException, IOException {
+		doTest("UTF-8", "UTF-8", "testfiles/jsp/testNormalCase.jsp", null);
+	}
+
+	public void testFile93() throws CoreException, IOException {
+		doTest("UTF-16BE", "UTF-16BE", "testfiles/jsp/testUTF16.jsp", null);
+	}
+
+	public void testFile94() throws CoreException, IOException {
+		doTest("UTF-16LE", "UTF-16LE", "testfiles/jsp/utf16UnicodeStreamWithNoEncodingInHeader2.jsp", null);
+	}
+
+	public void testFile95() throws CoreException, IOException {
+		doTest("UTF-16BE", "UTF-16BE", "testfiles/jsp/utf16UnicodeStreamWithNoEncodingInHeaderBE.jsp", null);
+	}
+
+	public void testFile96() throws CoreException, IOException {
+		doTest("UTF-16BE", "UTF-16BE", "testfiles/jsp/utf16WithJapaneseChars.jsp", null);
+	}
+
+	public void testFile97() throws CoreException, IOException {
+		doTest("UTF-8", "UTF-8", "testfiles/jsp/UTF8With3ByteBOM.jsp", null);
+	}
+
+	public void testFile98() throws CoreException, IOException {
+		doTest("ISO-8859-8", "ISO-8859-8", "testfiles/jsp/WellFormedNormalNonDefault.jsp", null);
+	}
+
+	public void testFile99() throws CoreException, IOException {
+		doTest("Shift_JIS", "SHIFT_JIS", "testfiles/regressionTestFiles/defect223365/SelColBeanRow12ResultsForm.jsp", null);
+	}
+
+	public void testFile100() throws CoreException, IOException {
+		doTest("Shift_JIS", "SHIFT_JIS", "testfiles/regressionTestFiles/defect223365/SelColBeanRow12ResultsFormB.jsp", null);
+	}
+
+	public void testFile101() throws CoreException, IOException {
+		doTest("Shift_JIS", "SHIFT_JIS", "testfiles/regressionTestFiles/defect224293/testshiftjisXmlSyntax.jsp", null);
+	}
+
+	public void testFile102() throws CoreException, IOException {
+		doTest("Shift_JIS", "Shift_JIS", "testfiles/regressionTestFiles/defect229667/audi.jsp", null);
+	}
+
+	public void testFile103() throws CoreException, IOException {
+		doTest("UTF-8", "UTF-8", "testfiles/xml/EmptyFile.xml", null);
+	}
+
+	public void testFile104() throws CoreException, IOException {
+		doTest("EUC-JP", "EUC-JP", "testfiles/xml/eucjp.xml", null);
+	}
+
+	// public void testFile105() throws CoreException, IOException {
+	// doTest("ISO-8859-1", "ISO-8859-1",
+	// "testfiles/xml/IllformedNormalNonDefault.xml", null);
+	// }
+
+	// public void testFile106() throws CoreException, IOException {
+	// doTest("UTF-8", "UTF-8", "testfiles/xml/MalformedNoEncoding.xml",
+	// CharacterCodingException.class);
+	// }
+
+	// public void testFile107() throws CoreException, IOException {
+	// doTest("UTF-8", "UTF-8", "testfiles/xml/MalformedNoEncoding.xsl",
+	// CharacterCodingException.class);
+	// }
+
+	public void testFile108() throws CoreException, IOException {
+		doTest("UTF-8", "UTF-8", "testfiles/xml/NoEncoding.xml", null);
+	}
+
+	public void testFile109() throws CoreException, IOException {
+		doTest("ISO-8859-1", "ISO-8859-1", "testfiles/xml/NormalNonDefault.xml", null);
+	}
+
+	public void testFile110() throws CoreException, IOException {
+		doTest("Shift_JIS", "Shift_JIS", "testfiles/xml/shiftjis.xml", null);
+	}
+
+	public void testFile111() throws CoreException, IOException {
+		doTest("ISO-8859-1", "ISO-8859-1", "testfiles/xml/testExtraJunk.xml", null);
+	}
+
+	public void testFile112() throws CoreException, IOException {
+		doTest("UTF-8", "UTF-8", "testfiles/xml/testExtraValidStuff.xml", null);
+	}
+
+	// public void testFile113() throws CoreException, IOException {
+	// doTest("UTF-8", "UTF-8", "testfiles/xml/testIllFormed.xml", null);
+	// }
+
+	public void testFile114() throws CoreException, IOException {
+		doTest("UTF-8", "UTF-8", "testfiles/xml/testIllFormed2.xml", null);
+	}
+
+	// public void testFile115() throws CoreException, IOException {
+	// doTest("null", "null", "testfiles/xml/testIllFormed3.xml",
+	// UnsupportedCharsetExceptionWithDetail.class);
+	// }
+
+	public void testFile116() throws CoreException, IOException {
+		doTest("UTF-8", "UTF-8", "testfiles/xml/testIllFormed4.xml", null);
+	}
+
+	public void testFile117() throws CoreException, IOException {
+		doTest("ISO-8859-1", "ISO-8859-1", "testfiles/xml/testMultiLine.xml", null);
+	}
+
+	public void testFile118() throws CoreException, IOException {
+		doTest("UTF-8", "UTF-8", "testfiles/xml/testNoEncodingValue.xml", null);
+	}
+
+	public void testFile119() throws CoreException, IOException {
+		doTest("UTF-8", "UTF-8", "testfiles/xml/testNormalCase.xml", null);
+	}
+
+	public void testFile120() throws CoreException, IOException {
+		doTest("UTF-8", "UTF-8", "testfiles/xml/testNoXMLDecl.xml", null);
+	}
+
+	public void testFile121() throws CoreException, IOException {
+		doTest("UTF-8", "UTF-8", "testfiles/xml/testNoXMLDeclAtFirst.xml", null);
+	}
+
+	public void testFile122() throws CoreException, IOException {
+		doTest("UTF-8", "UTF-8", "testfiles/xml/testNoXMLDeclInLargeFile.xml", null);
+	}
+
+	// public void testFile123() throws CoreException, IOException {
+	// doTest("UTF-16BE", "UTF-16BE", "testfiles/xml/testUTF16.xml",
+	// CharacterCodingException.class);
+	// }
+
+	// public void testFile124() throws CoreException, IOException {
+	// doTest("UTF-16LE", "UTF-16LE",
+	// "testfiles/xml/UTF16LEAtStartOfLargeFile.xml", null);
+	// }
+
+	// public void testFile125() throws CoreException, IOException {
+	// doTest("UTF-16LE", "UTF-16LE",
+	// "testfiles/xml/utf16UnicodeStreamWithNoEncodingInHeader2.xml", null);
+	// }
+
+	// public void testFile126() throws CoreException, IOException {
+	// doTest("UTF-16BE", "UTF-16BE",
+	// "testfiles/xml/utf16UnicodeStreamWithNoEncodingInHeaderBE.xml",
+	// CharacterCodingException.class);
+	// }
+
+	// public void testFile127() throws CoreException, IOException {
+	// doTest("UTF-16BE", "UTF-16BE",
+	// "testfiles/xml/utf16WithJapaneseChars.xml", null);
+	// }
+
+	public void testFile128() throws CoreException, IOException {
+		doTest("UTF-8", "UTF-8", "testfiles/xml/UTF8With3ByteBOM.xml", null);
+	}
+
+	public void testDocumentStreamCaseHTML() throws CoreException, IOException {
+		doTest("Shift_JIS", "SHIFT_JIS", "testfiles/DocumentStreamTestCase/kaeru5.htm", null);
+	}
+
+	public void testDocumentStreamCaseJSP() throws CoreException, IOException {
+		doTest("Shift_JIS", "SHIFT_JIS", "testfiles/DocumentStreamTestCase/kaeru5.jsp", null);
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/read/TestCodedReaderOnGennedFiles.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/read/TestCodedReaderOnGennedFiles.java
new file mode 100644
index 0000000..2bb1100
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/read/TestCodedReaderOnGennedFiles.java
@@ -0,0 +1,717 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.xml.tests.encoding.read;
+
+import java.io.IOException;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.wst.xml.tests.encoding.GenerateFiles;
+
+
+/**
+ * This class should contain a "master list" of all filenames generated by
+ * various VM's ... then the test ingores it if the filename's not found due
+ * to the VM not supporting it.
+ *  
+ */
+public class TestCodedReaderOnGennedFiles extends TestCodedReader {
+	private static int notRan = 0;
+	private static final boolean DEBUG = false;
+
+	protected void doGenTest(String charsetName) throws CoreException, IOException {
+		doTest(charsetName, charsetName, GenerateFiles.getMainDirectoryBasedOnVMName() + "/xml/test-" + charsetName + ".xml", null);
+	}
+
+	protected void doTest(String expectedJavaCharset, String expectedDetectedCharset, String filePath, Class expectedException) throws CoreException, IOException {
+		if (expectedJavaCharset != null && expectedJavaCharset.indexOf("UTF-32") > -1) {
+			return; //won't try 32 bit right now
+		}
+		IFile file = (IFile) fTestProject.findMember(filePath);
+
+		// if there no file, just assume that its due to which VM is
+		// bring used. (Could be improved in future to avoid counting as a
+		// test) - this check in here for initial debugging only
+		if (file == null) {
+			notRan++;
+			if (DEBUG) {
+				System.out.println();
+				System.out.println("test not ran since charset not supported by VM: " + filePath);
+			}
+			return;
+		}
+		super.doTest(expectedJavaCharset, expectedDetectedCharset, filePath, expectedException);
+	}
+
+	public void testFile0() throws CoreException, IOException {
+		String charsetName = "Big5";
+		doGenTest(charsetName);
+	}
+
+	public void testFile1() throws CoreException, IOException {
+		String charsetName = "CESU-8";
+		doGenTest(charsetName);
+	}
+
+	public void testFile2() throws CoreException, IOException {
+		String charsetName = "COMPOUND_TEXT";
+		doGenTest(charsetName);
+	}
+
+	public void testFile3() throws CoreException, IOException {
+		String charsetName = "EUC-CN";
+		doGenTest(charsetName);
+	}
+
+	public void testFile4() throws CoreException, IOException {
+		String charsetName = "EUC-JP";
+		doGenTest(charsetName);
+	}
+
+	public void testFile5() throws CoreException, IOException {
+		String charsetName = "EUC-KR";
+		doGenTest(charsetName);
+	}
+
+	public void testFile6() throws CoreException, IOException {
+		String charsetName = "GB18030";
+		doGenTest(charsetName);
+	}
+
+	public void testFile7() throws CoreException, IOException {
+		String charsetName = "GB2312";
+		doGenTest(charsetName);
+	}
+
+	public void testFile8() throws CoreException, IOException {
+		String charsetName = "GBK";
+		doGenTest(charsetName);
+	}
+
+	public void testFile9() throws CoreException, IOException {
+		String charsetName = "hp-roman8";
+		doGenTest(charsetName);
+	}
+
+	public void testFile10() throws CoreException, IOException {
+		String charsetName = "IBM-1006";
+		doGenTest(charsetName);
+	}
+
+	public void testFile11() throws CoreException, IOException {
+		String charsetName = "IBM-1041";
+		doGenTest(charsetName);
+	}
+
+	public void testFile12() throws CoreException, IOException {
+		String charsetName = "IBM-1043";
+		doGenTest(charsetName);
+	}
+
+	public void testFile13() throws CoreException, IOException {
+		String charsetName = "IBM-1046";
+		doGenTest(charsetName);
+	}
+
+	public void testFile14() throws CoreException, IOException {
+		String charsetName = "IBM-1046S";
+		doGenTest(charsetName);
+	}
+
+	public void testFile15() throws CoreException, IOException {
+		String charsetName = "IBM-1088";
+		doGenTest(charsetName);
+	}
+
+	public void testFile16() throws CoreException, IOException {
+		String charsetName = "IBM-1098";
+		doGenTest(charsetName);
+	}
+
+	public void testFile17() throws CoreException, IOException {
+		String charsetName = "IBM-1114";
+		doGenTest(charsetName);
+	}
+
+	public void testFile18() throws CoreException, IOException {
+		String charsetName = "IBM-1115";
+		doGenTest(charsetName);
+	}
+
+	public void testFile19() throws CoreException, IOException {
+		String charsetName = "IBM-1124";
+		doGenTest(charsetName);
+	}
+
+	public void testFile20() throws CoreException, IOException {
+		String charsetName = "IBM-1363";
+		doGenTest(charsetName);
+	}
+
+	public void testFile21() throws CoreException, IOException {
+		String charsetName = "IBM-1363C";
+		doGenTest(charsetName);
+	}
+
+	public void testFile22() throws CoreException, IOException {
+		String charsetName = "IBM-1370";
+		doGenTest(charsetName);
+	}
+
+	public void testFile23() throws CoreException, IOException {
+		String charsetName = "IBM-1381";
+		doGenTest(charsetName);
+	}
+
+	public void testFile24() throws CoreException, IOException {
+		String charsetName = "IBM-1383";
+		doGenTest(charsetName);
+	}
+
+	public void testFile25() throws CoreException, IOException {
+		String charsetName = "IBM-1386";
+		doGenTest(charsetName);
+	}
+
+	public void testFile26() throws CoreException, IOException {
+		String charsetName = "IBM-33722C";
+		doGenTest(charsetName);
+	}
+
+	public void testFile27() throws CoreException, IOException {
+		String charsetName = "IBM-437";
+		doGenTest(charsetName);
+	}
+
+	public void testFile28() throws CoreException, IOException {
+		String charsetName = "IBM-737";
+		doGenTest(charsetName);
+	}
+
+	public void testFile29() throws CoreException, IOException {
+		String charsetName = "IBM-775";
+		doGenTest(charsetName);
+	}
+
+	public void testFile30() throws CoreException, IOException {
+		String charsetName = "IBM-808";
+		doGenTest(charsetName);
+	}
+
+	public void testFile31() throws CoreException, IOException {
+		String charsetName = "IBM-850";
+		doGenTest(charsetName);
+	}
+
+	public void testFile32() throws CoreException, IOException {
+		String charsetName = "IBM-852";
+		doGenTest(charsetName);
+	}
+
+	public void testFile33() throws CoreException, IOException {
+		String charsetName = "IBM-855";
+		doGenTest(charsetName);
+	}
+
+	public void testFile34() throws CoreException, IOException {
+		String charsetName = "IBM-856";
+		doGenTest(charsetName);
+	}
+
+	public void testFile35() throws CoreException, IOException {
+		String charsetName = "IBM-857";
+		doGenTest(charsetName);
+	}
+
+	public void testFile36() throws CoreException, IOException {
+		String charsetName = "IBM-858";
+		doGenTest(charsetName);
+	}
+
+	public void testFile37() throws CoreException, IOException {
+		String charsetName = "IBM-859";
+		doGenTest(charsetName);
+	}
+
+	public void testFile38() throws CoreException, IOException {
+		String charsetName = "IBM-860";
+		doGenTest(charsetName);
+	}
+
+	public void testFile39() throws CoreException, IOException {
+		String charsetName = "IBM-861";
+		doGenTest(charsetName);
+	}
+
+	public void testFile40() throws CoreException, IOException {
+		String charsetName = "IBM-862";
+		doGenTest(charsetName);
+	}
+
+	public void testFile41() throws CoreException, IOException {
+		String charsetName = "IBM-863";
+		doGenTest(charsetName);
+	}
+
+	public void testFile42() throws CoreException, IOException {
+		String charsetName = "IBM-864";
+		doGenTest(charsetName);
+	}
+
+	public void testFile43() throws CoreException, IOException {
+		String charsetName = "IBM-864S";
+		doGenTest(charsetName);
+	}
+
+	public void testFile44() throws CoreException, IOException {
+		String charsetName = "IBM-865";
+		doGenTest(charsetName);
+	}
+
+	public void testFile45() throws CoreException, IOException {
+		String charsetName = "IBM-866";
+		doGenTest(charsetName);
+	}
+
+	public void testFile46() throws CoreException, IOException {
+		String charsetName = "IBM-867";
+		doGenTest(charsetName);
+	}
+
+	public void testFile47() throws CoreException, IOException {
+		String charsetName = "IBM-868";
+		doGenTest(charsetName);
+	}
+
+	public void testFile48() throws CoreException, IOException {
+		String charsetName = "IBM-869";
+		doGenTest(charsetName);
+	}
+
+	public void testFile49() throws CoreException, IOException {
+		String charsetName = "IBM-874";
+		doGenTest(charsetName);
+	}
+
+	public void testFile50() throws CoreException, IOException {
+		String charsetName = "IBM-897";
+		doGenTest(charsetName);
+	}
+
+	public void testFile51() throws CoreException, IOException {
+		String charsetName = "IBM-921";
+		doGenTest(charsetName);
+	}
+
+	public void testFile52() throws CoreException, IOException {
+		String charsetName = "IBM-922";
+		doGenTest(charsetName);
+	}
+
+	public void testFile53() throws CoreException, IOException {
+		String charsetName = "IBM-932";
+		doGenTest(charsetName);
+	}
+
+	public void testFile54() throws CoreException, IOException {
+		String charsetName = "IBM-942";
+		doGenTest(charsetName);
+	}
+
+	public void testFile55() throws CoreException, IOException {
+		String charsetName = "IBM-942C";
+		doGenTest(charsetName);
+	}
+
+	public void testFile56() throws CoreException, IOException {
+		String charsetName = "IBM-943";
+		doGenTest(charsetName);
+	}
+
+	public void testFile57() throws CoreException, IOException {
+		String charsetName = "IBM-943C";
+		doGenTest(charsetName);
+	}
+
+	public void testFile58() throws CoreException, IOException {
+		String charsetName = "IBM-948";
+		doGenTest(charsetName);
+	}
+
+	public void testFile59() throws CoreException, IOException {
+		String charsetName = "IBM-949";
+		doGenTest(charsetName);
+	}
+
+	public void testFile60() throws CoreException, IOException {
+		String charsetName = "IBM-949C";
+		doGenTest(charsetName);
+	}
+
+	public void testFile61() throws CoreException, IOException {
+		String charsetName = "IBM-950";
+		doGenTest(charsetName);
+	}
+
+	public void testFile62() throws CoreException, IOException {
+		String charsetName = "IBM-954C";
+		doGenTest(charsetName);
+	}
+
+	public void testFile63() throws CoreException, IOException {
+		String charsetName = "ISO-2022-CN";
+		doGenTest(charsetName);
+	}
+
+	public void testFile64() throws CoreException, IOException {
+		String charsetName = "ISO-2022-CN-GB";
+		doGenTest(charsetName);
+	}
+
+	public void testFile65() throws CoreException, IOException {
+		String charsetName = "ISO-2022-JP";
+		doGenTest(charsetName);
+	}
+
+	public void testFile66() throws CoreException, IOException {
+		String charsetName = "ISO-2022-KR";
+		doGenTest(charsetName);
+	}
+
+	public void testFile67() throws CoreException, IOException {
+		String charsetName = "ISO-8859-1";
+		doGenTest(charsetName);
+	}
+
+	public void testFile68() throws CoreException, IOException {
+		String charsetName = "ISO-8859-10";
+		doGenTest(charsetName);
+	}
+
+	public void testFile69() throws CoreException, IOException {
+		String charsetName = "ISO-8859-13";
+		doGenTest(charsetName);
+	}
+
+	public void testFile70() throws CoreException, IOException {
+		String charsetName = "ISO-8859-14";
+		doGenTest(charsetName);
+	}
+
+	public void testFile71() throws CoreException, IOException {
+		String charsetName = "ISO-8859-15";
+		doGenTest(charsetName);
+	}
+
+	public void testFile72() throws CoreException, IOException {
+		String charsetName = "ISO-8859-16";
+		doGenTest(charsetName);
+	}
+
+	public void testFile73() throws CoreException, IOException {
+		String charsetName = "ISO-8859-2";
+		doGenTest(charsetName);
+	}
+
+	public void testFile74() throws CoreException, IOException {
+		String charsetName = "ISO-8859-3";
+		doGenTest(charsetName);
+	}
+
+	public void testFile75() throws CoreException, IOException {
+		String charsetName = "ISO-8859-4";
+		doGenTest(charsetName);
+	}
+
+	public void testFile76() throws CoreException, IOException {
+		String charsetName = "ISO-8859-5";
+		doGenTest(charsetName);
+	}
+
+	public void testFile77() throws CoreException, IOException {
+		String charsetName = "ISO-8859-6";
+		doGenTest(charsetName);
+	}
+
+	public void testFile78() throws CoreException, IOException {
+		String charsetName = "ISO-8859-6S";
+		doGenTest(charsetName);
+	}
+
+	public void testFile79() throws CoreException, IOException {
+		String charsetName = "ISO-8859-7";
+		doGenTest(charsetName);
+	}
+
+	public void testFile80() throws CoreException, IOException {
+		String charsetName = "ISO-8859-8";
+		doGenTest(charsetName);
+	}
+
+	public void testFile81() throws CoreException, IOException {
+		String charsetName = "ISO-8859-9";
+		doGenTest(charsetName);
+	}
+
+	public void testFile82() throws CoreException, IOException {
+		String charsetName = "JIS0201";
+		doGenTest(charsetName);
+	}
+
+	public void testFile83() throws CoreException, IOException {
+		String charsetName = "JIS0208";
+		doGenTest(charsetName);
+	}
+
+	public void testFile84() throws CoreException, IOException {
+		String charsetName = "JIS0212";
+		doGenTest(charsetName);
+	}
+
+	public void testFile85() throws CoreException, IOException {
+		String charsetName = "Johab";
+		doGenTest(charsetName);
+	}
+
+	public void testFile86() throws CoreException, IOException {
+		String charsetName = "KOI8-R";
+		doGenTest(charsetName);
+	}
+
+	public void testFile87() throws CoreException, IOException {
+		String charsetName = "KOI8-RU";
+		doGenTest(charsetName);
+	}
+
+	public void testFile88() throws CoreException, IOException {
+		String charsetName = "KOI8-U";
+		doGenTest(charsetName);
+	}
+
+	public void testFile89() throws CoreException, IOException {
+		String charsetName = "KSC5601";
+		doGenTest(charsetName);
+	}
+
+	public void testFile90() throws CoreException, IOException {
+		String charsetName = "MacArabic";
+		doGenTest(charsetName);
+	}
+
+	public void testFile91() throws CoreException, IOException {
+		String charsetName = "MacCentralEurope";
+		doGenTest(charsetName);
+	}
+
+	public void testFile92() throws CoreException, IOException {
+		String charsetName = "MacCroatian";
+		doGenTest(charsetName);
+	}
+
+	public void testFile93() throws CoreException, IOException {
+		String charsetName = "MacCyrillic";
+		doGenTest(charsetName);
+	}
+
+	public void testFile94() throws CoreException, IOException {
+		String charsetName = "MacGreek";
+		doGenTest(charsetName);
+	}
+
+	public void testFile95() throws CoreException, IOException {
+		String charsetName = "MacHebrew";
+		doGenTest(charsetName);
+	}
+
+	public void testFile96() throws CoreException, IOException {
+		String charsetName = "MacIceland";
+		doGenTest(charsetName);
+	}
+
+	public void testFile97() throws CoreException, IOException {
+		String charsetName = "MacRoman";
+		doGenTest(charsetName);
+	}
+
+	public void testFile98() throws CoreException, IOException {
+		String charsetName = "MacRomania";
+		doGenTest(charsetName);
+	}
+
+	public void testFile99() throws CoreException, IOException {
+		String charsetName = "MacThai";
+		doGenTest(charsetName);
+	}
+
+	public void testFile100() throws CoreException, IOException {
+		String charsetName = "MacTurkish";
+		doGenTest(charsetName);
+	}
+
+	public void testFile101() throws CoreException, IOException {
+		String charsetName = "MacUkraine";
+		doGenTest(charsetName);
+	}
+
+	public void testFile102() throws CoreException, IOException {
+		String charsetName = "PTCP154";
+		doGenTest(charsetName);
+	}
+
+	public void testFile103() throws CoreException, IOException {
+		String charsetName = "Shift_JIS";
+		doGenTest(charsetName);
+	}
+
+	public void testFile104() throws CoreException, IOException {
+		String charsetName = "TIS-620";
+		doGenTest(charsetName);
+	}
+
+	public void testFile105() throws CoreException, IOException {
+		String charsetName = "US-ASCII";
+		doGenTest(charsetName);
+	}
+
+//	public void testFile106() throws CoreException, IOException {
+//		String charsetName = "UTF-16";
+//		doGenTest(charsetName);
+//	}
+
+//	public void testFile107() throws CoreException, IOException {
+//		String charsetName = "UTF-16BE";
+//		doGenTest(charsetName);
+//	}
+
+//	public void testFile108() throws CoreException, IOException {
+//		String charsetName = "UTF-16LE";
+//		doGenTest(charsetName);
+//	}
+
+	public void testFile109() throws CoreException, IOException {
+		String charsetName = "UTF-32";
+		doGenTest(charsetName);
+	}
+
+	public void testFile110() throws CoreException, IOException {
+		String charsetName = "UTF-32BE";
+		doGenTest(charsetName);
+	}
+
+	public void testFile111() throws CoreException, IOException {
+		String charsetName = "UTF-32LE";
+		doGenTest(charsetName);
+	}
+
+	public void testFile112() throws CoreException, IOException {
+		String charsetName = "UTF-8";
+		doGenTest(charsetName);
+	}
+
+	public void testFile113() throws CoreException, IOException {
+		String charsetName = "UTF-8J";
+		doGenTest(charsetName);
+	}
+
+	public void testFile114() throws CoreException, IOException {
+		String charsetName = "windows-1250";
+		doGenTest(charsetName);
+	}
+
+	public void testFile115() throws CoreException, IOException {
+		String charsetName = "windows-1251";
+		doGenTest(charsetName);
+	}
+
+	public void testFile116() throws CoreException, IOException {
+		String charsetName = "windows-1252";
+		doGenTest(charsetName);
+	}
+
+	public void testFile117() throws CoreException, IOException {
+		String charsetName = "windows-1253";
+		doGenTest(charsetName);
+	}
+
+	public void testFile118() throws CoreException, IOException {
+		String charsetName = "windows-1254";
+		doGenTest(charsetName);
+	}
+
+	public void testFile119() throws CoreException, IOException {
+		String charsetName = "windows-1255";
+		doGenTest(charsetName);
+	}
+
+	public void testFile120() throws CoreException, IOException {
+		String charsetName = "windows-1256";
+		doGenTest(charsetName);
+	}
+
+	public void testFile121() throws CoreException, IOException {
+		String charsetName = "windows-1256S";
+		doGenTest(charsetName);
+	}
+
+	public void testFile122() throws CoreException, IOException {
+		String charsetName = "windows-1257";
+		doGenTest(charsetName);
+	}
+
+	public void testFile123() throws CoreException, IOException {
+		String charsetName = "windows-1258";
+		doGenTest(charsetName);
+	}
+
+	public void testFile124() throws CoreException, IOException {
+		String charsetName = "windows-874";
+		doGenTest(charsetName);
+	}
+
+	public void testFile125() throws CoreException, IOException {
+		String charsetName = "windows-932";
+		doGenTest(charsetName);
+	}
+
+	public void testFile126() throws CoreException, IOException {
+		String charsetName = "windows-936";
+		doGenTest(charsetName);
+	}
+
+	public void testFile127() throws CoreException, IOException {
+		String charsetName = "windows-949";
+		doGenTest(charsetName);
+	}
+
+	
+	public void testFile128() throws CoreException, IOException {
+		String charsetName = "windows-950";
+		doGenTest(charsetName);
+	}
+
+/* 
+removed for PPC machine with IBM VM 
+https://bugs.eclipse.org/bugs/show_bug.cgi?id=126503
+*/ 
+//	public void testFile129() throws CoreException, IOException {
+//		String charsetName = "X-UnicodeBig";
+//		doGenTest(charsetName);
+//	}
+
+/* 
+removed for PPC machine with IBM VM 
+https://bugs.eclipse.org/bugs/show_bug.cgi?id=126503
+*/ 
+//	public void testFile130() throws CoreException, IOException {
+//		String charsetName = "X-UnicodeLittle";
+//		doGenTest(charsetName);
+//	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/read/TestContentDescription.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/read/TestContentDescription.java
new file mode 100644
index 0000000..ec8d4c6
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/read/TestContentDescription.java
@@ -0,0 +1,520 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.xml.tests.encoding.read;
+
+import java.io.File;
+import java.io.IOException;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.content.IContentDescription;
+import org.eclipse.wst.sse.core.internal.encoding.NonContentBasedEncodingRules;
+import org.eclipse.wst.xml.tests.encoding.TestsPlugin;
+import org.eclipse.wst.xml.tests.encoding.util.ProjectUnzipUtility;
+
+
+public class TestContentDescription extends TestCase {
+	//	private final String fileDir = "html/";
+	//	private final String fileRoot =
+	// "/builds/Workspaces/HeadWorkspace/org.eclipse.wst.xml.tests.encoding/";
+	//	private final String fileLocation = fileRoot + fileDir;
+	private static final boolean DEBUG = true;
+	//private static final boolean DEBUG_TEST_DETAIL = false;
+	// needs to be static, since JUnit creates difference instances for each
+	// test
+	private static boolean fTestProjectInitialized;
+	private static final String TEST_PROJECT_NAME = "org.eclipse.encoding.resource.newtests";
+	static IProject fTestProject;
+	private static int nSetups = 0;
+
+	/**
+	 *  
+	 */
+	public TestContentDescription() {
+		super();
+		//System.out.println(currentPlatformCharset);
+	}
+
+	public static void main(String[] args) {
+		//		try {
+		//			new TestCodedReader().doAllFiles();
+		//		} catch (CoreException e) {
+		//			e.printStackTrace();
+		//		} catch (IOException e) {
+		//			e.printStackTrace();
+		//		}
+	}
+
+	private static void createProject(IProject project, IPath locationPath, IProgressMonitor monitor) throws CoreException {
+		if (monitor == null) {
+			monitor = new NullProgressMonitor();
+		}
+		monitor.beginTask("creating test project", 10);
+		// create the project
+		try {
+			if (!project.exists()) {
+				IProjectDescription desc = project.getWorkspace().newProjectDescription(project.getName());
+				if (Platform.getLocation().equals(locationPath)) {
+					locationPath = null;
+				}
+				desc.setLocation(locationPath);
+				project.create(desc, monitor);
+				monitor = null;
+			}
+			if (!project.isOpen()) {
+				project.open(monitor);
+				monitor = null;
+			}
+		}
+		finally {
+			if (monitor != null) {
+				monitor.done();
+			}
+		}
+	}
+
+	private static void getAndCreateProject() throws CoreException {
+		//TestsPlugin testsPlugin = (TestsPlugin)
+		// Platform.getPlugin("org.eclipse.wst.xml.tests.encoding");
+		IWorkspace workspace = TestsPlugin.getWorkspace();
+		IWorkspaceRoot root = workspace.getRoot();
+		fTestProject = root.getProject(TEST_PROJECT_NAME);
+		// this form creates project as "linked" back to 'fileRoot'
+		//createProject(testProject, new Path(fileRoot), null);
+		createProject(fTestProject, null, null);
+		fTestProject.refreshLocal(IResource.DEPTH_INFINITE, null);
+		assertTrue(fTestProject.exists());
+		//		IContainer dotestFiles = testProject.getFolder("dotestFiles");
+		//		assertTrue(dotestFiles.exists());
+		//		IResource[] allFolders = dotestFiles.members();
+		//		assertNotNull(allFolders);
+	}
+
+	protected void setUp() throws Exception {
+		super.setUp();
+		nSetups++;
+		if (!fTestProjectInitialized) {
+			getAndCreateProject();
+			// unzip files to the root of workspace directory
+			String destinationProjectString = fTestProject.getLocation().toOSString();
+			String destinationFolder = destinationProjectString + "/";
+			// this zip file is sitting in the "root" of test plugin
+			File zipFile = TestsPlugin.getTestFile("testfiles.zip");
+			ProjectUnzipUtility projUtil = new ProjectUnzipUtility();
+			projUtil.unzipAndImport(zipFile, destinationFolder);
+			projUtil.initJavaProject(TEST_PROJECT_NAME);
+			fTestProject.refreshLocal(IResource.DEPTH_INFINITE, null);
+			fTestProjectInitialized = true;
+		}
+	}
+
+	protected void tearDown() throws Exception {
+		super.tearDown();
+		nSetups--;
+		if (nSetups == 0) {
+			if (!DEBUG) {
+				//				Display display = PlatformUI.getWorkbench().getDisplay();
+				//				display.asyncExec(new Runnable() {
+				//					public void run() {
+				//						ProjectUnzipUtility projUtil = new ProjectUnzipUtility();
+				//						IProject proj = fTestProject;
+				//						fTestProject = null;
+				//						try {
+				//							projUtil.deleteProject(proj);
+				//						} catch (Exception e) {
+				//							e.printStackTrace();
+				//						}
+				//					}
+				//				});
+			}
+		}
+	}
+
+	protected void doTest(String expectedJavaCharset, String filePath, Class expectedException) throws CoreException, IOException {
+		if (expectedJavaCharset != null && expectedJavaCharset.indexOf("UTF-32") > -1) {
+			return; //won't try 32 bit right now
+		}
+		expectedJavaCharset = massageCharset(expectedJavaCharset);
+		IFile file = (IFile) fTestProject.findMember(filePath);
+		assertNotNull("Error in test case: file not found: " + filePath, file);
+
+		IContentDescription fileContentDescription = file.getContentDescription();
+	//	IContentDescription streamContentDescription = Platform.getContentTypeManager().getDescriptionFor(file.getContents(), file.getName(), IContentDescription.ALL);
+	//	assertEquals("comparing file and stream contentDescription", fileContentDescription, streamContentDescription);
+
+		assertNotNull("Null content description", fileContentDescription);
+		String foundCharset = fileContentDescription.getCharset();
+		foundCharset = massageCharset(foundCharset);
+
+		if (expectedJavaCharset == null || expectedJavaCharset.equals("expectPlatformCharset")) {
+			String platformDefault = NonContentBasedEncodingRules.useDefaultNameRules(null);
+			assertTrue(foundCharset.equals(platformDefault));
+		}
+		else {
+			boolean asExpected = foundCharset.equals(expectedJavaCharset);
+			assertTrue(foundCharset + " did not equal the expected " + expectedJavaCharset + " (this is a VM dependent test)", asExpected);
+		}
+
+
+	}
+
+	/**
+	 * @param foundCharset
+	 * @return
+	 */
+	private String massageCharset(String foundCharset) {
+		String result = foundCharset;
+		if ("UTF-16LE".equals(foundCharset)) {
+			result = "UTF-16";
+		}
+		else if ("X-UnicodeLittle".equals(foundCharset)) {
+			result = "UTF-16";
+		}
+		else if ("X-UnicodeBig".equals(foundCharset)) {
+			result = "UTF-16BE";
+		}
+
+		return result;
+	}
+
+	public void testFile1() throws CoreException, IOException {
+		doTest("expectPlatformCharset", "testfiles/css/emptyFile.css", null);
+	}
+
+	public void testFile2() throws CoreException, IOException {
+		doTest("EUC-JP", "testfiles/css/encoding_test_eucjp.css", null);
+	}
+
+	public void testFile3() throws CoreException, IOException {
+		doTest("ISO-2022-JP", "testfiles/css/encoding_test_jis.css", null);
+	}
+
+	public void testFile4() throws CoreException, IOException {
+		doTest("Shift_JIS", "testfiles/css/encoding_test_sjis.css", null);
+	}
+
+	public void testFile5() throws CoreException, IOException {
+		doTest("expectPlatformCharset", "testfiles/css/noEncoding.css", null);
+	}
+
+	public void testFile6() throws CoreException, IOException {
+		doTest("ISO-8859-6", "testfiles/css/nonStandard.css", null);
+	}
+
+	public void testFile7() throws CoreException, IOException {
+		doTest("ISO-8859-6", "testfiles/css/nonStandardIllFormed.css", null);
+	}
+
+	public void testFile8() throws CoreException, IOException {
+		doTest("ISO-8859-6", "testfiles/css/nonStandardIllFormed2.css", null);
+	}
+
+
+	public void testFile57() throws CoreException, IOException {
+		doTest("expectPlatformCharset", "testfiles/html/EmptyFile.html", null);
+	}
+
+	public void testFile58() throws CoreException, IOException {
+		doTest("UTF-8", "testfiles/html/IllformedNormalNonDefault.html", null);
+	}
+
+	public void testFile59() throws CoreException, IOException {
+		doTest("expectPlatformCharset", "testfiles/html/LargeNoEncoding.html", null);
+	}
+
+	public void testFile60() throws CoreException, IOException {
+		doTest("ISO-8859-1", "testfiles/html/LargeNonDefault.html", null);
+	}
+
+	public void testFile61() throws CoreException, IOException {
+		doTest("ISO-8859-6", "testfiles/html/MultiNonDefault.html", null);
+	}
+
+	public void testFile62() throws CoreException, IOException {
+		doTest("expectPlatformCharset", "testfiles/html/NoEncoding.html", null);
+	}
+
+	public void testFile63() throws CoreException, IOException {
+		doTest("UTF-8", "testfiles/html/noquotes.html", null);
+	}
+
+	public void testFile64() throws CoreException, IOException {
+		doTest("UTF-8", "testfiles/html/NormalNonDefault.html", null);
+	}
+
+	public void testFile65() throws CoreException, IOException {
+		doTest("ISO-8859-1", "testfiles/jsp/EmptyFile.jsp", null);
+	}
+
+	public void testFile66() throws CoreException, IOException {
+		doTest("ISO-8859-8", "testfiles/jsp/IllformedNormalNonDefault.jsp", null);
+	}
+
+	public void testFile67() throws CoreException, IOException {
+		doTest("abc", "testfiles/jsp/inValidEncodingValue.jsp", org.eclipse.wst.sse.core.internal.exceptions.UnsupportedCharsetExceptionWithDetail.class);
+	}
+
+	public void testFile68() throws CoreException, IOException {
+		doTest("windows-1252", "testfiles/jsp/javaEncodingValue.jsp", null);
+	}
+
+	public void testFile69() throws CoreException, IOException {
+		doTest("ISO-8859-1", "testfiles/jsp/MalformedNoEncoding.jsp", null);
+	}
+
+	public void testFile70() throws CoreException, IOException {
+		doTest("ISO-8859-1", "testfiles/jsp/MalformedNoEncodingXSL.jsp", null);
+	}
+
+	public void testFile71() throws CoreException, IOException {
+		doTest("ISO-8859-1", "testfiles/jsp/noEncoding.jsp", null);
+	}
+
+	public void testFile72() throws CoreException, IOException {
+		doTest("ISO-8859-1", "testfiles/jsp/NoEncodinginXMLDecl.jsp", null);
+	}
+
+	public void testFile73() throws CoreException, IOException {
+		doTest("ISO-8859-2", "testfiles/jsp/nomalDirectiveCase.jsp", null);
+	}
+
+	public void testFile74() throws CoreException, IOException {
+		doTest("ISO-8859-1", "testfiles/jsp/nomalDirectiveCaseNoEncoding.jsp", null);
+	}
+
+	public void testFile75() throws CoreException, IOException {
+		doTest("ISO-8859-3", "testfiles/jsp/nomalDirectiveCaseUsingCharset.jsp", null);
+	}
+
+	public void testFile76() throws CoreException, IOException {
+		doTest("ISO-8859-2", "testfiles/jsp/nomalDirectiveCaseUsingXMLSyntax.jsp", null);
+	}
+
+	public void testFile77() throws CoreException, IOException {
+		doTest("ISO-8859-8", "testfiles/jsp/NormalNonDefault.jsp", null);
+	}
+
+	public void testFile78() throws CoreException, IOException {
+		doTest("ISO-8859-8", "testfiles/jsp/NormalNonDefaultWithXMLDecl.jsp", null);
+	}
+
+	public void testFile79() throws CoreException, IOException {
+		doTest("ISO-8859-7", "testfiles/jsp/NormalPageCaseNonDefault.jsp", null);
+	}
+
+	public void testFile80() throws CoreException, IOException {
+		doTest("Shift_JIS", "testfiles/jsp/SelColBeanRow12ResultsForm.jsp", null);
+	}
+
+	public void testFile81() throws CoreException, IOException {
+		doTest("ISO-8859-3", "testfiles/jsp/testBrokenLine.jsp", null);
+	}
+
+	public void testFile82() throws CoreException, IOException {
+		doTest("testjunk", "testfiles/jsp/testDefaultEncoding.jsp", org.eclipse.wst.sse.core.internal.exceptions.UnsupportedCharsetExceptionWithDetail.class);
+	}
+
+	public void testFile83() throws CoreException, IOException {
+		doTest("testjunk", "testfiles/jsp/testDefaultEncodingWithJunk.jsp", org.eclipse.wst.sse.core.internal.exceptions.UnsupportedCharsetExceptionWithDetail.class);
+	}
+
+	public void testFile84() throws CoreException, IOException {
+		doTest("ISO-8859-1", "testfiles/jsp/testExtraJunk.jsp", null);
+	}
+
+	public void testFile85() throws CoreException, IOException {
+		doTest("UTF-8", "testfiles/jsp/testExtraValidStuff.jsp", null);
+	}
+
+	public void testFile86() throws CoreException, IOException {
+		doTest("ISO-8859-1", "testfiles/jsp/testIllFormed.jsp", null);
+	}
+
+	public void testFile87() throws CoreException, IOException {
+		doTest("UTF-8", "testfiles/jsp/testIllFormed2.jsp", null);
+	}
+
+	public void testFile88() throws CoreException, IOException {
+		doTest("ISO-8859-1", "testfiles/jsp/testNoEncodingValue.jsp", null);
+	}
+
+	public void testFile89() throws CoreException, IOException {
+		doTest("ISO-8859-1", "testfiles/jsp/testNoPageDirective.jsp", null);
+	}
+
+	public void testFile90() throws CoreException, IOException {
+		doTest("ISO-8859-2", "testfiles/jsp/testNoPageDirectiveAtFirst.jsp", null);
+	}
+
+	public void testFile91() throws CoreException, IOException {
+		doTest("ISO-8859-1", "testfiles/jsp/testNoPageDirectiveInLargeFile.jsp", null);
+	}
+
+	public void testFile92() throws CoreException, IOException {
+		doTest("UTF-8", "testfiles/jsp/testNormalCase.jsp", null);
+	}
+
+	public void testFile93() throws CoreException, IOException {
+		doTest("UTF-16BE", "testfiles/jsp/testUTF16.jsp", null);
+	}
+
+	public void testFile94() throws CoreException, IOException {
+		doTest("UTF-16LE", "testfiles/jsp/utf16UnicodeStreamWithNoEncodingInHeader2.jsp", null);
+	}
+
+	public void testFile95() throws CoreException, IOException {
+		doTest("UTF-16BE", "testfiles/jsp/utf16UnicodeStreamWithNoEncodingInHeaderBE.jsp", null);
+	}
+
+	public void testFile96() throws CoreException, IOException {
+		doTest("UTF-16BE", "testfiles/jsp/utf16WithJapaneseChars.jsp", null);
+	}
+
+	public void testFile97() throws CoreException, IOException {
+		doTest("UTF-8", "testfiles/jsp/UTF8With3ByteBOM.jsp", null);
+	}
+
+	public void testFile98() throws CoreException, IOException {
+		doTest("ISO-8859-8", "testfiles/jsp/WellFormedNormalNonDefault.jsp", null);
+	}
+
+	public void testFile99() throws CoreException, IOException {
+		doTest("Shift_JIS", "testfiles/regressionTestFiles/defect223365/SelColBeanRow12ResultsForm.jsp", null);
+	}
+
+	public void testFile100() throws CoreException, IOException {
+		doTest("Shift_JIS", "testfiles/regressionTestFiles/defect223365/SelColBeanRow12ResultsFormB.jsp", null);
+	}
+
+	public void testFile101() throws CoreException, IOException {
+		doTest("Shift_JIS", "testfiles/regressionTestFiles/defect224293/testshiftjisXmlSyntax.jsp", null);
+	}
+
+	public void testFile102() throws CoreException, IOException {
+		doTest("Shift_JIS", "testfiles/regressionTestFiles/defect229667/audi.jsp", null);
+	}
+
+	public void testFile103() throws CoreException, IOException {
+		doTest("UTF-8", "testfiles/xml/EmptyFile.xml", null);
+	}
+
+	public void testFile104() throws CoreException, IOException {
+		doTest("EUC-JP", "testfiles/xml/eucjp.xml", null);
+	}
+
+//	public void testFile105() throws CoreException, IOException {
+//		doTest("ISO-8859-1", "testfiles/xml/IllformedNormalNonDefault.xml", null);
+//	}
+//
+//	public void testFile106() throws CoreException, IOException {
+//		doTest("UTF-8", "testfiles/xml/MalformedNoEncoding.xml", null);
+//	}
+//
+//	public void testFile107() throws CoreException, IOException {
+//		doTest("UTF-8", "testfiles/xml/MalformedNoEncoding.xsl", null);
+//	}
+
+	public void testFile108() throws CoreException, IOException {
+		doTest("UTF-8", "testfiles/xml/NoEncoding.xml", null);
+	}
+
+	public void testFile109() throws CoreException, IOException {
+		doTest("ISO-8859-1", "testfiles/xml/NormalNonDefault.xml", null);
+	}
+
+	public void testFile110() throws CoreException, IOException {
+		doTest("Shift_JIS", "testfiles/xml/shiftjis.xml", null);
+	}
+
+	public void testFile111() throws CoreException, IOException {
+		doTest("ISO-8859-1", "testfiles/xml/testExtraJunk.xml", null);
+	}
+
+	public void testFile112() throws CoreException, IOException {
+		doTest("UTF-8", "testfiles/xml/testExtraValidStuff.xml", null);
+	}
+
+//	public void testFile113() throws CoreException, IOException {
+//		doTest("UTF-8", "testfiles/xml/testIllFormed.xml", null);
+//	}
+
+	public void testFile114() throws CoreException, IOException {
+		doTest("UTF-8", "testfiles/xml/testIllFormed2.xml", null);
+	}
+
+	public void testFile115() throws CoreException, IOException {
+		doTest("UTF-8 standalone=", "testfiles/xml/testIllFormed3.xml", java.nio.charset.IllegalCharsetNameException.class);
+	}
+
+	public void testFile116() throws CoreException, IOException {
+		doTest("UTF-8", "testfiles/xml/testIllFormed4.xml", null);
+	}
+
+	public void testFile117() throws CoreException, IOException {
+		doTest("ISO-8859-1", "testfiles/xml/testMultiLine.xml", null);
+	}
+
+	public void testFile118() throws CoreException, IOException {
+		doTest("UTF-8", "testfiles/xml/testNoEncodingValue.xml", null);
+	}
+
+	public void testFile119() throws CoreException, IOException {
+		doTest("UTF-8", "testfiles/xml/testNormalCase.xml", null);
+	}
+
+	public void testFile120() throws CoreException, IOException {
+		doTest("UTF-8", "testfiles/xml/testNoXMLDecl.xml", null);
+	}
+
+	public void testFile121() throws CoreException, IOException {
+		doTest("UTF-8", "testfiles/xml/testNoXMLDeclAtFirst.xml", null);
+	}
+
+	public void testFile122() throws CoreException, IOException {
+		doTest("UTF-8", "testfiles/xml/testNoXMLDeclInLargeFile.xml", null);
+	}
+
+//	public void testFile123() throws CoreException, IOException {
+//		doTest("UTF-16BE", "testfiles/xml/testUTF16.xml", null);
+//	}
+
+	public void testFile124() throws CoreException, IOException {
+		doTest("UTF-16LE", "testfiles/xml/UTF16LEAtStartOfLargeFile.xml", null);
+	}
+
+	public void testFile125() throws CoreException, IOException {
+		doTest("UTF-16LE", "testfiles/xml/utf16UnicodeStreamWithNoEncodingInHeader2.xml", null);
+	}
+
+//	public void testFile126() throws CoreException, IOException {
+//		doTest("UTF-16BE", "testfiles/xml/utf16UnicodeStreamWithNoEncodingInHeaderBE.xml", null);
+//	}
+
+//	public void testFile127() throws CoreException, IOException {
+//		doTest("UTF-16BE", "testfiles/xml/utf16WithJapaneseChars.xml", null);
+//	}
+
+	public void testFile128() throws CoreException, IOException {
+		doTest("UTF-8", "testfiles/xml/UTF8With3ByteBOM.xml", null);
+	}
+
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/read/TestContentTypeDescriptionOnGennedFiles.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/read/TestContentTypeDescriptionOnGennedFiles.java
new file mode 100644
index 0000000..4ce95c4
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/read/TestContentTypeDescriptionOnGennedFiles.java
@@ -0,0 +1,711 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.xml.tests.encoding.read;
+
+import java.io.IOException;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.wst.xml.tests.encoding.GenerateFiles;
+
+
+
+public class TestContentTypeDescriptionOnGennedFiles extends TestContentDescription {
+	private static int notRan = 0;
+	private static final boolean DEBUG = false;
+
+	protected void doGenTest(String charsetName) throws CoreException, IOException {
+		String filename = GenerateFiles.getMainDirectoryBasedOnVMName() + "/xml/test-" + charsetName + ".xml";
+		doTest(charsetName, filename, null);
+	}
+
+	protected void doTest(String expectedJavaCharset, String filePath, Class expectedException) throws CoreException, IOException {
+		if (expectedJavaCharset != null && expectedJavaCharset.indexOf("UTF-32") > -1) {
+			return; //won't try 32 bit right now
+		}
+		IFile file = (IFile) fTestProject.findMember(filePath);
+
+		// if there no file, just assume that its due to which VM is
+		// bring used. (Could be improved in future to avoid counting as a
+		// test) - this check in here for initial debugging only
+		if (file == null) {
+			notRan++;
+			if (DEBUG) {
+				System.out.println();
+				System.out.println("test not ran since charset not supported by VM: " + filePath);
+			}
+			return;
+		}
+		super.doTest(expectedJavaCharset, filePath, expectedException);
+	}
+
+
+	public void testFile0() throws CoreException, IOException {
+		String charsetName = "Big5";
+		doGenTest(charsetName);
+	}
+
+	public void testFile1() throws CoreException, IOException {
+		String charsetName = "CESU-8";
+		doGenTest(charsetName);
+	}
+
+	public void testFile2() throws CoreException, IOException {
+		String charsetName = "COMPOUND_TEXT";
+		doGenTest(charsetName);
+	}
+
+	public void testFile3() throws CoreException, IOException {
+		String charsetName = "EUC-CN";
+		doGenTest(charsetName);
+	}
+
+	public void testFile4() throws CoreException, IOException {
+		String charsetName = "EUC-JP";
+		doGenTest(charsetName);
+	}
+
+	public void testFile5() throws CoreException, IOException {
+		String charsetName = "EUC-KR";
+		doGenTest(charsetName);
+	}
+
+	public void testFile6() throws CoreException, IOException {
+		String charsetName = "GB18030";
+		doGenTest(charsetName);
+	}
+
+	public void testFile7() throws CoreException, IOException {
+		String charsetName = "GB2312";
+		doGenTest(charsetName);
+	}
+
+	public void testFile8() throws CoreException, IOException {
+		String charsetName = "GBK";
+		doGenTest(charsetName);
+	}
+
+	public void testFile9() throws CoreException, IOException {
+		String charsetName = "hp-roman8";
+		doGenTest(charsetName);
+	}
+
+	public void testFile10() throws CoreException, IOException {
+		String charsetName = "IBM-1006";
+		doGenTest(charsetName);
+	}
+
+	public void testFile11() throws CoreException, IOException {
+		String charsetName = "IBM-1041";
+		doGenTest(charsetName);
+	}
+
+	public void testFile12() throws CoreException, IOException {
+		String charsetName = "IBM-1043";
+		doGenTest(charsetName);
+	}
+
+	public void testFile13() throws CoreException, IOException {
+		String charsetName = "IBM-1046";
+		doGenTest(charsetName);
+	}
+
+	public void testFile14() throws CoreException, IOException {
+		String charsetName = "IBM-1046S";
+		doGenTest(charsetName);
+	}
+
+	public void testFile15() throws CoreException, IOException {
+		String charsetName = "IBM-1088";
+		doGenTest(charsetName);
+	}
+
+	public void testFile16() throws CoreException, IOException {
+		String charsetName = "IBM-1098";
+		doGenTest(charsetName);
+	}
+
+	public void testFile17() throws CoreException, IOException {
+		String charsetName = "IBM-1114";
+		doGenTest(charsetName);
+	}
+
+	public void testFile18() throws CoreException, IOException {
+		String charsetName = "IBM-1115";
+		doGenTest(charsetName);
+	}
+
+	public void testFile19() throws CoreException, IOException {
+		String charsetName = "IBM-1124";
+		doGenTest(charsetName);
+	}
+
+	public void testFile20() throws CoreException, IOException {
+		String charsetName = "IBM-1363";
+		doGenTest(charsetName);
+	}
+
+	public void testFile21() throws CoreException, IOException {
+		String charsetName = "IBM-1363C";
+		doGenTest(charsetName);
+	}
+
+	public void testFile22() throws CoreException, IOException {
+		String charsetName = "IBM-1370";
+		doGenTest(charsetName);
+	}
+
+	public void testFile23() throws CoreException, IOException {
+		String charsetName = "IBM-1381";
+		doGenTest(charsetName);
+	}
+
+	public void testFile24() throws CoreException, IOException {
+		String charsetName = "IBM-1383";
+		doGenTest(charsetName);
+	}
+
+	public void testFile25() throws CoreException, IOException {
+		String charsetName = "IBM-1386";
+		doGenTest(charsetName);
+	}
+
+	public void testFile26() throws CoreException, IOException {
+		String charsetName = "IBM-33722C";
+		doGenTest(charsetName);
+	}
+
+	public void testFile27() throws CoreException, IOException {
+		String charsetName = "IBM-437";
+		doGenTest(charsetName);
+	}
+
+	public void testFile28() throws CoreException, IOException {
+		String charsetName = "IBM-737";
+		doGenTest(charsetName);
+	}
+
+	public void testFile29() throws CoreException, IOException {
+		String charsetName = "IBM-775";
+		doGenTest(charsetName);
+	}
+
+	public void testFile30() throws CoreException, IOException {
+		String charsetName = "IBM-808";
+		doGenTest(charsetName);
+	}
+
+	public void testFile31() throws CoreException, IOException {
+		String charsetName = "IBM-850";
+		doGenTest(charsetName);
+	}
+
+	public void testFile32() throws CoreException, IOException {
+		String charsetName = "IBM-852";
+		doGenTest(charsetName);
+	}
+
+	public void testFile33() throws CoreException, IOException {
+		String charsetName = "IBM-855";
+		doGenTest(charsetName);
+	}
+
+	public void testFile34() throws CoreException, IOException {
+		String charsetName = "IBM-856";
+		doGenTest(charsetName);
+	}
+
+	public void testFile35() throws CoreException, IOException {
+		String charsetName = "IBM-857";
+		doGenTest(charsetName);
+	}
+
+	public void testFile36() throws CoreException, IOException {
+		String charsetName = "IBM-858";
+		doGenTest(charsetName);
+	}
+
+	public void testFile37() throws CoreException, IOException {
+		String charsetName = "IBM-859";
+		doGenTest(charsetName);
+	}
+
+	public void testFile38() throws CoreException, IOException {
+		String charsetName = "IBM-860";
+		doGenTest(charsetName);
+	}
+
+	public void testFile39() throws CoreException, IOException {
+		String charsetName = "IBM-861";
+		doGenTest(charsetName);
+	}
+
+	public void testFile40() throws CoreException, IOException {
+		String charsetName = "IBM-862";
+		doGenTest(charsetName);
+	}
+
+	public void testFile41() throws CoreException, IOException {
+		String charsetName = "IBM-863";
+		doGenTest(charsetName);
+	}
+
+	public void testFile42() throws CoreException, IOException {
+		String charsetName = "IBM-864";
+		doGenTest(charsetName);
+	}
+
+	public void testFile43() throws CoreException, IOException {
+		String charsetName = "IBM-864S";
+		doGenTest(charsetName);
+	}
+
+	public void testFile44() throws CoreException, IOException {
+		String charsetName = "IBM-865";
+		doGenTest(charsetName);
+	}
+
+	public void testFile45() throws CoreException, IOException {
+		String charsetName = "IBM-866";
+		doGenTest(charsetName);
+	}
+
+	public void testFile46() throws CoreException, IOException {
+		String charsetName = "IBM-867";
+		doGenTest(charsetName);
+	}
+
+	public void testFile47() throws CoreException, IOException {
+		String charsetName = "IBM-868";
+		doGenTest(charsetName);
+	}
+
+	public void testFile48() throws CoreException, IOException {
+		String charsetName = "IBM-869";
+		doGenTest(charsetName);
+	}
+
+	public void testFile49() throws CoreException, IOException {
+		String charsetName = "IBM-874";
+		doGenTest(charsetName);
+	}
+
+	public void testFile50() throws CoreException, IOException {
+		String charsetName = "IBM-897";
+		doGenTest(charsetName);
+	}
+
+	public void testFile51() throws CoreException, IOException {
+		String charsetName = "IBM-921";
+		doGenTest(charsetName);
+	}
+
+	public void testFile52() throws CoreException, IOException {
+		String charsetName = "IBM-922";
+		doGenTest(charsetName);
+	}
+
+	public void testFile53() throws CoreException, IOException {
+		String charsetName = "IBM-932";
+		doGenTest(charsetName);
+	}
+
+	public void testFile54() throws CoreException, IOException {
+		String charsetName = "IBM-942";
+		doGenTest(charsetName);
+	}
+
+	public void testFile55() throws CoreException, IOException {
+		String charsetName = "IBM-942C";
+		doGenTest(charsetName);
+	}
+
+	public void testFile56() throws CoreException, IOException {
+		String charsetName = "IBM-943";
+		doGenTest(charsetName);
+	}
+
+	public void testFile57() throws CoreException, IOException {
+		String charsetName = "IBM-943C";
+		doGenTest(charsetName);
+	}
+
+	public void testFile58() throws CoreException, IOException {
+		String charsetName = "IBM-948";
+		doGenTest(charsetName);
+	}
+
+	public void testFile59() throws CoreException, IOException {
+		String charsetName = "IBM-949";
+		doGenTest(charsetName);
+	}
+
+	public void testFile60() throws CoreException, IOException {
+		String charsetName = "IBM-949C";
+		doGenTest(charsetName);
+	}
+
+	public void testFile61() throws CoreException, IOException {
+		String charsetName = "IBM-950";
+		doGenTest(charsetName);
+	}
+
+	public void testFile62() throws CoreException, IOException {
+		String charsetName = "IBM-954C";
+		doGenTest(charsetName);
+	}
+
+	public void testFile63() throws CoreException, IOException {
+		String charsetName = "ISO-2022-CN";
+		doGenTest(charsetName);
+	}
+
+	public void testFile64() throws CoreException, IOException {
+		String charsetName = "ISO-2022-CN-GB";
+		doGenTest(charsetName);
+	}
+
+	public void testFile65() throws CoreException, IOException {
+		String charsetName = "ISO-2022-JP";
+		doGenTest(charsetName);
+	}
+
+	public void testFile66() throws CoreException, IOException {
+		String charsetName = "ISO-2022-KR";
+		doGenTest(charsetName);
+	}
+
+	public void testFile67() throws CoreException, IOException {
+		String charsetName = "ISO-8859-1";
+		doGenTest(charsetName);
+	}
+
+	public void testFile68() throws CoreException, IOException {
+		String charsetName = "ISO-8859-10";
+		doGenTest(charsetName);
+	}
+
+	public void testFile69() throws CoreException, IOException {
+		String charsetName = "ISO-8859-13";
+		doGenTest(charsetName);
+	}
+
+	public void testFile70() throws CoreException, IOException {
+		String charsetName = "ISO-8859-14";
+		doGenTest(charsetName);
+	}
+
+	public void testFile71() throws CoreException, IOException {
+		String charsetName = "ISO-8859-15";
+		doGenTest(charsetName);
+	}
+
+	public void testFile72() throws CoreException, IOException {
+		String charsetName = "ISO-8859-16";
+		doGenTest(charsetName);
+	}
+
+	public void testFile73() throws CoreException, IOException {
+		String charsetName = "ISO-8859-2";
+		doGenTest(charsetName);
+	}
+
+	public void testFile74() throws CoreException, IOException {
+		String charsetName = "ISO-8859-3";
+		doGenTest(charsetName);
+	}
+
+	public void testFile75() throws CoreException, IOException {
+		String charsetName = "ISO-8859-4";
+		doGenTest(charsetName);
+	}
+
+	public void testFile76() throws CoreException, IOException {
+		String charsetName = "ISO-8859-5";
+		doGenTest(charsetName);
+	}
+
+	public void testFile77() throws CoreException, IOException {
+		String charsetName = "ISO-8859-6";
+		doGenTest(charsetName);
+	}
+
+	public void testFile78() throws CoreException, IOException {
+		String charsetName = "ISO-8859-6S";
+		doGenTest(charsetName);
+	}
+
+	public void testFile79() throws CoreException, IOException {
+		String charsetName = "ISO-8859-7";
+		doGenTest(charsetName);
+	}
+
+	public void testFile80() throws CoreException, IOException {
+		String charsetName = "ISO-8859-8";
+		doGenTest(charsetName);
+	}
+
+	public void testFile81() throws CoreException, IOException {
+		String charsetName = "ISO-8859-9";
+		doGenTest(charsetName);
+	}
+
+	public void testFile82() throws CoreException, IOException {
+		String charsetName = "JIS0201";
+		doGenTest(charsetName);
+	}
+
+	public void testFile83() throws CoreException, IOException {
+		String charsetName = "JIS0208";
+		doGenTest(charsetName);
+	}
+
+	public void testFile84() throws CoreException, IOException {
+		String charsetName = "JIS0212";
+		doGenTest(charsetName);
+	}
+
+	public void testFile85() throws CoreException, IOException {
+		String charsetName = "Johab";
+		doGenTest(charsetName);
+	}
+
+	public void testFile86() throws CoreException, IOException {
+		String charsetName = "KOI8-R";
+		doGenTest(charsetName);
+	}
+
+	public void testFile87() throws CoreException, IOException {
+		String charsetName = "KOI8-RU";
+		doGenTest(charsetName);
+	}
+
+	public void testFile88() throws CoreException, IOException {
+		String charsetName = "KOI8-U";
+		doGenTest(charsetName);
+	}
+
+	public void testFile89() throws CoreException, IOException {
+		String charsetName = "KSC5601";
+		doGenTest(charsetName);
+	}
+
+	public void testFile90() throws CoreException, IOException {
+		String charsetName = "MacArabic";
+		doGenTest(charsetName);
+	}
+
+	public void testFile91() throws CoreException, IOException {
+		String charsetName = "MacCentralEurope";
+		doGenTest(charsetName);
+	}
+
+	public void testFile92() throws CoreException, IOException {
+		String charsetName = "MacCroatian";
+		doGenTest(charsetName);
+	}
+
+	public void testFile93() throws CoreException, IOException {
+		String charsetName = "MacCyrillic";
+		doGenTest(charsetName);
+	}
+
+	public void testFile94() throws CoreException, IOException {
+		String charsetName = "MacGreek";
+		doGenTest(charsetName);
+	}
+
+	public void testFile95() throws CoreException, IOException {
+		String charsetName = "MacHebrew";
+		doGenTest(charsetName);
+	}
+
+	public void testFile96() throws CoreException, IOException {
+		String charsetName = "MacIceland";
+		doGenTest(charsetName);
+	}
+
+	public void testFile97() throws CoreException, IOException {
+		String charsetName = "MacRoman";
+		doGenTest(charsetName);
+	}
+
+	public void testFile98() throws CoreException, IOException {
+		String charsetName = "MacRomania";
+		doGenTest(charsetName);
+	}
+
+	public void testFile99() throws CoreException, IOException {
+		String charsetName = "MacThai";
+		doGenTest(charsetName);
+	}
+
+	public void testFile100() throws CoreException, IOException {
+		String charsetName = "MacTurkish";
+		doGenTest(charsetName);
+	}
+
+	public void testFile101() throws CoreException, IOException {
+		String charsetName = "MacUkraine";
+		doGenTest(charsetName);
+	}
+
+	public void testFile102() throws CoreException, IOException {
+		String charsetName = "PTCP154";
+		doGenTest(charsetName);
+	}
+
+	public void testFile103() throws CoreException, IOException {
+		String charsetName = "Shift_JIS";
+		doGenTest(charsetName);
+	}
+
+	public void testFile104() throws CoreException, IOException {
+		String charsetName = "TIS-620";
+		doGenTest(charsetName);
+	}
+
+	public void testFile105() throws CoreException, IOException {
+		String charsetName = "US-ASCII";
+		doGenTest(charsetName);
+	}
+
+	public void testFile106() throws CoreException, IOException {
+		String charsetName = "UTF-16";
+		doGenTest(charsetName);
+	}
+
+//	public void testFile107() throws CoreException, IOException {
+//		String charsetName = "UTF-16BE";
+//		doGenTest(charsetName);
+//	}
+
+	public void testFile108() throws CoreException, IOException {
+		String charsetName = "UTF-16LE";
+		doGenTest(charsetName);
+	}
+
+	public void testFile109() throws CoreException, IOException {
+		String charsetName = "UTF-32";
+		doGenTest(charsetName);
+	}
+
+	public void testFile110() throws CoreException, IOException {
+		String charsetName = "UTF-32BE";
+		doGenTest(charsetName);
+	}
+
+	public void testFile111() throws CoreException, IOException {
+		String charsetName = "UTF-32LE";
+		doGenTest(charsetName);
+	}
+
+	public void testFile112() throws CoreException, IOException {
+		String charsetName = "UTF-8";
+		doGenTest(charsetName);
+	}
+
+	public void testFile113() throws CoreException, IOException {
+		String charsetName = "UTF-8J";
+		doGenTest(charsetName);
+	}
+
+	public void testFile114() throws CoreException, IOException {
+		String charsetName = "windows-1250";
+		doGenTest(charsetName);
+	}
+
+	public void testFile115() throws CoreException, IOException {
+		String charsetName = "windows-1251";
+		doGenTest(charsetName);
+	}
+
+	public void testFile116() throws CoreException, IOException {
+		String charsetName = "windows-1252";
+		doGenTest(charsetName);
+	}
+
+	public void testFile117() throws CoreException, IOException {
+		String charsetName = "windows-1253";
+		doGenTest(charsetName);
+	}
+
+	public void testFile118() throws CoreException, IOException {
+		String charsetName = "windows-1254";
+		doGenTest(charsetName);
+	}
+
+	public void testFile119() throws CoreException, IOException {
+		String charsetName = "windows-1255";
+		doGenTest(charsetName);
+	}
+
+	public void testFile120() throws CoreException, IOException {
+		String charsetName = "windows-1256";
+		doGenTest(charsetName);
+	}
+
+	public void testFile121() throws CoreException, IOException {
+		String charsetName = "windows-1256S";
+		doGenTest(charsetName);
+	}
+
+	public void testFile122() throws CoreException, IOException {
+		String charsetName = "windows-1257";
+		doGenTest(charsetName);
+	}
+
+	public void testFile123() throws CoreException, IOException {
+		String charsetName = "windows-1258";
+		doGenTest(charsetName);
+	}
+
+	public void testFile124() throws CoreException, IOException {
+		String charsetName = "windows-874";
+		doGenTest(charsetName);
+	}
+
+	public void testFile125() throws CoreException, IOException {
+		String charsetName = "windows-932";
+		doGenTest(charsetName);
+	}
+
+	public void testFile126() throws CoreException, IOException {
+		String charsetName = "windows-936";
+		doGenTest(charsetName);
+	}
+
+	public void testFile127() throws CoreException, IOException {
+		String charsetName = "windows-949";
+		doGenTest(charsetName);
+	}
+
+	public void testFile128() throws CoreException, IOException {
+		String charsetName = "windows-950";
+		doGenTest(charsetName);
+	}
+/* 
+removed for PPC machine with IBM VM 
+https://bugs.eclipse.org/bugs/show_bug.cgi?id=126503
+*/ 
+//	public void testFile129() throws CoreException, IOException {
+//		String charsetName = "X-UnicodeBig";
+//		doGenTest(charsetName);
+//	}
+
+	public void testFile130() throws CoreException, IOException {
+		String charsetName = "X-UnicodeLittle";
+		doGenTest(charsetName);
+	}
+
+
+
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/read/TestContentTypeDetection.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/read/TestContentTypeDetection.java
new file mode 100644
index 0000000..08ef641
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/read/TestContentTypeDetection.java
@@ -0,0 +1,210 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.xml.tests.encoding.read;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.content.IContentDescription;
+import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.wst.xml.tests.encoding.TestsPlugin;
+import org.eclipse.wst.xml.tests.encoding.util.ProjectUnzipUtility;
+
+
+public class TestContentTypeDetection extends TestCase {
+	private static final boolean DEBUG = false;
+	static IProject fTestProject;
+	// needs to be static, since JUnit creates difference instances for each
+	// test
+	private static boolean fTestProjectInitialized;
+	private static int nSetups = 0;
+	private static final String TEST_PROJECT_NAME = "org.eclipse.wst.xml.temp.tests.encoding.resource.newtests";
+
+	private static void createProject(IProject project, IPath locationPath, IProgressMonitor monitor) throws CoreException {
+		if (monitor == null) {
+			monitor = new NullProgressMonitor();
+		}
+		monitor.beginTask("creating test project", 10);
+		// create the project
+		try {
+			if (!project.exists()) {
+				IProjectDescription desc = project.getWorkspace().newProjectDescription(project.getName());
+				if (Platform.getLocation().equals(locationPath)) {
+					locationPath = null;
+				}
+				desc.setLocation(locationPath);
+				project.create(desc, monitor);
+				monitor = null;
+			}
+			if (!project.isOpen()) {
+				project.open(monitor);
+				monitor = null;
+			}
+		}
+		finally {
+			if (monitor != null) {
+				monitor.done();
+			}
+		}
+	}
+
+	private static void getAndCreateProject() throws CoreException {
+		IWorkspace workspace = TestsPlugin.getWorkspace();
+		IWorkspaceRoot root = workspace.getRoot();
+		fTestProject = root.getProject(TEST_PROJECT_NAME);
+		// this form creates project as "linked" back to 'fileRoot'
+		// createProject(testProject, new Path(fileRoot), null);
+		createProject(fTestProject, null, null);
+		fTestProject.refreshLocal(IResource.DEPTH_INFINITE, null);
+		assertTrue(fTestProject.exists());
+	}
+
+	/**
+	 * 
+	 */
+	public TestContentTypeDetection() {
+		super();
+		// System.out.println(currentPlatformCharset);
+	}
+
+	protected void doTest(String expectedContentType, String filePath, Class expectedException) throws CoreException, IOException {
+		IFile file = (IFile) fTestProject.findMember(filePath);
+		assertNotNull("Error in test case: file not found: " + filePath, file);
+
+
+		IContentDescription streamContentDescription = doGetContentTypeBasedOnStream(file);
+		IContentDescription fileContentDescription = doGetContentTypeBasedOnFile(file);
+
+		IContentType fileContentType = fileContentDescription.getContentType();
+		assertNotNull("file content type was null", fileContentType);
+
+		IContentType streamContentType = streamContentDescription.getContentType();
+		assertNotNull("stream content type was null", streamContentType);
+
+		assertEquals("comparing content type based on file and stream: ", fileContentType, streamContentType);
+
+		// if equal, above, as expected, then only need to check one.
+		assertEquals("compareing with expected content type id", expectedContentType, fileContentType.getId());
+
+	}
+
+	protected IContentDescription doGetContentTypeBasedOnStream(IFile file) throws CoreException, IOException {
+		IContentDescription streamContentDescription = null;
+		InputStream inputStream = null;
+		try {
+			inputStream = file.getContents();
+			streamContentDescription = Platform.getContentTypeManager().getDescriptionFor(inputStream, file.getName(), IContentDescription.ALL);
+		}
+		finally {
+			if (inputStream != null) {
+				inputStream.close();
+			}
+		}
+		assertNotNull("content description was null", streamContentDescription);
+		return streamContentDescription;
+	}
+
+	protected IContentDescription doGetContentTypeBasedOnFile(IFile file) throws CoreException {
+		IContentDescription fileContentDescription = file.getContentDescription();
+		assertNotNull("file content description was null", fileContentDescription);
+		return fileContentDescription;
+	}
+
+	protected void doTestForParent(String expectedContentType, String filePath, Class expectedException) throws CoreException, IOException {
+		IFile file = (IFile) fTestProject.findMember(filePath);
+		assertNotNull("Error in test case: file not found: " + filePath, file);
+
+		IContentDescription contentDescription = file.getContentDescription();
+		if (contentDescription == null) {
+			InputStream inputStream = null;
+			try {
+				inputStream = file.getContents();
+				contentDescription = Platform.getContentTypeManager().getDescriptionFor(inputStream, file.getName(), IContentDescription.ALL);
+			}
+			finally {
+				if (inputStream != null) {
+					inputStream.close();
+				}
+			}
+		}
+		assertNotNull("content description was null", contentDescription);
+		IContentType contentType = contentDescription.getContentType();
+		assertNotNull("content type was null", contentType);
+
+		IContentType parentContentType = contentType;
+		boolean found = false;
+		while (parentContentType != null && !found) {
+			found = expectedContentType.equals(parentContentType.getId());
+			parentContentType = parentContentType.getBaseType();
+		}
+		assertTrue("did not find '" + expectedContentType + "' in parent chain of base types", found);
+
+	}
+
+	protected void setUp() throws Exception {
+		super.setUp();
+		nSetups++;
+		if (!fTestProjectInitialized) {
+			getAndCreateProject();
+			// unzip files to the root of workspace directory
+			String destinationProjectString = fTestProject.getLocation().toOSString();
+			String destinationFolder = destinationProjectString + "/";
+			// this zip file is sitting in the "root" of test plugin
+			File zipFile = TestsPlugin.getTestFile("testfiles.zip");
+			ProjectUnzipUtility projUtil = new ProjectUnzipUtility();
+			projUtil.unzipAndImport(zipFile, destinationFolder);
+			projUtil.initJavaProject(TEST_PROJECT_NAME);
+			fTestProject.refreshLocal(IResource.DEPTH_INFINITE, null);
+			fTestProjectInitialized = true;
+		}
+	}
+
+	protected void tearDown() throws Exception {
+		super.tearDown();
+		nSetups--;
+		if (nSetups == 0) {
+			if (!DEBUG) {
+//				 Display display = PlatformUI.getWorkbench().getDisplay();
+//				display.asyncExec(new Runnable() {
+//					public void run() {
+//						ProjectUnzipUtility projUtil = new ProjectUnzipUtility();
+//						IProject proj = fTestProject;
+//						fTestProject = null;
+//						try {
+//							projUtil.deleteProject(proj);
+//						}
+//						catch (Exception e) {
+//							e.printStackTrace();
+//						}
+//					}
+//				});
+			}
+		}
+	}
+
+	protected static IProject getTestProject() {
+		return fTestProject;
+	}
+}
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/read/TestContentTypeDetectionForXML.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/read/TestContentTypeDetectionForXML.java
new file mode 100644
index 0000000..60e2e69
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/read/TestContentTypeDetectionForXML.java
@@ -0,0 +1,187 @@
+/*******************************************************************************
+ * Copyright (c) 2005 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.wst.xml.tests.encoding.read;
+
+import java.io.IOException;
+
+import org.eclipse.core.runtime.CoreException;
+
+public class TestContentTypeDetectionForXML extends TestContentTypeDetection {
+	private static final String expectedCustomXMLContentType = "org.eclipse.wst.xml.core.xmlsource";
+	
+	private static final String expectedXSLContentType = "org.eclipse.wst.xml.core.xslsource";
+	
+	private static final String expectedXMLContentType = "org.eclipse.core.runtime.xml";
+
+	public void testFile103() throws CoreException, IOException {
+		doTest(expectedXMLContentType, "testfiles/xml/EmptyFile.xml", null);
+	}
+
+	public void testFile103P() throws CoreException, IOException {
+		doTestForParent(expectedXMLContentType, "testfiles/xml/EmptyFile.xml", null);
+	}
+
+	public void testFile104() throws CoreException, IOException {
+		doTest(expectedXMLContentType, "testfiles/xml/eucjp.xml", null);
+	}
+
+	public void testFile104b() throws CoreException, IOException {
+		doTest(expectedXMLContentType, "testfiles/xml/eucjp.xml", null);
+	}
+
+	public void testFile105() throws CoreException, IOException {
+		doTest(expectedXMLContentType, "testfiles/xml/IllformedNormalNonDefault.xml", null);
+	}
+
+	public void testFile106() throws CoreException, IOException {
+		doTest(expectedXMLContentType, "testfiles/xml/MalformedNoEncoding.xml", null);
+	}
+
+	/**
+	 * This file is illformed in its specified charset
+	 * and characters. 
+	 * @throws CoreException
+	 * @throws IOException
+	 */
+	public void testFile107() throws CoreException, IOException {
+		doTest(expectedXSLContentType, "testfiles/xml/MalformedNoEncoding.xsl", null);
+	}
+
+	public void testFile107P() throws CoreException, IOException {
+		doTestForParent(expectedXMLContentType, "testfiles/xml/MalformedNoEncoding.xsl", null);
+	}
+
+	public void testFile108() throws CoreException, IOException {
+		doTest(expectedXMLContentType, "testfiles/xml/NoEncoding.xml", null);
+	}
+
+	public void testFile109() throws CoreException, IOException {
+		doTest(expectedXMLContentType, "testfiles/xml/NormalNonDefault.xml", null);
+	}
+
+
+	public void testFile110() throws CoreException, IOException {
+		doTest(expectedXMLContentType, "testfiles/xml/shiftjis.xml", null);
+	}
+
+	public void testFile111() throws CoreException, IOException {
+		doTest(expectedXMLContentType, "testfiles/xml/testExtraJunk.xml", null);
+	}
+
+	public void testFile112() throws CoreException, IOException {
+		doTest(expectedXMLContentType, "testfiles/xml/testExtraValidStuff.xml", null);
+	}
+
+	public void testFile113() throws CoreException, IOException {
+		doTest(expectedXMLContentType, "testfiles/xml/testIllFormed.xml", null);
+	}
+
+	public void testFile114() throws CoreException, IOException {
+		doTest(expectedXMLContentType, "testfiles/xml/testIllFormed2.xml", null);
+	}
+
+	public void testFile115() throws CoreException, IOException {
+		doTest(expectedXMLContentType, "testfiles/xml/testIllFormed3.xml", java.nio.charset.IllegalCharsetNameException.class);
+	}
+
+	public void testFile116() throws CoreException, IOException {
+		doTest(expectedXMLContentType, "testfiles/xml/testIllFormed4.xml", null);
+	}
+
+	public void testFile117() throws CoreException, IOException {
+		doTest(expectedXMLContentType, "testfiles/xml/testMultiLine.xml", null);
+	}
+
+	public void testFile118() throws CoreException, IOException {
+		doTest(expectedXMLContentType, "testfiles/xml/testNoEncodingValue.xml", null);
+	}
+
+	public void testFile119() throws CoreException, IOException {
+		doTest(expectedXMLContentType, "testfiles/xml/testNormalCase.xml", null);
+	}
+
+	public void testFile120() throws CoreException, IOException {
+		doTest(expectedXMLContentType, "testfiles/xml/testNoXMLDecl.xml", null);
+	}
+
+	public void testFile120WS() throws CoreException, IOException {
+		// whitespace (CRLF) before xml declaration
+		doTest(expectedCustomXMLContentType, "testfiles/xml/testWSBeforeXMLDecl.xml", null);
+	}
+
+	public void testFile120WS2() throws CoreException, IOException {
+		// whitespace (space only) before xml declaration
+		doTest(expectedCustomXMLContentType, "testfiles/xml/testWSBeforeXMLDecl2.xml", null);
+	}
+
+	public void testFile120WS3() throws CoreException, IOException {
+		// whitespace (space, tabs, and CR only) before xml declaration
+		doTest(expectedCustomXMLContentType, "testfiles/xml/testWSBeforeXMLDecl3.xml", null);
+	}
+
+	public void testFile120P() throws CoreException, IOException {
+		doTestForParent(expectedXMLContentType, "testfiles/xml/testNoXMLDecl.xml", null);
+	}
+
+	public void testFile121() throws CoreException, IOException {
+		// tag (not just white space) before xml declaration.
+		doTest(expectedXMLContentType, "testfiles/xml/testNoXMLDeclAtFirst.xml", null);
+	}
+
+	public void testFile121P() throws CoreException, IOException {
+		doTestForParent(expectedXMLContentType, "testfiles/xml/testNoXMLDeclAtFirst.xml", null);
+	}
+
+	public void testFile122() throws CoreException, IOException {
+		doTest(expectedXMLContentType, "testfiles/xml/testNoXMLDeclInLargeFile.xml", null);
+	}
+
+	public void testFile122P() throws CoreException, IOException {
+		doTestForParent(expectedXMLContentType, "testfiles/xml/testNoXMLDeclInLargeFile.xml", null);
+	}
+
+	public void testFile123() throws CoreException, IOException {
+		doTest(expectedXMLContentType, "testfiles/xml/testUTF16.xml", null);
+	}
+
+	public void testFile124() throws CoreException, IOException {
+		// large, utf16, but no xmlDecl
+		doTest(expectedXMLContentType, "testfiles/xml/UTF16LEAtStartOfLargeFile.xml", null);
+	}
+
+	public void testFile124P() throws CoreException, IOException {
+		doTestForParent(expectedXMLContentType, "testfiles/xml/UTF16LEAtStartOfLargeFile.xml", null);
+	}
+
+	public void testFile125() throws CoreException, IOException {
+		// illformed, is in utf16, but not in header, not in encoding= spec.
+		doTest(expectedXMLContentType, "testfiles/xml/utf16UnicodeStreamWithNoEncodingInHeader2.xml", null);
+	}
+
+	public void testFile125P() throws CoreException, IOException {
+		doTestForParent(expectedXMLContentType, "testfiles/xml/utf16UnicodeStreamWithNoEncodingInHeader2.xml", null);
+	}
+
+	public void testFile126() throws CoreException, IOException {
+		doTest(expectedXMLContentType, "testfiles/xml/utf16UnicodeStreamWithNoEncodingInHeaderBE.xml", null);
+	}
+
+	public void testFile127() throws CoreException, IOException {
+		doTest(expectedXMLContentType, "testfiles/xml/utf16WithJapaneseChars.xml", null);
+	}
+
+	public void testFile128() throws CoreException, IOException {
+		doTest(expectedXMLContentType, "testfiles/xml/UTF8With3ByteBOM.xml", null);
+	}
+
+}
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/read/TestContentTypes.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/read/TestContentTypes.java
new file mode 100644
index 0000000..b5a6167
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/read/TestContentTypes.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.xml.tests.encoding.read;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.core.runtime.content.IContentTypeManager;
+
+
+public class TestContentTypes extends TestCase {
+	private static final boolean DEBUG = false;
+
+	public void testCreation() {
+		IContentTypeManager registry = Platform.getContentTypeManager();
+		assertTrue("content type identifer registry must exist", registry != null);
+		IContentType[] allTypes = registry.getAllContentTypes();
+		for (int i = 0; i < allTypes.length; i++) {
+			IContentType contentType = allTypes[i];
+			IContentType parentType = contentType.getBaseType();
+			if (DEBUG) {
+				System.out.print(contentType);
+
+				if (parentType != null) {
+					System.out.println(" (extends " + parentType + ")");
+				}
+				else {
+					System.out.println();
+				}
+				System.out.println("   " + contentType.getName());
+			}
+			String[] filespecs = contentType.getFileSpecs(IContentType.FILE_EXTENSION_SPEC | IContentType.FILE_NAME_SPEC);
+			if (DEBUG) {
+				for (int j = 0; j < filespecs.length; j++) {
+					String filespec = filespecs[j];
+					System.out.println("        " + filespec);
+				}
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/util/ProjectUnzipUtility.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/util/ProjectUnzipUtility.java
new file mode 100644
index 0000000..8dad582
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/util/ProjectUnzipUtility.java
@@ -0,0 +1,337 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.xml.tests.encoding.util;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.dialogs.IOverwriteQuery;
+import org.eclipse.ui.wizards.datatransfer.FileSystemStructureProvider;
+import org.eclipse.ui.wizards.datatransfer.IImportStructureProvider;
+import org.eclipse.ui.wizards.datatransfer.ImportOperation;
+
+/**
+ * Imports zipped files into the test workspace. Deletes all projects in
+ * workspace.
+ * 
+ * @author pavery
+ */
+public class ProjectUnzipUtility {
+	class MyOverwriteQuery implements IOverwriteQuery {
+		public String queryOverwrite(String pathString) {
+			return ALL;
+		}
+	}
+
+	public final static String PROJECT_ZIPS_FOLDER = "ProjectTestFiles";
+	private List fCreatedProjects = null;
+
+	public ProjectUnzipUtility() {
+		// for deletion later
+		fCreatedProjects = new ArrayList();
+	}
+
+	/**
+	 * @param fileToImport
+	 *            the file you wish to import
+	 * @param folderPath
+	 *            the container path within the workspace
+	 */
+	public void importFile(File fileToImport, String folderPath) {
+		WorkspaceProgressMonitor importProgress = new WorkspaceProgressMonitor();
+		try {
+			if (fileToImport.exists()) {
+				IPath containerPath = new Path(folderPath);
+				//fCreatedProjects.add(folderPath);
+				IImportStructureProvider provider = FileSystemStructureProvider.INSTANCE;
+				IOverwriteQuery overwriteImplementor = new MyOverwriteQuery();
+				File[] filesToImport = {fileToImport};
+				ImportOperation importOp = new ImportOperation(containerPath, null, provider, overwriteImplementor, Arrays.asList(filesToImport));
+				importOp.setCreateContainerStructure(false);
+				importOp.setOverwriteResources(true);
+				importOp.run(importProgress);
+			}
+			else {
+				System.out.println("handle source doesn't exist");
+			}
+		}
+		catch (Exception ex) {
+			ex.printStackTrace();
+		}
+		finally {
+			importProgress.done();
+		}
+	}
+
+	/**
+	 * the following is logic from
+	 * http://www.devshed.com/c/a/Java/Zip-Meets-Java/2/
+	 */
+	// specify buffer size for extraction
+	static final int BUFFER = 2048;
+
+	public void unzipAndImport(File inFile, String destinationDirectory) {
+		try {
+			// Specify file to decompress
+			String inFileName = inFile.getAbsolutePath(); //"c:/example.zip";
+			// Specify destination where file will be unzipped
+			//String destinationDirectory =
+			// "d:/eclipsedev/M5_SSE_TESTS_WORKSPACE/"; //"c:/temp/";
+			File sourceZipFile = new File(inFileName);
+			File unzipDestinationDirectory = new File(destinationDirectory);
+			// Open Zip file for reading
+			ZipFile zipFile = new ZipFile(sourceZipFile, ZipFile.OPEN_READ);
+			// Create an enumeration of the entries in the zip file
+			Enumeration zipFileEntries = zipFile.entries();
+			String projectFolderName = null;
+			IProject currentProject = null;
+			// Process each entry
+			while (zipFileEntries.hasMoreElements()) {
+				// grab a zip file entry
+				ZipEntry entry = (ZipEntry) zipFileEntries.nextElement();
+				String currentEntry = entry.getName();
+				//System.out.println("Extracting: " + entry);
+				File destFile = new File(unzipDestinationDirectory, currentEntry);
+				// grab file's parent directory structure
+				File destinationParent = destFile.getParentFile();
+				// create the parent directory structure if needed
+				destinationParent.mkdirs();
+				// extract file if not a directory
+				if (!entry.isDirectory()) {
+					BufferedInputStream is = new BufferedInputStream(zipFile.getInputStream(entry));
+					// establish buffer for writing file
+					byte data[] = new byte[BUFFER];
+					// write the current file to disk
+					FileOutputStream fileOutputStream = new FileOutputStream(destFile);
+					ByteArrayOutputStream dest = new ByteArrayOutputStream(BUFFER);
+					// read and write until last byte is encountered
+					boolean eof = false;
+					int nBytes = 0;
+					while (!eof) {
+						nBytes = is.read(data, 0, BUFFER);
+						if (nBytes != -1) {
+							dest.write(data, 0, nBytes);
+						}
+						else {
+							eof = true;
+						}
+					}
+					dest.flush();
+					dest.close();
+					fileOutputStream.write(dest.toByteArray());
+					fileOutputStream.close();
+					is.close();
+					if (projectFolderName != null)
+						importFile(destFile, projectFolderName);
+				}
+				else {
+					// need handle to the main project folder to create
+					// containerPath
+					// unlike version in sse.tests, we don't create project
+					// for
+					// every directory
+					//					if(projectFolderName == null) {
+					//						projectFolderName = destFile.getName();
+					//						fCreatedProjects.add(projectFolderName);
+					//						
+					//						currentProject =
+					// ResourcesPlugin.getWorkspace().getRoot().getProject(projectFolderName);
+					//					}
+				}
+			}
+			zipFile.close();
+			// fixes workspace metadata for the project
+			// for clean startup next run
+			if (currentProject != null) {
+				try {
+					Path projectLocation = new Path(Platform.getLocation().toOSString());
+					createProject(currentProject, projectLocation, new WorkspaceProgressMonitor());
+				}
+				catch (CoreException cex) {
+					cex.printStackTrace();
+				}
+			}
+		}
+		catch (IOException ioe) {
+			ioe.printStackTrace();
+		}
+	}
+
+	/**
+	 *  
+	 */
+	public void refreshWorkspace() throws CoreException {
+		IWorkspaceRoot wsRoot = ResourcesPlugin.getWorkspace().getRoot();
+		IProject[] projects = wsRoot.getProjects();
+		for (int i = 0; i < projects.length; i++) {
+			projects[i].refreshLocal(IResource.DEPTH_INFINITE, null);
+		}
+		wsRoot.refreshLocal(IResource.DEPTH_INFINITE, null);
+	}
+
+	/**
+	 * Delete projects created (unzipped and imported) by this utility
+	 * 
+	 * @throws Exception
+	 */
+	public void deleteProjects() throws Exception {
+		final IProject[] projects = getCreatedProjects();
+		WorkspaceModifyOperation deleteOp = new WorkspaceModifyOperation() {
+			protected void execute(IProgressMonitor monitor) throws CoreException {
+				for (int i = 0; i < projects.length; i++) {
+					projects[i].clearHistory(null);
+					projects[i].close(null);
+					projects[i].delete(true, true, null);
+				}
+				refreshWorkspace();
+			}
+		};
+		WorkspaceProgressMonitor progress = new WorkspaceProgressMonitor();
+		deleteOp.run(progress);
+		// saves the new workspace metadata
+		ResourcesPlugin.getWorkspace().save(true, null);
+	}
+
+	public void deleteProject(String projectName) throws Exception {
+		final String name = projectName;
+		IWorkspaceRoot wsRoot = ResourcesPlugin.getWorkspace().getRoot();
+		final IProject proj = wsRoot.getProject(name);
+		WorkspaceModifyOperation deleteOp = new WorkspaceModifyOperation(proj) {
+			protected void execute(IProgressMonitor monitor) throws CoreException {
+				//				IWorkspaceRoot wsRoot =
+				// ResourcesPlugin.getWorkspace().getRoot();
+				//				IProject proj = wsRoot.getProject(name);
+				if (proj != null && proj.exists()) {
+					proj.clearHistory(null);
+					//proj.close(null);
+					proj.refreshLocal(IResource.DEPTH_INFINITE, null);
+					try {
+						proj.delete(true, true, null);
+					}
+					catch (Exception e) {
+						// just try again (not sure why they are not being
+						// deleted)
+						proj.refreshLocal(IResource.DEPTH_INFINITE, null);
+						proj.delete(true, true, null);
+					}
+					//proj = null;
+				}
+				refreshWorkspace();
+			}
+		};
+		WorkspaceProgressMonitor progress = new WorkspaceProgressMonitor();
+		deleteOp.run(progress);
+		// saves the new workspace metadata
+		ResourcesPlugin.getWorkspace().save(true, null);
+	}
+
+	/**
+	 * @return IProjects that were unzipped and imported into the workspace by
+	 *         this utility
+	 */
+	public IProject[] getCreatedProjects() {
+		IWorkspaceRoot wsRoot = ResourcesPlugin.getWorkspace().getRoot();
+		String[] projectNames = (String[]) fCreatedProjects.toArray(new String[fCreatedProjects.size()]);
+		IProject[] projects = new IProject[projectNames.length];
+		for (int i = 0; i < projectNames.length; i++) {
+			projects[i] = wsRoot.getProject(projectNames[i]);
+		}
+		return projects;
+	}
+
+	public void initJavaProject(String projName) throws CoreException {
+		// resynch
+		refreshWorkspace();
+		//change prereqs to get this functionality back in
+		IProject proj = ResourcesPlugin.getWorkspace().getRoot().getProject(projName);
+		// need to add java nature, or else project won't "exist()" in the
+		// java element sense
+		String[] natureIds = {"org.eclipse.jdt.core.javanature"};
+		if (!proj.isOpen()) {
+			proj.open(null);
+		}
+		IProjectDescription desc = proj.getDescription();
+		desc.setNatureIds(natureIds);
+		proj.setDescription(desc, null);
+	}
+
+	private void createProject(IProject project, IPath locationPath, IProgressMonitor monitor) throws CoreException {
+		if (monitor == null) {
+			monitor = new WorkspaceProgressMonitor();
+		}
+		monitor.beginTask("creating test project", 10);
+		// create the project
+		try {
+			if (!project.exists()) {
+				IProjectDescription desc = project.getWorkspace().newProjectDescription(project.getName());
+				if (Platform.getLocation().equals(locationPath)) {
+					locationPath = null;
+				}
+				desc.setLocation(locationPath);
+				project.create(desc, monitor);
+				monitor = null;
+			}
+			if (!project.isOpen()) {
+				project.open(monitor);
+				monitor = null;
+			}
+		}
+		finally {
+			if (monitor != null) {
+				monitor.done();
+			}
+		}
+	}
+
+	public void deleteProject(IProject fProject) throws InvocationTargetException, InterruptedException {
+		final IProject proj = fProject;
+		WorkspaceModifyOperation deleteOp = new WorkspaceModifyOperation(proj) {
+			protected void execute(IProgressMonitor monitor) throws CoreException {
+				//				IWorkspaceRoot wsRoot =
+				// ResourcesPlugin.getWorkspace().getRoot();
+				//				IProject proj = wsRoot.getProject(name);
+				if (proj != null && proj.exists()) {
+					proj.clearHistory(null);
+					//proj.close(null);
+					proj.refreshLocal(IResource.DEPTH_INFINITE, null);
+					proj.delete(true, true, null);
+					//proj = null;
+				}
+				refreshWorkspace();
+			}
+		};
+		//WorkspaceProgressMonitor progress = new WorkspaceProgressMonitor();
+		deleteOp.run(null);
+		// saves the new workspace metadata
+		//ResourcesPlugin.getWorkspace().save(true, null);
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/util/WorkspaceProgressMonitor.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/util/WorkspaceProgressMonitor.java
new file mode 100644
index 0000000..7d7f7d3
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/util/WorkspaceProgressMonitor.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.xml.tests.encoding.util;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+
+class WorkspaceProgressMonitor implements IProgressMonitor {
+	private boolean finished = false;
+
+	public void beginTask(String name, int totalWork) {
+		// noop
+	}
+
+	public void done() {
+		finished = true;
+	}
+
+	public boolean isFinished() {
+		return finished;
+	}
+
+	public void internalWorked(double work) {
+		// noop
+	}
+
+	public boolean isCanceled() {
+		return finished;
+	}
+
+	public void setCanceled(boolean value) {
+		if (value == true)
+			finished = true;
+	}
+
+	public void setTaskName(String name) {
+		// noop
+	}
+
+	public void subTask(String name) {
+		// noop
+	}
+
+	public void worked(int work) {
+		// noop
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/write/TestCodedWrite.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/write/TestCodedWrite.java
new file mode 100644
index 0000000..1df64c4
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/write/TestCodedWrite.java
@@ -0,0 +1,127 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.xml.tests.encoding.write;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.wst.sse.core.internal.encoding.CodedStreamCreator;
+import org.eclipse.wst.sse.core.internal.encoding.EncodingRule;
+
+public class TestCodedWrite extends TestCase {
+	/** A table of hex digits */
+	private static final char[] hexDigit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
+	private static StringBuffer sBuff = new StringBuffer(2);
+
+	private static String byteToHex(byte bytechar) {
+		sBuff.setLength(0);
+		int low = bytechar & 0xF;
+		int hi = (bytechar >> 4) & 0xF;
+		sBuff.append(toHex(hi));
+		sBuff.append(toHex(low));
+		return sBuff.toString();
+	}
+
+	/**
+	 * Convert a nibble to a hex character
+	 * 
+	 * @param nibble
+	 *            the nibble to convert.
+	 */
+	private static char toHex(int nibble) {
+		return hexDigit[(nibble & 0xF)];
+	}
+
+	private boolean DEBUG = false;
+
+	/**
+	 *  
+	 */
+	public TestCodedWrite() {
+		super();
+	}
+
+	/**
+	 * @param name
+	 */
+	public TestCodedWrite(String name) {
+		super(name);
+	}
+
+	public void testSimple() throws UnsupportedEncodingException, CoreException, IOException {
+		String jsp = "<%@ page contentType=\"text/html; charset=ISO-8859-3\"%>";
+		CodedStreamCreator codedStreamCreator = new CodedStreamCreator();
+		codedStreamCreator.set("dummy.jsp", jsp);
+		ByteArrayOutputStream outputStream = codedStreamCreator.getCodedByteArrayOutputStream(EncodingRule.CONTENT_BASED);
+		if (DEBUG) {
+			debugPrint("testSimple", jsp, "ISO-8859-3", outputStream);
+		}
+		assertNotNull(outputStream);
+
+	}
+
+	private void debugPrint(String testname, String originalString, String encoding, ByteArrayOutputStream outputStream) throws UnsupportedEncodingException {
+		System.out.println();
+		System.out.println(testname);
+		byte[] bytes = outputStream.toByteArray();
+		for (int i = 0; i < bytes.length; i++) {
+			System.out.print(byteToHex(bytes[i]));
+		}
+		System.out.println();
+		if (encoding == null) {
+			System.out.println(new String(bytes));
+
+		}
+		else {
+			System.out.println(new String(bytes, encoding));
+		}
+	}
+
+	public void testSimpleUTF16BE() throws UnsupportedEncodingException, CoreException, IOException {
+		String jsp = "<%@ page contentType=\"text/html; charset=UTF-16BE\"%>";
+		CodedStreamCreator codedStreamCreator = new CodedStreamCreator();
+		codedStreamCreator.set("dummy.jsp", jsp);
+		ByteArrayOutputStream outputStream = codedStreamCreator.getCodedByteArrayOutputStream(EncodingRule.CONTENT_BASED);
+		if (DEBUG) {
+			debugPrint("testSimpleUTF16BE", jsp, "UTF-16BE", outputStream);
+		}
+		assertNotNull(outputStream);
+
+	}
+
+	public void testSimpler() throws UnsupportedEncodingException, CoreException, IOException {
+		CodedStreamCreator codedStreamCreator = new CodedStreamCreator();
+		String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-16\"?><tag>test text</tag>";
+		codedStreamCreator.set("dummy.xml", xmlString);
+		ByteArrayOutputStream outputStream = codedStreamCreator.getCodedByteArrayOutputStream(EncodingRule.CONTENT_BASED);
+		if (DEBUG) {
+			debugPrint("testSimpler", xmlString, "UTF-16", outputStream);
+		}
+		assertNotNull(outputStream);
+
+	}
+
+	public void testSimplest() throws UnsupportedEncodingException, CoreException, IOException {
+		CodedStreamCreator codedStreamCreator = new CodedStreamCreator();
+		String text = "test text";
+		codedStreamCreator.set("dummy.xml", text);
+		ByteArrayOutputStream outputStream = codedStreamCreator.getCodedByteArrayOutputStream(EncodingRule.CONTENT_BASED);
+		if (DEBUG) {
+			debugPrint("testSimplest", text, null, outputStream);
+		}
+		assertNotNull(outputStream);
+
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/xml/XMLEncodingTests.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/xml/XMLEncodingTests.java
new file mode 100644
index 0000000..dc7de2d
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/xml/XMLEncodingTests.java
@@ -0,0 +1,172 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.xml.tests.encoding.xml;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CodingErrorAction;
+
+import junit.framework.TestCase;
+
+import org.eclipse.wst.sse.core.internal.encoding.EncodingMemento;
+import org.eclipse.wst.sse.core.internal.encoding.IResourceCharsetDetector;
+import org.eclipse.wst.xml.core.internal.contenttype.XMLResourceEncodingDetector;
+import org.eclipse.wst.xml.tests.encoding.TestsPlugin;
+
+
+public class XMLEncodingTests extends TestCase {
+	private int READ_BUFFER_SIZE = 8000;
+	private boolean DEBUG = false;
+	private final String fileRoot = "testfiles/";
+	private final String fileDir = "xml/";
+	private final String fileLocation = fileRoot + fileDir;
+
+	public XMLEncodingTests(String name) {
+		super(name);
+	}
+
+	private void doTestFileStream(String filename, String expectedIANAEncoding, IResourceCharsetDetector detector) throws IOException {
+		File file = TestsPlugin.getTestFile(filename);
+		if (!file.exists())
+			throw new IllegalArgumentException(filename + " was not found");
+		InputStream inputStream = new FileInputStream(file);
+		//InputStream inStream = getClass().getResourceAsStream(filename);
+		InputStream istream = getMarkSupportedStream(inputStream);
+		try {
+			detector.set(istream);
+			EncodingMemento encodingMemento = ((XMLResourceEncodingDetector)detector).getEncodingMemento();
+			String foundIANAEncoding = encodingMemento.getJavaCharsetName();
+			// I changed many "equals" to "equalsIgnoreCase" on 11/4/2002,
+			// since
+			// some issues with SHIFT_JIS vs. Shift_JIS were causing failures.
+			// We do want to be tolerant on input, and accept either, but I
+			// think
+			// that SupportedJavaEncodings needs to be changed to "recommend"
+			// Shift_JIS.
+			boolean expectedIANAResult = false;
+			expectedIANAResult = expectedIANAEncoding.equalsIgnoreCase(foundIANAEncoding);
+
+			assertTrue("encoding test file " + filename + " expected: " + expectedIANAEncoding + " found: " + foundIANAEncoding, expectedIANAResult);
+			// a very simple read test ... will cause JUnit error (not fail) if throws exception.
+			ensureCanRead(filename, foundIANAEncoding, istream);
+		}
+		finally {
+			if (istream != null) {
+				istream.close();
+			}
+			if (inputStream != null) {
+				inputStream.close();
+			}
+		}
+	}
+
+	public void testXMLEmptyFile() throws IOException {
+		String filename = fileLocation + "EmptyFile.xml";
+		doTestFileStream(filename, "UTF-8", new XMLResourceEncodingDetector());
+	}
+
+	public void testXMLIllformedNormalNonDefault() throws IOException {
+		String filename = fileLocation + "IllformedNormalNonDefault.xml";
+		String ianaInFile = "ISO-8859-1";
+		doTestFileStream(filename, ianaInFile, new XMLResourceEncodingDetector());
+	}
+
+	public void testXMLNormalNonDefault() throws IOException {
+		String filename = fileLocation + "NormalNonDefault.xml";
+		String ianaInFile = "ISO-8859-1";
+		doTestFileStream(filename, ianaInFile, new XMLResourceEncodingDetector());
+	}
+
+	public void testXMLNoEncoding() throws IOException {
+		String filename = fileLocation + "NoEncoding.xml";
+		doTestFileStream(filename, "UTF-8", new XMLResourceEncodingDetector());
+	}
+
+	/**
+	 * Caution, when this file prints out in console (when debug set to true, it appears 
+	 * incorrect (due to font problems in console).
+	 */
+	public void testUTF16() throws IOException {
+		String filename = fileLocation + "utf16WithJapaneseChars.xml";
+		doTestFileStream(filename, "UTF-16BE", new XMLResourceEncodingDetector());
+	}
+
+	/**
+	 * This test shows unicode BOM should take priority over settings/defaults
+	 */
+	public void testUtf16UnicodeStreamWithNoEncodingInHeader() throws IOException {
+		String filename = fileLocation + "utf16UnicodeStreamWithNoEncodingInHeader2.xml";
+		doTestFileStream(filename, "UTF-16", new XMLResourceEncodingDetector());
+	}
+
+	/**
+	 * This test shows unicode BOM should take priority over settings/defaults
+	 * Note: UTF-16 == UTF-16BE
+	 */
+	public void testUtf16UnicodeStreamWithNoEncodingInHeaderBE() throws IOException {
+		String filename = fileLocation + "utf16UnicodeStreamWithNoEncodingInHeaderBE.xml";
+		doTestFileStream(filename, "UTF-16BE", new XMLResourceEncodingDetector());
+	}
+
+	public void testUTF83ByteBOM() throws IOException {
+		String filename = fileLocation + "UTF8With3ByteBOM.xml";
+		doTestFileStream(filename, "UTF-8", new XMLResourceEncodingDetector());
+	}
+
+	/**
+	 * Ensures that an InputStream has mark/reset support.
+	 */
+	private static InputStream getMarkSupportedStream(InputStream original) {
+		if (original == null)
+			return null;
+		if (original.markSupported())
+			return original;
+		return new BufferedInputStream(original);
+	}
+
+	private StringBuffer readInputStream(Reader reader) throws IOException {
+
+		StringBuffer buffer = new StringBuffer();
+		int numRead = 0;
+		char tBuff[] = new char[READ_BUFFER_SIZE];
+		while ((numRead = reader.read(tBuff, 0, tBuff.length)) != -1) {
+			buffer.append(tBuff, 0, numRead);
+		}
+		return buffer;
+	}
+
+	/**
+	 * This method just reads to stream, to be sure it can be read per
+	 * encoding, without exception.
+	 */
+	private void ensureCanRead(String filename, String encoding, InputStream inStream) throws IOException {
+		Charset charset = Charset.forName(encoding);
+		CharsetDecoder charsetDecoder = charset.newDecoder();
+		charsetDecoder.onMalformedInput(CodingErrorAction.REPORT);
+		charsetDecoder.onUnmappableCharacter(CodingErrorAction.REPORT);
+
+		InputStreamReader reader = new InputStreamReader(inStream, charsetDecoder);
+		StringBuffer stringBuffer = readInputStream(reader);
+		if (DEBUG) {
+			System.out.println();
+			System.out.println(filename);
+			System.out.println(stringBuffer.toString());
+		}
+	}
+
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/xml/XMLHeadTokenizerTester.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/xml/XMLHeadTokenizerTester.java
new file mode 100644
index 0000000..023d024
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/xml/XMLHeadTokenizerTester.java
@@ -0,0 +1,360 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.xml.tests.encoding.xml;
+
+import java.io.IOException;
+import java.io.Reader;
+
+import junit.framework.TestCase;
+
+import org.eclipse.wst.xml.core.internal.contenttype.EncodingParserConstants;
+import org.eclipse.wst.xml.core.internal.contenttype.HeadParserToken;
+import org.eclipse.wst.xml.core.internal.contenttype.XMLHeadTokenizer;
+import org.eclipse.wst.xml.core.internal.contenttype.XMLHeadTokenizerConstants;
+import org.eclipse.wst.xml.tests.encoding.TestsPlugin;
+
+
+public class XMLHeadTokenizerTester extends TestCase {
+
+	private boolean DEBUG = false;
+	private final String fileDir = "xml/";
+	private final String fileHome = "testfiles/";
+	private final String fileLocation = fileHome + fileDir;
+	private String fEncoding = null;
+	private HeadParserToken fFinalToken;
+
+	private void doTestFile(String filename, String expectedName) {
+		doTestFile(filename, expectedName, null);
+	}
+
+	private void doTestFile(String filename, String expectedName, String expectedFinalTokenType) {
+
+		XMLHeadTokenizer tokenizer = null;
+		Reader fileReader = null;
+		try {
+			if (DEBUG) {
+				System.out.println();
+				System.out.println("       " + filename);
+				System.out.println();
+			}
+			fileReader = TestsPlugin.getByteReader(filename);
+			tokenizer = new XMLHeadTokenizer(fileReader);
+		}
+		catch (IOException e) {
+			System.out.println("Error opening file \"" + filename + "\"");
+		}
+
+		String resultValue = null;
+		try {
+			parse(tokenizer);
+			resultValue = fEncoding;
+			if (DEBUG) {
+				System.out.println("XML Head Tokenizer Found Encoding: " + resultValue);
+			}
+			fileReader.close();
+		}
+		catch (java.io.IOException e) {
+			System.out.println("An I/O error occured while scanning :");
+			System.out.println(e);
+		}
+
+		if (expectedFinalTokenType != null) {
+			assertTrue("did not end as expected. found:  " + fFinalToken.getType(), expectedFinalTokenType.equals(fFinalToken.getType()));
+		}
+		else {
+			if (expectedName == null) {
+				// TODO: this test branch needs to be improved ... doesn't
+				// fail
+				// as it should
+				// (such as when tokenizer changed to return early when
+				// Unicode
+				// stream found).
+				assertTrue("expected no encoding, but found: " + resultValue, resultValue == null);
+			}
+			else {
+				assertTrue("expected " + expectedName + " but found " + resultValue, expectedName.equals(resultValue));
+			}
+		}
+
+	}
+
+	private void parse(XMLHeadTokenizer tokenizer) throws IOException {
+		HeadParserToken token = null;
+		String tokenType = null;
+		do {
+			token = tokenizer.getNextToken();
+			tokenType = token.getType();
+			// normally "parsing" the tokens should be done by parser
+			// @see, XMLResourceEncodoingDetector
+			// but we'll
+			// do it here for a little
+			// more independent test.
+			if (tokenType == EncodingParserConstants.UTF16BE) {
+				fEncoding = "UTF16BEInStream";
+			}
+			if (tokenType == EncodingParserConstants.UTF16LE) {
+				fEncoding = "UTF16LEInStream";
+			}
+			if (tokenType == EncodingParserConstants.UTF83ByteBOM) {
+				fEncoding = "UTF83ByteBOMInStream";
+			}
+			if (tokenType == XMLHeadTokenizerConstants.XMLDelEncoding) {
+				if (tokenizer.hasMoreTokens()) {
+					token = tokenizer.getNextToken();
+					tokenType = token.getType();
+					if (isLegalString(tokenType)) {
+						fEncoding = token.getText();
+					}
+				}
+			}
+		}
+		while (tokenizer.hasMoreTokens());
+		// for testing
+		fFinalToken = token;
+	}
+
+	private boolean isLegalString(String tokenType) {
+		boolean result = false;
+		if (tokenType != null) {
+			result = tokenType.equals(EncodingParserConstants.StringValue) || tokenType.equals(EncodingParserConstants.UnDelimitedStringValue) || tokenType.equals(EncodingParserConstants.InvalidTerminatedStringValue) || tokenType.equals(EncodingParserConstants.InvalidTermintatedUnDelimitedStringValue);
+		}
+		return result;
+	}
+
+	/**
+	 * Normal XMLDeclaration with default encoding specified (UTF-8)
+	 * 
+	 */
+	public void testBestCase() {
+		String filename = fileLocation + "testNormalCase.xml";
+		doTestFile(filename, "UTF-8");
+
+	}
+
+	/**
+	 * This is a UTF-16 file (Unicode bytes in BOM). So, the tokenizer by
+	 * itself can't read correctly. Returns null in "pure" tokenizer test, but
+	 * encoding detector case should still handle since looks for bytes first.
+	 */
+	public void testUTF16() {
+		String filename = fileLocation + "testUTF16.xml";
+		doTestFile(filename, "UTF16BEInStream");
+	}
+
+	/**
+	 * Just to make sure we don't choke on empty file.
+	 * 
+	 */
+	public void testEmptyFile() {
+		String filename = fileLocation + "EmptyFile.xml";
+		doTestFile(filename, null);
+	}
+
+	/**
+	 * Testing as a result of CMVC defect 217720
+	 */
+	public void testEUCJP() {
+		String filename = fileLocation + "eucjp.xml";
+		doTestFile(filename, "EUC-JP");
+	}
+
+	/**
+	 * Extended XML Declaration that contains 'standalone' attribute
+	 * 
+	 */
+	public void testExtraAttrCase() {
+		String filename = fileLocation + "testExtraValidStuff.xml";
+		doTestFile(filename, "UTF-8");
+
+	}
+
+	/**
+	 * A case with a valid encoding, but extra attributes which are not
+	 * valid/meaningful.
+	 * 
+	 */
+	public void testExtraJunkCase() {
+		String filename = fileLocation + "testExtraJunk.xml";
+		doTestFile(filename, "ISO-8859-1");
+	}
+
+	/**
+	 * Missing 2 quotes, one and end of version value and one at beginning of
+	 * encoding value. In this case, tokenizer handles as undelimite string,
+	 * but if we ever modifiy to also look for 'version', then would not work
+	 * the same.
+	 * 
+	 */
+	public void testIllFormed() {
+		String filename = fileLocation + "testIllFormed.xml";
+		doTestFile(filename, null);
+	}
+
+	/**
+	 * Missing XMLDecl end tag ... we should be able to safely guess.
+	 * 
+	 */
+	public void testIllFormed2() {
+		String filename = fileLocation + "testIllFormed2.xml";
+		doTestFile(filename, "UTF-8");
+	}
+
+	/**
+	 * Missing end quote on UTF-8 attribute, so picks up following attribte
+	 * too.
+	 * 
+	 */
+	public void testIllFormed3() {
+		String filename = fileLocation + "testIllFormed3.xml";
+		doTestFile(filename, "UTF-8 standalone=");
+	}
+
+	/**
+	 * Missing end quote on UTF-8 attribute, but then XMLDeclEnds, so should
+	 * be able to handle
+	 * 
+	 */
+	public void testIllFormed4() {
+		String filename = fileLocation + "testIllFormed4.xml";
+		doTestFile(filename, "UTF-8");
+	}
+
+	/**
+	 * Test of missing end quote on encoding value.
+	 * 
+	 */
+	public void testIllformedNormalNonDefault() {
+		String filename = fileLocation + "IllformedNormalNonDefault.xml";
+		doTestFile(filename, "ISO-8859-1");
+	}
+
+	/**
+	 * Empty string as encoding value; (And, malformed input, for UTF-8 ...
+	 * should not effect results of this level of test).
+	 * 
+	 */
+	public void testMalformedNoEncoding() {
+		String filename = fileLocation + "MalformedNoEncoding.xml";
+		doTestFile(filename, "");
+	}
+
+	/**
+	 * Empty string as encoding value; (And, malformed input, for UTF-8 ...
+	 * should not effect results of this level of test).
+	 * 
+	 */
+	public void testMalformedNoEncodingXSL() {
+		String filename = fileLocation + "MalformedNoEncoding.xsl";
+		doTestFile(filename, "");
+	}
+
+	/**
+	 * XMLDeclaration not all on same line
+	 * 
+	 */
+	public void testMultiLineCase() {
+		String filename = fileLocation + "testMultiLine.xml";
+		doTestFile(filename, "ISO-8859-1");
+
+	}
+
+	/**
+	 * No encoding in XMLDeclaration
+	 * 
+	 */
+	public void testNoEncoding() {
+		String filename = fileLocation + "NoEncoding.xml";
+		doTestFile(filename, null);
+	}
+
+	/**
+	 * ?Is this a dup?
+	 * 
+	 */
+	public void testNoEncodingCase() {
+		String filename = fileLocation + "testNoEncodingValue.xml";
+		doTestFile(filename, null);
+	}
+
+	/**
+	 * Normal XMLDeclaration with ISO-1 specified
+	 * 
+	 */
+	public void testNormalNonDefault() {
+		String filename = fileLocation + "NormalNonDefault.xml";
+		doTestFile(filename, "ISO-8859-1");
+	}
+
+	/**
+	 * No XMLDeclaration at all. (Invalid, but should still be able to parse).
+	 * 
+	 */
+	public void testNoXMLDecl() {
+		String filename = fileLocation + "testNoXMLDecl.xml";
+		doTestFile(filename, null);
+	}
+
+	/**
+	 * Hard to handle safely (may appear in comment, for example).
+	 * 
+	 */
+	public void testNoXMLDeclAtFirst() {
+		String filename = fileLocation + "testNoXMLDeclAtFirst.xml";
+		doTestFile(filename, null);
+	}
+
+	/**
+	 * This test is just to make sure the scanning ends before end of file is
+	 * reached.
+	 * 
+	 */
+	public void testNoXMLDeclInLargeFile() {
+		String filename = fileLocation + "testNoXMLDeclInLargeFile.xml";
+		doTestFile(filename, null, EncodingParserConstants.MAX_CHARS_REACHED);
+	}
+
+	/**
+	 * Testing as a result of CMVC defect 217720
+	 */
+	public void testshiftjis() {
+		String filename = fileLocation + "shiftjis.xml";
+		doTestFile(filename, "Shift_JIS");
+	}
+
+	/**
+	 * Testing as a result of CMVC defect 217720
+	 */
+	public void testUTF16LEWithJapaneseChars() {
+		String filename = fileLocation + "utf16UnicodeStreamWithNoEncodingInHeader2.xml";
+		doTestFile(filename, "UTF16LEInStream");
+	}
+
+	/**
+	 * Testing as a result of CMVC defect 217720
+	 */
+	public void testUTF16BEWithJapaneseChars() {
+		String filename = fileLocation + "utf16UnicodeStreamWithNoEncodingInHeaderBE.xml";
+		doTestFile(filename, "UTF16BEInStream");
+	}
+
+	/**
+	 * A common case.
+	 * 
+	 */
+	 public void testUTF8With3ByteBOM() {
+		String filename = fileLocation + "UTF8With3ByteBOM.xml";
+		doTestFile(filename, "UTF83ByteBOMInStream");
+	}
+	public void UTF16LEAtStartOfLargeFile() {
+		String filename = fileLocation + "UTF16LEAtStartOfLargeFile.xml";
+		doTestFile(filename, "UTF16LEInStream");
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/xml/XMLMalformedInputTests.java b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/xml/XMLMalformedInputTests.java
new file mode 100644
index 0000000..9b9f6bc
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/src/org/eclipse/wst/xml/tests/encoding/xml/XMLMalformedInputTests.java
@@ -0,0 +1,275 @@
+/*******************************************************************************
+ * Copyright (c) 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.wst.xml.tests.encoding.xml;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CodingErrorAction;
+import java.nio.charset.MalformedInputException;
+
+import junit.framework.TestCase;
+
+import org.eclipse.wst.sse.core.internal.encoding.EncodingMemento;
+import org.eclipse.wst.sse.core.internal.encoding.IResourceCharsetDetector;
+import org.eclipse.wst.sse.core.internal.exceptions.MalformedInputExceptionWithDetail;
+import org.eclipse.wst.xml.core.internal.contenttype.XMLResourceEncodingDetector;
+import org.eclipse.wst.xml.tests.encoding.TestsPlugin;
+
+/**
+ * FIXME: this might be a good starting point to create a "file peeker"? But,
+ * its not otherwised used -- delete if not fixed/improved soon
+ * XMLMalformedInputTests
+ */
+
+public class XMLMalformedInputTests extends TestCase {
+	private int READ_BUFFER_SIZE = 8000;
+	private boolean DEBUG = false;
+
+
+	public XMLMalformedInputTests(String name) {
+		super(name);
+	}
+
+	/**
+	 * Tests for a file, filename that should throw a
+	 * MalformedInputExceptionWithDetail at character, expectedPosition. This
+	 * happens when no encoding is specified, so the default is used, but
+	 * there are characters that the default encoding does not recognize
+	 */
+	void doTestMalformedInput(String filename, IResourceCharsetDetector detector, int expectedPosition) throws IOException {
+		Exception foundException = null;
+		int badCharPosition = -1;
+		File file = TestsPlugin.getTestFile(filename);
+		if (!file.exists())
+			throw new IllegalArgumentException(filename + " was not found");
+		InputStream inputStream = new FileInputStream(file);
+		InputStream istream = getMarkSupportedStream(inputStream);
+		detector.set(istream);
+		// IEncodedDocument doc =
+		// detector.createNewStructuredDocument(filename, istream);
+		EncodingMemento encodingMemento = ((XMLResourceEncodingDetector) detector).getEncodingMemento();
+		String foundIANAEncoding = encodingMemento.getJavaCharsetName();
+
+		Charset charset = Charset.forName(foundIANAEncoding);
+		CharsetDecoder charsetDecoder = charset.newDecoder();
+		charsetDecoder.onMalformedInput(CodingErrorAction.REPORT);
+		charsetDecoder.onUnmappableCharacter(CodingErrorAction.REPORT);
+
+		istream.close();
+		inputStream.close();
+
+		// now, try reading as per encoding
+		inputStream = new FileInputStream(file);
+		// skip BOM for this case
+		// System.out.println(inputStream.read());
+		// System.out.println(inputStream.read());
+		// System.out.println(inputStream.read());
+		InputStreamReader reader = new InputStreamReader(inputStream, charsetDecoder);
+
+		try {
+			// just try reading ... should throw exception
+			// exception)
+			readInputStream(reader);
+		}
+		catch (MalformedInputException e) {
+			// as expected, now do detailed checking.
+			inputStream.close();
+			istream.close();
+			inputStream = new FileInputStream(file);
+			charsetDecoder = charset.newDecoder();
+			charsetDecoder.onMalformedInput(CodingErrorAction.REPORT);
+			charsetDecoder.onUnmappableCharacter(CodingErrorAction.REPORT);
+			reader = new InputStreamReader(inputStream, charsetDecoder);
+			istream = getMarkSupportedStream(inputStream);
+			try {
+				handleMalFormedInput_DetailChecking(reader, foundIANAEncoding);
+			}
+			catch (MalformedInputExceptionWithDetail se) {
+				foundException = se;
+				badCharPosition = se.getCharPosition();
+			}
+
+		}
+		finally {
+			if (istream != null) {
+				istream.close();
+			}
+			if (inputStream != null) {
+				inputStream.close();
+			}
+
+		}
+		// handle adjustments here for VM differnces:
+		// for now its either 49 or 49 + 2 BOMs (51)
+		// can be smarting later.
+		assertTrue("MalformedInputException was not thrown as expected for filename: " + filename + " Exception thrown:" + foundException, foundException instanceof MalformedInputExceptionWithDetail);
+		assertTrue("Wrong character position detected in MalformedInputException.  Expected: " + expectedPosition + " Found: " + badCharPosition, (badCharPosition == expectedPosition) || badCharPosition == expectedPosition - 2);
+	}
+
+	// public void testXSLMalformedInput() throws IOException {
+	// String filename = fileLocation + "MalformedNoEncoding.xsl";
+	// doTestMalformedInput(filename, new XMLResourceEncodingDetector(), 211);
+	// }
+
+	/**
+	 * Ensures that an InputStream has mark/reset support.
+	 */
+	private static InputStream getMarkSupportedStream(InputStream original) {
+		if (original == null)
+			return null;
+		if (original.markSupported())
+			return original;
+		return new BufferedInputStream(original);
+	}
+
+	private StringBuffer readInputStream(Reader reader) throws IOException {
+
+		StringBuffer buffer = new StringBuffer();
+		int numRead = 0;
+		char tBuff[] = new char[READ_BUFFER_SIZE];
+		while ((numRead = reader.read(tBuff, 0, tBuff.length)) != -1) {
+			if (DEBUG) {
+				System.out.println(tBuff[0]);
+			}
+			buffer.append(tBuff, 0, numRead);
+		}
+		return buffer;
+	}
+
+	/*
+	 * removed for PPC machine with IBM VM
+	 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=126503
+	 */
+	// public void testXMLMalformedInput() throws IOException {
+	// String filename = fileLocation + "MalformedNoEncoding.xml";
+	// doTestMalformedInput(filename, new XMLResourceEncodingDetector(), 51);
+	// }
+	// since above test was only one im this class, put in this no op to avoid
+	// a failure due to no tests in class!
+	public void testNoOp() {
+		assertTrue(true);
+	}
+
+	private void handleMalFormedInput_DetailChecking(Reader reader, String encodingName) throws IOException, MalformedInputExceptionWithDetail {
+		int charPostion = -1;
+		charPostion = getCharPostionOfFailure(reader);
+		// all of that just to throw more accurate error
+		// note: we do the conversion to ianaName, instead of using the local
+		// variable,
+		// because this is ultimately only for the user error message (that
+		// is,
+		// the error occurred
+		// in context of javaEncodingName no matter what ianaEncodingName is
+		throw new MalformedInputExceptionWithDetail(encodingName, charPostion);
+	}
+
+	private int getCharPostionOfFailure(Reader reader) throws IOException {
+		int charPosition = 1;
+		int charRead = -1;
+		int result = -1;
+		boolean errorFound = false;
+		do {
+			try {
+				if (reader.ready()) {
+					charRead = reader.read();
+				}
+				if (DEBUG) {
+					System.out.println(charPosition + ": " + escape((char) charRead, true));
+				}
+				charPosition++;
+			}
+			catch (MalformedInputException e) {
+				// this is expected, since we're expecting failure,
+				// so no need to do anything.
+				errorFound = true;
+				break;
+			}
+		}
+		while ((charRead != -1 && !errorFound) && reader.ready());
+
+		if (errorFound)
+			result = charPosition;
+		else
+			result = -1;
+		return result;
+	}
+
+	private String escape(char aChar, boolean escapeSpace) {
+
+		StringBuffer outBuffer = new StringBuffer();
+		switch (aChar) {
+			case ' ' :
+				if (escapeSpace)
+					outBuffer.append('\\');
+
+				outBuffer.append(' ');
+				break;
+			case '\\' :
+				outBuffer.append('\\');
+				outBuffer.append('\\');
+				break;
+			case '\t' :
+				outBuffer.append('\\');
+				outBuffer.append('t');
+				break;
+			case '\n' :
+				outBuffer.append('\\');
+				outBuffer.append('n');
+				break;
+			case '\r' :
+				outBuffer.append('\\');
+				outBuffer.append('r');
+				break;
+			case '\f' :
+				outBuffer.append('\\');
+				outBuffer.append('f');
+				break;
+			default :
+				if ((aChar < 0x0020) || (aChar > 0x007e)) {
+					outBuffer.append('\\');
+					outBuffer.append('u');
+					outBuffer.append(toHex((aChar >> 12) & 0xF));
+					outBuffer.append(toHex((aChar >> 8) & 0xF));
+					outBuffer.append(toHex((aChar >> 4) & 0xF));
+					outBuffer.append(toHex(aChar & 0xF));
+				}
+				else {
+					if (specialSaveChars.indexOf(aChar) != -1)
+						outBuffer.append('\\');
+					outBuffer.append(aChar);
+				}
+		}
+
+		return outBuffer.toString();
+	}
+
+	/**
+	 * Convert a nibble to a hex character
+	 * 
+	 * @param nibble
+	 *            the nibble to convert.
+	 */
+	private static char toHex(int nibble) {
+		return hexDigit[(nibble & 0xF)];
+	}
+
+	/** A table of hex digits */
+	private static final char[] hexDigit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
+	private static final String specialSaveChars = "=: \t\r\n\f#!";
+
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/test.xml b/tests/org.eclipse.wst.xml.tests.encoding/test.xml
new file mode 100644
index 0000000..6e5a12b
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/test.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0"?>
+
+<project
+	name="testsuite"
+	default="run"
+	basedir=".">
+
+	<!-- Configurable Properties -->
+
+	<!-- The property ${eclipse-home} should be passed into this script -->
+	<!-- Set a meaningful default value for when it is not. -->
+	<!-- <property name="eclipse-home" value="${basedir}\..\.." /> -->
+
+	<echo message="basedir ${basedir}" />
+	<echo message="eclipse place ${eclipse-home}" />
+
+	<!-- sets the properties plugin-name, and library-file -->
+	<property
+		name="plugin-name"
+		value="org.eclipse.wst.xml.tests.encoding" />
+	<property
+		name="library-file"
+		value="${eclipse-home}/plugins/org.eclipse.test_3.1.0/library.xml" />
+
+	<!-- This target holds all initialization code that needs to be done for -->
+	<!-- all tests that are to be run. Initialization for individual tests -->
+	<!-- should be done within the body of the suite target. -->
+	<target name="init">
+		<delete>
+			<fileset
+				dir="${eclipse-home}"
+				includes="org.eclipse.wst.xml.tests.encoding.*xml" />
+		</delete>
+	</target>
+
+	<!-- This target defines the tests that need to be run. -->
+	<target name="suite">
+		<property
+			name="wst-folder"
+			value="${eclipse-home}/wst_folder" />
+		<delete
+			dir="${wst-folder}"
+			quiet="true" />
+		<ant
+			target="core-test"
+			antfile="${library-file}"
+			dir="${eclipse-home}">
+			<property
+				name="data-dir"
+				value="${wst-folder}" />
+			<property
+				name="plugin-name"
+				value="org.eclipse.wst.xml.tests.encoding" />
+			<property
+				name="classname"
+				value="org.eclipse.wst.xml.tests.encoding.EncodingTestSuite" />
+			<property
+				name="plugin-path"
+				value="${eclipse-home}/plugins/${plugin-name}" />
+		</ant>
+	</target>
+
+	<!-- This target holds code to cleanup the testing environment after -->
+	<!-- after all of the tests have been run. You can use this target to -->
+	<!-- delete temporary files that have been created. -->
+	<target name="cleanup">
+		<!--<delete dir="${workspace}" quiet="true" />-->
+	</target>
+
+	<!-- This target runs the test suite. Any actions that need to happen -->
+	<!-- after all the tests have been run should go here. -->
+	<target
+		name="run"
+		depends="init,suite,cleanup">
+		<ant
+			target="collect"
+			antfile="${library-file}"
+			dir="${eclipse-home}">
+			<property
+				name="includes"
+				value="org.eclipse.wst.xml.tests.encoding.*xml" />
+			<property
+				name="output-file"
+				value="${plugin-name}.xml" />
+		</ant>
+		<!--<emailResults resultsFile="${build-results-home}/${plugin-name}.xml" addresslist="david_williams@us.ibm.com" /> -->
+	</target>
+
+</project>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles.zip b/tests/org.eclipse.wst.xml.tests.encoding/testfiles.zip
new file mode 100644
index 0000000..9f0b1af
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles.zip
Binary files differ
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/DocumentStreamTestCase/kaeru5.htm b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/DocumentStreamTestCase/kaeru5.htm
new file mode 100644
index 0000000..35570fe
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/DocumentStreamTestCase/kaeru5.htm
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<%-- jsf:codeBehind language="java" location="/JavaSource/pagecode/test/Kaeru5.java" --%><%-- /jsf:codeBehind --%>
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
+<%@taglib uri="http://www.ibm.com/jsf/html_extended" prefix="hx"%>
+<HTML>
+<HEAD>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<%@ page 
+language="java"
+contentType="text/html; charset=SHIFT_JIS"
+pageEncoding="SHIFT_JIS"
+%>
+<META http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS">
+<META name="GENERATOR" content="IBM WebSphere Studio">
+<META http-equiv="Content-Style-Type" content="text/css">
+<LINK href="../theme/Master.css" rel="stylesheet" type="text/css">
+<LINK rel="stylesheet" type="text/css" href="../theme/stylesheet.css"
+	title="Style">
+<TITLE>kaeru.jsp</TITLE>
+</HEAD>
+<f:view>
+	<BODY>
+	<hx:scriptCollector id="scriptCollector1">
+		<h:form styleClass="form" id="form1">
+			³”F
+			³”F
+			³”F
+			<h:selectOneMenu id="Combo30" styleClass="Combo30" tabindex="26">
+				<f:selectItem itemValue="tokyo" itemLabel="tokyo" />
+				<f:selectItem itemValue="ØŒ”ŽæˆøŠ" itemLabel="ØŒ”ŽæˆøŠ" />
+			</h:selectOneMenu>
+			<h:selectOneMenu id="Combo31" styleClass="Combo31" tabindex="27">
+				<f:selectItem itemValue="tokyo" itemLabel="tokyo" />
+				<f:selectItem itemValue="kyoto" itemLabel="kyoto" />
+			</h:selectOneMenu>
+		</h:form>
+	</hx:scriptCollector>
+	</BODY>
+</f:view>
+</HTML>
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/DocumentStreamTestCase/kaeru5.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/DocumentStreamTestCase/kaeru5.jsp
new file mode 100644
index 0000000..083704b
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/DocumentStreamTestCase/kaeru5.jsp
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

+<%-- jsf:codeBehind language="java" location="/JavaSource/pagecode/test/Kaeru5.java" --%><%-- /jsf:codeBehind --%>

+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>

+<%@taglib uri="http://www.ibm.com/jsf/html_extended" prefix="hx"%>

+<HTML>

+<HEAD>

+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

+<%@ page 

+language="java"

+contentType="text/html; charset=SHIFT_JIS"

+pageEncoding="SHIFT_JIS"

+%>

+<META http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS">

+<META name="GENERATOR" content="IBM WebSphere Studio">

+<META http-equiv="Content-Style-Type" content="text/css">

+<LINK href="../theme/Master.css" rel="stylesheet" type="text/css">

+<LINK rel="stylesheet" type="text/css" href="../theme/stylesheet.css"

+	title="Style">

+<TITLE>kaeru.jsp</TITLE>

+</HEAD>

+<f:view>

+	<BODY>

+	<hx:scriptCollector id="scriptCollector1">

+		<h:form styleClass="form" id="form1">

+			³”F

+			³”F

+			³”F

+			<h:selectOneMenu id="Combo30" styleClass="Combo30" tabindex="26">

+				<f:selectItem itemValue="tokyo" itemLabel="tokyo" />

+				<f:selectItem itemValue="ØŒ”ŽæˆøŠ" itemLabel="ØŒ”ŽæˆøŠ" />

+			</h:selectOneMenu>

+			<h:selectOneMenu id="Combo31" styleClass="Combo31" tabindex="27">

+				<f:selectItem itemValue="tokyo" itemLabel="tokyo" />

+				<f:selectItem itemValue="kyoto" itemLabel="kyoto" />

+			</h:selectOneMenu>

+		</h:form>

+	</hx:scriptCollector>

+	</BODY>

+</f:view>

+</HTML>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/emptyFile.css b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/emptyFile.css
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/emptyFile.css
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/encoding_test_eucjp.css b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/encoding_test_eucjp.css
new file mode 100644
index 0000000..1e256e7
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/encoding_test_eucjp.css
@@ -0,0 +1,5 @@
+@charset "EUC-JP";

+

+BODY {

+	font-family : "£Í£Ó £Ð¥´¥·¥Ã¥¯";

+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/encoding_test_jis.css b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/encoding_test_jis.css
new file mode 100644
index 0000000..384768b
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/encoding_test_jis.css
@@ -0,0 +1,5 @@
+@charset "ISO-2022-JP";

+

+BODY {

+	font-family : "$B#M#S(B $B#P%4%7%C%/(B";

+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/encoding_test_sjis.css b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/encoding_test_sjis.css
new file mode 100644
index 0000000..e529cda
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/encoding_test_sjis.css
@@ -0,0 +1,5 @@
+@charset "SHIFT_JIS";

+

+BODY {

+	font-family : "‚l‚r ‚oƒSƒVƒbƒN";

+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/noEncoding.css b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/noEncoding.css
new file mode 100644
index 0000000..f3f06bc
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/noEncoding.css
@@ -0,0 +1,46 @@
+BODY {

+	font-family: "Times New Roman", "MS Sans Serif";

+	text-decoration: none;

+	background-color: white;

+}

+

+TD {

+	font-family: "Times New Roman";

+	font-size: 12pt;

+	color: black;

+	font-style: normal;

+	text-align: left;

+}

+

+TH {

+	font-family: "Times New Roman";

+	font-size: 12pt;

+	color: black;

+	font-style: normal;

+	font-weight: bolder;

+	text-align: left;

+}

+

+H1 {

+	font-family: "Times New Roman";

+	font-size: 14pt;

+	color: black;

+	font-style: normal;

+	font-weight: bolder;

+	text-align: center

+}

+

+H2 {

+	font-family: "Times New Roman";

+	font-size: 12pt;

+	color: black;

+	font-style: normal;

+	font-weight: bolder

+}

+

+H3 {

+	font-family: "Times New Roman";

+	font-size: 12pt;

+	color: black;

+	font-style: italic  

+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/nonStandard.css b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/nonStandard.css
new file mode 100644
index 0000000..dc997eb
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/nonStandard.css
@@ -0,0 +1,5 @@
+@charset "ISO-8859-6";

+

+

+

+

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/nonStandardIllFormed.css b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/nonStandardIllFormed.css
new file mode 100644
index 0000000..f1a4e44
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/nonStandardIllFormed.css
@@ -0,0 +1,5 @@
+@charset "ISO-8859-6;

+

+

+

+

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/nonStandardIllFormed2.css b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/nonStandardIllFormed2.css
new file mode 100644
index 0000000..53c8a1f
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/css/nonStandardIllFormed2.css
@@ -0,0 +1,7 @@
+

+

+    @charset "ISO-8859-6";

+

+

+

+

diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-Big5.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-Big5.xml"
new file mode 100644
index 0000000..3dfe5a5
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-Big5.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="Big5"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-CESU-8.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-CESU-8.xml"
new file mode 100644
index 0000000..fb7a544
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-CESU-8.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="CESU-8"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-COMPOUND_TEXT.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-COMPOUND_TEXT.xml"
new file mode 100644
index 0000000..30fb712
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-COMPOUND_TEXT.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="COMPOUND_TEXT"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-EUC-CN.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-EUC-CN.xml"
new file mode 100644
index 0000000..c50b16b
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-EUC-CN.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="EUC-CN"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-EUC-JP.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-EUC-JP.xml"
new file mode 100644
index 0000000..1539774
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-EUC-JP.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="EUC-JP"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-EUC-KR.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-EUC-KR.xml"
new file mode 100644
index 0000000..5ae929b
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-EUC-KR.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="EUC-KR"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-GB18030.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-GB18030.xml"
new file mode 100644
index 0000000..3fa13c0
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-GB18030.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="GB18030"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-GB2312.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-GB2312.xml"
new file mode 100644
index 0000000..98492d7
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-GB2312.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="GB2312"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-GBK.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-GBK.xml"
new file mode 100644
index 0000000..92bbd47
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-GBK.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="GBK"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1006.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1006.xml"
new file mode 100644
index 0000000..777ba75
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1006.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-1006"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1041.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1041.xml"
new file mode 100644
index 0000000..c4958e9
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1041.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-1041"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1043.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1043.xml"
new file mode 100644
index 0000000..573d3aa
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1043.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-1043"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1046.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1046.xml"
new file mode 100644
index 0000000..6c40c19
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1046.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-1046"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1046S.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1046S.xml"
new file mode 100644
index 0000000..3de20a4
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1046S.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-1046S"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1088.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1088.xml"
new file mode 100644
index 0000000..07a51a3
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1088.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-1088"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1098.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1098.xml"
new file mode 100644
index 0000000..cda3443
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1098.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-1098"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1114.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1114.xml"
new file mode 100644
index 0000000..d33cef4
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1114.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-1114"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1115.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1115.xml"
new file mode 100644
index 0000000..b0290b1
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1115.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-1115"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1124.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1124.xml"
new file mode 100644
index 0000000..05596c5
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1124.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-1124"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1363.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1363.xml"
new file mode 100644
index 0000000..af72a5d
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1363.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-1363"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1363C.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1363C.xml"
new file mode 100644
index 0000000..f18124d
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1363C.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-1363C"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1370.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1370.xml"
new file mode 100644
index 0000000..1839c89
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1370.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-1370"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1381.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1381.xml"
new file mode 100644
index 0000000..9ac90e9
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1381.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-1381"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1383.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1383.xml"
new file mode 100644
index 0000000..a9af28a
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1383.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-1383"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1386.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1386.xml"
new file mode 100644
index 0000000..dad99ce
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-1386.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-1386"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-33722C.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-33722C.xml"
new file mode 100644
index 0000000..1f592eb
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-33722C.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-33722C"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-437.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-437.xml"
new file mode 100644
index 0000000..5f04ef0
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-437.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-437"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-737.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-737.xml"
new file mode 100644
index 0000000..bb8535f
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-737.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-737"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-775.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-775.xml"
new file mode 100644
index 0000000..adc9449
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-775.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-775"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-808.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-808.xml"
new file mode 100644
index 0000000..8028fce
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-808.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-808"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-850.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-850.xml"
new file mode 100644
index 0000000..6187d91
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-850.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-850"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-852.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-852.xml"
new file mode 100644
index 0000000..c194d5c
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-852.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-852"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-855.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-855.xml"
new file mode 100644
index 0000000..d03547c
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-855.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-855"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-856.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-856.xml"
new file mode 100644
index 0000000..54a4b5b
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-856.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-856"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-857.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-857.xml"
new file mode 100644
index 0000000..ae20c91
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-857.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-857"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-858.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-858.xml"
new file mode 100644
index 0000000..355f14a
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-858.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-858"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-859.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-859.xml"
new file mode 100644
index 0000000..e59b250
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-859.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-859"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-860.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-860.xml"
new file mode 100644
index 0000000..ab82293
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-860.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-860"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-861.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-861.xml"
new file mode 100644
index 0000000..82910ec
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-861.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-861"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-862.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-862.xml"
new file mode 100644
index 0000000..52a7114
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-862.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-862"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-863.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-863.xml"
new file mode 100644
index 0000000..d167357
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-863.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-863"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-864.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-864.xml"
new file mode 100644
index 0000000..433e577
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-864.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-864"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-864S.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-864S.xml"
new file mode 100644
index 0000000..e83aeb8
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-864S.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-864S"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-865.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-865.xml"
new file mode 100644
index 0000000..dd7d5db
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-865.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-865"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-866.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-866.xml"
new file mode 100644
index 0000000..b1fa261
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-866.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-866"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-867.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-867.xml"
new file mode 100644
index 0000000..35f6750
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-867.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-867"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-868.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-868.xml"
new file mode 100644
index 0000000..6c3801a
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-868.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-868"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-869.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-869.xml"
new file mode 100644
index 0000000..7fee0c1
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-869.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-869"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-874.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-874.xml"
new file mode 100644
index 0000000..37c250a
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-874.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-874"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-897.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-897.xml"
new file mode 100644
index 0000000..f1b1596
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-897.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-897"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-921.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-921.xml"
new file mode 100644
index 0000000..28417e0
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-921.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-921"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-922.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-922.xml"
new file mode 100644
index 0000000..606b826
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-922.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-922"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-932.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-932.xml"
new file mode 100644
index 0000000..7946fe0
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-932.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-932"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-942.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-942.xml"
new file mode 100644
index 0000000..833e5bf
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-942.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-942"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-942C.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-942C.xml"
new file mode 100644
index 0000000..a23e38d
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-942C.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-942C"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-943.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-943.xml"
new file mode 100644
index 0000000..b414260
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-943.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-943"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-943C.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-943C.xml"
new file mode 100644
index 0000000..dda91ea
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-943C.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-943C"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-948.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-948.xml"
new file mode 100644
index 0000000..beda222
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-948.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-948"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-949.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-949.xml"
new file mode 100644
index 0000000..2c5acdb
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-949.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-949"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-949C.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-949C.xml"
new file mode 100644
index 0000000..06f45c6
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-949C.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-949C"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-950.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-950.xml"
new file mode 100644
index 0000000..0f566b1
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-950.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-950"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-954C.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-954C.xml"
new file mode 100644
index 0000000..9a65c14
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-IBM-954C.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="IBM-954C"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-2022-CN-GB.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-2022-CN-GB.xml"
new file mode 100644
index 0000000..556b59a
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-2022-CN-GB.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-2022-CN-GB"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-2022-CN.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-2022-CN.xml"
new file mode 100644
index 0000000..ecf3da3
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-2022-CN.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-2022-CN"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-2022-JP.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-2022-JP.xml"
new file mode 100644
index 0000000..ac67c17
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-2022-JP.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-2022-JP"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-2022-KR.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-2022-KR.xml"
new file mode 100644
index 0000000..327804a
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-2022-KR.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-2022-KR"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-1.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-1.xml"
new file mode 100644
index 0000000..af0ab83
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-1.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-10.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-10.xml"
new file mode 100644
index 0000000..5f07496
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-10.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-10"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-13.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-13.xml"
new file mode 100644
index 0000000..3f3ed61
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-13.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-13"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-14.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-14.xml"
new file mode 100644
index 0000000..33899cb
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-14.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-14"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-15.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-15.xml"
new file mode 100644
index 0000000..98d6fd7
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-15.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-15"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-16.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-16.xml"
new file mode 100644
index 0000000..10f57d8
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-16.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-16"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-2.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-2.xml"
new file mode 100644
index 0000000..58185c2
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-2.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-2"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-3.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-3.xml"
new file mode 100644
index 0000000..8134941
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-3.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-3"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-4.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-4.xml"
new file mode 100644
index 0000000..d0f9935
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-4.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-4"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-5.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-5.xml"
new file mode 100644
index 0000000..7686bf9
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-5.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-5"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-6.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-6.xml"
new file mode 100644
index 0000000..23444bf
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-6.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-6"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-6S.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-6S.xml"
new file mode 100644
index 0000000..5d9ad9a
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-6S.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-6S"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-7.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-7.xml"
new file mode 100644
index 0000000..fee95d5
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-7.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-7"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-8.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-8.xml"
new file mode 100644
index 0000000..f64d301
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-8.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-8"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-9.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-9.xml"
new file mode 100644
index 0000000..0083930
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-ISO-8859-9.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-9"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-JIS0201.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-JIS0201.xml"
new file mode 100644
index 0000000..35233d9
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-JIS0201.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="JIS0201"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-JIS0208.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-JIS0208.xml"
new file mode 100644
index 0000000..2d9934b
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-JIS0208.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="JIS0208"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-JIS0212.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-JIS0212.xml"
new file mode 100644
index 0000000..d029f63
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-JIS0212.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="JIS0212"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-Johab.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-Johab.xml"
new file mode 100644
index 0000000..1e07ccb
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-Johab.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="Johab"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-KOI8-R.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-KOI8-R.xml"
new file mode 100644
index 0000000..23045e6
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-KOI8-R.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="KOI8-R"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-KOI8-RU.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-KOI8-RU.xml"
new file mode 100644
index 0000000..47cdda0
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-KOI8-RU.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="KOI8-RU"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-KOI8-U.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-KOI8-U.xml"
new file mode 100644
index 0000000..2548f3c
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-KOI8-U.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="KOI8-U"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-KSC5601.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-KSC5601.xml"
new file mode 100644
index 0000000..0859479
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-KSC5601.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="KSC5601"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacArabic.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacArabic.xml"
new file mode 100644
index 0000000..2fe027a
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacArabic.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="MacArabic"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacCentralEurope.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacCentralEurope.xml"
new file mode 100644
index 0000000..1bb0d70
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacCentralEurope.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="MacCentralEurope"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacCroatian.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacCroatian.xml"
new file mode 100644
index 0000000..d50ab3a
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacCroatian.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="MacCroatian"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacCyrillic.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacCyrillic.xml"
new file mode 100644
index 0000000..00e3c92
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacCyrillic.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="MacCyrillic"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacGreek.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacGreek.xml"
new file mode 100644
index 0000000..edfad62
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacGreek.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="MacGreek"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacHebrew.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacHebrew.xml"
new file mode 100644
index 0000000..93b5492
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacHebrew.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="MacHebrew"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacIceland.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacIceland.xml"
new file mode 100644
index 0000000..5dad47d
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacIceland.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="MacIceland"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacRoman.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacRoman.xml"
new file mode 100644
index 0000000..bc1f0d5
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacRoman.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="MacRoman"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacRomania.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacRomania.xml"
new file mode 100644
index 0000000..9f6a4b9
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacRomania.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="MacRomania"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacThai.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacThai.xml"
new file mode 100644
index 0000000..4f4dacf
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacThai.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="MacThai"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacTurkish.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacTurkish.xml"
new file mode 100644
index 0000000..1cd6826
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacTurkish.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="MacTurkish"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacUkraine.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacUkraine.xml"
new file mode 100644
index 0000000..d0bc953
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-MacUkraine.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="MacUkraine"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-PTCP154.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-PTCP154.xml"
new file mode 100644
index 0000000..0e767ba
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-PTCP154.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="PTCP154"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-Shift_JIS.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-Shift_JIS.xml"
new file mode 100644
index 0000000..69b4e62
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-Shift_JIS.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="Shift_JIS"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-TIS-620.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-TIS-620.xml"
new file mode 100644
index 0000000..ffd32a7
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-TIS-620.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="TIS-620"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-US-ASCII.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-US-ASCII.xml"
new file mode 100644
index 0000000..87ea8b0
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-US-ASCII.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="US-ASCII"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-16.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-16.xml"
new file mode 100644
index 0000000..169dc52
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-16.xml"
Binary files differ
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-16BE.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-16BE.xml"
new file mode 100644
index 0000000..4358c0b
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-16BE.xml"
Binary files differ
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-16LE.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-16LE.xml"
new file mode 100644
index 0000000..e8d2e0d
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-16LE.xml"
Binary files differ
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-32.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-32.xml"
new file mode 100644
index 0000000..410d508
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-32.xml"
Binary files differ
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-32BE.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-32BE.xml"
new file mode 100644
index 0000000..28a9bf1
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-32BE.xml"
Binary files differ
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-32LE.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-32LE.xml"
new file mode 100644
index 0000000..e90a7f8
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-32LE.xml"
Binary files differ
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-8.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-8.xml"
new file mode 100644
index 0000000..a26f3bb
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-8.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-8J.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-8J.xml"
new file mode 100644
index 0000000..146659d
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-UTF-8J.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8J"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-X-UnicodeBig.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-X-UnicodeBig.xml"
new file mode 100644
index 0000000..851b70a
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-X-UnicodeBig.xml"
Binary files differ
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-X-UnicodeLittle.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-X-UnicodeLittle.xml"
new file mode 100644
index 0000000..714b9bc
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-X-UnicodeLittle.xml"
Binary files differ
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-hp-roman8.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-hp-roman8.xml"
new file mode 100644
index 0000000..0e98304
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-hp-roman8.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="hp-roman8"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1250.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1250.xml"
new file mode 100644
index 0000000..68d656f
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1250.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1250"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1251.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1251.xml"
new file mode 100644
index 0000000..d2bc0c3
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1251.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1251"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1252.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1252.xml"
new file mode 100644
index 0000000..d8ac585
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1252.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1252"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1253.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1253.xml"
new file mode 100644
index 0000000..59e6aec
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1253.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1253"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1254.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1254.xml"
new file mode 100644
index 0000000..f80628f
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1254.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1254"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1255.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1255.xml"
new file mode 100644
index 0000000..7267270
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1255.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1255"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1256.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1256.xml"
new file mode 100644
index 0000000..d5e0049
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1256.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1256"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1256S.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1256S.xml"
new file mode 100644
index 0000000..7987264
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1256S.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1256S"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1257.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1257.xml"
new file mode 100644
index 0000000..b095a61
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1257.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1257"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1258.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1258.xml"
new file mode 100644
index 0000000..4fc5e9a
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-1258.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1258"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-874.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-874.xml"
new file mode 100644
index 0000000..82c3d13
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-874.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-874"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-932.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-932.xml"
new file mode 100644
index 0000000..b7f26b5
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-932.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-932"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-936.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-936.xml"
new file mode 100644
index 0000000..0879fce
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-936.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-936"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-949.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-949.xml"
new file mode 100644
index 0000000..f2d3481
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-949.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-949"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-950.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-950.xml"
new file mode 100644
index 0000000..57c3bc6
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/test-windows-950.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-950"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/testMethods.text" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/testMethods.text"
new file mode 100644
index 0000000..774dddb
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2 \0501.4.2\051/xml/testMethods.text"
@@ -0,0 +1,525 @@
+131

+	public void testFile0() throws CoreException, IOException  {

+		String charsetName = "Big5";

+		doGenTest(charsetName);

+	}

+	public void testFile1() throws CoreException, IOException  {

+		String charsetName = "CESU-8";

+		doGenTest(charsetName);

+	}

+	public void testFile2() throws CoreException, IOException  {

+		String charsetName = "COMPOUND_TEXT";

+		doGenTest(charsetName);

+	}

+	public void testFile3() throws CoreException, IOException  {

+		String charsetName = "EUC-CN";

+		doGenTest(charsetName);

+	}

+	public void testFile4() throws CoreException, IOException  {

+		String charsetName = "EUC-JP";

+		doGenTest(charsetName);

+	}

+	public void testFile5() throws CoreException, IOException  {

+		String charsetName = "EUC-KR";

+		doGenTest(charsetName);

+	}

+	public void testFile6() throws CoreException, IOException  {

+		String charsetName = "GB18030";

+		doGenTest(charsetName);

+	}

+	public void testFile7() throws CoreException, IOException  {

+		String charsetName = "GB2312";

+		doGenTest(charsetName);

+	}

+	public void testFile8() throws CoreException, IOException  {

+		String charsetName = "GBK";

+		doGenTest(charsetName);

+	}

+	public void testFile9() throws CoreException, IOException  {

+		String charsetName = "hp-roman8";

+		doGenTest(charsetName);

+	}

+	public void testFile10() throws CoreException, IOException  {

+		String charsetName = "IBM-1006";

+		doGenTest(charsetName);

+	}

+	public void testFile11() throws CoreException, IOException  {

+		String charsetName = "IBM-1041";

+		doGenTest(charsetName);

+	}

+	public void testFile12() throws CoreException, IOException  {

+		String charsetName = "IBM-1043";

+		doGenTest(charsetName);

+	}

+	public void testFile13() throws CoreException, IOException  {

+		String charsetName = "IBM-1046";

+		doGenTest(charsetName);

+	}

+	public void testFile14() throws CoreException, IOException  {

+		String charsetName = "IBM-1046S";

+		doGenTest(charsetName);

+	}

+	public void testFile15() throws CoreException, IOException  {

+		String charsetName = "IBM-1088";

+		doGenTest(charsetName);

+	}

+	public void testFile16() throws CoreException, IOException  {

+		String charsetName = "IBM-1098";

+		doGenTest(charsetName);

+	}

+	public void testFile17() throws CoreException, IOException  {

+		String charsetName = "IBM-1114";

+		doGenTest(charsetName);

+	}

+	public void testFile18() throws CoreException, IOException  {

+		String charsetName = "IBM-1115";

+		doGenTest(charsetName);

+	}

+	public void testFile19() throws CoreException, IOException  {

+		String charsetName = "IBM-1124";

+		doGenTest(charsetName);

+	}

+	public void testFile20() throws CoreException, IOException  {

+		String charsetName = "IBM-1363";

+		doGenTest(charsetName);

+	}

+	public void testFile21() throws CoreException, IOException  {

+		String charsetName = "IBM-1363C";

+		doGenTest(charsetName);

+	}

+	public void testFile22() throws CoreException, IOException  {

+		String charsetName = "IBM-1370";

+		doGenTest(charsetName);

+	}

+	public void testFile23() throws CoreException, IOException  {

+		String charsetName = "IBM-1381";

+		doGenTest(charsetName);

+	}

+	public void testFile24() throws CoreException, IOException  {

+		String charsetName = "IBM-1383";

+		doGenTest(charsetName);

+	}

+	public void testFile25() throws CoreException, IOException  {

+		String charsetName = "IBM-1386";

+		doGenTest(charsetName);

+	}

+	public void testFile26() throws CoreException, IOException  {

+		String charsetName = "IBM-33722C";

+		doGenTest(charsetName);

+	}

+	public void testFile27() throws CoreException, IOException  {

+		String charsetName = "IBM-437";

+		doGenTest(charsetName);

+	}

+	public void testFile28() throws CoreException, IOException  {

+		String charsetName = "IBM-737";

+		doGenTest(charsetName);

+	}

+	public void testFile29() throws CoreException, IOException  {

+		String charsetName = "IBM-775";

+		doGenTest(charsetName);

+	}

+	public void testFile30() throws CoreException, IOException  {

+		String charsetName = "IBM-808";

+		doGenTest(charsetName);

+	}

+	public void testFile31() throws CoreException, IOException  {

+		String charsetName = "IBM-850";

+		doGenTest(charsetName);

+	}

+	public void testFile32() throws CoreException, IOException  {

+		String charsetName = "IBM-852";

+		doGenTest(charsetName);

+	}

+	public void testFile33() throws CoreException, IOException  {

+		String charsetName = "IBM-855";

+		doGenTest(charsetName);

+	}

+	public void testFile34() throws CoreException, IOException  {

+		String charsetName = "IBM-856";

+		doGenTest(charsetName);

+	}

+	public void testFile35() throws CoreException, IOException  {

+		String charsetName = "IBM-857";

+		doGenTest(charsetName);

+	}

+	public void testFile36() throws CoreException, IOException  {

+		String charsetName = "IBM-858";

+		doGenTest(charsetName);

+	}

+	public void testFile37() throws CoreException, IOException  {

+		String charsetName = "IBM-859";

+		doGenTest(charsetName);

+	}

+	public void testFile38() throws CoreException, IOException  {

+		String charsetName = "IBM-860";

+		doGenTest(charsetName);

+	}

+	public void testFile39() throws CoreException, IOException  {

+		String charsetName = "IBM-861";

+		doGenTest(charsetName);

+	}

+	public void testFile40() throws CoreException, IOException  {

+		String charsetName = "IBM-862";

+		doGenTest(charsetName);

+	}

+	public void testFile41() throws CoreException, IOException  {

+		String charsetName = "IBM-863";

+		doGenTest(charsetName);

+	}

+	public void testFile42() throws CoreException, IOException  {

+		String charsetName = "IBM-864";

+		doGenTest(charsetName);

+	}

+	public void testFile43() throws CoreException, IOException  {

+		String charsetName = "IBM-864S";

+		doGenTest(charsetName);

+	}

+	public void testFile44() throws CoreException, IOException  {

+		String charsetName = "IBM-865";

+		doGenTest(charsetName);

+	}

+	public void testFile45() throws CoreException, IOException  {

+		String charsetName = "IBM-866";

+		doGenTest(charsetName);

+	}

+	public void testFile46() throws CoreException, IOException  {

+		String charsetName = "IBM-867";

+		doGenTest(charsetName);

+	}

+	public void testFile47() throws CoreException, IOException  {

+		String charsetName = "IBM-868";

+		doGenTest(charsetName);

+	}

+	public void testFile48() throws CoreException, IOException  {

+		String charsetName = "IBM-869";

+		doGenTest(charsetName);

+	}

+	public void testFile49() throws CoreException, IOException  {

+		String charsetName = "IBM-874";

+		doGenTest(charsetName);

+	}

+	public void testFile50() throws CoreException, IOException  {

+		String charsetName = "IBM-897";

+		doGenTest(charsetName);

+	}

+	public void testFile51() throws CoreException, IOException  {

+		String charsetName = "IBM-921";

+		doGenTest(charsetName);

+	}

+	public void testFile52() throws CoreException, IOException  {

+		String charsetName = "IBM-922";

+		doGenTest(charsetName);

+	}

+	public void testFile53() throws CoreException, IOException  {

+		String charsetName = "IBM-932";

+		doGenTest(charsetName);

+	}

+	public void testFile54() throws CoreException, IOException  {

+		String charsetName = "IBM-942";

+		doGenTest(charsetName);

+	}

+	public void testFile55() throws CoreException, IOException  {

+		String charsetName = "IBM-942C";

+		doGenTest(charsetName);

+	}

+	public void testFile56() throws CoreException, IOException  {

+		String charsetName = "IBM-943";

+		doGenTest(charsetName);

+	}

+	public void testFile57() throws CoreException, IOException  {

+		String charsetName = "IBM-943C";

+		doGenTest(charsetName);

+	}

+	public void testFile58() throws CoreException, IOException  {

+		String charsetName = "IBM-948";

+		doGenTest(charsetName);

+	}

+	public void testFile59() throws CoreException, IOException  {

+		String charsetName = "IBM-949";

+		doGenTest(charsetName);

+	}

+	public void testFile60() throws CoreException, IOException  {

+		String charsetName = "IBM-949C";

+		doGenTest(charsetName);

+	}

+	public void testFile61() throws CoreException, IOException  {

+		String charsetName = "IBM-950";

+		doGenTest(charsetName);

+	}

+	public void testFile62() throws CoreException, IOException  {

+		String charsetName = "IBM-954C";

+		doGenTest(charsetName);

+	}

+	public void testFile63() throws CoreException, IOException  {

+		String charsetName = "ISO-2022-CN";

+		doGenTest(charsetName);

+	}

+	public void testFile64() throws CoreException, IOException  {

+		String charsetName = "ISO-2022-CN-GB";

+		doGenTest(charsetName);

+	}

+	public void testFile65() throws CoreException, IOException  {

+		String charsetName = "ISO-2022-JP";

+		doGenTest(charsetName);

+	}

+	public void testFile66() throws CoreException, IOException  {

+		String charsetName = "ISO-2022-KR";

+		doGenTest(charsetName);

+	}

+	public void testFile67() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-1";

+		doGenTest(charsetName);

+	}

+	public void testFile68() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-10";

+		doGenTest(charsetName);

+	}

+	public void testFile69() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-13";

+		doGenTest(charsetName);

+	}

+	public void testFile70() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-14";

+		doGenTest(charsetName);

+	}

+	public void testFile71() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-15";

+		doGenTest(charsetName);

+	}

+	public void testFile72() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-16";

+		doGenTest(charsetName);

+	}

+	public void testFile73() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-2";

+		doGenTest(charsetName);

+	}

+	public void testFile74() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-3";

+		doGenTest(charsetName);

+	}

+	public void testFile75() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-4";

+		doGenTest(charsetName);

+	}

+	public void testFile76() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-5";

+		doGenTest(charsetName);

+	}

+	public void testFile77() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-6";

+		doGenTest(charsetName);

+	}

+	public void testFile78() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-6S";

+		doGenTest(charsetName);

+	}

+	public void testFile79() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-7";

+		doGenTest(charsetName);

+	}

+	public void testFile80() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-8";

+		doGenTest(charsetName);

+	}

+	public void testFile81() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-9";

+		doGenTest(charsetName);

+	}

+	public void testFile82() throws CoreException, IOException  {

+		String charsetName = "JIS0201";

+		doGenTest(charsetName);

+	}

+	public void testFile83() throws CoreException, IOException  {

+		String charsetName = "JIS0208";

+		doGenTest(charsetName);

+	}

+	public void testFile84() throws CoreException, IOException  {

+		String charsetName = "JIS0212";

+		doGenTest(charsetName);

+	}

+	public void testFile85() throws CoreException, IOException  {

+		String charsetName = "Johab";

+		doGenTest(charsetName);

+	}

+	public void testFile86() throws CoreException, IOException  {

+		String charsetName = "KOI8-R";

+		doGenTest(charsetName);

+	}

+	public void testFile87() throws CoreException, IOException  {

+		String charsetName = "KOI8-RU";

+		doGenTest(charsetName);

+	}

+	public void testFile88() throws CoreException, IOException  {

+		String charsetName = "KOI8-U";

+		doGenTest(charsetName);

+	}

+	public void testFile89() throws CoreException, IOException  {

+		String charsetName = "KSC5601";

+		doGenTest(charsetName);

+	}

+	public void testFile90() throws CoreException, IOException  {

+		String charsetName = "MacArabic";

+		doGenTest(charsetName);

+	}

+	public void testFile91() throws CoreException, IOException  {

+		String charsetName = "MacCentralEurope";

+		doGenTest(charsetName);

+	}

+	public void testFile92() throws CoreException, IOException  {

+		String charsetName = "MacCroatian";

+		doGenTest(charsetName);

+	}

+	public void testFile93() throws CoreException, IOException  {

+		String charsetName = "MacCyrillic";

+		doGenTest(charsetName);

+	}

+	public void testFile94() throws CoreException, IOException  {

+		String charsetName = "MacGreek";

+		doGenTest(charsetName);

+	}

+	public void testFile95() throws CoreException, IOException  {

+		String charsetName = "MacHebrew";

+		doGenTest(charsetName);

+	}

+	public void testFile96() throws CoreException, IOException  {

+		String charsetName = "MacIceland";

+		doGenTest(charsetName);

+	}

+	public void testFile97() throws CoreException, IOException  {

+		String charsetName = "MacRoman";

+		doGenTest(charsetName);

+	}

+	public void testFile98() throws CoreException, IOException  {

+		String charsetName = "MacRomania";

+		doGenTest(charsetName);

+	}

+	public void testFile99() throws CoreException, IOException  {

+		String charsetName = "MacThai";

+		doGenTest(charsetName);

+	}

+	public void testFile100() throws CoreException, IOException  {

+		String charsetName = "MacTurkish";

+		doGenTest(charsetName);

+	}

+	public void testFile101() throws CoreException, IOException  {

+		String charsetName = "MacUkraine";

+		doGenTest(charsetName);

+	}

+	public void testFile102() throws CoreException, IOException  {

+		String charsetName = "PTCP154";

+		doGenTest(charsetName);

+	}

+	public void testFile103() throws CoreException, IOException  {

+		String charsetName = "Shift_JIS";

+		doGenTest(charsetName);

+	}

+	public void testFile104() throws CoreException, IOException  {

+		String charsetName = "TIS-620";

+		doGenTest(charsetName);

+	}

+	public void testFile105() throws CoreException, IOException  {

+		String charsetName = "US-ASCII";

+		doGenTest(charsetName);

+	}

+	public void testFile106() throws CoreException, IOException  {

+		String charsetName = "UTF-16";

+		doGenTest(charsetName);

+	}

+	public void testFile107() throws CoreException, IOException  {

+		String charsetName = "UTF-16BE";

+		doGenTest(charsetName);

+	}

+	public void testFile108() throws CoreException, IOException  {

+		String charsetName = "UTF-16LE";

+		doGenTest(charsetName);

+	}

+	public void testFile109() throws CoreException, IOException  {

+		String charsetName = "UTF-32";

+		doGenTest(charsetName);

+	}

+	public void testFile110() throws CoreException, IOException  {

+		String charsetName = "UTF-32BE";

+		doGenTest(charsetName);

+	}

+	public void testFile111() throws CoreException, IOException  {

+		String charsetName = "UTF-32LE";

+		doGenTest(charsetName);

+	}

+	public void testFile112() throws CoreException, IOException  {

+		String charsetName = "UTF-8";

+		doGenTest(charsetName);

+	}

+	public void testFile113() throws CoreException, IOException  {

+		String charsetName = "UTF-8J";

+		doGenTest(charsetName);

+	}

+	public void testFile114() throws CoreException, IOException  {

+		String charsetName = "windows-1250";

+		doGenTest(charsetName);

+	}

+	public void testFile115() throws CoreException, IOException  {

+		String charsetName = "windows-1251";

+		doGenTest(charsetName);

+	}

+	public void testFile116() throws CoreException, IOException  {

+		String charsetName = "windows-1252";

+		doGenTest(charsetName);

+	}

+	public void testFile117() throws CoreException, IOException  {

+		String charsetName = "windows-1253";

+		doGenTest(charsetName);

+	}

+	public void testFile118() throws CoreException, IOException  {

+		String charsetName = "windows-1254";

+		doGenTest(charsetName);

+	}

+	public void testFile119() throws CoreException, IOException  {

+		String charsetName = "windows-1255";

+		doGenTest(charsetName);

+	}

+	public void testFile120() throws CoreException, IOException  {

+		String charsetName = "windows-1256";

+		doGenTest(charsetName);

+	}

+	public void testFile121() throws CoreException, IOException  {

+		String charsetName = "windows-1256S";

+		doGenTest(charsetName);

+	}

+	public void testFile122() throws CoreException, IOException  {

+		String charsetName = "windows-1257";

+		doGenTest(charsetName);

+	}

+	public void testFile123() throws CoreException, IOException  {

+		String charsetName = "windows-1258";

+		doGenTest(charsetName);

+	}

+	public void testFile124() throws CoreException, IOException  {

+		String charsetName = "windows-874";

+		doGenTest(charsetName);

+	}

+	public void testFile125() throws CoreException, IOException  {

+		String charsetName = "windows-932";

+		doGenTest(charsetName);

+	}

+	public void testFile126() throws CoreException, IOException  {

+		String charsetName = "windows-936";

+		doGenTest(charsetName);

+	}

+	public void testFile127() throws CoreException, IOException  {

+		String charsetName = "windows-949";

+		doGenTest(charsetName);

+	}

+	public void testFile128() throws CoreException, IOException  {

+		String charsetName = "windows-950";

+		doGenTest(charsetName);

+	}

+	public void testFile129() throws CoreException, IOException  {

+		String charsetName = "X-UnicodeBig";

+		doGenTest(charsetName);

+	}

+	public void testFile130() throws CoreException, IOException  {

+		String charsetName = "X-UnicodeLittle";

+		doGenTest(charsetName);

+	}

diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-Big5-HKSCS.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-Big5-HKSCS.xml"
new file mode 100644
index 0000000..910324d
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-Big5-HKSCS.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="Big5-HKSCS"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-Big5.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-Big5.xml"
new file mode 100644
index 0000000..3dfe5a5
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-Big5.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="Big5"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-EUC-JP.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-EUC-JP.xml"
new file mode 100644
index 0000000..1539774
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-EUC-JP.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="EUC-JP"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-EUC-KR.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-EUC-KR.xml"
new file mode 100644
index 0000000..5ae929b
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-EUC-KR.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="EUC-KR"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-GB18030.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-GB18030.xml"
new file mode 100644
index 0000000..3fa13c0
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-GB18030.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="GB18030"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-GBK.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-GBK.xml"
new file mode 100644
index 0000000..92bbd47
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-GBK.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="GBK"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-2022-JP.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-2022-JP.xml"
new file mode 100644
index 0000000..ac67c17
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-2022-JP.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-2022-JP"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-2022-KR.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-2022-KR.xml"
new file mode 100644
index 0000000..327804a
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-2022-KR.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-2022-KR"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-1.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-1.xml"
new file mode 100644
index 0000000..af0ab83
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-1.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-13.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-13.xml"
new file mode 100644
index 0000000..3f3ed61
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-13.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-13"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-15.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-15.xml"
new file mode 100644
index 0000000..98d6fd7
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-15.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-15"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-2.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-2.xml"
new file mode 100644
index 0000000..58185c2
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-2.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-2"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-3.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-3.xml"
new file mode 100644
index 0000000..8134941
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-3.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-3"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-4.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-4.xml"
new file mode 100644
index 0000000..d0f9935
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-4.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-4"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-5.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-5.xml"
new file mode 100644
index 0000000..7686bf9
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-5.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-5"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-6.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-6.xml"
new file mode 100644
index 0000000..23444bf
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-6.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-6"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-7.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-7.xml"
new file mode 100644
index 0000000..fee95d5
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-7.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-7"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-8.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-8.xml"
new file mode 100644
index 0000000..f64d301
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-8.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-8"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-9.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-9.xml"
new file mode 100644
index 0000000..0083930
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-ISO-8859-9.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-9"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-JIS_X0201.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-JIS_X0201.xml"
new file mode 100644
index 0000000..b3a42d8
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-JIS_X0201.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="JIS_X0201"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-JIS_X0212-1990.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-JIS_X0212-1990.xml"
new file mode 100644
index 0000000..0f70b74
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-JIS_X0212-1990.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="JIS_X0212-1990"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-KOI8-R.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-KOI8-R.xml"
new file mode 100644
index 0000000..23045e6
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-KOI8-R.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="KOI8-R"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-Shift_JIS.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-Shift_JIS.xml"
new file mode 100644
index 0000000..69b4e62
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-Shift_JIS.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="Shift_JIS"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-TIS-620.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-TIS-620.xml"
new file mode 100644
index 0000000..ffd32a7
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-TIS-620.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="TIS-620"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-US-ASCII.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-US-ASCII.xml"
new file mode 100644
index 0000000..87ea8b0
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-US-ASCII.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="US-ASCII"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-UTF-16.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-UTF-16.xml"
new file mode 100644
index 0000000..fec5530
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-UTF-16.xml"
Binary files differ
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-UTF-16BE.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-UTF-16BE.xml"
new file mode 100644
index 0000000..4358c0b
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-UTF-16BE.xml"
Binary files differ
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-UTF-16LE.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-UTF-16LE.xml"
new file mode 100644
index 0000000..e8d2e0d
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-UTF-16LE.xml"
Binary files differ
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-UTF-8.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-UTF-8.xml"
new file mode 100644
index 0000000..a26f3bb
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-UTF-8.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1250.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1250.xml"
new file mode 100644
index 0000000..68d656f
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1250.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1250"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1251.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1251.xml"
new file mode 100644
index 0000000..d2bc0c3
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1251.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1251"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1252.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1252.xml"
new file mode 100644
index 0000000..d8ac585
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1252.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1252"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1253.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1253.xml"
new file mode 100644
index 0000000..59e6aec
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1253.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1253"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1254.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1254.xml"
new file mode 100644
index 0000000..f80628f
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1254.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1254"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1255.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1255.xml"
new file mode 100644
index 0000000..7267270
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1255.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1255"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1256.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1256.xml"
new file mode 100644
index 0000000..d5e0049
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1256.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1256"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1257.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1257.xml"
new file mode 100644
index 0000000..b095a61
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1257.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1257"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1258.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1258.xml"
new file mode 100644
index 0000000..4fc5e9a
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-1258.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1258"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-31j.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-31j.xml"
new file mode 100644
index 0000000..938cfd5
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-windows-31j.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-31j"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-EUC-CN.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-EUC-CN.xml"
new file mode 100644
index 0000000..3fdc641
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-EUC-CN.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="x-EUC-CN"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-EUC-TW.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-EUC-TW.xml"
new file mode 100644
index 0000000..348e37a
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-EUC-TW.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="x-EUC-TW"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-JIS0208.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-JIS0208.xml"
new file mode 100644
index 0000000..62d07fd
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-JIS0208.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="x-JIS0208"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-Johab.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-Johab.xml"
new file mode 100644
index 0000000..deaf87a
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-Johab.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="x-Johab"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-MS950-HKSCS.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-MS950-HKSCS.xml"
new file mode 100644
index 0000000..5806b31
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-MS950-HKSCS.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="x-MS950-HKSCS"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-euc-jp-linux.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-euc-jp-linux.xml"
new file mode 100644
index 0000000..0b43dfb
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-euc-jp-linux.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="x-euc-jp-linux"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-mswin-936.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-mswin-936.xml"
new file mode 100644
index 0000000..e1bf10a
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-mswin-936.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="x-mswin-936"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-windows-949.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-windows-949.xml"
new file mode 100644
index 0000000..a8c93f4
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-windows-949.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="x-windows-949"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-windows-950.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-windows-950.xml"
new file mode 100644
index 0000000..548e53b
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/test-x-windows-950.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="x-windows-950"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/testMethods.text" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/testMethods.text"
new file mode 100644
index 0000000..6f68f24
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_03 \0501.4.2_03-b02\051/xml/testMethods.text"
@@ -0,0 +1,193 @@
+48

+	public void testFile0() throws CoreException, IOException  {

+		String charsetName = "Big5";

+		doGenTest(charsetName);

+	}

+	public void testFile1() throws CoreException, IOException  {

+		String charsetName = "Big5-HKSCS";

+		doGenTest(charsetName);

+	}

+	public void testFile2() throws CoreException, IOException  {

+		String charsetName = "EUC-JP";

+		doGenTest(charsetName);

+	}

+	public void testFile3() throws CoreException, IOException  {

+		String charsetName = "EUC-KR";

+		doGenTest(charsetName);

+	}

+	public void testFile4() throws CoreException, IOException  {

+		String charsetName = "GB18030";

+		doGenTest(charsetName);

+	}

+	public void testFile5() throws CoreException, IOException  {

+		String charsetName = "GBK";

+		doGenTest(charsetName);

+	}

+	public void testFile6() throws CoreException, IOException  {

+		String charsetName = "ISO-2022-JP";

+		doGenTest(charsetName);

+	}

+	public void testFile7() throws CoreException, IOException  {

+		String charsetName = "ISO-2022-KR";

+		doGenTest(charsetName);

+	}

+	public void testFile8() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-1";

+		doGenTest(charsetName);

+	}

+	public void testFile9() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-13";

+		doGenTest(charsetName);

+	}

+	public void testFile10() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-15";

+		doGenTest(charsetName);

+	}

+	public void testFile11() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-2";

+		doGenTest(charsetName);

+	}

+	public void testFile12() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-3";

+		doGenTest(charsetName);

+	}

+	public void testFile13() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-4";

+		doGenTest(charsetName);

+	}

+	public void testFile14() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-5";

+		doGenTest(charsetName);

+	}

+	public void testFile15() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-6";

+		doGenTest(charsetName);

+	}

+	public void testFile16() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-7";

+		doGenTest(charsetName);

+	}

+	public void testFile17() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-8";

+		doGenTest(charsetName);

+	}

+	public void testFile18() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-9";

+		doGenTest(charsetName);

+	}

+	public void testFile19() throws CoreException, IOException  {

+		String charsetName = "JIS_X0201";

+		doGenTest(charsetName);

+	}

+	public void testFile20() throws CoreException, IOException  {

+		String charsetName = "JIS_X0212-1990";

+		doGenTest(charsetName);

+	}

+	public void testFile21() throws CoreException, IOException  {

+		String charsetName = "KOI8-R";

+		doGenTest(charsetName);

+	}

+	public void testFile22() throws CoreException, IOException  {

+		String charsetName = "Shift_JIS";

+		doGenTest(charsetName);

+	}

+	public void testFile23() throws CoreException, IOException  {

+		String charsetName = "TIS-620";

+		doGenTest(charsetName);

+	}

+	public void testFile24() throws CoreException, IOException  {

+		String charsetName = "US-ASCII";

+		doGenTest(charsetName);

+	}

+	public void testFile25() throws CoreException, IOException  {

+		String charsetName = "UTF-16";

+		doGenTest(charsetName);

+	}

+	public void testFile26() throws CoreException, IOException  {

+		String charsetName = "UTF-16BE";

+		doGenTest(charsetName);

+	}

+	public void testFile27() throws CoreException, IOException  {

+		String charsetName = "UTF-16LE";

+		doGenTest(charsetName);

+	}

+	public void testFile28() throws CoreException, IOException  {

+		String charsetName = "UTF-8";

+		doGenTest(charsetName);

+	}

+	public void testFile29() throws CoreException, IOException  {

+		String charsetName = "windows-1250";

+		doGenTest(charsetName);

+	}

+	public void testFile30() throws CoreException, IOException  {

+		String charsetName = "windows-1251";

+		doGenTest(charsetName);

+	}

+	public void testFile31() throws CoreException, IOException  {

+		String charsetName = "windows-1252";

+		doGenTest(charsetName);

+	}

+	public void testFile32() throws CoreException, IOException  {

+		String charsetName = "windows-1253";

+		doGenTest(charsetName);

+	}

+	public void testFile33() throws CoreException, IOException  {

+		String charsetName = "windows-1254";

+		doGenTest(charsetName);

+	}

+	public void testFile34() throws CoreException, IOException  {

+		String charsetName = "windows-1255";

+		doGenTest(charsetName);

+	}

+	public void testFile35() throws CoreException, IOException  {

+		String charsetName = "windows-1256";

+		doGenTest(charsetName);

+	}

+	public void testFile36() throws CoreException, IOException  {

+		String charsetName = "windows-1257";

+		doGenTest(charsetName);

+	}

+	public void testFile37() throws CoreException, IOException  {

+		String charsetName = "windows-1258";

+		doGenTest(charsetName);

+	}

+	public void testFile38() throws CoreException, IOException  {

+		String charsetName = "windows-31j";

+		doGenTest(charsetName);

+	}

+	public void testFile39() throws CoreException, IOException  {

+		String charsetName = "x-EUC-CN";

+		doGenTest(charsetName);

+	}

+	public void testFile40() throws CoreException, IOException  {

+		String charsetName = "x-euc-jp-linux";

+		doGenTest(charsetName);

+	}

+	public void testFile41() throws CoreException, IOException  {

+		String charsetName = "x-EUC-TW";

+		doGenTest(charsetName);

+	}

+	public void testFile42() throws CoreException, IOException  {

+		String charsetName = "x-JIS0208";

+		doGenTest(charsetName);

+	}

+	public void testFile43() throws CoreException, IOException  {

+		String charsetName = "x-Johab";

+		doGenTest(charsetName);

+	}

+	public void testFile44() throws CoreException, IOException  {

+		String charsetName = "x-MS950-HKSCS";

+		doGenTest(charsetName);

+	}

+	public void testFile45() throws CoreException, IOException  {

+		String charsetName = "x-mswin-936";

+		doGenTest(charsetName);

+	}

+	public void testFile46() throws CoreException, IOException  {

+		String charsetName = "x-windows-949";

+		doGenTest(charsetName);

+	}

+	public void testFile47() throws CoreException, IOException  {

+		String charsetName = "x-windows-950";

+		doGenTest(charsetName);

+	}

diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-Big5-HKSCS.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-Big5-HKSCS.xml"
new file mode 100644
index 0000000..910324d
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-Big5-HKSCS.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="Big5-HKSCS"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-Big5.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-Big5.xml"
new file mode 100644
index 0000000..3dfe5a5
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-Big5.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="Big5"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-EUC-JP.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-EUC-JP.xml"
new file mode 100644
index 0000000..1539774
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-EUC-JP.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="EUC-JP"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-EUC-KR.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-EUC-KR.xml"
new file mode 100644
index 0000000..5ae929b
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-EUC-KR.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="EUC-KR"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-GB18030.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-GB18030.xml"
new file mode 100644
index 0000000..3fa13c0
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-GB18030.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="GB18030"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-GBK.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-GBK.xml"
new file mode 100644
index 0000000..92bbd47
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-GBK.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="GBK"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-2022-JP.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-2022-JP.xml"
new file mode 100644
index 0000000..ac67c17
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-2022-JP.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-2022-JP"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-2022-KR.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-2022-KR.xml"
new file mode 100644
index 0000000..327804a
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-2022-KR.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-2022-KR"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-1.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-1.xml"
new file mode 100644
index 0000000..af0ab83
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-1.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-13.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-13.xml"
new file mode 100644
index 0000000..3f3ed61
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-13.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-13"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-15.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-15.xml"
new file mode 100644
index 0000000..98d6fd7
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-15.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-15"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-2.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-2.xml"
new file mode 100644
index 0000000..58185c2
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-2.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-2"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-3.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-3.xml"
new file mode 100644
index 0000000..8134941
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-3.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-3"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-4.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-4.xml"
new file mode 100644
index 0000000..d0f9935
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-4.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-4"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-5.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-5.xml"
new file mode 100644
index 0000000..7686bf9
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-5.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-5"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-6.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-6.xml"
new file mode 100644
index 0000000..23444bf
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-6.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-6"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-7.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-7.xml"
new file mode 100644
index 0000000..fee95d5
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-7.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-7"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-8.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-8.xml"
new file mode 100644
index 0000000..f64d301
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-8.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-8"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-9.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-9.xml"
new file mode 100644
index 0000000..0083930
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-ISO-8859-9.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-9"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-JIS_X0201.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-JIS_X0201.xml"
new file mode 100644
index 0000000..b3a42d8
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-JIS_X0201.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="JIS_X0201"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-JIS_X0212-1990.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-JIS_X0212-1990.xml"
new file mode 100644
index 0000000..0f70b74
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-JIS_X0212-1990.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="JIS_X0212-1990"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-KOI8-R.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-KOI8-R.xml"
new file mode 100644
index 0000000..23045e6
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-KOI8-R.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="KOI8-R"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-Shift_JIS.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-Shift_JIS.xml"
new file mode 100644
index 0000000..69b4e62
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-Shift_JIS.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="Shift_JIS"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-TIS-620.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-TIS-620.xml"
new file mode 100644
index 0000000..ffd32a7
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-TIS-620.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="TIS-620"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-US-ASCII.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-US-ASCII.xml"
new file mode 100644
index 0000000..87ea8b0
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-US-ASCII.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="US-ASCII"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-UTF-16.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-UTF-16.xml"
new file mode 100644
index 0000000..fec5530
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-UTF-16.xml"
Binary files differ
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-UTF-16BE.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-UTF-16BE.xml"
new file mode 100644
index 0000000..4358c0b
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-UTF-16BE.xml"
Binary files differ
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-UTF-16LE.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-UTF-16LE.xml"
new file mode 100644
index 0000000..e8d2e0d
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-UTF-16LE.xml"
Binary files differ
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-UTF-8.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-UTF-8.xml"
new file mode 100644
index 0000000..a26f3bb
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-UTF-8.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1250.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1250.xml"
new file mode 100644
index 0000000..68d656f
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1250.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1250"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1251.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1251.xml"
new file mode 100644
index 0000000..d2bc0c3
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1251.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1251"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1252.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1252.xml"
new file mode 100644
index 0000000..d8ac585
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1252.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1252"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1253.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1253.xml"
new file mode 100644
index 0000000..59e6aec
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1253.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1253"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1254.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1254.xml"
new file mode 100644
index 0000000..f80628f
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1254.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1254"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1255.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1255.xml"
new file mode 100644
index 0000000..7267270
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1255.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1255"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1256.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1256.xml"
new file mode 100644
index 0000000..d5e0049
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1256.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1256"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1257.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1257.xml"
new file mode 100644
index 0000000..b095a61
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1257.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1257"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1258.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1258.xml"
new file mode 100644
index 0000000..4fc5e9a
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-1258.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-1258"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-31j.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-31j.xml"
new file mode 100644
index 0000000..938cfd5
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-windows-31j.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="windows-31j"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-EUC-CN.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-EUC-CN.xml"
new file mode 100644
index 0000000..3fdc641
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-EUC-CN.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="x-EUC-CN"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-EUC-TW.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-EUC-TW.xml"
new file mode 100644
index 0000000..348e37a
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-EUC-TW.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="x-EUC-TW"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-JIS0208.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-JIS0208.xml"
new file mode 100644
index 0000000..62d07fd
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-JIS0208.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="x-JIS0208"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-Johab.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-Johab.xml"
new file mode 100644
index 0000000..deaf87a
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-Johab.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="x-Johab"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-MS950-HKSCS.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-MS950-HKSCS.xml"
new file mode 100644
index 0000000..5806b31
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-MS950-HKSCS.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="x-MS950-HKSCS"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-euc-jp-linux.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-euc-jp-linux.xml"
new file mode 100644
index 0000000..0b43dfb
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-euc-jp-linux.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="x-euc-jp-linux"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-mswin-936.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-mswin-936.xml"
new file mode 100644
index 0000000..e1bf10a
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-mswin-936.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="x-mswin-936"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-windows-949.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-windows-949.xml"
new file mode 100644
index 0000000..a8c93f4
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-windows-949.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="x-windows-949"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-windows-950.xml" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-windows-950.xml"
new file mode 100644
index 0000000..548e53b
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/test-x-windows-950.xml"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="x-windows-950"?>abcdefghijklmnopqrstuvwxyz
+1234567890
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git "a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/testMethods.text" "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/testMethods.text"
new file mode 100644
index 0000000..6f68f24
--- /dev/null
+++ "b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/genedFiles-1.4.2_05 \0501.4.2_05-b04\051/xml/testMethods.text"
@@ -0,0 +1,193 @@
+48

+	public void testFile0() throws CoreException, IOException  {

+		String charsetName = "Big5";

+		doGenTest(charsetName);

+	}

+	public void testFile1() throws CoreException, IOException  {

+		String charsetName = "Big5-HKSCS";

+		doGenTest(charsetName);

+	}

+	public void testFile2() throws CoreException, IOException  {

+		String charsetName = "EUC-JP";

+		doGenTest(charsetName);

+	}

+	public void testFile3() throws CoreException, IOException  {

+		String charsetName = "EUC-KR";

+		doGenTest(charsetName);

+	}

+	public void testFile4() throws CoreException, IOException  {

+		String charsetName = "GB18030";

+		doGenTest(charsetName);

+	}

+	public void testFile5() throws CoreException, IOException  {

+		String charsetName = "GBK";

+		doGenTest(charsetName);

+	}

+	public void testFile6() throws CoreException, IOException  {

+		String charsetName = "ISO-2022-JP";

+		doGenTest(charsetName);

+	}

+	public void testFile7() throws CoreException, IOException  {

+		String charsetName = "ISO-2022-KR";

+		doGenTest(charsetName);

+	}

+	public void testFile8() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-1";

+		doGenTest(charsetName);

+	}

+	public void testFile9() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-13";

+		doGenTest(charsetName);

+	}

+	public void testFile10() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-15";

+		doGenTest(charsetName);

+	}

+	public void testFile11() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-2";

+		doGenTest(charsetName);

+	}

+	public void testFile12() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-3";

+		doGenTest(charsetName);

+	}

+	public void testFile13() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-4";

+		doGenTest(charsetName);

+	}

+	public void testFile14() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-5";

+		doGenTest(charsetName);

+	}

+	public void testFile15() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-6";

+		doGenTest(charsetName);

+	}

+	public void testFile16() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-7";

+		doGenTest(charsetName);

+	}

+	public void testFile17() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-8";

+		doGenTest(charsetName);

+	}

+	public void testFile18() throws CoreException, IOException  {

+		String charsetName = "ISO-8859-9";

+		doGenTest(charsetName);

+	}

+	public void testFile19() throws CoreException, IOException  {

+		String charsetName = "JIS_X0201";

+		doGenTest(charsetName);

+	}

+	public void testFile20() throws CoreException, IOException  {

+		String charsetName = "JIS_X0212-1990";

+		doGenTest(charsetName);

+	}

+	public void testFile21() throws CoreException, IOException  {

+		String charsetName = "KOI8-R";

+		doGenTest(charsetName);

+	}

+	public void testFile22() throws CoreException, IOException  {

+		String charsetName = "Shift_JIS";

+		doGenTest(charsetName);

+	}

+	public void testFile23() throws CoreException, IOException  {

+		String charsetName = "TIS-620";

+		doGenTest(charsetName);

+	}

+	public void testFile24() throws CoreException, IOException  {

+		String charsetName = "US-ASCII";

+		doGenTest(charsetName);

+	}

+	public void testFile25() throws CoreException, IOException  {

+		String charsetName = "UTF-16";

+		doGenTest(charsetName);

+	}

+	public void testFile26() throws CoreException, IOException  {

+		String charsetName = "UTF-16BE";

+		doGenTest(charsetName);

+	}

+	public void testFile27() throws CoreException, IOException  {

+		String charsetName = "UTF-16LE";

+		doGenTest(charsetName);

+	}

+	public void testFile28() throws CoreException, IOException  {

+		String charsetName = "UTF-8";

+		doGenTest(charsetName);

+	}

+	public void testFile29() throws CoreException, IOException  {

+		String charsetName = "windows-1250";

+		doGenTest(charsetName);

+	}

+	public void testFile30() throws CoreException, IOException  {

+		String charsetName = "windows-1251";

+		doGenTest(charsetName);

+	}

+	public void testFile31() throws CoreException, IOException  {

+		String charsetName = "windows-1252";

+		doGenTest(charsetName);

+	}

+	public void testFile32() throws CoreException, IOException  {

+		String charsetName = "windows-1253";

+		doGenTest(charsetName);

+	}

+	public void testFile33() throws CoreException, IOException  {

+		String charsetName = "windows-1254";

+		doGenTest(charsetName);

+	}

+	public void testFile34() throws CoreException, IOException  {

+		String charsetName = "windows-1255";

+		doGenTest(charsetName);

+	}

+	public void testFile35() throws CoreException, IOException  {

+		String charsetName = "windows-1256";

+		doGenTest(charsetName);

+	}

+	public void testFile36() throws CoreException, IOException  {

+		String charsetName = "windows-1257";

+		doGenTest(charsetName);

+	}

+	public void testFile37() throws CoreException, IOException  {

+		String charsetName = "windows-1258";

+		doGenTest(charsetName);

+	}

+	public void testFile38() throws CoreException, IOException  {

+		String charsetName = "windows-31j";

+		doGenTest(charsetName);

+	}

+	public void testFile39() throws CoreException, IOException  {

+		String charsetName = "x-EUC-CN";

+		doGenTest(charsetName);

+	}

+	public void testFile40() throws CoreException, IOException  {

+		String charsetName = "x-euc-jp-linux";

+		doGenTest(charsetName);

+	}

+	public void testFile41() throws CoreException, IOException  {

+		String charsetName = "x-EUC-TW";

+		doGenTest(charsetName);

+	}

+	public void testFile42() throws CoreException, IOException  {

+		String charsetName = "x-JIS0208";

+		doGenTest(charsetName);

+	}

+	public void testFile43() throws CoreException, IOException  {

+		String charsetName = "x-Johab";

+		doGenTest(charsetName);

+	}

+	public void testFile44() throws CoreException, IOException  {

+		String charsetName = "x-MS950-HKSCS";

+		doGenTest(charsetName);

+	}

+	public void testFile45() throws CoreException, IOException  {

+		String charsetName = "x-mswin-936";

+		doGenTest(charsetName);

+	}

+	public void testFile46() throws CoreException, IOException  {

+		String charsetName = "x-windows-949";

+		doGenTest(charsetName);

+	}

+	public void testFile47() throws CoreException, IOException  {

+		String charsetName = "x-windows-950";

+		doGenTest(charsetName);

+	}

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/EmptyFile.html b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/EmptyFile.html
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/EmptyFile.html
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/IllformedNormalNonDefault.html b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/IllformedNormalNonDefault.html
new file mode 100644
index 0000000..ef8b5c8
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/IllformedNormalNonDefault.html
@@ -0,0 +1,20 @@
+<HEAD>
+<META http-equiv="Content-Style-Type" content="text/css">
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8>
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-6">
+<META name="GENERATOR" content="IBM WebSphere Studio">
+<TITLE>IBM WebSphere Samples Gallery</TITLE>
+</HEAD>
+<FRAMESET rows="75,*">
+	<FRAME name="title" marginwidth="0" marginheight="0" frameborder="0" src="Menu/Title.html" scrolling="NO" noresize>
+	<FRAMESET cols="160,*">
+		<FRAME name="menu" marginwidth="0" marginheight="0" frameborder="0" src="Menu/Menu.html" scrolling="auto" noresize>
+		<FRAME name="main" marginwidth="0" marginheight="0" frameborder="0" src="Menu/SamplesIntro.html" scrolling="auto" noresize>
+	</FRAMESET>
+	<NOFRAMES>
+	<BODY>
+	<P>To view this page, you need a browser that supports frames.</P>
+	</BODY>
+	</NOFRAMES>
+</FRAMESET>
+</HTML>
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/LargeNoEncoding.html b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/LargeNoEncoding.html
new file mode 100644
index 0000000..84ca60e
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/LargeNoEncoding.html
@@ -0,0 +1,664 @@
+<!DOCTYPE HTML PUBLIC "-//W3C/DTD/ HTML 4.01 Transitional//EN">
+
+<html>
+<head>
+<meta name="GENERATOR" content="Mozilla/4.7 [en] (WinNT; U) [Netscape]">
+<META content="text/css" http-equiv="Content-Style-Type">
+<title>smoke</title>
+</head>
+<body>
+<h2> Smoke Test - XML Editor</h2>
+Last updated: June 25, 2001
+<P>This Smoke Test primarily focuses on the RTP portion of the XML 
+Editior, which is the Source page of the XML Editor. It also performs 
+some integration testing. For example, it tests synchronization between 
+the Design and Source pages of the XML Editor, as well as with the 
+Outline and Properties views. It also verifies that files created 
+through the XML File wizard and references to the XML Catalog are 
+supported as expected.</P>
+<P><FONT color="#ff0000"><B>NOTE</B>: XML files are case-sensitive so be sure that things appear 
+exactly as noted.</FONT></P>
+
+<!-- ===========================================================
+                           Setup
+     ===========================================================
+-->
+<H2><FONT color="#0000ff">Setup</FONT></H2>
+<P><B>Starting Clean</B></P>
+<ul>
+    <li> Delete any existing workbench</li>
+    <li> Start Eclipse</li>
+</ul>
+<P><B>Open an XML Perspective<BR>
+</B></P>
+<UL>
+    <LI>Select the <B>Open Perspective</B> toolbar button in the upper left</LI>
+    <LI>Select <B>Other...</B></LI>
+    <LI>Select <B>XML</B></LI>
+    <LI>Verify the following views appear in the XML perspective: <FONT color="#ff0000">The location of the Outline and Navigator views are reversed from the Resource and Web perspectives. Do we want to try to be consistent across the perspectives? Also, I opened <B>defect</B> 177664 to enable easy access to the Properties view from within the XML perspective. If this view isn't included in the Perspective because its use is limited, then recommend we at least provide a Show or Hide Properties View toolbar button (similar to the buttons that Page Designer provides).</FONT></LI>
+</UL>
+<P><B>Project Creation and File Imports<BR>
+</B></P>
+<UL>
+    <LI>Create a Project, <B>XMLTest2</B> </LI>
+    <LI>Import the following files into this project:
+    <UL>
+        <LI><B>PurchaseOrder.xsd</B></LI>
+        <LI><B>Invoice.dtd</B></LI>
+    <LI><B>JobDesc.xml</B></LI>
+    <LI><B>Wireless.xml</B></LI>
+    <LI><B>gotchaTCBeans.set</B></LI>
+    <LI><B>ATS.dtd</B></LI>
+    <LI><FONT color="#ff0000">any others?</FONT></LI>
+    </UL>
+    </LI>
+</UL>
+
+<!-- ===========================================================
+                    Create/Open/Edit test cases
+     ===========================================================
+-->
+<H2><FONT color="#0000ff">Create/Open/Edit test cases</FONT></H2>
+<P><B>Create an XML File from scratch</B></P>
+<UL>
+    <LI>Select the <B>Create a new XML file</B> toolbar button.</LI>
+    <LI>Verify the Create a XML File wizard appears and the Finish button is disabled. <FONT color="#ff0000"><B>DEFECT:</B> 177660 - XML File wizard: disable Finish button on the first page</FONT>.</LI>
+    <LI>Accept the default to <B>Create a new XML file</B></LI>
+    <LI>Go to the Next page
+    <UL>
+        <LI>Select <B>XMLTest2</B> as the folder</LI>
+        <LI>Specify a File name of <B>fromScratch</B></LI>
+        <LI>Select <B>Finish</B></LI>
+    </UL>
+    </LI>
+    <LI>Verify the following:
+    <UL>
+        <LI>fromScratch.xml appears in the Navigator view.</LI>
+        <LI>fromScratch.xml is open to the Design page of the XML Editor and has focus.</LI>
+        <LI>the Design tab appears before the Source tab in the XML Editor.</LI>
+        <LI>the Design and Source page show no content.</LI>
+        <LI>the Outline and Properties views show nothing.</LI>
+    </UL>
+    </LI>
+    <LI>Switch to the Source page. Verify the cursor appears at the beginning of the file.</LI>
+    <LI>Right mouse button 2 and verify a popup menu appears.</LI>
+    <LI>Hit <B>Ctrl+Space</B>. Verify the content assist proposal list appears.</LI>
+    <LI>Select <B>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</B></LI>
+    <LI>Verify &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; is inserted and appears syntax highlighted and an entry appears for it in the Outline view.</LI>
+    <LI>Position the cursor within the XML declaration and verify <B>version</B> and <B>encoding</B> appear in the Properties view. <FONT color="#ff0000">This used to work, but now it's not working. Opened <B>defect</B> 177662 - XML declaration attributes not appearing in Properties view. If we decide to not treat version and encoding as attributes, then this step should be removed.</FONT></LI>
+    <LI>Continue to the next section.</LI>
+</UL>
+<P><B>Identify a local DTD (</B>verifies a DTD is immediately recognized; in the past, you had to close and reopen the Workbench<B>)</B></P>
+<UL>
+    <LI>Type the following after the XML declaration in <B>fromScratch.xml</B>: <B>&lt;!DOCTYPE Invoice SYSTEM &quot;Invoice.dtd&quot;&gt;</B>. The text should be syntax highlighted as you type and you should see an entry get added to the Outline view.</LI>
+    <LI>Hit <B>Enter</B> to create a new line after the DOCTYPE declaration.</LI>
+    <LI>Hit <B>Ctrl+Space</B>.Verify only <B>Invoice</B> and <B>comment</B> appear in the proposal list. (<B>NOTE</B>: <B>Invoice</B> is the root element)</LI>
+    <LI>Hit <B>Enter</B> to accept <B>Invoice</B> as a selection. Verify the Invoice start and end tags are inserted into the Source and the cursor appears between them. An element entry should appear for Invoice in the Outline view. (<B>NOTE</B>: XML is case-sensitive so be sure you see Invoice and not invoice everywhere).</LI>
+    <LI>Hit <B>Ctrl+Space</B>. Verify the following appears in the proposal list (in the order shown): <FONT color="#ff0000">Item is appearing before Header. The default is not to sort the list alphabetically. That means the list should be sorted based on the order in which the child tags are defined in the element definition for Invoice in the DTD. In other words, users should see child tags listed according to their sequencing order in the DTD, which the DTD Editor shows. Violating the sequencing order causes an XML file to become not valid. <B>DEFECT:</B> 177668</FONT>
+    <UL>
+        <LI>Header</LI>
+        <LI>Item</LI>
+        <LI>comment</LI>
+    </UL>
+    </LI>
+    <LI>Hit <B>Enter</B> to accept <B>Header</B> as a selection.</LI>
+    <LI>Verify the Source now looks like the following and the cursor appears before <B>invoiceNumber</B>:<IMG border="0" height="83" src="identifyDTD.jpg" width="485"></LI>
+    <LI>Verify <B>Header</B> appears nested under <B>Invoice</B> in the Outline view.</LI>
+  <LI>Close this file, and respond <B>Yes</B> when prompted to save the changes.</LI>
+  <LI>Reopen the file and verify the changes were saved.</LI>
+  <LI>Close the file. Verify no save changes prompt appears.</LI>
+</UL>
+<P><B>Create an XML File from an imported DTD</B></P>
+<UL>
+    <LI>Select the <B>File-&gt;New-&gt;XML File</B>.</LI>
+    <LI>Verify the Create a XML File wizard appears.</LI>
+    <LI>Select to <B>Create a new XML file from a DTD file</B></LI>
+    <LI>Go to the Next page
+    <UL>
+        <LI>Select <B>XMLTest2</B> as the folder</LI>
+        <LI>Specify a File name of <B>fromLocalDTD</B></LI>
+        <LI>Go to the Next page</LI>
+    </UL>
+    </LI>
+    <LI>Select the <B>Import File</B> button
+    <UL>
+        <LI>Use the Browse button to find <B>testcase.dtd</B></LI>
+        <LI>Select <B>XMLTest2</B> as the folder. <FONT color="#ff0000">Would be nice if this were already filled in. Open a defect.</FONT></LI>
+        <LI>Select <B>Finish</B> to close the Import File wizard</LI>
+    </UL>
+    </LI>
+    <LI>Expand <B>XMLtest2</B> and then select <B>testcase.dtd</B>. <FONT color="#ff0000">Was expecting to see the imported file selected in the Workbench files list, but it wasn't. Open a defect.</FONT></LI>
+    <LI>Go to the Next page.</LI>
+    <LI>Select <B>testcase</B> as the Root Element.</LI>
+    <LI>Accept the default to <B>Create required content only</B>.</LI>
+    <LI>Verify <B>testcase.dtd</B> appears as the System Id.</LI>
+    <LI>Select Finish. Verify <B>fromLocalDTD.xml</B> appears in the XML Editor. Verify the Source page looks like the following: <IMG border="0" height="290" src="importDTD.jpg" width="660"></LI>
+  <LI>Verify the Outline view and the formatting indentation reflect the proper element/tag hierarchy. Here's what the Outline view should look like:<IMG border="0" height="297" src="outline1.jpg" width="655"></LI>
+  <LI>Verify selection synchronization between the Design page, Source page, Outline view, 
+        and Properties view.
+    <UL>
+        <LI>From the Source page, click within the <B>header</B> start tag. 
+            Verify <B>header</B> is selected in the Outline view and in the Design 
+            page and that the following properties and property values appear in the 
+            Properties view:
+        <TABLE border="1">
+            <TBODY>
+                <TR>
+                    <TD width="100"><B>Property</B></TD>
+                    <TD width="76"><B>Value</B></TD>
+                </TR>
+                <TR>
+                    <TD width="100">category</TD>
+                    <TD width="76">webtool</TD>
+                </TR>
+                <TR>
+                    <TD width="100">number</TD>
+                    <TD width="76">idvalue0</TD>
+                </TR>
+                <TR>
+                    <TD width="100">state</TD>
+                    <TD width="76">&nbsp;</TD>
+                </TR>
+                <TR>
+                    <TD width="100">subCategory</TD>
+                    <TD width="76">Accessability</TD>
+                </TR>
+                <TR>
+                    <TD width="100">subSubCategory</TD>
+                    <TD width="76">&nbsp;</TD>
+                </TR>
+            </TBODY>
+        </TABLE>
+        </LI>
+	<LI>From the Outline view, select the <B>testBucket</B> tag.
+            Verify <B>testBucket</B> is selected in the Design page and the current marker
+            in the lefthand margin of the Source page indicates the range of the 
+            <B>testBucket</B> tag. The Properties view should show a property of <B>type</B>
+            with a value of <B>ComponentTest</B>.
+        </LI>
+    </UL>   
+    </LI> 
+    <LI>Verify edit synchronization between the Design page, Source page, and 
+        Properties view (focus here is on adding attributes and attribute values).
+    <UL>
+        <LI>From the Source page, use content assist to insert an attribute and attribute value
+            for the <B>header</B> start tag.
+            <UL>
+            <LI>Position the cursor after the <B>category</B> attribute in the <B>header</B> start tag.</LI>
+            <LI>Type <B>space</B> and then hit prompt for content assist.</LI>
+            <LI>Verify only <B>state</B> and <B>subSubCategory</B> appear in the proposal list (content assist is smart enough not to list any attributes that already exist in the start tag since attributes can only appear once. <FONT color="#0000ff">Cool!</FONT>).</LI>
+            <LI>Select <B>state</B>.</LI>   
+            <LI>Verify <B>state="UnderConstruction"</B> is inserted in the Source page (content assist automatically inserts any default values. <FONT color="#0000ff">Cool!</FONT>). Verify the Design page and Properties view reflect this change.</LI>         
+            </UL>
+        </LI>
+        <LI>From the Properties view, update the <B>state</B> attribute value to "UnderReview" 
+            (a pulldown list of values should be available). Verify the change is reflected
+            in the Source and Design pages.
+        </LI>
+        <LI>From the Design page, add an attribute and attribute value to the <B>header</B> tag.
+            <UL>
+            <LI>Bring up the popup menu for the <B>header</B> tag.</LI>
+            <LI>Select <B>Add Attribute->subSubCategory</B> from the popup menu (it's smart
+                enough to know which attributes haven't been specified yet ... like content 
+                assist. Cool!).</LI>
+            <LI>Type in a value of <B>Keyboard support</B>.</LI>
+            <LI>Verify the change is reflected in the Source page and Properties view</LI>
+            </UL>
+        </LI>
+    </UL>
+    </LI>
+</UL>
+<P><B>Open an XML File that references a remote DTD</B></P>
+<UL>
+    <LI>Open the <B>Wireless.xml</B> file.</LI>
+    <LI>Verify it looks like the following in the Source page:<IMG border="0" height="239" src="wireless.jpg" width="656"></LI>
+    <LI>Verify the Outline view and the formatting indentation reflect the proper 
+        element/tag hierarchy. Here's what the Outline view should look like: <IMG border="0" height="189" src="outline2.jpg" width="656"></LI> 
+    <LI>Verify content assist <FONT color="#ff0000">Defect 176379 (in verify state, but still not working)</FONT>.</LI>
+        <UL>
+           <LI>Create a new line after the <B>wml</B> start tag.</LI>
+           <LI>Prompt for content assist on the new line.</LI>
+           <LI>Verify the following appear as proposals (in the order shown): 
+               <UL>
+                   <LI>head</LI>
+                   <LI>template</LI>
+                   <LI>card</LI>
+               </UL>
+           </LI>
+           <LI>Create a new line after the <B>wml</B> start tag.</LI>
+           <LI>Type a space before the ending delimiter on the card start tag.</LI>
+           <LI>Prompt for content assist</LI>
+           <LI>Verify the following appear as proposals (not necessarily in the
+               order shown). 
+               <UL>
+                   <LI>title</LI>
+                   <LI>newcontext</LI>
+                   <LI>ordered</LI>
+                   <LI>xml:lang</LI>
+                   <LI>onenterbackward</LI>
+                   <LI>ontimer</LI>
+                   <LI>id</LI>
+                   <LI>class</LI>
+               </UL>
+           </LI>
+           <LI>Position the cursor within the <B>method</B> attribute value in the <B>go</B> start tag.</LI>
+           <LI>Prompt for content assist</LI>
+           <LI>Verify <B>post</B> and <B>get</B> appear as proposals.</LI>
+        </UL>
+    <LI>Verify selection synchronization between the Design page, Source page, Outline view, 
+        and Properties view.
+    <UL>
+        <LI>From the Source page, click within the <B>card</B> start tag. 
+            Verify <B>card</B> is selected in the Outline view and in the Design 
+            page and that the content assist proposals listed above for the
+            <B>card</B> tag appear as properties in the Properties view. No values should appear for these properties.</LI>
+	<LI>From the Outline view, select the <B>postfield</B> tag.
+            Verify <B>postfield</B> is selected in the Design page and the current marker
+            in the lefthand margin of the Source page indicates the range of the 
+            <B>postfield</B> tag. The Properties view should show the following properties,
+            none of which should have a value:
+               <UL>
+                   <LI>name</LI>
+                   <LI>value</LI>
+                   <LI>id</LI>
+                   <LI>class</LI>
+               </UL>
+           </LI>
+    </UL>   
+    </LI>
+    <LI>Verify edit synchronization between the Design page, Source page, Outline view, and 
+        Properties view (focus here is on adding elements/tags).
+    <UL>
+        <LI>From the Source page, copy and paste the <B>card</B> tag.
+            <UL>
+            <LI>Position the cursor in the <B>card</B> start tag.</LI>
+            <LI>Notice the range of the <B>card</B> tag in the lefthand margin area.</LI>
+            <LI>Copy this range of lines using the <B>Edit->Copy</B> pulldown menu selection.</LI>
+            <LI>Paste after the <B>card</B> end tag using Ctrl+V.</LI>
+            <LI>Verify the appropriate lines were pasted n the Source page.
+                Verify the Design page, Outline view, and the Properties 
+                view reflect this change.</LI>         
+            </UL>
+        </LI>
+        <LI>From the Design page, add another <B>card</B> tag.
+            <UL>
+            <LI>Bring up the popup menu for the <B>wml</B> tag.</LI>
+            <LI>Select <B>Add Child->card</B> from the popup menu.</LI>
+            <LI>Verify the Source page, Outline view, and the Properties
+                view reflect this change. NOTE: it should have generated out
+                the same thing as the original card tag, with the exception
+                that a <B>method</B> attribute should not exist in the <B>go</B> start tag. </LI>
+            </UL>
+        </LI>
+    </UL>
+    </LI> 
+</UL>
+<P><B>Create and Validate an XML File from a schema</B><BR>
+
+<P>(these steps are taken from the 'Design' smoke test, except the Source Page is the focus)</P>
+<ul>
+<li>
+Right mouse button 2 on the PurchaseOrder.xsd and select <b>Create XML
+File</b>.</li>
+
+<li>
+Accept the default file names.</li>
+
+<li>
+In the Select Root Element page, choose <b>purchaseOrder</b> as root element.</li>
+
+<li>
+Choose <b>Create required and optional content</b> to create a minimal
+document.</li>
+
+<li>
+Enter <b>po</b> as the namespace prefix.</li>
+
+<li>On Finish, a PurchaseOrder.xml is created and the XML Editor is opened. (Select Source Page if not already there.)</li>
+
+<li>
+Run Validate. The PurchaseOrder.xml should be invalid.</li>
+
+<li>
+Double click on the error message. It should be positioned to the line
+in error, i.e. the <b>partNum</b> attribute. It is invalid because the
+value is not set to match the XML schema pattern facet "d3-[A-Z]{2}" (3
+digits followed by 2 characters).</li>
+
+<li>In the Source View, locate the <b>partNum</b> attribute under element item.
+Enter the value 333-AB.</li>
+
+<li>
+Run Validate. The PurchaseOrder.xml document should now be valid.</li>
+</UL>
+<UL>
+  <LI>
+  <HR></LI>
+  <li>Place the cursor after the &lt;items&gt; tag and besure "item" is 
+  listed in the content assist list. </li>
+<li>Rename the purchaseOrder.xsd to, say, purchaseOrderHOLD.xsd</li>
+<li>Verify that content assist still gives you "item" as above.</li>
+<li>Now select the "Reload Dependancies" button.</li>
+<li>Verify that now content assist no longer lists any items other 
+that the macro "comment".</li>
+<li>Repeat making purchaseOrder.xsd workable again.</li>
+</ul>
+<P></P><P></P><P></P><P></P><P></P></P>
+<P><B>Open an XML File for a shipped DTD catalog entry</B><BR>
+<BR>
+[put in optional section .. this isn't a customer scenerio]<BR>
+To verify that shipped DTDs are working:<BR>
+<UL>
+<LI>
+Use a web project with a standard web.xml file in it. Be sure 
+there is no web-app_2_2.dtd file in the directory. In the web.xml file 
+itself, mangle the web-app_2_2.dtd filename in the system id a little, such as 
+change it to xeb-app_2_2.dtd to be sure it can't be found via the
+normal http method (This isn't really necessary for the funtion to work,
+its just to be sure only the catalog function is in effect).
+</LI>
+<LI>
+Go to the preferences page, and open the XML Catalog. Verify there 
+is an entry for -//Sun Microsystems, Inc.//DTD Web Application 2.2//EN.
+</LI>
+<LI>
+Once all the prep work is done (files deleted, text modified), you should 
+exit and restart Eclipse to be sure you have a fresh start.
+</LI>
+<LI>
+Open the web.xml file and be sure that content assist works for that file.
+For example, right after the end of the &lt;/display-name&gt; tag, ctrl-space 
+should provide a long list of elements, starting with servlet, servlet-mapping, etc.
+This indicates the shipped DTD function is working and configured 
+correctly (at least for the web.xml file).
+</LI>
+</UL>
+</P>
+<P><B>Create an XML File from a new DTD catalog entry</B><BR><IMG border="0" height="63" src="u011ani.gif" width="63"></P>
+
+<b>The following comes directly from the 'Design' Smoke Test: XML Catalog for XML Schema</b>
+<ul>
+<li>
+Run Validate on PurchaseOrder.xml to make sure it is valid</li>
+
+<li>
+Create a new project, XMLTest2</li>
+
+<li>
+Move the PurchaseOrder.xsd into XMLTest2.</li>
+
+<li>
+Run Validate on PurchaseOrder.xml. You will notice that it is no longer
+valid. The error message should give you a hint that the file PurchaseOrder.xsd
+can no longer be found.</li>
+
+<li>
+Open the Window->Preferences and select the XML Catalog.</li>
+
+<li>
+Enter the pair <b>Id = PurchaseOrder.xsd Uri = f:\eclipse\XMLTest2\PurchaseOrder.xsd</b></li>
+
+<br>Or alternatively, you can use a relative path to the install directory
+of the workbench as follows:
+<br><b>Id = PurchaseOrder.xsd Uri = .\XMLTest2\PurchaseOrder.xsd</b>
+<li>
+Click on the Reload button to reload the catalog settings.</li>
+
+<li>
+Run Validate. The PurchaseOrder.xml document should now be valid.</li>
+</ul>
+<!-- ===========================================================
+                      Save/Validate test cases
+     ===========================================================
+-->
+<H2><FONT color="#0000ff">Save/Validate test cases</FONT></H2>
+<P><B>Saving an XML File</B><BR>
+(NOTE: the <B>Identify a local DTD</B> test case tests the save prompt on a file close.)</P>
+<UL>
+  <LI>If any files are open, select <B>File-&gt;Close All</B> (or <B>Ctrl+Shift+F4</B>) to close them.</LI>
+  <LI>Open any xml file in the <B>XMLTest2</B> project.</LI>
+  <LI>Verify the following (no-changes-made condition):
+  <UL>
+    <LI><B>File-&gt;Save</B> is disabled.</LI>
+    <LI><B>File-&gt;Save All</B> is disabled.</LI>
+    <LI><B>File-&gt;Save As</B> is enabled.</LI>
+    <LI>the <B>Save</B> toolbar button (a diskette) is disabled.</LI>
+    <LI>the <B>Save As</B> toolbar button is enabled.</LI>
+    <LI><B>Save</B> is disabled on the Source popup menu. <FONT color="#ff0000">Would be nice if the Design popup menu also had a Save selection. Open a suggestion defect.</FONT></LI>
+    <LI>no <B>*</B> appears in the file tab.</LI>
+  </UL></LI>
+  <LI>Make a change in the Source page.</LI>
+  <LI>Verify the following (changes-made condition):
+  <UL>
+    <LI><B>File-&gt;Save</B> is enabled.</LI>
+    <LI><B>File-&gt;Save All</B> is enabled</LI>
+    <LI>the <B>Save</B> toolbar button (a diskette) is enabled.</LI>
+    <LI><B>Save</B> is enabled on the Source popup menu.</LI>
+    <LI>a <B>*</B> appears in the file tab.</LI>
+  </UL></LI>
+  <LI>Hit <B>Ctrl+S</B>. </LI>
+  <LI>Verify the no-changes-made conditions apply.</LI>
+  <LI>Make a change in the Design page.</LI>
+  <LI>Verify the changes-made conditions apply.</LI>
+  <LI>File-&gt;Save All<B></B>.</LI>
+  <LI>Verify the no-changes-made conditions apply.</LI>
+  <LI>Make a change in the Properties view.</LI>
+  <LI>Verify the changes-made conditions apply.</LI>
+  <LI>Select <B>Save</B> from the Source popup menu.</LI>
+  <LI>Verify the no-changes-made conditions apply.</LI>
+  <LI>Close and then reopen the file.</LI>
+  <LI>Verify the changes that were made in the previous steps appear in the Design and Source pages.</LI>
+</UL>
+<P><B>Saving an XML File across multiple perspectives (optional)</B></P>
+<UL>
+  <LI>Open any xml file in the <B>XMLTest2</B> project.</LI>
+  <LI>Make a change to the file.</LI>
+  <LI>Open another XML Perspective by:
+  <UL>
+    <LI><B>selecting Perspective-&gt;Open-&gt;Other...</B></LI>
+    <LI>while holding down the <B>Shift</B> key, select <B>XML</B>.</LI>
+  </UL></LI>
+  <LI>Verify another XML Perspective button appears in the lefthand side of the Workbench to represent this second perspective.</LI>
+  <LI>Open the same xml file as in the first step above.</LI>
+  <LI>Verify the changes-made conditions apply in both XML Perspectives and verify that the changes made to the file in the first perspective appear in the same file in the second perspective. <FONT color="#ff0000">The * never appears in the file tab of the second perspective even when make changes to the file in the second perspective. Talk to David.</FONT></LI>
+  <LI>Make some changes to the file in the second perspective.</LI>
+  <LI>Verify these changes appear in the same file in the first perspective.</LI>
+  <LI>Close the file in the second perspective and respond <B>Yes</B> to the save changes prompt.</LI>
+  <LI>Verify the no-changes-made condition applies in the first perspective.</LI>
+</UL>
+<P><B>Validating a non well formed XML File (no DTD/Schema)</B><BR>
+(NOTE: it's important that the following be typed in. This test case tries to cover some of the more common errors that render an XML file as not being well-formed. It is not intended to verify that all possible errors are being detected and gracefully handled. )</P>
+<UL>
+  <LI>Select the <B>Create a new XML file</B> toolbar button.</LI><LI>Accept the default to <B>Create a new XML file</B></LI>
+  <LI>Go to the Next page
+    <UL>
+        <LI>Select <B>XMLTest2</B> as the folder</LI>
+        <LI>Specify a File name of <B>NonWellFormed</B></LI>
+        <LI>Select <B>Finish</B></LI>
+  </UL></LI>
+  <LI>Prompt for content assist.</LI>
+  <LI>Select <B>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;.</B></LI>
+  <LI>Create a new line after the XML declaration.</LI>
+  <LI>Prompt for content assist.</LI>
+  <LI>Select comment.</LI>
+  <LI>Embed more than 2 consecutive dashes in the comment. 
+        <FONT color="#0000ff">(NOTE: more than 2 consecutive dashes can not be embedded within a comment)</FONT></LI>
+  <LI>Type in the remaining lines as shown below: 
+        <FONT color="#ff0000">(I can't show the lines until defect 177755 is fixed ... until then, here's the type of things that cause 
+        a document to not be well-formed):</FONT>
+  <UL>
+    <LI>create a start and end tag that don't match in their case sensitivity 
+        (e.g., &lt;tag&gt; and &lt;/Tag&gt;). </LI>
+    <LI>create a start and end tag where the start tag contains an attribute value that is not 
+        enclosed in quotes.
+        <FONT color="#0000ff">(NOTE: this is permitted in HTML, but not XML)</FONT></LI>
+    <LI>create tags that are not properly nested.
+        <FONT color="#0000ff">(NOTE: a child tag must be completed before its parent tag)</FONT></LI>
+    <LI>create a start tag without a corresonding end tag.
+        <FONT color="#0000ff">(NOTE: all start tags must have a corresponding end tag unless the 
+        tag is an empty tag, in which case the shorthand version can be used (&lt;shortTag/&gt;)).</FONT></LI>
+    <LI>do not provide an attribute value (=&quot;value&quot;).
+        <FONT color="#0000ff">(NOTE: this is permitted in HTML for those attributes that have 
+        only one value, but it's not valid in XML)</FONT></LI>
+     <LI>define an attribute more than once in a start tag.</LI>
+  </UL></LI>
+  <LI>Save the file.</LI>
+  <LI>Verify errors are listed in the Tasks view for the above violations and that error markers appear on the appropriate 
+         lines in the Source page. <FONT color="#ff0000">I'm not sure how the Design page handles any of these violations 
+         and what will appear in the Outline and Properties view. Talk to Craig and David.</FONT></LI>
+  <LI>Reopen the file and verify everything was saved.</LI>
+</UL>
+
+
+<P><B>Validate an XML File based on a DTD</B></P>
+<UL>
+<LI>Open <B>fromScratch.xml</B>.</LI>
+<LI>Delete a character from one of the start tags (mistyping a tag is not uncommon).</LI>
+<LI>Prompt for content assist within the bad tag. Verify a message appears in the status area
+of the Workbench indicating that the bad tag is an unknown tag.</LI>
+<LI>Select the <B>Validate</B> toolbar button.</LI>
+<LI>Verify an error appears in the Tasks view and an error marker appears in the Source page
+to flag the invalid tag.</LI>
+<LI>Select <B>Edit->Undo</B> from the Source page.</LI>
+<LI>Verify the bad tag error no longer appears in the Tasks view.</LI>
+<LI>Remove the <B>Header</B> end tag from the Source page.</LI>
+<LI>Save the file.</LI>
+<LI>Verify an error appears in the Tasks view indicating that the <B>Header</B> end tag is missing</LI>
+<LI>Close the file, responding <B>Yes</B> to the save changes prompt.</LI>
+<LI>Double-click on the error in the Tasks view, and verify <B>fromScratch.xml</B> opens to the
+appropriate line in the Source page of the XML Editor.</LI>
+<LI>Here's some other violations that can be attempted:
+<UL>
+<LI>Specify a bad attribute.</LI>
+<LI>Specify a bad attribute value.</LI>
+<LI>Specify child tags out of sequencing order</LI>
+<LI>Violate the occurrence indicator for a tag (e.g., if the DTD shows ?, then only
+0 or 1 occurrences of the tag is permitted).
+</UL></LI>
+<LI>Save the file.</LI>
+<LI>Verify errors are listed in the Tasks view for the above violations and that error markers appear on the appropriate 
+lines in the Source page. <FONT color="#ff0000">I'm not sure how the Design page handles any of these violations 
+and what will appear in the Outline and Properties view. Talk to Craig and David.</FONT></LI>
+<LI>Reopen the file and verify everything was saved.</LI>
+</UL>
+
+<!--  removed since done elsewhere as part of other scenerios
+<P><B>Validate an XML File based on a Schema</B><BR>
+-->
+<IMG border="0" height="63" src="u011ani.gif" width="63"></P>
+
+<!-- ===========================================================
+                        Source Specific test cases
+     ===========================================================
+-->
+<H2><B><FONT color="#0000ff">Source Specific test cases (optional)</FONT></B></H2>
+<P><B>Using the Auto Completion Content Assist Preference</B><BR>
+<UL>
+<LI>Open a any XML file that has enough tags to provide syntax hightlighting.</LI>
+<LI>While that file is left open, go to the Preferences page, select
+XML Editor, then Source Styles. </LI>
+<LI>On that page, use the mouse to "select" a tag name. The tag name is not literally
+selected, but when you click on an element in the example text, the list
+above it will display the type of element it is, and what its current colors are.</LI>
+<LI>For "tag name", select the bold check box. Then press Apply, and you should
+see the change take effect in your active editor.</LI>
+<LI>Select "Defaults" and make sure the tag names are set back to not bold.</LI>
+</UL>
+<IMG border="0" height="63" src="u011ani.gif" width="63"></P>
+<P><B>Double-Clicking Within the Source</B> <BR>
+(NOTE: if you continue to double-click at a given cursor position, the selection area will continue to expand. When the maximum region area has been reached, the next double-click will cause the original selection. So, the selections will wrap/cycle. <FONT color="#0000ff">Cool!</FONT>).</P>
+<UL>
+  <LI>Open <B>JobDesc.xml</B>.</LI>
+  <LI>Double-clicking within tag content:
+  <UL>
+    <LI>Double-click within <B>Middleware</B> on line 7.</LI>
+    <LI>Verify <B>Middleware</B> is selected in the Source and Design pages and <B>BusType</B> is selected in the Outline view. <FONT color="#ff0000">Not sure what the Properties view is supposed to show. It goes blank. See defect 177753. Also, <B>Middleware</B> wasn't selected in the Design page as had expected. The Design page only seems to stay in sync at the element/tag level like the Outline view. Talk to Craig about this.</FONT></LI>
+    <LI>Double-click again at the same cursor position.</LI>
+    <LI>Verify <B>Application and Middleware Software</B> is selected in the Source and Design pages and <B>BusType</B> remains to be the only thing selected in the Outline view.</LI>
+    <LI>Double-clicking again will cause cycling back to the original selection.</LI>
+  </UL></LI>
+  <LI>Double-clicking within a tag name:
+  <UL>
+    <LI>Double-click within <B>HowToApply</B> on line 61.</LI>
+    <LI>Verify <B>HowToApply</B> is selected in the Source page, Design page, and Outline view. 
+        <B>class</B>, <B>distribute</B>, <B>id</B>, and <B>name</B> should appear in the 
+        Properties view. Only <B>distribute</B> should show a value.</LI>
+    <LI>Double-click again at the same cursor position.</LI>
+    <LI>Verify the whole <B>HowToApply</B> start tag (including its delimiters) is selected 
+        in the Source page. <B>HowToApply</B> should remain selected in
+        the Design page and Outline view. <B><FONT color="#ff0000">HowToApply</FONT></B><FONT color="#ff0000"> and all descendents become selected in the Outline view (defect 177752). Also, the Properties view shows no properties (defect 177753).</FONT></LI>
+    <LI>Double-clicking again will cause cycling back to the original selection.</LI>
+  </UL></LI>
+  <LI>Double-clicking within an attribute name:
+  <UL>
+    <LI>Type <B>Ctrl+End</B> to position the cursor at the end of the file.</LI>
+    <LI>Double-click within <B>distribute</B> on line 61. Verify <B>distribute</B> is selected 
+        in the Source page and <B>HowToApply</B> is selected in the Design page and Outline 
+        view. <B>class</B>, <B>distribute</B>, <B>id</B>, and <B>name</B> should appear in 
+        the Properties view. Only <B>distribute</B> should show a value.</LI>
+    <LI>Double-click at the same cursor position. Verify <B>distribute="internal"</B> is
+        selected in the Source. Nothing should change in the Design page or views.</LI>                 
+    <LI>Double-click at the same cursor position. Verify the whole <B>HowToApply</B> start tag is selected in the Source page (including its delimiters). Nothing should change in the Design page or views.<B><FONT color="#ff0000">HowToApply</FONT></B><FONT color="#ff0000"> and all descendents become selected in the Outline view (defect 177752). Also, the Properties view shows no properties (defect 177753).</FONT></LI>
+    <LI>Double-clicking again will cause cycling back to the original selection.</LI>
+  </UL></LI>
+ <LI>Double-clicking within an attribute value:
+  <UL>
+    <LI>Type <B>Ctrl+Home</B> to position the cursor at the beginning of the file.</LI>
+    <LI>Scroll down such that line 61 is visible.</LI>
+    <LI>Double-click within <B>internal</B> on line 61. Verify <B>internal</B> is selected 
+        in the Source page and <B>HowToApply</B> is selected in the Design page and Outline 
+        view. <B>class</B>, <B>distribute</B>, <B>id</B>, and <B>name</B> should appear in 
+        the Properties view. Only <B>distribute</B> should show a value.</LI>
+    <LI>Double-click at the same cursor position. Verify <B>"internal"</B> is
+        selected in the Source. Nothing should change in the Design page or views.</LI>
+    <LI>Double-click at the same cursor position. Verify <B>distribute="internal"</B> is
+        selected in the Source. Nothing should change in the Design page or views.</LI>                 
+    <LI>Double-click at the same cursor position. Verify the whole <B>HowToApply</B> start tag is selected in the Source page (including its delimiters). Nothing should change in the Design page or views. <B><FONT color="#ff0000">HowToApply</FONT></B><FONT color="#ff0000"> and all descendents become selected in the Outline view (defect 177752). Also, the Properties view shows no properties (defect 177753).</FONT></LI>
+    <LI>Double-clicking again will cause cycling back to the original selection.</LI>
+  </UL></LI>
+</UL>
+
+<P><B>Formatting a File Created by Different Editors</B><BR>
+<ul>
+<li>
+Import the <b>JobPosting.dtd</b> and <b>JobDesc.xml</b></li>
+
+<li>
+Open the JobDesc.xml. Check the source for indentation to see if it preserves
+the white space from the original document.</li>
+
+<li>
+The orignal document uses spaces and tabs, so the formatting will appear a little wrong.
+By using the right/left arrows, verify that some space is spaces and some space
+is tab characters.</li>
+<LI>Use 'format document' to be sure it formats. </LI>
+<LI>The default is to format with spaces ... verify only spaces remain in file, not tab charactes. 
+(Just a little movement with the arrow keys should suffice.</LI>
+<LI>Go to the preference page to change the format settings for the XML Editor
+to use the tab character instead of 4 spaces. While there, verify that the dialog
+will not allow other values to be intered except "whitespace" ...'\t's and blanks.
+</LI>
+<LI>Format the document again and be sure this time tab characters were used.</LI>
+</ul>
+<IMG border="0" height="63" src="u011ani.gif" width="63"></P>
+<!-- ===========================================================
+                           Other test cases
+     ===========================================================
+-->
+<H2><B><FONT color="#0000ff">Other test cases</FONT></B></H2>
+<P><B>Associate the XML Editor to a new file type</B></P>
+<UL>
+  <LI>Window-&gt;Preferences<B></B>.</LI>
+  <LI>Expand <B>Workbench</B>.</LI>
+  <LI>Select <B>File Editors</B>.</LI>
+  <LI>Select the <B>Add</B> button to add a new file type.</LI>
+  <LI>Specify a file type of <B>*.set</B> and then close the Add dialog.</LI>
+  <LI>Verify <B>*.set</B> is selected in the list of file types.</LI>
+  <LI>Select the <B>Add</B> button to associate the XML Editor to the new file type.</LI>
+  <LI>Select <B>XML Editor</B> from the list of editors. Verify it appears with its own special icon. Close the dialog. <FONT color="#ff0000">NOTE: waiting to hear back from OTI on how can prevent 2 XML Editor entries from appearing in the list.</FONT></LI>
+  <LI>Verify <B>XML Editor</B> appears as the default editor now for the <B>*.set</B> file type.</LI>
+  <LI>Open <B>gotchaTCBeans.set</B> from the Navigator view. Verify it opens to the XML Editor.</LI>
+</UL>
+<P><FONT color="#0000ff">THE END!</FONT></P>
+</body>
+</html>
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/LargeNonDefault.html b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/LargeNonDefault.html
new file mode 100644
index 0000000..3bcdd14
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/LargeNonDefault.html
@@ -0,0 +1,665 @@
+<!DOCTYPE HTML PUBLIC "-//W3C/DTD/ HTML 4.01 Transitional//EN">
+
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<meta name="GENERATOR" content="Mozilla/4.7 [en] (WinNT; U) [Netscape]">
+<META content="text/css" http-equiv="Content-Style-Type">
+<title>smoke</title>
+</head>
+<body>
+<h2> Smoke Test - XML Editor</h2>
+Last updated: June 25, 2001
+<P>This Smoke Test primarily focuses on the RTP portion of the XML 
+Editior, which is the Source page of the XML Editor. It also performs 
+some integration testing. For example, it tests synchronization between 
+the Design and Source pages of the XML Editor, as well as with the 
+Outline and Properties views. It also verifies that files created 
+through the XML File wizard and references to the XML Catalog are 
+supported as expected.</P>
+<P><FONT color="#ff0000"><B>NOTE</B>: XML files are case-sensitive so be sure that things appear 
+exactly as noted.</FONT></P>
+
+<!-- ===========================================================
+                           Setup
+     ===========================================================
+-->
+<H2><FONT color="#0000ff">Setup</FONT></H2>
+<P><B>Starting Clean</B></P>
+<ul>
+    <li> Delete any existing workbench</li>
+    <li> Start Eclipse</li>
+</ul>
+<P><B>Open an XML Perspective<BR>
+</B></P>
+<UL>
+    <LI>Select the <B>Open Perspective</B> toolbar button in the upper left</LI>
+    <LI>Select <B>Other...</B></LI>
+    <LI>Select <B>XML</B></LI>
+    <LI>Verify the following views appear in the XML perspective: <FONT color="#ff0000">The location of the Outline and Navigator views are reversed from the Resource and Web perspectives. Do we want to try to be consistent across the perspectives? Also, I opened <B>defect</B> 177664 to enable easy access to the Properties view from within the XML perspective. If this view isn't included in the Perspective because its use is limited, then recommend we at least provide a Show or Hide Properties View toolbar button (similar to the buttons that Page Designer provides).</FONT></LI>
+</UL>
+<P><B>Project Creation and File Imports<BR>
+</B></P>
+<UL>
+    <LI>Create a Project, <B>XMLTest2</B> </LI>
+    <LI>Import the following files into this project:
+    <UL>
+        <LI><B>PurchaseOrder.xsd</B></LI>
+        <LI><B>Invoice.dtd</B></LI>
+    <LI><B>JobDesc.xml</B></LI>
+    <LI><B>Wireless.xml</B></LI>
+    <LI><B>gotchaTCBeans.set</B></LI>
+    <LI><B>ATS.dtd</B></LI>
+    <LI><FONT color="#ff0000">any others?</FONT></LI>
+    </UL>
+    </LI>
+</UL>
+
+<!-- ===========================================================
+                    Create/Open/Edit test cases
+     ===========================================================
+-->
+<H2><FONT color="#0000ff">Create/Open/Edit test cases</FONT></H2>
+<P><B>Create an XML File from scratch</B></P>
+<UL>
+    <LI>Select the <B>Create a new XML file</B> toolbar button.</LI>
+    <LI>Verify the Create a XML File wizard appears and the Finish button is disabled. <FONT color="#ff0000"><B>DEFECT:</B> 177660 - XML File wizard: disable Finish button on the first page</FONT>.</LI>
+    <LI>Accept the default to <B>Create a new XML file</B></LI>
+    <LI>Go to the Next page
+    <UL>
+        <LI>Select <B>XMLTest2</B> as the folder</LI>
+        <LI>Specify a File name of <B>fromScratch</B></LI>
+        <LI>Select <B>Finish</B></LI>
+    </UL>
+    </LI>
+    <LI>Verify the following:
+    <UL>
+        <LI>fromScratch.xml appears in the Navigator view.</LI>
+        <LI>fromScratch.xml is open to the Design page of the XML Editor and has focus.</LI>
+        <LI>the Design tab appears before the Source tab in the XML Editor.</LI>
+        <LI>the Design and Source page show no content.</LI>
+        <LI>the Outline and Properties views show nothing.</LI>
+    </UL>
+    </LI>
+    <LI>Switch to the Source page. Verify the cursor appears at the beginning of the file.</LI>
+    <LI>Right mouse button 2 and verify a popup menu appears.</LI>
+    <LI>Hit <B>Ctrl+Space</B>. Verify the content assist proposal list appears.</LI>
+    <LI>Select <B>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</B></LI>
+    <LI>Verify &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; is inserted and appears syntax highlighted and an entry appears for it in the Outline view.</LI>
+    <LI>Position the cursor within the XML declaration and verify <B>version</B> and <B>encoding</B> appear in the Properties view. <FONT color="#ff0000">This used to work, but now it's not working. Opened <B>defect</B> 177662 - XML declaration attributes not appearing in Properties view. If we decide to not treat version and encoding as attributes, then this step should be removed.</FONT></LI>
+    <LI>Continue to the next section.</LI>
+</UL>
+<P><B>Identify a local DTD (</B>verifies a DTD is immediately recognized; in the past, you had to close and reopen the Workbench<B>)</B></P>
+<UL>
+    <LI>Type the following after the XML declaration in <B>fromScratch.xml</B>: <B>&lt;!DOCTYPE Invoice SYSTEM &quot;Invoice.dtd&quot;&gt;</B>. The text should be syntax highlighted as you type and you should see an entry get added to the Outline view.</LI>
+    <LI>Hit <B>Enter</B> to create a new line after the DOCTYPE declaration.</LI>
+    <LI>Hit <B>Ctrl+Space</B>.Verify only <B>Invoice</B> and <B>comment</B> appear in the proposal list. (<B>NOTE</B>: <B>Invoice</B> is the root element)</LI>
+    <LI>Hit <B>Enter</B> to accept <B>Invoice</B> as a selection. Verify the Invoice start and end tags are inserted into the Source and the cursor appears between them. An element entry should appear for Invoice in the Outline view. (<B>NOTE</B>: XML is case-sensitive so be sure you see Invoice and not invoice everywhere).</LI>
+    <LI>Hit <B>Ctrl+Space</B>. Verify the following appears in the proposal list (in the order shown): <FONT color="#ff0000">Item is appearing before Header. The default is not to sort the list alphabetically. That means the list should be sorted based on the order in which the child tags are defined in the element definition for Invoice in the DTD. In other words, users should see child tags listed according to their sequencing order in the DTD, which the DTD Editor shows. Violating the sequencing order causes an XML file to become not valid. <B>DEFECT:</B> 177668</FONT>
+    <UL>
+        <LI>Header</LI>
+        <LI>Item</LI>
+        <LI>comment</LI>
+    </UL>
+    </LI>
+    <LI>Hit <B>Enter</B> to accept <B>Header</B> as a selection.</LI>
+    <LI>Verify the Source now looks like the following and the cursor appears before <B>invoiceNumber</B>:<IMG border="0" height="83" src="identifyDTD.jpg" width="485"></LI>
+    <LI>Verify <B>Header</B> appears nested under <B>Invoice</B> in the Outline view.</LI>
+  <LI>Close this file, and respond <B>Yes</B> when prompted to save the changes.</LI>
+  <LI>Reopen the file and verify the changes were saved.</LI>
+  <LI>Close the file. Verify no save changes prompt appears.</LI>
+</UL>
+<P><B>Create an XML File from an imported DTD</B></P>
+<UL>
+    <LI>Select the <B>File-&gt;New-&gt;XML File</B>.</LI>
+    <LI>Verify the Create a XML File wizard appears.</LI>
+    <LI>Select to <B>Create a new XML file from a DTD file</B></LI>
+    <LI>Go to the Next page
+    <UL>
+        <LI>Select <B>XMLTest2</B> as the folder</LI>
+        <LI>Specify a File name of <B>fromLocalDTD</B></LI>
+        <LI>Go to the Next page</LI>
+    </UL>
+    </LI>
+    <LI>Select the <B>Import File</B> button
+    <UL>
+        <LI>Use the Browse button to find <B>testcase.dtd</B></LI>
+        <LI>Select <B>XMLTest2</B> as the folder. <FONT color="#ff0000">Would be nice if this were already filled in. Open a defect.</FONT></LI>
+        <LI>Select <B>Finish</B> to close the Import File wizard</LI>
+    </UL>
+    </LI>
+    <LI>Expand <B>XMLtest2</B> and then select <B>testcase.dtd</B>. <FONT color="#ff0000">Was expecting to see the imported file selected in the Workbench files list, but it wasn't. Open a defect.</FONT></LI>
+    <LI>Go to the Next page.</LI>
+    <LI>Select <B>testcase</B> as the Root Element.</LI>
+    <LI>Accept the default to <B>Create required content only</B>.</LI>
+    <LI>Verify <B>testcase.dtd</B> appears as the System Id.</LI>
+    <LI>Select Finish. Verify <B>fromLocalDTD.xml</B> appears in the XML Editor. Verify the Source page looks like the following: <IMG border="0" height="290" src="importDTD.jpg" width="660"></LI>
+  <LI>Verify the Outline view and the formatting indentation reflect the proper element/tag hierarchy. Here's what the Outline view should look like:<IMG border="0" height="297" src="outline1.jpg" width="655"></LI>
+  <LI>Verify selection synchronization between the Design page, Source page, Outline view, 
+        and Properties view.
+    <UL>
+        <LI>From the Source page, click within the <B>header</B> start tag. 
+            Verify <B>header</B> is selected in the Outline view and in the Design 
+            page and that the following properties and property values appear in the 
+            Properties view:
+        <TABLE border="1">
+            <TBODY>
+                <TR>
+                    <TD width="100"><B>Property</B></TD>
+                    <TD width="76"><B>Value</B></TD>
+                </TR>
+                <TR>
+                    <TD width="100">category</TD>
+                    <TD width="76">webtool</TD>
+                </TR>
+                <TR>
+                    <TD width="100">number</TD>
+                    <TD width="76">idvalue0</TD>
+                </TR>
+                <TR>
+                    <TD width="100">state</TD>
+                    <TD width="76">&nbsp;</TD>
+                </TR>
+                <TR>
+                    <TD width="100">subCategory</TD>
+                    <TD width="76">Accessability</TD>
+                </TR>
+                <TR>
+                    <TD width="100">subSubCategory</TD>
+                    <TD width="76">&nbsp;</TD>
+                </TR>
+            </TBODY>
+        </TABLE>
+        </LI>
+	<LI>From the Outline view, select the <B>testBucket</B> tag.
+            Verify <B>testBucket</B> is selected in the Design page and the current marker
+            in the lefthand margin of the Source page indicates the range of the 
+            <B>testBucket</B> tag. The Properties view should show a property of <B>type</B>
+            with a value of <B>ComponentTest</B>.
+        </LI>
+    </UL>   
+    </LI> 
+    <LI>Verify edit synchronization between the Design page, Source page, and 
+        Properties view (focus here is on adding attributes and attribute values).
+    <UL>
+        <LI>From the Source page, use content assist to insert an attribute and attribute value
+            for the <B>header</B> start tag.
+            <UL>
+            <LI>Position the cursor after the <B>category</B> attribute in the <B>header</B> start tag.</LI>
+            <LI>Type <B>space</B> and then hit prompt for content assist.</LI>
+            <LI>Verify only <B>state</B> and <B>subSubCategory</B> appear in the proposal list (content assist is smart enough not to list any attributes that already exist in the start tag since attributes can only appear once. <FONT color="#0000ff">Cool!</FONT>).</LI>
+            <LI>Select <B>state</B>.</LI>   
+            <LI>Verify <B>state="UnderConstruction"</B> is inserted in the Source page (content assist automatically inserts any default values. <FONT color="#0000ff">Cool!</FONT>). Verify the Design page and Properties view reflect this change.</LI>         
+            </UL>
+        </LI>
+        <LI>From the Properties view, update the <B>state</B> attribute value to "UnderReview" 
+            (a pulldown list of values should be available). Verify the change is reflected
+            in the Source and Design pages.
+        </LI>
+        <LI>From the Design page, add an attribute and attribute value to the <B>header</B> tag.
+            <UL>
+            <LI>Bring up the popup menu for the <B>header</B> tag.</LI>
+            <LI>Select <B>Add Attribute->subSubCategory</B> from the popup menu (it's smart
+                enough to know which attributes haven't been specified yet ... like content 
+                assist. Cool!).</LI>
+            <LI>Type in a value of <B>Keyboard support</B>.</LI>
+            <LI>Verify the change is reflected in the Source page and Properties view</LI>
+            </UL>
+        </LI>
+    </UL>
+    </LI>
+</UL>
+<P><B>Open an XML File that references a remote DTD</B></P>
+<UL>
+    <LI>Open the <B>Wireless.xml</B> file.</LI>
+    <LI>Verify it looks like the following in the Source page:<IMG border="0" height="239" src="wireless.jpg" width="656"></LI>
+    <LI>Verify the Outline view and the formatting indentation reflect the proper 
+        element/tag hierarchy. Here's what the Outline view should look like: <IMG border="0" height="189" src="outline2.jpg" width="656"></LI> 
+    <LI>Verify content assist <FONT color="#ff0000">Defect 176379 (in verify state, but still not working)</FONT>.</LI>
+        <UL>
+           <LI>Create a new line after the <B>wml</B> start tag.</LI>
+           <LI>Prompt for content assist on the new line.</LI>
+           <LI>Verify the following appear as proposals (in the order shown): 
+               <UL>
+                   <LI>head</LI>
+                   <LI>template</LI>
+                   <LI>card</LI>
+               </UL>
+           </LI>
+           <LI>Create a new line after the <B>wml</B> start tag.</LI>
+           <LI>Type a space before the ending delimiter on the card start tag.</LI>
+           <LI>Prompt for content assist</LI>
+           <LI>Verify the following appear as proposals (not necessarily in the
+               order shown). 
+               <UL>
+                   <LI>title</LI>
+                   <LI>newcontext</LI>
+                   <LI>ordered</LI>
+                   <LI>xml:lang</LI>
+                   <LI>onenterbackward</LI>
+                   <LI>ontimer</LI>
+                   <LI>id</LI>
+                   <LI>class</LI>
+               </UL>
+           </LI>
+           <LI>Position the cursor within the <B>method</B> attribute value in the <B>go</B> start tag.</LI>
+           <LI>Prompt for content assist</LI>
+           <LI>Verify <B>post</B> and <B>get</B> appear as proposals.</LI>
+        </UL>
+    <LI>Verify selection synchronization between the Design page, Source page, Outline view, 
+        and Properties view.
+    <UL>
+        <LI>From the Source page, click within the <B>card</B> start tag. 
+            Verify <B>card</B> is selected in the Outline view and in the Design 
+            page and that the content assist proposals listed above for the
+            <B>card</B> tag appear as properties in the Properties view. No values should appear for these properties.</LI>
+	<LI>From the Outline view, select the <B>postfield</B> tag.
+            Verify <B>postfield</B> is selected in the Design page and the current marker
+            in the lefthand margin of the Source page indicates the range of the 
+            <B>postfield</B> tag. The Properties view should show the following properties,
+            none of which should have a value:
+               <UL>
+                   <LI>name</LI>
+                   <LI>value</LI>
+                   <LI>id</LI>
+                   <LI>class</LI>
+               </UL>
+           </LI>
+    </UL>   
+    </LI>
+    <LI>Verify edit synchronization between the Design page, Source page, Outline view, and 
+        Properties view (focus here is on adding elements/tags).
+    <UL>
+        <LI>From the Source page, copy and paste the <B>card</B> tag.
+            <UL>
+            <LI>Position the cursor in the <B>card</B> start tag.</LI>
+            <LI>Notice the range of the <B>card</B> tag in the lefthand margin area.</LI>
+            <LI>Copy this range of lines using the <B>Edit->Copy</B> pulldown menu selection.</LI>
+            <LI>Paste after the <B>card</B> end tag using Ctrl+V.</LI>
+            <LI>Verify the appropriate lines were pasted n the Source page.
+                Verify the Design page, Outline view, and the Properties 
+                view reflect this change.</LI>         
+            </UL>
+        </LI>
+        <LI>From the Design page, add another <B>card</B> tag.
+            <UL>
+            <LI>Bring up the popup menu for the <B>wml</B> tag.</LI>
+            <LI>Select <B>Add Child->card</B> from the popup menu.</LI>
+            <LI>Verify the Source page, Outline view, and the Properties
+                view reflect this change. NOTE: it should have generated out
+                the same thing as the original card tag, with the exception
+                that a <B>method</B> attribute should not exist in the <B>go</B> start tag. </LI>
+            </UL>
+        </LI>
+    </UL>
+    </LI> 
+</UL>
+<P><B>Create and Validate an XML File from a schema</B><BR>
+
+<P>(these steps are taken from the 'Design' smoke test, except the Source Page is the focus)</P>
+<ul>
+<li>
+Right mouse button 2 on the PurchaseOrder.xsd and select <b>Create XML
+File</b>.</li>
+
+<li>
+Accept the default file names.</li>
+
+<li>
+In the Select Root Element page, choose <b>purchaseOrder</b> as root element.</li>
+
+<li>
+Choose <b>Create required and optional content</b> to create a minimal
+document.</li>
+
+<li>
+Enter <b>po</b> as the namespace prefix.</li>
+
+<li>On Finish, a PurchaseOrder.xml is created and the XML Editor is opened. (Select Source Page if not already there.)</li>
+
+<li>
+Run Validate. The PurchaseOrder.xml should be invalid.</li>
+
+<li>
+Double click on the error message. It should be positioned to the line
+in error, i.e. the <b>partNum</b> attribute. It is invalid because the
+value is not set to match the XML schema pattern facet "d3-[A-Z]{2}" (3
+digits followed by 2 characters).</li>
+
+<li>In the Source View, locate the <b>partNum</b> attribute under element item.
+Enter the value 333-AB.</li>
+
+<li>
+Run Validate. The PurchaseOrder.xml document should now be valid.</li>
+</UL>
+<UL>
+  <LI>
+  <HR></LI>
+  <li>Place the cursor after the &lt;items&gt; tag and besure "item" is 
+  listed in the content assist list. </li>
+<li>Rename the purchaseOrder.xsd to, say, purchaseOrderHOLD.xsd</li>
+<li>Verify that content assist still gives you "item" as above.</li>
+<li>Now select the "Reload Dependancies" button.</li>
+<li>Verify that now content assist no longer lists any items other 
+that the macro "comment".</li>
+<li>Repeat making purchaseOrder.xsd workable again.</li>
+</ul>
+<P></P><P></P><P></P><P></P><P></P></P>
+<P><B>Open an XML File for a shipped DTD catalog entry</B><BR>
+<BR>
+[put in optional section .. this isn't a customer scenerio]<BR>
+To verify that shipped DTDs are working:<BR>
+<UL>
+<LI>
+Use a web project with a standard web.xml file in it. Be sure 
+there is no web-app_2_2.dtd file in the directory. In the web.xml file 
+itself, mangle the web-app_2_2.dtd filename in the system id a little, such as 
+change it to xeb-app_2_2.dtd to be sure it can't be found via the
+normal http method (This isn't really necessary for the funtion to work,
+its just to be sure only the catalog function is in effect).
+</LI>
+<LI>
+Go to the preferences page, and open the XML Catalog. Verify there 
+is an entry for -//Sun Microsystems, Inc.//DTD Web Application 2.2//EN.
+</LI>
+<LI>
+Once all the prep work is done (files deleted, text modified), you should 
+exit and restart Eclipse to be sure you have a fresh start.
+</LI>
+<LI>
+Open the web.xml file and be sure that content assist works for that file.
+For example, right after the end of the &lt;/display-name&gt; tag, ctrl-space 
+should provide a long list of elements, starting with servlet, servlet-mapping, etc.
+This indicates the shipped DTD function is working and configured 
+correctly (at least for the web.xml file).
+</LI>
+</UL>
+</P>
+<P><B>Create an XML File from a new DTD catalog entry</B><BR><IMG border="0" height="63" src="u011ani.gif" width="63"></P>
+
+<b>The following comes directly from the 'Design' Smoke Test: XML Catalog for XML Schema</b>
+<ul>
+<li>
+Run Validate on PurchaseOrder.xml to make sure it is valid</li>
+
+<li>
+Create a new project, XMLTest2</li>
+
+<li>
+Move the PurchaseOrder.xsd into XMLTest2.</li>
+
+<li>
+Run Validate on PurchaseOrder.xml. You will notice that it is no longer
+valid. The error message should give you a hint that the file PurchaseOrder.xsd
+can no longer be found.</li>
+
+<li>
+Open the Window->Preferences and select the XML Catalog.</li>
+
+<li>
+Enter the pair <b>Id = PurchaseOrder.xsd Uri = f:\eclipse\XMLTest2\PurchaseOrder.xsd</b></li>
+
+<br>Or alternatively, you can use a relative path to the install directory
+of the workbench as follows:
+<br><b>Id = PurchaseOrder.xsd Uri = .\XMLTest2\PurchaseOrder.xsd</b>
+<li>
+Click on the Reload button to reload the catalog settings.</li>
+
+<li>
+Run Validate. The PurchaseOrder.xml document should now be valid.</li>
+</ul>
+<!-- ===========================================================
+                      Save/Validate test cases
+     ===========================================================
+-->
+<H2><FONT color="#0000ff">Save/Validate test cases</FONT></H2>
+<P><B>Saving an XML File</B><BR>
+(NOTE: the <B>Identify a local DTD</B> test case tests the save prompt on a file close.)</P>
+<UL>
+  <LI>If any files are open, select <B>File-&gt;Close All</B> (or <B>Ctrl+Shift+F4</B>) to close them.</LI>
+  <LI>Open any xml file in the <B>XMLTest2</B> project.</LI>
+  <LI>Verify the following (no-changes-made condition):
+  <UL>
+    <LI><B>File-&gt;Save</B> is disabled.</LI>
+    <LI><B>File-&gt;Save All</B> is disabled.</LI>
+    <LI><B>File-&gt;Save As</B> is enabled.</LI>
+    <LI>the <B>Save</B> toolbar button (a diskette) is disabled.</LI>
+    <LI>the <B>Save As</B> toolbar button is enabled.</LI>
+    <LI><B>Save</B> is disabled on the Source popup menu. <FONT color="#ff0000">Would be nice if the Design popup menu also had a Save selection. Open a suggestion defect.</FONT></LI>
+    <LI>no <B>*</B> appears in the file tab.</LI>
+  </UL></LI>
+  <LI>Make a change in the Source page.</LI>
+  <LI>Verify the following (changes-made condition):
+  <UL>
+    <LI><B>File-&gt;Save</B> is enabled.</LI>
+    <LI><B>File-&gt;Save All</B> is enabled</LI>
+    <LI>the <B>Save</B> toolbar button (a diskette) is enabled.</LI>
+    <LI><B>Save</B> is enabled on the Source popup menu.</LI>
+    <LI>a <B>*</B> appears in the file tab.</LI>
+  </UL></LI>
+  <LI>Hit <B>Ctrl+S</B>. </LI>
+  <LI>Verify the no-changes-made conditions apply.</LI>
+  <LI>Make a change in the Design page.</LI>
+  <LI>Verify the changes-made conditions apply.</LI>
+  <LI>File-&gt;Save All<B></B>.</LI>
+  <LI>Verify the no-changes-made conditions apply.</LI>
+  <LI>Make a change in the Properties view.</LI>
+  <LI>Verify the changes-made conditions apply.</LI>
+  <LI>Select <B>Save</B> from the Source popup menu.</LI>
+  <LI>Verify the no-changes-made conditions apply.</LI>
+  <LI>Close and then reopen the file.</LI>
+  <LI>Verify the changes that were made in the previous steps appear in the Design and Source pages.</LI>
+</UL>
+<P><B>Saving an XML File across multiple perspectives (optional)</B></P>
+<UL>
+  <LI>Open any xml file in the <B>XMLTest2</B> project.</LI>
+  <LI>Make a change to the file.</LI>
+  <LI>Open another XML Perspective by:
+  <UL>
+    <LI><B>selecting Perspective-&gt;Open-&gt;Other...</B></LI>
+    <LI>while holding down the <B>Shift</B> key, select <B>XML</B>.</LI>
+  </UL></LI>
+  <LI>Verify another XML Perspective button appears in the lefthand side of the Workbench to represent this second perspective.</LI>
+  <LI>Open the same xml file as in the first step above.</LI>
+  <LI>Verify the changes-made conditions apply in both XML Perspectives and verify that the changes made to the file in the first perspective appear in the same file in the second perspective. <FONT color="#ff0000">The * never appears in the file tab of the second perspective even when make changes to the file in the second perspective. Talk to David.</FONT></LI>
+  <LI>Make some changes to the file in the second perspective.</LI>
+  <LI>Verify these changes appear in the same file in the first perspective.</LI>
+  <LI>Close the file in the second perspective and respond <B>Yes</B> to the save changes prompt.</LI>
+  <LI>Verify the no-changes-made condition applies in the first perspective.</LI>
+</UL>
+<P><B>Validating a non well formed XML File (no DTD/Schema)</B><BR>
+(NOTE: it's important that the following be typed in. This test case tries to cover some of the more common errors that render an XML file as not being well-formed. It is not intended to verify that all possible errors are being detected and gracefully handled. )</P>
+<UL>
+  <LI>Select the <B>Create a new XML file</B> toolbar button.</LI><LI>Accept the default to <B>Create a new XML file</B></LI>
+  <LI>Go to the Next page
+    <UL>
+        <LI>Select <B>XMLTest2</B> as the folder</LI>
+        <LI>Specify a File name of <B>NonWellFormed</B></LI>
+        <LI>Select <B>Finish</B></LI>
+  </UL></LI>
+  <LI>Prompt for content assist.</LI>
+  <LI>Select <B>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;.</B></LI>
+  <LI>Create a new line after the XML declaration.</LI>
+  <LI>Prompt for content assist.</LI>
+  <LI>Select comment.</LI>
+  <LI>Embed more than 2 consecutive dashes in the comment. 
+        <FONT color="#0000ff">(NOTE: more than 2 consecutive dashes can not be embedded within a comment)</FONT></LI>
+  <LI>Type in the remaining lines as shown below: 
+        <FONT color="#ff0000">(I can't show the lines until defect 177755 is fixed ... until then, here's the type of things that cause 
+        a document to not be well-formed):</FONT>
+  <UL>
+    <LI>create a start and end tag that don't match in their case sensitivity 
+        (e.g., &lt;tag&gt; and &lt;/Tag&gt;). </LI>
+    <LI>create a start and end tag where the start tag contains an attribute value that is not 
+        enclosed in quotes.
+        <FONT color="#0000ff">(NOTE: this is permitted in HTML, but not XML)</FONT></LI>
+    <LI>create tags that are not properly nested.
+        <FONT color="#0000ff">(NOTE: a child tag must be completed before its parent tag)</FONT></LI>
+    <LI>create a start tag without a corresonding end tag.
+        <FONT color="#0000ff">(NOTE: all start tags must have a corresponding end tag unless the 
+        tag is an empty tag, in which case the shorthand version can be used (&lt;shortTag/&gt;)).</FONT></LI>
+    <LI>do not provide an attribute value (=&quot;value&quot;).
+        <FONT color="#0000ff">(NOTE: this is permitted in HTML for those attributes that have 
+        only one value, but it's not valid in XML)</FONT></LI>
+     <LI>define an attribute more than once in a start tag.</LI>
+  </UL></LI>
+  <LI>Save the file.</LI>
+  <LI>Verify errors are listed in the Tasks view for the above violations and that error markers appear on the appropriate 
+         lines in the Source page. <FONT color="#ff0000">I'm not sure how the Design page handles any of these violations 
+         and what will appear in the Outline and Properties view. Talk to Craig and David.</FONT></LI>
+  <LI>Reopen the file and verify everything was saved.</LI>
+</UL>
+
+
+<P><B>Validate an XML File based on a DTD</B></P>
+<UL>
+<LI>Open <B>fromScratch.xml</B>.</LI>
+<LI>Delete a character from one of the start tags (mistyping a tag is not uncommon).</LI>
+<LI>Prompt for content assist within the bad tag. Verify a message appears in the status area
+of the Workbench indicating that the bad tag is an unknown tag.</LI>
+<LI>Select the <B>Validate</B> toolbar button.</LI>
+<LI>Verify an error appears in the Tasks view and an error marker appears in the Source page
+to flag the invalid tag.</LI>
+<LI>Select <B>Edit->Undo</B> from the Source page.</LI>
+<LI>Verify the bad tag error no longer appears in the Tasks view.</LI>
+<LI>Remove the <B>Header</B> end tag from the Source page.</LI>
+<LI>Save the file.</LI>
+<LI>Verify an error appears in the Tasks view indicating that the <B>Header</B> end tag is missing</LI>
+<LI>Close the file, responding <B>Yes</B> to the save changes prompt.</LI>
+<LI>Double-click on the error in the Tasks view, and verify <B>fromScratch.xml</B> opens to the
+appropriate line in the Source page of the XML Editor.</LI>
+<LI>Here's some other violations that can be attempted:
+<UL>
+<LI>Specify a bad attribute.</LI>
+<LI>Specify a bad attribute value.</LI>
+<LI>Specify child tags out of sequencing order</LI>
+<LI>Violate the occurrence indicator for a tag (e.g., if the DTD shows ?, then only
+0 or 1 occurrences of the tag is permitted).
+</UL></LI>
+<LI>Save the file.</LI>
+<LI>Verify errors are listed in the Tasks view for the above violations and that error markers appear on the appropriate 
+lines in the Source page. <FONT color="#ff0000">I'm not sure how the Design page handles any of these violations 
+and what will appear in the Outline and Properties view. Talk to Craig and David.</FONT></LI>
+<LI>Reopen the file and verify everything was saved.</LI>
+</UL>
+
+<!--  removed since done elsewhere as part of other scenerios
+<P><B>Validate an XML File based on a Schema</B><BR>
+-->
+<IMG border="0" height="63" src="u011ani.gif" width="63"></P>
+
+<!-- ===========================================================
+                        Source Specific test cases
+     ===========================================================
+-->
+<H2><B><FONT color="#0000ff">Source Specific test cases (optional)</FONT></B></H2>
+<P><B>Using the Auto Completion Content Assist Preference</B><BR>
+<UL>
+<LI>Open a any XML file that has enough tags to provide syntax hightlighting.</LI>
+<LI>While that file is left open, go to the Preferences page, select
+XML Editor, then Source Styles. </LI>
+<LI>On that page, use the mouse to "select" a tag name. The tag name is not literally
+selected, but when you click on an element in the example text, the list
+above it will display the type of element it is, and what its current colors are.</LI>
+<LI>For "tag name", select the bold check box. Then press Apply, and you should
+see the change take effect in your active editor.</LI>
+<LI>Select "Defaults" and make sure the tag names are set back to not bold.</LI>
+</UL>
+<IMG border="0" height="63" src="u011ani.gif" width="63"></P>
+<P><B>Double-Clicking Within the Source</B> <BR>
+(NOTE: if you continue to double-click at a given cursor position, the selection area will continue to expand. When the maximum region area has been reached, the next double-click will cause the original selection. So, the selections will wrap/cycle. <FONT color="#0000ff">Cool!</FONT>).</P>
+<UL>
+  <LI>Open <B>JobDesc.xml</B>.</LI>
+  <LI>Double-clicking within tag content:
+  <UL>
+    <LI>Double-click within <B>Middleware</B> on line 7.</LI>
+    <LI>Verify <B>Middleware</B> is selected in the Source and Design pages and <B>BusType</B> is selected in the Outline view. <FONT color="#ff0000">Not sure what the Properties view is supposed to show. It goes blank. See defect 177753. Also, <B>Middleware</B> wasn't selected in the Design page as had expected. The Design page only seems to stay in sync at the element/tag level like the Outline view. Talk to Craig about this.</FONT></LI>
+    <LI>Double-click again at the same cursor position.</LI>
+    <LI>Verify <B>Application and Middleware Software</B> is selected in the Source and Design pages and <B>BusType</B> remains to be the only thing selected in the Outline view.</LI>
+    <LI>Double-clicking again will cause cycling back to the original selection.</LI>
+  </UL></LI>
+  <LI>Double-clicking within a tag name:
+  <UL>
+    <LI>Double-click within <B>HowToApply</B> on line 61.</LI>
+    <LI>Verify <B>HowToApply</B> is selected in the Source page, Design page, and Outline view. 
+        <B>class</B>, <B>distribute</B>, <B>id</B>, and <B>name</B> should appear in the 
+        Properties view. Only <B>distribute</B> should show a value.</LI>
+    <LI>Double-click again at the same cursor position.</LI>
+    <LI>Verify the whole <B>HowToApply</B> start tag (including its delimiters) is selected 
+        in the Source page. <B>HowToApply</B> should remain selected in
+        the Design page and Outline view. <B><FONT color="#ff0000">HowToApply</FONT></B><FONT color="#ff0000"> and all descendents become selected in the Outline view (defect 177752). Also, the Properties view shows no properties (defect 177753).</FONT></LI>
+    <LI>Double-clicking again will cause cycling back to the original selection.</LI>
+  </UL></LI>
+  <LI>Double-clicking within an attribute name:
+  <UL>
+    <LI>Type <B>Ctrl+End</B> to position the cursor at the end of the file.</LI>
+    <LI>Double-click within <B>distribute</B> on line 61. Verify <B>distribute</B> is selected 
+        in the Source page and <B>HowToApply</B> is selected in the Design page and Outline 
+        view. <B>class</B>, <B>distribute</B>, <B>id</B>, and <B>name</B> should appear in 
+        the Properties view. Only <B>distribute</B> should show a value.</LI>
+    <LI>Double-click at the same cursor position. Verify <B>distribute="internal"</B> is
+        selected in the Source. Nothing should change in the Design page or views.</LI>                 
+    <LI>Double-click at the same cursor position. Verify the whole <B>HowToApply</B> start tag is selected in the Source page (including its delimiters). Nothing should change in the Design page or views.<B><FONT color="#ff0000">HowToApply</FONT></B><FONT color="#ff0000"> and all descendents become selected in the Outline view (defect 177752). Also, the Properties view shows no properties (defect 177753).</FONT></LI>
+    <LI>Double-clicking again will cause cycling back to the original selection.</LI>
+  </UL></LI>
+ <LI>Double-clicking within an attribute value:
+  <UL>
+    <LI>Type <B>Ctrl+Home</B> to position the cursor at the beginning of the file.</LI>
+    <LI>Scroll down such that line 61 is visible.</LI>
+    <LI>Double-click within <B>internal</B> on line 61. Verify <B>internal</B> is selected 
+        in the Source page and <B>HowToApply</B> is selected in the Design page and Outline 
+        view. <B>class</B>, <B>distribute</B>, <B>id</B>, and <B>name</B> should appear in 
+        the Properties view. Only <B>distribute</B> should show a value.</LI>
+    <LI>Double-click at the same cursor position. Verify <B>"internal"</B> is
+        selected in the Source. Nothing should change in the Design page or views.</LI>
+    <LI>Double-click at the same cursor position. Verify <B>distribute="internal"</B> is
+        selected in the Source. Nothing should change in the Design page or views.</LI>                 
+    <LI>Double-click at the same cursor position. Verify the whole <B>HowToApply</B> start tag is selected in the Source page (including its delimiters). Nothing should change in the Design page or views. <B><FONT color="#ff0000">HowToApply</FONT></B><FONT color="#ff0000"> and all descendents become selected in the Outline view (defect 177752). Also, the Properties view shows no properties (defect 177753).</FONT></LI>
+    <LI>Double-clicking again will cause cycling back to the original selection.</LI>
+  </UL></LI>
+</UL>
+
+<P><B>Formatting a File Created by Different Editors</B><BR>
+<ul>
+<li>
+Import the <b>JobPosting.dtd</b> and <b>JobDesc.xml</b></li>
+
+<li>
+Open the JobDesc.xml. Check the source for indentation to see if it preserves
+the white space from the original document.</li>
+
+<li>
+The orignal document uses spaces and tabs, so the formatting will appear a little wrong.
+By using the right/left arrows, verify that some space is spaces and some space
+is tab characters.</li>
+<LI>Use 'format document' to be sure it formats. </LI>
+<LI>The default is to format with spaces ... verify only spaces remain in file, not tab charactes. 
+(Just a little movement with the arrow keys should suffice.</LI>
+<LI>Go to the preference page to change the format settings for the XML Editor
+to use the tab character instead of 4 spaces. While there, verify that the dialog
+will not allow other values to be intered except "whitespace" ...'\t's and blanks.
+</LI>
+<LI>Format the document again and be sure this time tab characters were used.</LI>
+</ul>
+<IMG border="0" height="63" src="u011ani.gif" width="63"></P>
+<!-- ===========================================================
+                           Other test cases
+     ===========================================================
+-->
+<H2><B><FONT color="#0000ff">Other test cases</FONT></B></H2>
+<P><B>Associate the XML Editor to a new file type</B></P>
+<UL>
+  <LI>Window-&gt;Preferences<B></B>.</LI>
+  <LI>Expand <B>Workbench</B>.</LI>
+  <LI>Select <B>File Editors</B>.</LI>
+  <LI>Select the <B>Add</B> button to add a new file type.</LI>
+  <LI>Specify a file type of <B>*.set</B> and then close the Add dialog.</LI>
+  <LI>Verify <B>*.set</B> is selected in the list of file types.</LI>
+  <LI>Select the <B>Add</B> button to associate the XML Editor to the new file type.</LI>
+  <LI>Select <B>XML Editor</B> from the list of editors. Verify it appears with its own special icon. Close the dialog. <FONT color="#ff0000">NOTE: waiting to hear back from OTI on how can prevent 2 XML Editor entries from appearing in the list.</FONT></LI>
+  <LI>Verify <B>XML Editor</B> appears as the default editor now for the <B>*.set</B> file type.</LI>
+  <LI>Open <B>gotchaTCBeans.set</B> from the Navigator view. Verify it opens to the XML Editor.</LI>
+</UL>
+<P><FONT color="#0000ff">THE END!</FONT></P>
+</body>
+</html>
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/MultiNonDefault.html b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/MultiNonDefault.html
new file mode 100644
index 0000000..f772113
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/MultiNonDefault.html
@@ -0,0 +1,20 @@
+<HEAD>
+<META http-equiv="Content-Style-Type" content="text/css">
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-6">
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<META name="GENERATOR" content="IBM WebSphere Studio">
+<TITLE>IBM WebSphere Samples Gallery</TITLE>
+</HEAD>
+<FRAMESET rows="75,*">
+	<FRAME name="title" marginwidth="0" marginheight="0" frameborder="0" src="Menu/Title.html" scrolling="NO" noresize>
+	<FRAMESET cols="160,*">
+		<FRAME name="menu" marginwidth="0" marginheight="0" frameborder="0" src="Menu/Menu.html" scrolling="auto" noresize>
+		<FRAME name="main" marginwidth="0" marginheight="0" frameborder="0" src="Menu/SamplesIntro.html" scrolling="auto" noresize>
+	</FRAMESET>
+	<NOFRAMES>
+	<BODY>
+	<P>To view this page, you need a browser that supports frames.</P>
+	</BODY>
+	</NOFRAMES>
+</FRAMESET>
+</HTML>
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/NoEncoding.html b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/NoEncoding.html
new file mode 100644
index 0000000..070e4fe
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/NoEncoding.html
@@ -0,0 +1,18 @@
+<HEAD>
+<META http-equiv="Content-Style-Type" content="text/css">
+<META name="GENERATOR" content="IBM WebSphere Studio">
+<TITLE>IBM WebSphere Samples Gallery</TITLE>
+</HEAD>
+<FRAMESET rows="75,*">
+	<FRAME name="title" marginwidth="0" marginheight="0" frameborder="0" src="Menu/Title.html" scrolling="NO" noresize>
+	<FRAMESET cols="160,*">
+		<FRAME name="menu" marginwidth="0" marginheight="0" frameborder="0" src="Menu/Menu.html" scrolling="auto" noresize>
+		<FRAME name="main" marginwidth="0" marginheight="0" frameborder="0" src="Menu/SamplesIntro.html" scrolling="auto" noresize>
+	</FRAMESET>
+	<NOFRAMES>
+	<BODY>
+	<P>To view this page, you need a browser that supports frames.</P>
+	</BODY>
+	</NOFRAMES>
+</FRAMESET>
+</HTML>
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/NormalNonDefault.html b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/NormalNonDefault.html
new file mode 100644
index 0000000..ba30c9f
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/NormalNonDefault.html
@@ -0,0 +1,19 @@
+<HEAD>
+<META http-equiv="Content-Style-Type" content="text/css">
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<META name="GENERATOR" content="IBM WebSphere Studio">
+<TITLE>IBM WebSphere Samples Gallery</TITLE>
+</HEAD>
+<FRAMESET rows="75,*">
+	<FRAME name="title" marginwidth="0" marginheight="0" frameborder="0" src="Menu/Title.html" scrolling="NO" noresize>
+	<FRAMESET cols="160,*">
+		<FRAME name="menu" marginwidth="0" marginheight="0" frameborder="0" src="Menu/Menu.html" scrolling="auto" noresize>
+		<FRAME name="main" marginwidth="0" marginheight="0" frameborder="0" src="Menu/SamplesIntro.html" scrolling="auto" noresize>
+	</FRAMESET>
+	<NOFRAMES>
+	<BODY>
+	<P>To view this page, you need a browser that supports frames.</P>
+	</BODY>
+	</NOFRAMES>
+</FRAMESET>
+</HTML>
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/noquotes.html b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/noquotes.html
new file mode 100644
index 0000000..254cde4
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/html/noquotes.html
@@ -0,0 +1,20 @@
+<HEAD>
+<META http-equiv="Content-Style-Type" content="text/css">
+<META http-equiv="Content-Type" content=text/html; charset=UTF-8>
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-6">
+<META name="GENERATOR" content="IBM WebSphere Studio">
+<TITLE>IBM WebSphere Samples Gallery</TITLE>
+</HEAD>
+<FRAMESET rows="75,*">
+	<FRAME name="title" marginwidth="0" marginheight="0" frameborder="0" src="Menu/Title.html" scrolling="NO" noresize>
+	<FRAMESET cols="160,*">
+		<FRAME name="menu" marginwidth="0" marginheight="0" frameborder="0" src="Menu/Menu.html" scrolling="auto" noresize>
+		<FRAME name="main" marginwidth="0" marginheight="0" frameborder="0" src="Menu/SamplesIntro.html" scrolling="auto" noresize>
+	</FRAMESET>
+	<NOFRAMES>
+	<BODY>
+	<P>To view this page, you need a browser that supports frames.</P>
+	</BODY>
+	</NOFRAMES>
+</FRAMESET>
+</HTML>
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/EmptyFile.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/EmptyFile.jsp
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/EmptyFile.jsp
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/IllformedNormalNonDefault.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/IllformedNormalNonDefault.jsp
new file mode 100644
index 0000000..9fd0e75
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/IllformedNormalNonDefault.jsp
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="ISO-8859-8?>

+<%@page contentType="text/html; charset=UTF-8" pageEncoding="ISO-8859-7%>

+<test>

+</test>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/MalformedNoEncoding.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/MalformedNoEncoding.jsp
new file mode 100644
index 0000000..265eb15
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/MalformedNoEncoding.jsp
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding=""?>

+<tag>

+Australië

+</tag>

+

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/MalformedNoEncodingXSL.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/MalformedNoEncodingXSL.jsp
new file mode 100644
index 0000000..0c3359d
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/MalformedNoEncodingXSL.jsp
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding=""?>

+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

+    version="1.0"

+    xmlns:xalan="http://xml.apache.org/xslt">

+<xsl:variable name="badEncoding">

+Australië

+</xsl:variable>

+</xsl:stylesheet>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/NoEncodinginXMLDecl.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/NoEncodinginXMLDecl.jsp
new file mode 100644
index 0000000..e5ce76c
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/NoEncodinginXMLDecl.jsp
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>

+<test>

+</test>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/NormalNonDefault.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/NormalNonDefault.jsp
new file mode 100644
index 0000000..5e89e68
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/NormalNonDefault.jsp
@@ -0,0 +1,3 @@
+<?xml version="99" encoding="ISO-8859-8"?>

+<test>

+</test>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/NormalNonDefaultWithXMLDecl.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/NormalNonDefaultWithXMLDecl.jsp
new file mode 100644
index 0000000..886248f
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/NormalNonDefaultWithXMLDecl.jsp
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="ISO-8859-8"?>

+<%@page contentType="text/html; charset=UTF-8" pagetEncoding="ISO-8859-7"%>

+<test>

+</test>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/NormalPageCaseNonDefault.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/NormalPageCaseNonDefault.jsp
new file mode 100644
index 0000000..1f27bba
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/NormalPageCaseNonDefault.jsp
@@ -0,0 +1,4 @@
+

+<%@page contentType="text/html; charset=UTF-8" pageEncoding="ISO-8859-7" %>

+<test>

+</test>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/SelColBeanRow12ResultsForm.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/SelColBeanRow12ResultsForm.jsp
new file mode 100644
index 0000000..f837ee6
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/SelColBeanRow12ResultsForm.jsp
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

+I found this change

+

+<%@ page

+import="SelColBeanRow12ViewBean"

+ pageEncoding="SHIFT_JIS"

+ contentType="text/html; charset=JUNK"

+%>

+<HTML>

+<HEAD>

+<META http-equiv="Content-Type" content="text/html; charset=METAJUNK">

+<META name="GENERATOR" content="IBM WebSphere Studio">

+<TITLE>Results page</TITLE>

+

+<!--Styles-->

+<STYLE TYPE="text/css">

+<!--

+BODY {

+	background-color: #ffffff !important;

+}

+H1 {

+	color: #0000ff !important;

+	text-align: center !important;

+}

+TH {

+	text-align:left !important;

+	color: #000000 !important;

+	vertical-align: top !important;

+}

+TD {

+	text-align:left !important;

+	vertical-align: top !important;

+}

+TH.result {

+	background-color: #999999 !important;

+}

+TD.result {

+	background-color: #cccccc;

+	vertical-align: top !important;

+}

+-->

+</STYLE>

+

+

+<!--Style Sheet-->

+<LINK href="/t/theme/Master.css" rel="stylesheet" type="text/css">

+</head>

+<body>

+

+<jsp:useBean id="selColBeanRow12Bean" scope="session" class="SelColBeanRow12ViewBean" type="SelColBeanRow12ViewBean"/>

+<%

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+%>

+

+<%

+//Execute Bean Methods

+

+

+%>

+

+<!--Banner-->

+<H1>Results page</H1>

+

+<BR><BR>

+

+<!-- Result Table -->

+<TABLE border="0">

+<TBODY>

+			<TR>

+			<TH>TEST2_‹‹Ž‹</TH>

+			<TD>

+

+	<%=selColBeanRow12Bean.getTEST2_‹‹Ž‹()== null ? "NULL" : selColBeanRow12Bean.getTEST2_‹‹Ž‹().toString()%>

+			</TD>

+		</TR>

+		<TR>

+			<TH>TEST2_Š‰</TH>

+			<TD>

+

+	<%=selColBeanRow12Bean.getTEST2_Š‰()== null ? "NULL" : selColBeanRow12Bean.getTEST2_Š‰().toString()%>

+			</TD>

+		</TR>

+		<TR>

+			<TH>TEST2_‰‰Ž‰</TH>

+			<TD>

+

+	<%=selColBeanRow12Bean.getTEST2_‰‰Ž‰()== null ? "NULL" : selColBeanRow12Bean.getTEST2_‰‰Ž‰().toString()%>

+			</TD>

+		</TR>

+		<TR>

+			<TH>TEST2_\Z_</TH>

+			<TD>

+

+	<%=selColBeanRow12Bean.getTEST2_\Z_()== null ? "NULL" : selColBeanRow12Bean.getTEST2_\Z_().toString()%>

+			</TD>

+		</TR>

+		<TR>

+			<TH>TEST2_ŽŽŽŽ</TH>

+			<TD>

+

+	<%=selColBeanRow12Bean.getTEST2_ŽŽŽŽ()== null ? "NULL" : selColBeanRow12Bean.getTEST2_ŽŽŽŽ().toString()%>

+			</TD>

+		</TR>

+

+</TBODY>

+</TABLE >

+</body>

+</html>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/UTF8With3ByteBOM.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/UTF8With3ByteBOM.jsp
new file mode 100644
index 0000000..39a39cf
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/UTF8With3ByteBOM.jsp
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<test>

+</test>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/WellFormedNormalNonDefault.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/WellFormedNormalNonDefault.jsp
new file mode 100644
index 0000000..9f29652
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/WellFormedNormalNonDefault.jsp
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="ISO-8859-8"?>

+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="ISO-8859-7"%>

+<test>

+</test>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/inValidEncodingValue.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/inValidEncodingValue.jsp
new file mode 100644
index 0000000..4d092e3
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/inValidEncodingValue.jsp
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

+<HTML>

+<HEAD>

+<%@ page 

+language="java"

+contentType="text/html; charset=abc"

+%>

+<META http-equiv="Content-Type" content="text/html">

+<META name="GENERATOR" content="IBM WebSphere Studio">

+<META http-equiv="Content-Style-Type" content="text/css">

+<LINK href="../theme/Master.css" rel="stylesheet" type="text/css">

+<TITLE>inValidEncodingValue.jsp</TITLE>

+</HEAD>

+<BODY>

+<P>Place inValidEncodingValue.jsp's content here.</P>

+</BODY>

+</HTML>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/javaEncodingValue.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/javaEncodingValue.jsp
new file mode 100644
index 0000000..19c6d16
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/javaEncodingValue.jsp
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

+<HTML>

+<HEAD>

+<%@ page 

+language="java"  

+contentType="text/html; charset=Cp1252"

+%>

+<META http-equiv="Content-Type" content="text/html">

+<META name="GENERATOR" content="IBM WebSphere Studio">

+<META http-equiv="Content-Style-Type" content="text/css">

+<LINK href="../theme/Master.css" rel="stylesheet" type="text/css">

+<TITLE>inValidEncodingValue.jsp</TITLE>

+</HEAD>

+<BODY>

+<P>Place inValidEncodingValue.jsp's content here.</P>

+</BODY>

+</HTML>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/noEncoding.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/noEncoding.jsp
new file mode 100644
index 0000000..149d04f
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/noEncoding.jsp
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

+<HTML>

+<HEAD>

+<%@ page 

+language="java"

+contentType="text/html"

+%>

+<META http-equiv="Content-Type" content="text/html">

+<META name="GENERATOR" content="IBM WebSphere Studio">

+<META http-equiv="Content-Style-Type" content="text/css">

+<LINK href="../theme/Master.css" rel="stylesheet" type="text/css">

+<TITLE>noEncoding.jsp</TITLE>

+</HEAD>

+<BODY>

+<P>Place noEncoding.jsp's content here.</P>

+</BODY>

+</HTML>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/nomalDirectiveCase.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/nomalDirectiveCase.jsp
new file mode 100644
index 0000000..72432ff
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/nomalDirectiveCase.jsp
@@ -0,0 +1,5 @@
+<%@ page

+pageEncoding= "ISO-8859-2"

+language="java"

+contentType="text/html; charset=ISO-8859-3"

+%>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/nomalDirectiveCaseNoEncoding.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/nomalDirectiveCaseNoEncoding.jsp
new file mode 100644
index 0000000..7656902
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/nomalDirectiveCaseNoEncoding.jsp
@@ -0,0 +1,3 @@
+<%@ page 

+language="java"

+%>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/nomalDirectiveCaseUsingCharset.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/nomalDirectiveCaseUsingCharset.jsp
new file mode 100644
index 0000000..94d908f
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/nomalDirectiveCaseUsingCharset.jsp
@@ -0,0 +1,4 @@
+<%@ page 

+language="java"

+contentType="text/html; charset=ISO-8859-3"

+%>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/nomalDirectiveCaseUsingXMLSyntax.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/nomalDirectiveCaseUsingXMLSyntax.jsp
new file mode 100644
index 0000000..c874a08
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/nomalDirectiveCaseUsingXMLSyntax.jsp
@@ -0,0 +1,4 @@
+<jsp:directive.page 

+pageEncoding="ISO-8859-2"

+language="java"

+contentType="text/html; charset=ISO-8859-3"/>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testBrokenLine.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testBrokenLine.jsp
new file mode 100644
index 0000000..8267981
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testBrokenLine.jsp
@@ -0,0 +1,5 @@
+<?xml version="1.0"  

+

+encoding="ISO-8859-3" 

+

+ ?>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testDefaultEncoding.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testDefaultEncoding.jsp
new file mode 100644
index 0000000..31f287f
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testDefaultEncoding.jsp
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="testjunk"?>

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

+<HTML>

+<HEAD>

+<%@ page 

+language="java"

+contentType="text/html; charset=ISO-8859-1"

+%>

+<META http-equiv="Content-Type" content="text/html; charset=testjunk">

+<META name="GENERATOR" content="IBM WebSphere Studio">

+<META http-equiv="Content-Style-Type" content="text/css">

+<LINK href="../theme/Master.css" rel="stylesheet" type="text/css">

+<TITLE>testDefaultEncoding.jsp</TITLE>

+</HEAD>

+<BODY>

+<P>Place testDefaultEncoding.jsp's content here.</P>

+</BODY>

+</HTML>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testDefaultEncodingWithJunk.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testDefaultEncodingWithJunk.jsp
new file mode 100644
index 0000000..8d48684
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testDefaultEncodingWithJunk.jsp
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="testjunk"?>

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

+<HTML>

+<HEAD>

+<%@ page 

+language="java"

+contentType="text/html; charset=ISO-8859-1"

+%>

+<META http-equiv="Content-Type" content="text/html; charset=testjunk">

+<META name="GENERATOR" content="IBM WebSphere Studio">

+<META http-equiv="Content-Style-Type" content="text/css">

+<LINK href="../theme/Master.css" rel="stylesheet" type="text/css">

+<TITLE>testDefaultEncoding.jsp</TITLE>

+</HEAD>

+<BODY>

+<P>Place testDefaultEncoding.jsp's content here.</P>

+<%

+System.out.println("test");

+%>

+</BODY>

+</HTML>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testExtraJunk.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testExtraJunk.jsp
new file mode 100644
index 0000000..357f958
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testExtraJunk.jsp
@@ -0,0 +1,5 @@
+<?xml version="1.0"  abcd="efc"

+

+encoding="ISO-8859-1" 

+

+ ?>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testExtraValidStuff.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testExtraValidStuff.jsp
new file mode 100644
index 0000000..37d0a3a
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testExtraValidStuff.jsp
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testIllFormed.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testIllFormed.jsp
new file mode 100644
index 0000000..b6bf901
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testIllFormed.jsp
@@ -0,0 +1 @@
+<?xml version="1.0 encoding=UTF-8" standalone="yes"?>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testIllFormed2.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testIllFormed2.jsp
new file mode 100644
index 0000000..c38ec2b
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testIllFormed2.jsp
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding=UTF-8 

+<test>

+</test>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testNoEncodingValue.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testNoEncodingValue.jsp
new file mode 100644
index 0000000..83d0c18
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testNoEncodingValue.jsp
@@ -0,0 +1 @@
+<?xml version="1.0"    ?>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testNoPageDirective.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testNoPageDirective.jsp
new file mode 100644
index 0000000..1a0174a
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testNoPageDirective.jsp
@@ -0,0 +1,4 @@
+<test>

+

+</test>

+

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testNoPageDirectiveAtFirst.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testNoPageDirectiveAtFirst.jsp
new file mode 100644
index 0000000..89a0c3b
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testNoPageDirectiveAtFirst.jsp
@@ -0,0 +1,8 @@
+<test>

+ <%@ page 

+pageEncoding="ISO-8859-2"

+language="java"

+contentType="text/html; charset=ISO-8859-3"

+%>

+</test>

+

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testNoPageDirectiveInLargeFile.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testNoPageDirectiveInLargeFile.jsp
new file mode 100644
index 0000000..734636f
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testNoPageDirectiveInLargeFile.jsp
@@ -0,0 +1,356 @@
+<test>

+

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+extra junk to make a large file (over 1000 chars)

+</test>

+<?xml version="1.0" encoding="UTF-8"?>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testNormalCase.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testNormalCase.jsp
new file mode 100644
index 0000000..5a2c42c
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testNormalCase.jsp
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testUTF16.FromNotepadjsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testUTF16.FromNotepadjsp
new file mode 100644
index 0000000..75b9850
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testUTF16.FromNotepadjsp
Binary files differ
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testUTF16.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testUTF16.jsp
new file mode 100644
index 0000000..4d9e817
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/testUTF16.jsp
Binary files differ
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/utf16UnicodeStreamWithNoEncodingInHeader2.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/utf16UnicodeStreamWithNoEncodingInHeader2.jsp
new file mode 100644
index 0000000..47e6916
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/utf16UnicodeStreamWithNoEncodingInHeader2.jsp
Binary files differ
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/utf16UnicodeStreamWithNoEncodingInHeaderBE.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/utf16UnicodeStreamWithNoEncodingInHeaderBE.jsp
new file mode 100644
index 0000000..d7ffd6d
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/utf16UnicodeStreamWithNoEncodingInHeaderBE.jsp
Binary files differ
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/utf16WithJapaneseChars.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/utf16WithJapaneseChars.jsp
new file mode 100644
index 0000000..ddba9bc
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/jsp/utf16WithJapaneseChars.jsp
Binary files differ
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/regressionTestFiles/defect223365/SelColBeanRow12ResultsForm.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/regressionTestFiles/defect223365/SelColBeanRow12ResultsForm.jsp
new file mode 100644
index 0000000..f837ee6
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/regressionTestFiles/defect223365/SelColBeanRow12ResultsForm.jsp
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

+I found this change

+

+<%@ page

+import="SelColBeanRow12ViewBean"

+ pageEncoding="SHIFT_JIS"

+ contentType="text/html; charset=JUNK"

+%>

+<HTML>

+<HEAD>

+<META http-equiv="Content-Type" content="text/html; charset=METAJUNK">

+<META name="GENERATOR" content="IBM WebSphere Studio">

+<TITLE>Results page</TITLE>

+

+<!--Styles-->

+<STYLE TYPE="text/css">

+<!--

+BODY {

+	background-color: #ffffff !important;

+}

+H1 {

+	color: #0000ff !important;

+	text-align: center !important;

+}

+TH {

+	text-align:left !important;

+	color: #000000 !important;

+	vertical-align: top !important;

+}

+TD {

+	text-align:left !important;

+	vertical-align: top !important;

+}

+TH.result {

+	background-color: #999999 !important;

+}

+TD.result {

+	background-color: #cccccc;

+	vertical-align: top !important;

+}

+-->

+</STYLE>

+

+

+<!--Style Sheet-->

+<LINK href="/t/theme/Master.css" rel="stylesheet" type="text/css">

+</head>

+<body>

+

+<jsp:useBean id="selColBeanRow12Bean" scope="session" class="SelColBeanRow12ViewBean" type="SelColBeanRow12ViewBean"/>

+<%

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+%>

+

+<%

+//Execute Bean Methods

+

+

+%>

+

+<!--Banner-->

+<H1>Results page</H1>

+

+<BR><BR>

+

+<!-- Result Table -->

+<TABLE border="0">

+<TBODY>

+			<TR>

+			<TH>TEST2_‹‹Ž‹</TH>

+			<TD>

+

+	<%=selColBeanRow12Bean.getTEST2_‹‹Ž‹()== null ? "NULL" : selColBeanRow12Bean.getTEST2_‹‹Ž‹().toString()%>

+			</TD>

+		</TR>

+		<TR>

+			<TH>TEST2_Š‰</TH>

+			<TD>

+

+	<%=selColBeanRow12Bean.getTEST2_Š‰()== null ? "NULL" : selColBeanRow12Bean.getTEST2_Š‰().toString()%>

+			</TD>

+		</TR>

+		<TR>

+			<TH>TEST2_‰‰Ž‰</TH>

+			<TD>

+

+	<%=selColBeanRow12Bean.getTEST2_‰‰Ž‰()== null ? "NULL" : selColBeanRow12Bean.getTEST2_‰‰Ž‰().toString()%>

+			</TD>

+		</TR>

+		<TR>

+			<TH>TEST2_\Z_</TH>

+			<TD>

+

+	<%=selColBeanRow12Bean.getTEST2_\Z_()== null ? "NULL" : selColBeanRow12Bean.getTEST2_\Z_().toString()%>

+			</TD>

+		</TR>

+		<TR>

+			<TH>TEST2_ŽŽŽŽ</TH>

+			<TD>

+

+	<%=selColBeanRow12Bean.getTEST2_ŽŽŽŽ()== null ? "NULL" : selColBeanRow12Bean.getTEST2_ŽŽŽŽ().toString()%>

+			</TD>

+		</TR>

+

+</TBODY>

+</TABLE >

+</body>

+</html>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/regressionTestFiles/defect223365/SelColBeanRow12ResultsFormB.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/regressionTestFiles/defect223365/SelColBeanRow12ResultsFormB.jsp
new file mode 100644
index 0000000..83c870f
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/regressionTestFiles/defect223365/SelColBeanRow12ResultsFormB.jsp
@@ -0,0 +1,121 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

+I found this change

+

+<%@ page

+import="SelColBeanRow12ViewBean"

+ contentType="text/html; charset=SHIFT_JIS" pageEncoding="SHIFT_JIS"

+%>

+<HTML>

+<HEAD>

+<META http-equiv="Content-Type" content="text/html; charset=METAJUNK">

+<META name="GENERATOR" content="IBM WebSphere Studio">

+<TITLE>Results page</TITLE>

+

+<!--Styles-->

+<STYLE TYPE="text/css">

+<!--

+BODY {

+	background-color: #ffffff !important;

+}

+H1 {

+	color: #0000ff !important;

+	text-align: center !important;

+}

+TH {

+	text-align:left !important;

+	color: #000000 !important;

+	vertical-align: top !important;

+}

+TD {

+	text-align:left !important;

+	vertical-align: top !important;

+}

+TH.result {

+	background-color: #999999 !important;

+}

+TD.result {

+	background-color: #cccccc;

+	vertical-align: top !important;

+}

+-->

+</STYLE>

+

+

+<!--Style Sheet-->

+<LINK href="/t/theme/Master.css" rel="stylesheet" type="text/css">

+</head>

+<body>

+

+<jsp:useBean id="selColBeanRow12Bean" scope="session" class="SelColBeanRow12ViewBean" type="SelColBeanRow12ViewBean"/>

+<%

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+%>

+

+<%

+//Execute Bean Methods

+

+

+%>

+

+<!--Banner-->

+<H1>Results page</H1>

+

+<BR><BR>

+

+<!-- Result Table -->

+<TABLE border="0">

+<TBODY>

+			<TR>

+			<TH>TEST2_‹‹Ž‹</TH>

+			<TD>

+

+	<%=selColBeanRow12Bean.getTEST2_‹‹Ž‹()== null ? "NULL" : selColBeanRow12Bean.getTEST2_‹‹Ž‹().toString()%>

+			</TD>

+		</TR>

+		<TR>

+			<TH>TEST2_Š‰</TH>

+			<TD>

+

+	<%=selColBeanRow12Bean.getTEST2_Š‰()== null ? "NULL" : selColBeanRow12Bean.getTEST2_Š‰().toString()%>

+			</TD>

+		</TR>

+		<TR>

+			<TH>TEST2_‰‰Ž‰</TH>

+			<TD>

+

+	<%=selColBeanRow12Bean.getTEST2_‰‰Ž‰()== null ? "NULL" : selColBeanRow12Bean.getTEST2_‰‰Ž‰().toString()%>

+			</TD>

+		</TR>

+		<TR>

+			<TH>TEST2_\Z_</TH>

+			<TD>

+

+	<%=selColBeanRow12Bean.getTEST2_\Z_()== null ? "NULL" : selColBeanRow12Bean.getTEST2_\Z_().toString()%>

+			</TD>

+		</TR>

+		<TR>

+			<TH>TEST2_ŽŽŽŽ</TH>

+			<TD>

+

+	<%=selColBeanRow12Bean.getTEST2_ŽŽŽŽ()== null ? "NULL" : selColBeanRow12Bean.getTEST2_ŽŽŽŽ().toString()%>

+			</TD>

+		</TR>

+

+</TBODY>

+</TABLE >

+</body>

+</html>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/regressionTestFiles/defect224293/testshiftjisXmlSyntax.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/regressionTestFiles/defect224293/testshiftjisXmlSyntax.jsp
new file mode 100644
index 0000000..92051b3
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/regressionTestFiles/defect224293/testshiftjisXmlSyntax.jsp
@@ -0,0 +1,19 @@
+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="1.2">

+<jsp:directive.page language="java"

+	contentType="text/html; charset=SHIFT_JIS" pageEncoding="SHIFT_JIS" />

+<jsp:text><![CDATA[ <?xml version="1.0" encoding="SHIFT_JIS" ?> ]]></jsp:text>

+<jsp:text><![CDATA[ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> ]]></jsp:text>

+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS" />

+<meta name="GENERATOR" content="IBM WebSphere Studio" />

+<meta http-equiv="Content-Style-Type" content="text/css" />

+<link href="theme/Master.css" rel="stylesheet"

+	type="text/css" />

+<title>testshiftjis.jsp</title>

+</head>

+<body>

+<p>Place testshiftjis.jsp's content here.</p>

+</body>

+</html>

+</jsp:root>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/regressionTestFiles/defect229667/audi.jsp b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/regressionTestFiles/defect229667/audi.jsp
new file mode 100644
index 0000000..31b47c0
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/regressionTestFiles/defect229667/audi.jsp
@@ -0,0 +1,194 @@
+<%@ page language="java" pageEncoding="Shift_JIS" contentType="text/html; charset=Shift_JIS"%>

+<%@taglib uri="/WEB-INF/websitedesigner.tld" prefix="siteedit"%>

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

+<HTML>

+<HEAD>

+<META name="GENERATOR"

+	content="IBM WebSphere Studio Homepage Builder Version 6.5.0.0 for Windows">

+<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">

+<META http-equiv="Content-Style-Type" content="text/css">

+<TITLE>Audi A6w“ü‚Ü‚Å</TITLE>

+<LINK rel="stylesheet" href="style.css" type="text/css">

+<LINK rel="stylesheet" type="text/css" id="website_style"

+	href="/Audi/site-comp/style/site.css">

+</HEAD>

+<BODY text="#666699" link="#6666cc" vlink="#999999" alink="#cc66ff">

+<siteedit:layout>

+	<siteedit:layoutarea id="body">

+		<H1>Audi A6w“ü‚Ü‚Å</H1>

+

+		<DIV align="left">

+		<TABLE width="640" cellpadding="5" cellspacing="0">

+			<TBODY>

+				<TR>

+					<TD bgcolor="#0000cc" height="5"><FONT color="#ffffff">w“ü‚Ü‚Å‚ÌŒoˆÜ</FONT></TD>

+					<TD bgcolor="#0000cc"><FONT color="#ffffff">11ŒŽ</FONT></TD>

+					<TD bgcolor="#0000cc" width="5"></TD>

+				</TR>

+				<TR>

+					<TD width="216" bgcolor="#0066cc" valign="top" rowspan="3"></TD>

+					<TD width="420">

+					<UL>

+						<LI>2001”N11ŒŽ AŽŸŠúMy Car‚ðŒŸ“¢‚µŽn‚ß‚éB</LI>

+						<LI>——R‚Í...

+						<OL>

+							<LI>2002”N4ŒŽ‚Å5”N–Ú‚ðŒ}‚¦‚é‘OŽÔ‚u‚‚Œ‚–‚‚ɍׂ©‚¢ŒÌá‚ª‘ŠŽŸ‚¢‚Ä‚¢‚½B</LI>

+							<LI>ƒGƒ“ƒWƒ“‚Ì”ñ—Í‚³‚ɉ䖝‚ª‚Å‚«‚È‚­‚È‚Á‚Ä‚«‚½B</LI>

+						</OL>

+						</LI>

+						<LI>ˆÈ‰º‚̎Ԏ킪Œó•â‚Æ‚È‚Á‚½B

+						<OL>

+							<LI>VOLVO V70</LI>

+							<LI>BWM 325i touring</LI>

+							<LI>VW Passart V6 4 Motion</LI>

+							<LI>Mercedes-Benz C Class Wagon</LI>

+							<LI>Audi A4 Avant</LI>

+						</OL>

+						<BR>

+						‚»‚¤B ‚±‚ÌŽž“_‚Å<B>‚`‚U‚ÍŠ®‘S‚ȃXƒR[ƒvŠO</B>‚Å‚ ‚Á‚½B</LI>

+					</UL>

+					</TD>

+					<TD bgcolor="#0066cc"></TD>

+				</TR>

+				<TR>

+					<TD bgcolor="#0066cc" width="5" height="5"></TD>

+					<TD bgcolor="#0066cc"></TD>

+				</TR>

+				<TR>

+					<TD width="420">‚±‚±‚©‚çAˆÈ‰º‚Ì——R‚ªŽå‚ŁAŒó•âŽÔ‚ªi‚ç‚ꂽB<BR>

+					i‚ ‚­‚Ü‚Å‚àŽ„‚ƍȂ̌l“IŽåŠÏ‚É‚æ‚è‚Ü‚·Bj

+					<UL>

+						<LI>VOLVO V70 - ƒfƒUƒCƒ“‚ªX‚Ń{ƒcB</LI>

+						<LI>BWM 325i touring - ’†“r”¼’[‚ȃTƒCƒYAŠX’†BWM‚¾‚炯‚Ń{ƒcB</LI>

+						<LI>C Class - ‰¿Ši‚ÉŒ©‡‚í‚È‚¢ƒGƒ“ƒWƒ“A“à‘•‚Ń{ƒcB</LI>

+						<LI>Passart - ‰¿Ši‚Í–£—Í“I‚¾‚ª“àŠO‘•ƒfƒUƒCƒ“‚Ń{ƒcB</LI>

+					</UL>

+					‚»‚¤B‚±‚±‚Å<B>Žc‚Á‚½‚Ì‚ÍA4 Avant</B>‚Å‚µ‚½B <BR>

+					A4 3.0 quattro sports‚ÉŽŽæ‚µA‚Æ‚Ä‚à‹C‚É“ü‚Á‚Ä‚µ‚Ü‚¢‚Ü‚µ‚½B<BR>

+					‚µ‚©‚µ”­”„—\’è‚Í2002”N2ŒŽ‚Æ‚Ì‚±‚ƂŁA‚»‚±‚Ü‚Å‘Ò‚Æ‚¤‚ƈê“x‚ÍŒˆ‚ß‚Ü‚µ‚½B<BR>

+					<BR>

+					—BˆêA‹C‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ÍŽº“à‚̃TƒCƒY‚ƃgƒ‰ƒ“ƒN—e—Ê‚ªV70‚É”ä‚ׂ©‚Ȃ菬‚³‚­‚È‚é‚Æ‚¢‚¤“_‚Å‚µ‚½B</TD>

+					<TD bgcolor="#0066cc"></TD>

+				</TR>

+				<TR>

+					<TD bgcolor="#0066cc"></TD>

+					<TD bgcolor="#0066cc"><FONT color="#ffffff">12ŒŽ’†{</FONT></TD>

+					<TD bgcolor="#0066cc"></TD>

+				</TR>

+				<TR>

+					<TD bgcolor="#0066cc"></TD>

+					<TD><BR>

+					2ŒŽ‚Ü‚Å‘Ò‚Æ‚¤‚ÆŽv‚Á‚Ä‚¢‚éó‘ԂŁAA4‚̒ljÁî•ñ‚𓾂悤‚ÆŽv‚¢ƒfƒB[ƒ‰[‚É—§‚¿Šñ‚è‚Á‚½‚Æ‚±‚ëA’S“–‚̉c‹Æ‚Ì•û‚ª•sÝ‚Å“X’·‚Ƙb‚ð‚µ‚Ü‚µ‚½B<BR>

+					<BR>

+					‚»‚±‚ŁAVOLVO‚©‚ç‚̏æ‚芷‚¦A‰Æ‘°\¬i4lj‚ðl‚¦‚é‚ÆA6‚ª‚¨Š©‚ß‚Æ‚Ì‚±‚ƁB <B>‰¿Ši·‚à‘•”õ“™‚ðl‚¦‚é‚ÆA4 Avant

+					3.0 quattro suport‚ÆA6 Avant 3.0 quatrro‚̍·‚ª‚Ù‚Æ‚ñ‚Ç‚È‚¢</B>‚Æ‚Ì‚±‚ƁB<BR>

+					<BR>

+					X‚ɉºŽæ‚èƒLƒƒƒ“ƒy[ƒ“’†‚ŁA‘¼ŠCŠOƒ[ƒJ[‚©‚ç‚ÌŽæ‘Ö‚¦‚̏ꍇA¸’èŠz{<B>‚R‚O–œ‰~</B>ƒ{[ƒiƒX‚Æ‚È‚èA‚Æ‚Á‚Ä‚à‚¨”ƒ‚¢“¾Š´‚ªo‚Ü‚·B<BR>

+					<BR>

+					‚»‚µ‚āA”N“à”[ŽÔ‰Â”\‚ÈŠó–]FiƒVƒ‹ƒo[ƒŒƒCƒNƒƒ^ƒŠƒbƒNj‚Ì‚`‚U‚ª1‘äÝŒÉ‚ª‚ ‚é‚Æ‚Ì‚±‚ƁB<BR>

+					<BR>

+					‚ŁAŒ‹‹Ç‚±‚̘b‚ɏæ‚Á‚Ä(æ‚¹‚ç‚ê‚āHjA<B><FONT color="#cc33ff">A6 3.0 Avant quattro

+					2002 Model</FONT></B>‚ðw“üŒˆ’肵‚Ü‚µ‚½B<BR>

+					<BR>

+					</TD>

+					<TD bgcolor="#0066cc"></TD>

+				</TR>

+				<TR>

+					<TD bgcolor="#0000cc"><FONT color="#ffffff">w“üŒˆ’èII</FONT></TD>

+					<TD bgcolor="#0000cc"><FONT color="#ffffff">w“üŒˆ’è‚Ì——R‚ð‚Ü‚Æ‚ß‚é‚ƁA</FONT>A</TD>

+					<TD bgcolor="#0000cc"></TD>

+				</TR>

+				<TR>

+					<TD width="216" bgcolor="#0066cc" valign="top"></TD>

+					<TD width="420">

+					<UL>

+						<LI>‘¼‚ÌŒó•âŽÔ‚Æ”äŠr‚µ‚āAƒ{ƒfƒB‚¨‚æ‚ÑŽÔ“à‹óŠÔ‚̃fƒUƒCƒ“‚ð‘å‚¢‚É‹C‚É“ü‚Á‚½B</LI>

+						<LI>‚`‚S‚Å‚Í‚u‚V‚O‚É”ä‚׎ԓàƒXƒy[ƒX‚ª‹·‚­‚È‚Á‚Ä‚µ‚Ü‚¤B</LI>

+						<LI>ƒNƒAƒgƒEƒVƒXƒeƒ€iski‚ªŽï–¡‚È‚Ì‚Å‚â‚Í‚èsnow drive‚É‚Í4WD‚ª—~‚µ‚­‚Ä...)</LI>

+						<LI>’lˆø‚«‚Æ“Á•Ê‰ºŽæ‚èƒLƒƒƒ“ƒy[ƒ“’†‚¾‚Á‚½Ž–F|j</LI>

+					</UL>

+					</TD>

+					<TD bgcolor="#0066cc"></TD>

+				</TR>

+				<TR>

+					<TD bgcolor="#0000cc" valign="top" colspan="2"><FONT

+						color="#ffffff">w“ü‚µ‚½ƒ‚ƒfƒ‹ ‚¨‚æ‚Ñ ’ljÁƒIƒvƒVƒ‡ƒ“</FONT></TD>

+					<TD bgcolor="#0000cc"></TD>

+				</TR>

+				<TR>

+					<TD bgcolor="#0066cc" valign="top"></TD>

+					<TD>

+					<UL>

+						<LI>ƒ‚ƒfƒ‹

+						<UL>

+							<LI><B><FONT color="#cc33ff">A6 3.0 Avant quattro 2002 Model</FONT></B>

+							</LI>

+							<LI>Ú‚µ‚­‚Í‚`‚•‚„‚‰‚̃IƒtƒBƒVƒƒƒ‹ƒy[ƒW‚ð‚²——‚­‚¾‚³‚¢B( <A

+								href="http://www.audi.co.jp/models/index.html">http://www.audi.co.jp/models/index.html</A>

+							)</LI>

+						</UL>

+						</LI>

+						<LI>ƒ{ƒfƒBEƒJƒ‰[

+						<UL>

+							<LI>ƒVƒ‹ƒo[ƒŒƒCƒNƒƒ^ƒŠƒbƒN</LI>

+						</UL>

+						</LI>

+						<LI>’ljÁƒIƒvƒVƒ‡ƒ“

+						<UL>

+							<LI>ƒ‹[ƒtƒAƒ“ƒeƒi—pƒAƒ“ƒOƒ‹ƒXƒy[ƒT[ i‹@ŠBŽ®’“ŽÔê—˜—p‚Ì‚½‚߁j</LI>

+							<LI>ƒ‰ƒQƒbƒWƒgƒŒƒC (ƒXƒL[”Eƒu[ƒcAŽq‹Ÿ‚Ì–ì‹…“¹‹ï‚ðÏ‚ݍž‚Þ‚½‚ß‚Ì“Dœ‚¯—pj</LI>

+							<LI>ƒoƒ“ƒp[•ÛŒì—pƒ‰ƒo[ iÈ‚Ì—v–]‚Å.....)</LI>

+							<LI>ƒXƒ^ƒbƒhƒŒƒXEƒ^ƒCƒ„ - ƒuƒŠƒWƒXƒgƒ“ ƒuƒŠƒUƒbƒN</LI>

+						</UL>

+						</LI>

+					</UL>

+					</TD>

+					<TD bgcolor="#0066cc"></TD>

+				</TR>

+				<TR>

+					<TD bgcolor="#0000cc"><FONT color="#ffffff">1st ƒCƒ“ƒvƒŒƒbƒVƒ‡ƒ“</FONT></TD>

+					<TD bgcolor="#0000cc"></TD>

+					<TD bgcolor="#0000cc" height="5"></TD>

+				</TR>

+				<TR>

+					<TD bgcolor="#0066cc" valign="top"><IMG src="image211.jpg"

+						border="0" width="195" height="130"></TD>

+					<TD>w“üŒˆ’è‚©‚çA”N––‚̍Q‚½‚¾‚µ‚¢ŽžŠú‚Å‚µ‚½‚ª2TŠÔ‚Ə­‚µ‚Ä”[ŽÔB<BR>

+					3“úŒã‚É•cê‚É‚r‚‹‚‰‚ɍs‚­—\’è‚Å‚µ‚½‚̂ŁAƒXƒ^ƒbƒhƒŒƒX‘•’…‚µ‚Ä‚à‚ç‚¢‚Ü‚µ‚½B<BR>

+					<UL>

+						<LI><FONT color="#ff00ff"><FONT color="#ff00ff"><B>Pros.</B></FONT></FONT>

+						<UL>

+							<LI>ƒXƒ€[ƒY‚ȃGƒ“ƒWƒ“B</LI>

+							<LI>ˆÀ’肵‚½‘–‚èi”[ŽÔ‚µ‚Ä3“úŒã‚̃Xƒm[Eƒhƒ‰ƒCƒu‚Í‚Æ‚Ä‚à‰õ“K‚Å‚µ‚½jB</LI>

+							<LI>ãŽ¿‚ōL‚¢Žº“àB</LI>

+							<LI>Žv‚Á‚½‚æ‚è‚àˆ«‚­‚È‚¢”R”ïi‚‘¬‚ðŠÜ‚߁AŒ»Ý•½‹Ï6.5Km/LBj</LI>

+							<LI>ŠX’†‚Å‚ ‚܂蓯‚¶ŽÔ‚ðŒ©‚©‚¯‚È‚¢F|j</LI>

+						</UL>

+						</LI>

+						<LI><B><FONT color="#000033">Cons.</FONT></B>

+						<UL>

+							<LI>•W€“‹Ú‚Ì‚m‚‚–‚‰‚Ƀr[ƒRƒ“‚ª•t‚¢‚Ä‚¢‚È‚¢B<BR>

+							ia‘؏î•ñ‚ª‚u‚h‚b‚r‚¾‚¯‚Å‚Í•s\•ªBˆÈ‘OŽ„—p‚µ‚Ä‚¢‚½ƒpƒCƒIƒjƒAŽÐ Šyƒiƒr‚Í—Ç‚©‚Á‚½Bj</LI>

+							<LI>ˆÙí‚È‚­‚ç‚¢’¼‚®•‚­ƒŠƒA‚ª‰˜‚ê‚éB ƒgƒ‰ƒ“ƒN‚ðŠJ‚¯‚é‚Ǝ肪^‚Á•B</LI>

+							<LI>‚¿‚å‚Á‚Æ‚Ó‚í‚ӂ킵‚½‘«‰ñ‚èB</LI>

+							<LI>‚u‚V‚O‚Æ”ä‚ׁAŒ¸‚Á‚Ä‚µ‚Ü‚Á‚½ƒgƒ‰ƒ“ƒN—e—ʁB</LI>

+						</UL>

+						</LI>

+					</UL>

+					</TD>

+					<TD bgcolor="#0066cc"></TD>

+				</TR>

+				<TR>

+					<TD bgcolor="#0000cc"><FONT color="#ffffff">‚Pƒ–ŒŽƒŒƒ|[ƒg‚É‘±‚­........</FONT><A

+						href="audi_1month.html"><IMG src="b016lis.gif" width="16"

+						height="16" border="0"></A></TD>

+					<TD bgcolor="#0000cc"></TD>

+					<TD bgcolor="#0000cc" height="5"></TD>

+				</TR>

+			</TBODY>

+		</TABLE>

+		</DIV>

+	</siteedit:layoutarea>

+</siteedit:layout>

+</BODY>

+</HTML>

diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/EmptyFile.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/EmptyFile.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/EmptyFile.xml
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/IllformedNormalNonDefault.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/IllformedNormalNonDefault.xml
new file mode 100644
index 0000000..e80692b
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/IllformedNormalNonDefault.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-1?>
+<test>
+</test>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/MalformedNoEncoding.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/MalformedNoEncoding.xml
new file mode 100644
index 0000000..38a1bce
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/MalformedNoEncoding.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding=""?>
+<tag>
+Australië
+</tag>
+
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/MalformedNoEncoding.xsl b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/MalformedNoEncoding.xsl
new file mode 100644
index 0000000..bd66482
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/MalformedNoEncoding.xsl
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding=""?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    version="1.0"
+    xmlns:xalan="http://xml.apache.org/xslt">
+<xsl:variable name="badEncoding">
+Australië
+</xsl:variable>
+</xsl:stylesheet>
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/NoEncoding.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/NoEncoding.xml
new file mode 100644
index 0000000..e2d8afd
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/NoEncoding.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<test>
+</test>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/NormalNonDefault.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/NormalNonDefault.xml
new file mode 100644
index 0000000..e2ec98f
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/NormalNonDefault.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<test>
+</test>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/UTF16LEAtStartOfLargeFile.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/UTF16LEAtStartOfLargeFile.xml
new file mode 100644
index 0000000..9eec539
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/UTF16LEAtStartOfLargeFile.xml
Binary files differ
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/UTF8With3ByteBOM.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/UTF8With3ByteBOM.xml
new file mode 100644
index 0000000..198112c
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/UTF8With3ByteBOM.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<test>
+</test>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/eucjp.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/eucjp.xml
new file mode 100644
index 0000000..2359bd6
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/eucjp.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="EUC-JP"?>
+<Person>
+	<Address>
+		<City>ÂçÏÂ</City>
+		<State>¿ÀÆàÀî</State>
+		<Zip>M1C 5C2</Zip>
+		<Country>ÆüËÜ</Country>
+	</Address>
+	<Name>
+		<First>°ìϺ</First>
+		<Last>ÎëÌÚ</Last>
+	</Name>
+</Person>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/shiftjis.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/shiftjis.xml
new file mode 100644
index 0000000..a94bcf8
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/shiftjis.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<Person>
+	<Address>
+		<City>‘å˜a</City>
+		<State>_“ސì</State>
+		<Zip>M1C 5C2</Zip>
+		<Country>“ú–{</Country>
+	</Address>
+	<Name>
+		<First>ˆê˜Y</First>
+		<Last>—é–Ø</Last>
+	</Name>
+</Person>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testExtraJunk.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testExtraJunk.xml
new file mode 100644
index 0000000..a5095e3
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testExtraJunk.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"  abcd="efc"
+
+encoding="ISO-8859-1" 
+
+ ?>
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testExtraValidStuff.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testExtraValidStuff.xml
new file mode 100644
index 0000000..0d5c1fb
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testExtraValidStuff.xml
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testIllFormed.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testIllFormed.xml
new file mode 100644
index 0000000..d611a31
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testIllFormed.xml
@@ -0,0 +1 @@
+<?xml version="1.0 encoding=UTF-8" standalone="yes"?>
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testIllFormed2.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testIllFormed2.xml
new file mode 100644
index 0000000..2f422fd
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testIllFormed2.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding=UTF-8 
+<test>
+</test>
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testIllFormed3.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testIllFormed3.xml
new file mode 100644
index 0000000..21eae02
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testIllFormed3.xml
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8 standalone="yes"?>
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testIllFormed4.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testIllFormed4.xml
new file mode 100644
index 0000000..c90c65d
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testIllFormed4.xml
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8?>
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testMultiLine.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testMultiLine.xml
new file mode 100644
index 0000000..b263fc2
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testMultiLine.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"  
+
+encoding="ISO-8859-1" 
+
+ ?>
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testNoEncodingValue.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testNoEncodingValue.xml
new file mode 100644
index 0000000..30b8e94
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testNoEncodingValue.xml
@@ -0,0 +1 @@
+<?xml version="1.0"    ?>
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testNoXMLDecl.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testNoXMLDecl.xml
new file mode 100644
index 0000000..69aa27e
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testNoXMLDecl.xml
@@ -0,0 +1,4 @@
+<test>
+
+</test>
+
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testNoXMLDeclAtFirst.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testNoXMLDeclAtFirst.xml
new file mode 100644
index 0000000..1e6549d
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testNoXMLDeclAtFirst.xml
@@ -0,0 +1,4 @@
+<test>
+ <?xml version="1.0" encoding="UTF-8" ?>
+</test>
+
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testNoXMLDeclInLargeFile.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testNoXMLDeclInLargeFile.xml
new file mode 100644
index 0000000..ca5fc53
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testNoXMLDeclInLargeFile.xml
@@ -0,0 +1,356 @@
+<test>
+
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+extra junk to make a large file (over 1000 chars)
+</test>
+
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testNormalCase.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testNormalCase.xml
new file mode 100644
index 0000000..575dbaa
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testNormalCase.xml
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" ?>
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testUTF16.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testUTF16.xml
new file mode 100644
index 0000000..4d9e817
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testUTF16.xml
Binary files differ
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testWSBeforeXMLDecl.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testWSBeforeXMLDecl.xml
new file mode 100644
index 0000000..d39d4d0
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testWSBeforeXMLDecl.xml
@@ -0,0 +1,4 @@
+
+<?xml version="1.0" encoding="UTF-8" ?>
+</test>
+
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testWSBeforeXMLDecl2.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testWSBeforeXMLDecl2.xml
new file mode 100644
index 0000000..8c05b4a
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testWSBeforeXMLDecl2.xml
@@ -0,0 +1,3 @@
+          <?xml version="1.0" encoding="UTF-8" ?>
+</test>
+
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testWSBeforeXMLDecl3.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testWSBeforeXMLDecl3.xml
new file mode 100644
index 0000000..88b8d08
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/testWSBeforeXMLDecl3.xml
@@ -0,0 +1,4 @@
+	
+	      		    <?xml version="1.0" encoding="UTF-8" ?>
+</test>
+
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/utf16UnicodeStreamWithNoEncodingInHeader2.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/utf16UnicodeStreamWithNoEncodingInHeader2.xml
new file mode 100644
index 0000000..47e6916
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/utf16UnicodeStreamWithNoEncodingInHeader2.xml
Binary files differ
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/utf16UnicodeStreamWithNoEncodingInHeaderBE.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/utf16UnicodeStreamWithNoEncodingInHeaderBE.xml
new file mode 100644
index 0000000..d7ffd6d
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/utf16UnicodeStreamWithNoEncodingInHeaderBE.xml
Binary files differ
diff --git a/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/utf16WithJapaneseChars.xml b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/utf16WithJapaneseChars.xml
new file mode 100644
index 0000000..0f6e37b
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.tests.encoding/testfiles/xml/utf16WithJapaneseChars.xml
Binary files differ
diff --git a/tests/org.eclipse.wst.xml.ui.tests/.classpath b/tests/org.eclipse.wst.xml.ui.tests/.classpath
new file mode 100644
index 0000000..a995846
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.ui.tests/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry path="org.eclipse.pde.core.requiredPlugins" kind="con">
+		<accessrules>
+			<accessrule kind="accessible" pattern="org/eclipse/wst/**"/>
+		</accessrules>
+	</classpathentry>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.wst.xml.ui.tests/.cvsignore b/tests/org.eclipse.wst.xml.ui.tests/.cvsignore
new file mode 100644
index 0000000..7fb0a7b
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.ui.tests/.cvsignore
@@ -0,0 +1,5 @@
+bin
+
+build.xml
+temp.folder
+xmluitests.jar
diff --git a/tests/org.eclipse.wst.xml.ui.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.wst.xml.ui.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..f7d4f9e
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.ui.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name.0
+Bundle-SymbolicName: org.eclipse.wst.xml.ui.tests; singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: xmluitests.jar
+Bundle-Activator: org.eclipse.wst.xml.ui.tests.XMLUITestsPlugin
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Export-Package: org.eclipse.wst.xml.ui.tests,
+ org.eclipse.wst.xml.ui.tests.breakpoints,
+ org.eclipse.wst.xml.ui.tests.viewer
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.jface.text,
+ org.eclipse.wst.xml.ui,
+ org.eclipse.wst.sse.ui,
+ org.eclipse.ui.workbench.texteditor,
+ org.eclipse.ui.ide,
+ org.junit,
+ org.eclipse.wst.sse.core,
+ org.eclipse.ui.views,
+ org.eclipse.core.resources,
+ org.eclipse.core.runtime,
+ org.eclipse.wst.xml.core,
+ org.eclipse.wst.validation,
+ com.ibm.icu
+Eclipse-LazyStart: true
diff --git a/tests/org.eclipse.wst.xml.ui.tests/about.html b/tests/org.eclipse.wst.xml.ui.tests/about.html
new file mode 100644
index 0000000..4ec5989
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.ui.tests/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/tests/org.eclipse.wst.xml.ui.tests/build.properties b/tests/org.eclipse.wst.xml.ui.tests/build.properties
index 4d50253..15cc63c 100644
--- a/tests/org.eclipse.wst.xml.ui.tests/build.properties
+++ b/tests/org.eclipse.wst.xml.ui.tests/build.properties
@@ -1,10 +1,10 @@
 ###############################################################################
-# Copyright (c) 2004, 2006 IBM Corporation and others.
+# Copyright (c) 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
 ###############################################################################
@@ -14,8 +14,7 @@
                META-INF/,\
                plugin.properties,\
                about.html,\
-               testresources/,\
-               icons/
+               testresources/
 jars.compile.order = xmluitests.jar
 source.xmluitests.jar = src/
 output.xmluitests.jar = bin/
diff --git a/tests/org.eclipse.wst.xml.ui.tests/plugin.properties b/tests/org.eclipse.wst.xml.ui.tests/plugin.properties
index 6053dd5..521f083 100644
--- a/tests/org.eclipse.wst.xml.ui.tests/plugin.properties
+++ b/tests/org.eclipse.wst.xml.ui.tests/plugin.properties
@@ -1,10 +1,10 @@
 ###############################################################################
-# Copyright (c) 2005, 2006 IBM Corporation and others.
+# Copyright (c) 2005 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
 ###############################################################################
diff --git a/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/Logger.java b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/Logger.java
index 2871e3a..b942520 100644
--- a/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/Logger.java
+++ b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/Logger.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
+ * Copyright (c) 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
  *******************************************************************************/
@@ -141,4 +141,4 @@
 	public static void trace(String category, String message) {
 		_trace(category, message, null);
 	}
-}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/TestEditorConfigurationXML.java b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/TestEditorConfigurationXML.java
index 259d6aa..6cc9034 100644
--- a/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/TestEditorConfigurationXML.java
+++ b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/TestEditorConfigurationXML.java
@@ -1,14 +1,15 @@
-/*******************************************************************************
+/*
  * Copyright (c) 2005 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
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
  * Contributors:
  *   IBM - Initial API and implementation
  *   Jens Lukowski/Innoopract - initial renaming/restructuring
- *******************************************************************************/
+ * 
+ */
 package org.eclipse.wst.xml.ui.tests;
 
 import junit.framework.TestCase;
diff --git a/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/TestOpenEditorXML.java b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/TestOpenEditorXML.java
index 4175fde..b88d308 100644
--- a/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/TestOpenEditorXML.java
+++ b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/TestOpenEditorXML.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2005 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
  *     
diff --git a/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/VerifyEditorPlugin.java b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/VerifyEditorPlugin.java
index f15e411..c697fbe 100644
--- a/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/VerifyEditorPlugin.java
+++ b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/VerifyEditorPlugin.java
@@ -1,13 +1,12 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 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
- *******************************************************************************/
+/*****************************************************************************
+ * Copyright (c) 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.wst.xml.ui.tests;
 
 import junit.framework.TestCase;
diff --git a/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/XMLUIPreferencesTest.java b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/XMLUIPreferencesTest.java
new file mode 100644
index 0000000..068526a
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/XMLUIPreferencesTest.java
@@ -0,0 +1,115 @@
+/*******************************************************************************
+ * Copyright (c) 2005 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.wst.xml.ui.tests;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.wst.xml.ui.internal.XMLUIPlugin;
+import org.eclipse.wst.xml.ui.internal.preferences.XMLUIPreferenceNames;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleException;
+
+/**
+ * The purpose of this test is to verify the validity of the XML Source editor
+ * preferences. Tests include setting/getting preferences.
+ * 
+ * NOTE: This test should be preformed on a clean workspace. If performed on
+ * an existing workspace, this test will manipulate preferences in the
+ * workspace, though attempts will be made to restore original values after
+ * testing.
+ */
+public class XMLUIPreferencesTest extends TestCase {
+	/**
+	 * Tests existance of preference values when getting preference values
+	 * through Platform.getPreferencesService()
+	 */
+	public void testBundleGetPreferences() {
+		final String bundleName = "org.eclipse.wst.xml.ui";
+
+		// need to start up bundle for default values to be loaded
+		Bundle bundle = Platform.getBundle(bundleName);
+		try {
+			if (bundle != null)
+				bundle.start();
+			else
+				fail("Get preference value failed because could not find bundle: " + bundleName);
+		} catch (BundleException e) {
+			fail("Get preference value failed because of exception starting bundle: " + bundleName + " exception: " + e);
+		}
+
+		bundleGetPreference(bundleName, XMLUIPreferenceNames.AUTO_PROPOSE);
+		bundleGetPreference(bundleName, XMLUIPreferenceNames.AUTO_PROPOSE_CODE);
+		bundleGetPreference(bundleName, XMLUIPreferenceNames.USE_INFERRED_GRAMMAR);
+	}
+	
+	private void bundleGetPreference(String bundleName, String prefKey) {
+		String defaultValue = Long.toString(System.currentTimeMillis());	// random string
+		
+		String value = Platform.getPreferencesService().getString(bundleName, prefKey, defaultValue, null);
+		assertNotSame("Get preference value failed using Platform.getPreferencesService. Key: "+prefKey, defaultValue, value);		
+	}
+
+	/**
+	 * Tests default values of preferences.
+	 * 
+	 * NOTE: Expected default values are hard-coded, so if default values do
+	 * get changed, assertions need to be updated as well
+	 */
+	public void testPluginGetDefaultPreferences() {
+		IPreferenceStore store = XMLUIPlugin.getDefault().getPreferenceStore();
+		
+		pluginGetDefaultPreference(store, XMLUIPreferenceNames.AUTO_PROPOSE, Boolean.toString(true));
+		pluginGetDefaultPreference(store, XMLUIPreferenceNames.AUTO_PROPOSE_CODE, "<");
+		pluginGetDefaultPreference(store, XMLUIPreferenceNames.USE_INFERRED_GRAMMAR, Boolean.toString(true));
+	}
+	
+	private void pluginGetDefaultPreference(IPreferenceStore store, String prefKey, String expected) {
+		String defaultValue = store.getDefaultString(prefKey);
+		assertEquals("Get default preference value failed using plugin.getPreferenceStore. Key: "+prefKey, expected, defaultValue);
+	}
+
+	/**
+	 * Tests setting preference values by setting preference value to be a
+	 * certain value, then getting the preference value to verify it was set.
+	 */
+	public void testPluginSetPreferences() {
+		IPreferenceStore store = XMLUIPlugin.getDefault().getPreferenceStore();
+		
+		pluginSetPreferenceBoolean(store, XMLUIPreferenceNames.AUTO_PROPOSE);
+		pluginSetPreferenceString(store, XMLUIPreferenceNames.AUTO_PROPOSE_CODE);
+		pluginSetPreferenceBoolean(store, XMLUIPreferenceNames.USE_INFERRED_GRAMMAR);
+	}
+	
+	private void pluginSetPreferenceBoolean(IPreferenceStore store, String prefKey) {
+		boolean originalValue = store.getBoolean(prefKey);
+		boolean expectedValue = !originalValue;
+		store.setValue(prefKey, expectedValue);
+		boolean foundValue = store.getBoolean(prefKey);
+		assertEquals("Set preference value failed using plugin.getPreferenceStore. Key: "+prefKey+"  expected: " + expectedValue + " found: " + foundValue, expectedValue, foundValue);
+
+		// attempt to restore original preference value
+		store.setValue(prefKey, originalValue);
+	}
+	
+	private void pluginSetPreferenceString(IPreferenceStore store, String prefKey) {		
+		String originalValue = store.getString(prefKey);
+		String expectedValue = Long.toString(System.currentTimeMillis());	// random string
+		store.setValue(prefKey, expectedValue);
+		String foundValue = store.getString(prefKey);
+		assertEquals("Set preference value failed using plugin.getPreferenceStore. Key: "+prefKey+"  expected: " + expectedValue + " found: " + foundValue, expectedValue, foundValue);
+
+		// attempt to restore original preference value
+		store.setValue(prefKey, originalValue);
+	}
+}
diff --git a/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/XMLUITestSuite.java b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/XMLUITestSuite.java
index 7ef45d5..ea626df 100644
--- a/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/XMLUITestSuite.java
+++ b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/XMLUITestSuite.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
+ * Copyright (c) 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
  *******************************************************************************/
@@ -37,4 +37,4 @@
 		addTestSuite(TestReconcilerXML.class);
 		addTestSuite(TestSourceValidationFramework.class);
 	}
-}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/breakpoints/BreakpointErrorProvider.java b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/breakpoints/BreakpointErrorProvider.java
index 91c7bbf..0bfc2d4 100644
--- a/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/breakpoints/BreakpointErrorProvider.java
+++ b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/breakpoints/BreakpointErrorProvider.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
+ * Copyright (c) 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
  *******************************************************************************/
@@ -61,4 +61,4 @@
 	public void setSourceEditingTextTools(ISourceEditingTextTools tool) {
 		fTool = tool;
 	}
-}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/breakpoints/EnableWarningAction.java b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/breakpoints/EnableWarningAction.java
index 46a7f66..9062cce 100644
--- a/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/breakpoints/EnableWarningAction.java
+++ b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/breakpoints/EnableWarningAction.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
+ * Copyright (c) 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
  *******************************************************************************/
@@ -111,4 +111,4 @@
 		else
 			setText("Enable Breakpoint Errors");
 	}
-}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/viewer/TestViewerConfigurationXML.java b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/viewer/TestViewerConfigurationXML.java
index 3fa89bd..ab3223a 100644
--- a/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/viewer/TestViewerConfigurationXML.java
+++ b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/viewer/TestViewerConfigurationXML.java
@@ -1,13 +1,3 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 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.wst.xml.ui.tests.viewer;
 
 import junit.framework.TestCase;
diff --git a/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/viewer/ViewerTestXML.java b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/viewer/ViewerTestXML.java
index 3398345..6cd7431 100644
--- a/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/viewer/ViewerTestXML.java
+++ b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/viewer/ViewerTestXML.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
+ * Copyright (c) 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
  *******************************************************************************/
@@ -497,4 +497,4 @@
 		}
 	}
 
-}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.ui.tests/test.xml b/tests/org.eclipse.wst.xml.ui.tests/test.xml
index d928e35..e47fef0 100644
--- a/tests/org.eclipse.wst.xml.ui.tests/test.xml
+++ b/tests/org.eclipse.wst.xml.ui.tests/test.xml
@@ -1,114 +1,85 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0"?>
 
 <project
-    name="testsuite"
-    default="run"
-    basedir=".">
-    
-    <!-- The following properties should be passed into this script -->
-    <!-- ${eclipse-home}   -->
-    <!-- ${buildDirectory}  -->
-    <!-- ${buildLabel}        -->
+	name="testsuite"
+	default="run"
+	basedir=".">
+	<!-- The property ${eclipse-home} should be passed into this script -->
+	<!-- Set a meaningful default value for when it is not. -->
+	<!-- <property name="eclipse-home" value="${basedir}\..\.." />-->
 
-    <!-- should be little need to change what's above  -->
+	<echo message="basedir ${basedir}" />
+	<echo message="eclipse place ${eclipse-home}" />
+
+	<!-- sets the properties plugin-name, and library-file -->
 	<property
 		name="plugin-name"
 		value="org.eclipse.wst.xml.ui.tests" />
-    <property
-        name="classname"
-        value="org.eclipse.wst.xml.ui.tests.XMLUITestSuite" />
-    <property
-        name="testType"
-        value="ui-test" />
+	<property
+		name="library-file"
+		value="${eclipse-home}/plugins/org.eclipse.test_3.1.0/library.xml" />
 
-    <!-- should be little need to change what's below -->
+	<!-- This target holds all initialization code that needs to be done for -->
+	<!-- all tests that are to be run. Initialization for individual tests -->
+	<!-- should be done within the body of the suite target. -->
+	<target name="init">
+		<delete>
+			<fileset
+				dir="${eclipse-home}"
+				includes="org.eclipse.wst.xml.ui.tests.*xml" />
+		</delete>
+	</target>
 
-    <echo message="basedir: ${basedir}" />
-    <echo message="eclipse-home: ${eclipse-home}" />
-    <echo message="buildDirectory: ${buildDirectory}" />
-    <echo message="plugin-name: ${plugin-name}" />
-    <echo message="classname: ${classname}" />
-    <echo message="testType ${testType}" />
+	<!-- This target defines the tests that need to be run. -->
+	<target name="suite">
+		<property
+			name="wst-folder"
+			value="${eclipse-home}/wst_folder" />
+		<delete
+			dir="${wst-folder}"
+			quiet="true" />
+		<ant
+			target="ui-test"
+			antfile="${library-file}"
+			dir="${eclipse-home}">
+			<property
+				name="data-dir"
+				value="${wst-folder}" />
+			<property
+				name="plugin-name"
+				value="${plugin-name}" />
+			<property
+				name="classname"
+				value="org.eclipse.wst.xml.ui.tests.XMLUITestSuite" />
+			<property
+				name="plugin-path"
+				value="${eclipse-home}/plugins/${plugin-name}" />
+		</ant>
+	</target>
 
+	<!-- This target holds code to cleanup the testing environment after -->
+	<!-- after all of the tests have been run. You can use this target to -->
+	<!-- delete temporary files that have been created. -->
+	<target name="cleanup">
+		<!-- <delete dir="${workspace}" quiet="true" />-->
+	</target>
 
-    <property
-        name="library-file"
-        value="${eclipse-home}/plugins/org.eclipse.test_3.1.0/library.xml" />
-    <property
-        name="workspace"
-        value="${eclipse-home}/junitworkspaces/${plugin-name}" />
-        
-    <!-- This target holds all initialization code that needs to be done for -->
-    <!-- all tests that are to be run. Initialization for individual tests -->
-    <!-- should be done within the body of the suite target. -->
-    <target name="init">
-        <tstamp />
-        <delete>
-            <fileset
-                dir="${eclipse-home}"
-                includes="${plugin-name}.*xml" />
-        </delete>
-        <!-- make directory, in case path doesn't exist yet -->
-        <mkdir dir="${workspace}" />
-        <!--  but delete to make sure fresh contents-->
-        <delete
-            dir="${workspace}"
-            quiet="true" />
-
-    </target>
-
-    <!-- This target defines the tests that need to be run. -->
-    <target name="suite">
-
-        <ant
-            target="${testType}"
-            antfile="${library-file}"
-            dir="${eclipse-home}">
-            <property
-                name="data-dir"
-                value="${workspace}" />
-            <property
-                name="plugin-name"
-                value="${plugin-name}" />
-            <property
-                name="classname"
-                value="${classname}" />
-            <property
-                name="plugin-path"
-                value="${eclipse-home}/plugins/${plugin-name}" />
-        </ant>
-
-        <copy
-            failonerror="false"
-            file="${workspace}/.metadata/.log"
-            tofile="${buildDirectory}/${buildLabel}/testResults/consolelogs/${plugin-name}.consolelog.txt" />
-
-    </target>
-
-    <!-- This target holds code to cleanup the testing environment after -->
-    <!-- after all of the tests have been run. You can use this target to -->
-    <!-- delete temporary files that have been created. -->
-    <target name="cleanup">
-        <!-- usually no need to delete workspace until next run, and leaving it allows inspection -->
-        <!-- <delete dir="${workspace}" quiet="true" /> -->
-    </target>
-
-    <!-- This target runs the test suite. Any actions that need to happen -->
-    <!-- after all the tests have been run should go here. -->
-    <target
-        name="run"
-        depends="init,suite,cleanup">
-        <ant
-            target="collect"
-            antfile="${library-file}"
-            dir="${eclipse-home}">
-            <property
-                name="includes"
-                value="${plugin-name}.*xml" />
-            <property
-                name="output-file"
-                value="${plugin-name}.xml" />
-        </ant>
-    </target>
+	<!-- This target runs the test suite. Any actions that need to happen -->
+	<!-- after all the tests have been run should go here. -->
+	<target
+		name="run"
+		depends="init,suite,cleanup">
+		<ant
+			target="collect"
+			antfile="${library-file}"
+			dir="${eclipse-home}">
+			<property
+				name="includes"
+				value="org.eclipse.wst.xml.ui.tests.*xml" />
+			<property
+				name="output-file"
+				value="${plugin-name}.xml" />
+		</ant>
+	</target>
 
 </project>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.validation.tests/.classpath b/tests/org.eclipse.wst.xml.validation.tests/.classpath
new file mode 100644
index 0000000..1d8baf7
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.validation.tests/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src/"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry path="org.eclipse.pde.core.requiredPlugins" kind="con">
+		<accessrules>
+			<accessrule kind="accessible" pattern="org/eclipse/wst/**"/>
+		</accessrules>
+	</classpathentry>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.wst.xml.validation.tests/.cvsignore b/tests/org.eclipse.wst.xml.validation.tests/.cvsignore
new file mode 100644
index 0000000..2c9b88d
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.validation.tests/.cvsignore
@@ -0,0 +1,4 @@
+bin
+temp.folder
+build.xml
+validatexmltests.jar
diff --git a/tests/org.eclipse.wst.xml.validation.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.wst.xml.validation.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..e388a83
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.validation.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name.0
+Bundle-SymbolicName: org.eclipse.wst.xml.validation.tests
+Bundle-Version: 1.0.202.qualifier
+Bundle-ClassPath: validatexmltests.jar
+Bundle-Activator: org.eclipse.wst.xml.validation.tests.internal.XMLValidatorTestsPlugin
+Bundle-Vendor: %Bundle-Vendor.0
+Bundle-Localization: plugin
+Export-Package: org.eclipse.wst.xml.validation.tests.internal;x-internal:=true
+Require-Bundle: org.junit,
+ org.eclipse.core.runtime,
+ org.eclipse.wst.xml.core,
+ org.eclipse.wst.xml.ui,
+ org.eclipse.wst.validation,
+ org.eclipse.core.resources,
+ org.eclipse.wst.common.uriresolver
+Eclipse-LazyStart: true
diff --git a/tests/org.eclipse.wst.xml.validation.tests/about.html b/tests/org.eclipse.wst.xml.validation.tests/about.html
new file mode 100644
index 0000000..4ec5989
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.validation.tests/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/tests/org.eclipse.wst.xml.validation.tests/build.properties b/tests/org.eclipse.wst.xml.validation.tests/build.properties
new file mode 100644
index 0000000..4b89c52
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.validation.tests/build.properties
@@ -0,0 +1,7 @@
+bin.includes = test.xml,\
+               testresources/,\
+               validatexmltests.jar,\
+               META-INF/,\
+               about.html
+source.validatexmltests.jar = src/
+bin.excludes = testresources/.cvsignore
diff --git a/tests/org.eclipse.wst.xml.validation.tests/plugin.properties b/tests/org.eclipse.wst.xml.validation.tests/plugin.properties
index 83faaf6..65c0568 100644
--- a/tests/org.eclipse.wst.xml.validation.tests/plugin.properties
+++ b/tests/org.eclipse.wst.xml.validation.tests/plugin.properties
@@ -1,13 +1,3 @@
-###############################################################################
-# Copyright (c) 2005, 2006 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
-###############################################################################
 # properties file for org.eclipse.wst.xml.validation.tests
 Bundle-Vendor.0 = Eclipse
 Bundle-Name.0 = XML Validator Tests Plug-in
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.validation.tests/src/org/eclipse/wst/xml/core/internal/validation/eclipse/ValidatorTest.java b/tests/org.eclipse.wst.xml.validation.tests/src/org/eclipse/wst/xml/core/internal/validation/eclipse/ValidatorTest.java
new file mode 100644
index 0000000..f0a68e7
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.validation.tests/src/org/eclipse/wst/xml/core/internal/validation/eclipse/ValidatorTest.java
@@ -0,0 +1,186 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.wst.xml.core.internal.validation.eclipse;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.eclipse.wst.validation.internal.core.Message;
+import org.eclipse.wst.xml.core.internal.XMLCorePlugin;
+import org.eclipse.wst.xml.core.internal.preferences.XMLCorePreferenceNames;
+import org.eclipse.wst.xml.core.internal.validation.core.ValidationMessage;
+import org.eclipse.wst.xml.core.internal.validation.core.ValidationReport;
+import org.eclipse.wst.xml.validation.tests.internal.XMLValidatorTestsPlugin;
+
+public class ValidatorTest extends TestCase 
+{
+  ValidatorWrapper validator = new ValidatorWrapper();
+  
+  /**
+   * Create a tests suite from this test class.
+   * 
+   * @return A test suite containing this test class.
+   */
+  public static Test suite()
+  {
+    return new TestSuite(ValidatorTest.class);
+  }
+  
+  /**
+   * Test the addInfoToMessage method. The following tests are performed:<br/>
+   * 1. When the validation message contains a null key nothing is added to the message.<br/>
+   * 2. When the message contains the key "ENTIRE_ELEMENT" the three attributes are added
+   * to the method and the SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE is null.<br/>
+   * 3. When the message contains the key "EntityNotDeclared" the three attributes are set.
+   */
+  public void testAddInfoToMessage()
+  {
+    // These strings are common addition information types.
+	String COLUMN_NUMBER_ATTRIBUTE = "columnNumber"; //$NON-NLS-1$
+	String SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE = "squiggleSelectionStrategy"; //$NON-NLS-1$
+	String SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE = "squiggleNameOrValue"; //$NON-NLS-1$
+	
+	// Test that the message does not contain the attributes when the method is called
+	// with a null key.
+	ValidationMessage validationMessage = new ValidationMessage("", 1, 1, "");
+	Message message = new Message();
+	validator.addInfoToMessage(validationMessage, message);
+	assertNull("COLUMN_NUMBER_ATTRIBUTE was not null for a ValidationMessage with a null key. COLUMN_NUMBER_ATTRIBUTE = " + message.getAttribute(COLUMN_NUMBER_ATTRIBUTE), message.getAttribute(COLUMN_NUMBER_ATTRIBUTE));
+	assertNull("SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE was not null for a ValidationMessage with a null key. SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE = " + message.getAttribute(SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE), message.getAttribute(SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE));
+	assertNull("SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE was not null for a ValidationMessage with a null key. SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE = " + message.getAttribute(SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE), message.getAttribute(SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE));
+	
+	// Test that the message contains the three attributes when the key is set to "ElementUnterminated".
+	ValidationMessage validationMessage2 = new ValidationMessage("", 1, 1, "", "ElementUnterminated", null);
+	Message message2 = new Message();
+	validator.addInfoToMessage(validationMessage2, message2);
+	assertEquals("COLUMN_NUMBER_ATTRIBUTE was correctly set to 1 for a ValidationMessage with the key ENTIRE_ELEMENT. COLUMN_NUMBER_ATTRIBUTE = " + message2.getAttribute(COLUMN_NUMBER_ATTRIBUTE), new Integer(1), message2.getAttribute(COLUMN_NUMBER_ATTRIBUTE));
+	assertEquals("SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE was not ENTIRE_ELEMENT. SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE = " + message2.getAttribute(SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE), "ENTIRE_ELEMENT", message2.getAttribute(SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE));
+	assertNull("SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE was not null for a ValidationMessage with the key ENTIRE_ELEMENT. SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE = " + message2.getAttribute(SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE), message2.getAttribute(SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE));
+	
+    // Test that the message contains the three attributes when the key is set to "EntityNotDeclared".
+	ValidationMessage validationMessage3 = new ValidationMessage("", 1, 1, "", "EntityNotDeclared", new Object[]{"MyName"});
+	Message message3 = new Message();
+	validator.addInfoToMessage(validationMessage3, message3);
+	assertEquals("COLUMN_NUMBER_ATTRIBUTE was correctly set to 1 for a ValidationMessage with the key EntityNotDeclared. COLUMN_NUMBER_ATTRIBUTE = " + message3.getAttribute(COLUMN_NUMBER_ATTRIBUTE), new Integer(1), message3.getAttribute(COLUMN_NUMBER_ATTRIBUTE));
+	assertEquals("SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE was not TEXT_ENTITY_REFERENCE. SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE = " + message3.getAttribute(SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE), "TEXT_ENTITY_REFERENCE", message3.getAttribute(SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE));
+	assertEquals("SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE was not set to MyName for a ValidationMessage with the key EntityNotDeclared. SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE = " + message3.getAttribute(SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE), "MyName", message3.getAttribute(SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE));
+  }
+  
+  /**
+   * Test the validate method. Tests to be performed:<br/>
+   * 1. Test that validating a valid file from a URI or an input stream produces the same result.<br/>
+   * 2. Test that validating an invalid file from a URI or an input stream produces the same result.
+   */
+  public void testValidate()
+  {
+	try
+	{
+	  // Test that validating a valid file from a URI and an input stream produces the same result.
+	  String PLUGIN_ABSOLUTE_PATH = XMLValidatorTestsPlugin.getPluginLocation().toString() + "/";
+	  String uri = "file:///" + PLUGIN_ABSOLUTE_PATH + "testresources/samples/XMLExamples/PublicationCatalogue/Catalogue.xml";
+	  ValidationReport report1 = validator.validate(uri, null, null);
+	  ValidationReport report2 = null;
+	  InputStream is = null;
+	  try
+	  {
+	    is = new URL(uri).openStream();
+	    report2 = validator.validate(uri, is, null);
+	  }
+	  catch(Exception e)
+	  {
+		fail("A problem occurred while validating a valid file with an inputstream: " + e);
+	  }
+	  finally
+	  {
+		if(is != null)
+		{
+		  try
+		  {
+		    is.close();
+		  }
+		  catch(IOException e)
+		  {
+			// Do nothing.
+		  }
+		}
+	  }
+	  assertTrue("Validation using a URI did not product a valid validation result.", report1.isValid());
+	  assertEquals("Validation using URI and using inputstream of the same file produces different numbers of errors.", report1.getValidationMessages().length, report2.getValidationMessages().length);
+	  
+      // Test that validating an invalid file from a URI and an input stream produces the same result.
+	  uri = "file:///" + PLUGIN_ABSOLUTE_PATH + "testresources/samples/Paths/Dash-InPath/DashInPathInvalid.xml";
+	  report1 = validator.validate(uri, null, null);
+	  report2 = null;
+	  is = null;
+	  try
+	  {
+	    is = new URL(uri).openStream();
+	    report2 = validator.validate(uri, is, null);
+	  }
+	  catch(Exception e)
+	  {
+		fail("A problem occurred while validating an invalid file with an inputstream: " + e);
+	  }
+	  finally
+	  {
+		if(is != null)
+		{
+		  try
+		  {
+		    is.close();
+		  }
+		  catch(IOException e)
+		  {
+			// Do nothing.
+		  }
+		}
+	  }
+	  assertFalse("Validation using a URI did not product an invalid validation result.", report1.isValid());
+	  assertEquals("Validation using URI and using inputstream of the same file produces different numbers of errors.", report1.getValidationMessages().length, report2.getValidationMessages().length);
+	}
+	catch(Exception e)
+	{
+	  fail("Unable to locate plug-in location: " + e);
+	}
+  }
+  
+  /**
+   * Test that the warn no grammar preference is read from the XML core preferences.
+   * There are three tests to perform.
+   * 1. Test that the default preference is disabled.
+   * 2. Test that setting the preference to enabled works.
+   * 3. Test that setting the preference to disabled works.
+   */
+  public void testWarnNoGrammarPreference()
+  {
+	// Test that the default preference is disabled.
+	validator.setupValidation(null);
+	assertFalse("The default warn no grammar preference is not false.", validator.getWarnNoGrammarPreference());
+	
+	// Test that the preference is read when enabled.
+	XMLCorePlugin.getDefault().getPluginPreferences().setValue(XMLCorePreferenceNames.WARN_NO_GRAMMAR, true);
+	validator.setupValidation(null);
+	assertTrue("The warn no grammar preference is not true when the preference is set to true.", validator.getWarnNoGrammarPreference());
+	
+	
+	// Test that the preference is read when disabled.
+	XMLCorePlugin.getDefault().getPluginPreferences().setValue(XMLCorePreferenceNames.WARN_NO_GRAMMAR, false);
+	validator.setupValidation(null);
+	assertFalse("The warn no grammar preference is not false when the preference is set to false.", validator.getWarnNoGrammarPreference());
+	
+  }
+
+}
diff --git a/tests/org.eclipse.wst.xml.validation.tests/src/org/eclipse/wst/xml/validation/tests/internal/BaseTestCase.java b/tests/org.eclipse.wst.xml.validation.tests/src/org/eclipse/wst/xml/validation/tests/internal/BaseTestCase.java
index 1d8c734..9bc17c8 100644
--- a/tests/org.eclipse.wst.xml.validation.tests/src/org/eclipse/wst/xml/validation/tests/internal/BaseTestCase.java
+++ b/tests/org.eclipse.wst.xml.validation.tests/src/org/eclipse/wst/xml/validation/tests/internal/BaseTestCase.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2006 IBM Corporation and others.
+ * Copyright (c) 2001, 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
  *******************************************************************************/
diff --git a/tests/org.eclipse.wst.xml.validation.tests/src/org/eclipse/wst/xml/validation/tests/internal/PathsTest.java b/tests/org.eclipse.wst.xml.validation.tests/src/org/eclipse/wst/xml/validation/tests/internal/PathsTest.java
index f2390c0..67245f0 100644
--- a/tests/org.eclipse.wst.xml.validation.tests/src/org/eclipse/wst/xml/validation/tests/internal/PathsTest.java
+++ b/tests/org.eclipse.wst.xml.validation.tests/src/org/eclipse/wst/xml/validation/tests/internal/PathsTest.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2005 IBM Corporation and others.
+ * Copyright (c) 2001, 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
  *******************************************************************************/
diff --git a/tests/org.eclipse.wst.xml.validation.tests/src/org/eclipse/wst/xml/validation/tests/internal/XMLExamplesTest.java b/tests/org.eclipse.wst.xml.validation.tests/src/org/eclipse/wst/xml/validation/tests/internal/XMLExamplesTest.java
index 2511f63..ef6ca86 100644
--- a/tests/org.eclipse.wst.xml.validation.tests/src/org/eclipse/wst/xml/validation/tests/internal/XMLExamplesTest.java
+++ b/tests/org.eclipse.wst.xml.validation.tests/src/org/eclipse/wst/xml/validation/tests/internal/XMLExamplesTest.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2007 IBM Corporation and others.
+ * Copyright (c) 2001, 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
  *******************************************************************************/
diff --git a/tests/org.eclipse.wst.xml.validation.tests/testresources/samples/Paths/Space InPath/SpaceInPathInvalid.xml b/tests/org.eclipse.wst.xml.validation.tests/testresources/samples/Paths/Space InPath/SpaceInPathInvalid.xml
new file mode 100644
index 0000000..9ef6646
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.validation.tests/testresources/samples/Paths/Space InPath/SpaceInPathInvalid.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.validation.tests/testresources/samples/Paths/Space InPath/SpaceInPathValid.xml b/tests/org.eclipse.wst.xml.validation.tests/testresources/samples/Paths/Space InPath/SpaceInPathValid.xml
new file mode 100644
index 0000000..bf35cb1
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.validation.tests/testresources/samples/Paths/Space InPath/SpaceInPathValid.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root/>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/.classpath b/tests/org.eclipse.wst.xsd.validation.tests/.classpath
new file mode 100644
index 0000000..1d8baf7
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src/"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry path="org.eclipse.pde.core.requiredPlugins" kind="con">
+		<accessrules>
+			<accessrule kind="accessible" pattern="org/eclipse/wst/**"/>
+		</accessrules>
+	</classpathentry>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/.cvsignore b/tests/org.eclipse.wst.xsd.validation.tests/.cvsignore
new file mode 100644
index 0000000..28a680d
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/.cvsignore
@@ -0,0 +1,4 @@
+bin
+build.xml
+validatexsdtests.jar
+temp.folder
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/.project b/tests/org.eclipse.wst.xsd.validation.tests/.project
new file mode 100644
index 0000000..d48cd47
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.wst.xsd.validation.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/.settings/org.eclipse.core.resources.prefs b/tests/org.eclipse.wst.xsd.validation.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..afa5c91
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+#Tue Apr 04 03:36:32 EDT 2006
+eclipse.preferences.version=1
+encoding/<project>=ISO-8859-1
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/.settings/org.eclipse.core.runtime.prefs b/tests/org.eclipse.wst.xsd.validation.tests/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..7ec5750
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,3 @@
+#Mon Apr 17 01:48:39 EDT 2006
+eclipse.preferences.version=1
+line.separator=\r\n
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.wst.xsd.validation.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..5f7bac7
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,80 @@
+#Sat Aug 19 16:31:43 EDT 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=error
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=enabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=ignore
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+org.eclipse.jdt.core.compiler.problem.unusedLabel=error
+org.eclipse.jdt.core.compiler.problem.unusedLocal=error
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.3
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/.settings/org.eclipse.jdt.ui.prefs b/tests/org.eclipse.wst.xsd.validation.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..301c7ad
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,4 @@
+#Mon Apr 17 01:48:39 EDT 2006
+eclipse.preferences.version=1
+internal.default.compliance=default
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?>\r\n<templates/>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/.settings/org.eclipse.ltk.core.refactoring.prefs b/tests/org.eclipse.wst.xsd.validation.tests/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..c59368c
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Tue Apr 04 03:36:32 EDT 2006
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/.settings/org.eclipse.pde.prefs b/tests/org.eclipse.wst.xsd.validation.tests/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..fc522bb
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,16 @@
+#Mon Apr 17 02:01:33 EDT 2006
+compilers.incompatible-environment=0
+compilers.p.build=0
+compilers.p.deprecated=1
+compilers.p.illegal-att-value=0
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=0
+compilers.p.unknown-attribute=0
+compilers.p.unknown-class=0
+compilers.p.unknown-element=0
+compilers.p.unknown-resource=0
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.p.unused-element-or-attribute=0
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.wst.xsd.validation.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..55c2bad
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name.0
+Bundle-SymbolicName: org.eclipse.wst.xsd.validation.tests
+Bundle-Version: 1.0.201.qualifier
+Bundle-ClassPath: validatexsdtests.jar
+Bundle-Activator: org.eclipse.wst.xsd.validation.tests.internal.XSDValidationTestsPlugin
+Bundle-Vendor: %Bundle-Vendor.0
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.core.resources,
+ org.junit,
+ org.eclipse.wst.xml.core,
+ org.eclipse.core.runtime,
+ org.eclipse.wst.xsd.core,
+ org.eclipse.wst.validation,
+ org.eclipse.wst.common.uriresolver
+Eclipse-LazyStart: true
+Export-Package: org.eclipse.wst.xsd.validation.tests.internal;x-internal:=true
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/about.html b/tests/org.eclipse.wst.xsd.validation.tests/about.html
new file mode 100644
index 0000000..4ec5989
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/build.properties b/tests/org.eclipse.wst.xsd.validation.tests/build.properties
new file mode 100644
index 0000000..4f4bed0
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/build.properties
@@ -0,0 +1,9 @@
+bin.includes = validatexsdtests.jar,\
+               test.xml,\
+               testresources/,\
+               META-INF/,\
+               about.html
+source.validatexsdtests.jar = src/ 
+
+bin.excludes = testresources/.cvsignore,\
+               testresources/generatedResults/
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/plugin.properties b/tests/org.eclipse.wst.xsd.validation.tests/plugin.properties
new file mode 100644
index 0000000..65a540d
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/plugin.properties
@@ -0,0 +1,3 @@
+# properties file for org.eclipse.wst.xsd.validation.tests
+Bundle-Vendor.0 = Eclipse
+Bundle-Name.0 = XSD Validation Tests Plug-in
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/core/internal/validation/XSDValidationConfigurationTest.java b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/core/internal/validation/XSDValidationConfigurationTest.java
new file mode 100644
index 0000000..4983d79
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/core/internal/validation/XSDValidationConfigurationTest.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.wst.xsd.core.internal.validation;
+
+import junit.framework.TestCase;
+
+/**
+ * Test the XSDValidationConfiguration class.
+ */
+public class XSDValidationConfigurationTest extends TestCase
+{
+  XSDValidationConfiguration configuration;
+  
+  /* (non-Javadoc)
+   * @see junit.framework.TestCase#setUp()
+   */
+  protected void setUp() throws Exception 
+  {
+	super.setUp();
+	configuration = new XSDValidationConfiguration();
+  }
+
+
+  protected void tearDown() throws Exception 
+  {
+	configuration = null;
+	super.tearDown();
+  }
+
+
+  /**
+   * Test the default setting of the HONOUR_ALL_SCHEMA_LOCATIONS feature.
+   */
+  public void testSetHonourAllSchemaLocationsFeatureDefault()
+  {
+	try
+	{
+		assertFalse("The HONOUR_ALL_SCHEMA_LOCATIONS feature is not set by default to false.", configuration.getFeature(XSDValidationConfiguration.HONOUR_ALL_SCHEMA_LOCATIONS));
+	}
+	catch(Exception e)
+	{
+	  fail("Unable to set read the HONOUR_ALL_SCHEMA_LOCATIONS feature: " + e);
+	}
+  }
+  
+  /**
+   * Test setting the HONOUR_ALL_SCHEMA_LOCATIONS feature to true.
+   */
+  public void testSetHonourAllSchemaLocationsFeatureTrue()
+  {
+	try
+	{
+	  configuration.setFeature(XSDValidationConfiguration.HONOUR_ALL_SCHEMA_LOCATIONS, true);
+	  assertTrue("The HONOUR_ALL_SCHEMA_LOCATIONS feature is not set to true.", configuration.getFeature(XSDValidationConfiguration.HONOUR_ALL_SCHEMA_LOCATIONS));
+	}
+	catch(Exception e)
+	{
+	  fail("Unable to set HONOUR_ALL_SCHEMA_LOCATIONS to true: " + e);
+	}
+  }
+  
+  /**
+   * Test setting the HONOUR_ALL_SCHEMA_LOCATIONS feature to false.
+   */
+  public void testSetHonourAllSchemaLocationsFeatureFalse()
+  {
+	try
+	{
+	  configuration.setFeature(XSDValidationConfiguration.HONOUR_ALL_SCHEMA_LOCATIONS, false);
+	  assertFalse("The HONOUR_ALL_SCHEMA_LOCATIONS feature is not set to false.", configuration.getFeature(XSDValidationConfiguration.HONOUR_ALL_SCHEMA_LOCATIONS));
+	}
+	catch(Exception e)
+	{
+	  fail("Unable to set HONOUR_ALL_SCHEMA_LOCATIONS to false: " + e);
+	}
+  }
+  
+  /**
+   * Test setting a feature that doesn't exist.
+   */
+  public void testSetNotExistantFeature()
+  {
+	try
+	{
+	  configuration.setFeature("NON_EXISTANT_FEATURE", false);
+	  fail("Setting a non existant feature did not produce an exception.");
+	}
+	catch(Exception e)
+	{
+	  // The test succeeds if the exception is caught.
+	}
+  }
+  
+  /**
+   * Test getting a feature that doesn't exist.
+   */
+  public void testGetNotExistantFeature()
+  {
+	try
+	{
+	  configuration.getFeature("NON_EXISTANT_FEATURE");
+	  fail("Getting a non existant feature did not produce an exception.");
+	}
+	catch(Exception e)
+	{
+	  // The test succeeds if the exception is caught.
+	}
+  }
+  
+}
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/core/internal/validation/eclipse/ValidatorTest.java b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/core/internal/validation/eclipse/ValidatorTest.java
new file mode 100644
index 0000000..9244657
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/core/internal/validation/eclipse/ValidatorTest.java
@@ -0,0 +1,161 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 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.wst.xsd.core.internal.validation.eclipse;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.eclipse.wst.validation.internal.core.Message;
+import org.eclipse.wst.xml.core.internal.validation.core.NestedValidatorContext;
+import org.eclipse.wst.xml.core.internal.validation.core.ValidationMessage;
+import org.eclipse.wst.xml.core.internal.validation.core.ValidationReport;
+import org.eclipse.wst.xsd.validation.tests.internal.XSDValidationTestsPlugin;
+
+/**
+ * A test class for the Validator class.
+ */
+public class ValidatorTest extends TestCase 
+{
+  ValidatorWrapper validator = new ValidatorWrapper();
+	  
+  /**
+   * Create a tests suite from this test class.
+   * 
+   * @return A test suite containing this test class.
+   */
+  public static Test suite()
+  {
+    return new TestSuite(ValidatorTest.class);
+  }
+	  
+  /**
+   * Test the addInfoToMessage method. The following tests are performed:<br/>
+   * 1. When the validation message contains a null key nothing is added to the message.<br/>
+   * 2. When the message contains the key "ENTIRE_ELEMENT" the three attributes are added
+   * to the method and the SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE is null.<br/>
+   * 3. When the message contains the key "EntityNotDeclared" the three attributes are set.
+   */
+  public void testAddInfoToMessage()
+  {
+    // These strings are common addition information types.
+	String COLUMN_NUMBER_ATTRIBUTE = "columnNumber"; //$NON-NLS-1$
+	String SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE = "squiggleSelectionStrategy"; //$NON-NLS-1$
+	String SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE = "squiggleNameOrValue"; //$NON-NLS-1$
+	
+	// Test that the message does not contain the attributes when the method is called
+	// with a null key.
+	ValidationMessage validationMessage = new ValidationMessage("", 1, 1, "");
+	Message message = new Message();
+	validator.addInfoToMessage(validationMessage, message);
+	assertNull("COLUMN_NUMBER_ATTRIBUTE was not null for a ValidationMessage with a null key. COLUMN_NUMBER_ATTRIBUTE = " + message.getAttribute(COLUMN_NUMBER_ATTRIBUTE), message.getAttribute(COLUMN_NUMBER_ATTRIBUTE));
+	assertNull("SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE was not null for a ValidationMessage with a null key. SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE = " + message.getAttribute(SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE), message.getAttribute(SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE));
+	assertNull("SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE was not null for a ValidationMessage with a null key. SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE = " + message.getAttribute(SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE), message.getAttribute(SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE));
+	
+	// Test that the message contains the three attributes when the key is set to "s4s-elt-character".
+	ValidationMessage validationMessage2 = new ValidationMessage("", 1, 1, "", "s4s-elt-character", null);
+	Message message2 = new Message();
+	validator.addInfoToMessage(validationMessage2, message2);
+	assertEquals("COLUMN_NUMBER_ATTRIBUTE was correctly set to 1 for a ValidationMessage with the key s4s-elt-character. COLUMN_NUMBER_ATTRIBUTE = " + message2.getAttribute(COLUMN_NUMBER_ATTRIBUTE), new Integer(1), message2.getAttribute(COLUMN_NUMBER_ATTRIBUTE));
+	assertEquals("SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE was not TEXT. SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE = " + message2.getAttribute(SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE), "TEXT", message2.getAttribute(SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE));
+	assertEquals("SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE was not an empty string for a ValidationMessage with the key s4s-elt-character. SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE = " + message2.getAttribute(SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE), "", message2.getAttribute(SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE));
+	
+    // Test that the message contains the three attributes when the key is set to "src-resolve".
+	ValidationMessage validationMessage3 = new ValidationMessage("'MyName'", 1, 1, "", "src-resolve", null);
+	Message message3 = new Message();
+	validator.addInfoToMessage(validationMessage3, message3);
+	assertEquals("COLUMN_NUMBER_ATTRIBUTE was correctly set to 1 for a ValidationMessage with the key src-resolve. COLUMN_NUMBER_ATTRIBUTE = " + message3.getAttribute(COLUMN_NUMBER_ATTRIBUTE), new Integer(1), message3.getAttribute(COLUMN_NUMBER_ATTRIBUTE));
+	assertEquals("SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE was not VALUE_OF_ATTRIBUTE_WITH_GIVEN_VALUE. SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE = " + message3.getAttribute(SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE), "VALUE_OF_ATTRIBUTE_WITH_GIVEN_VALUE", message3.getAttribute(SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE));
+	assertEquals("SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE was not set to MyName for a ValidationMessage with the key src-resolve. SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE = " + message3.getAttribute(SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE), "MyName", message3.getAttribute(SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE));
+  }
+  
+  /**
+   * Test the validate method. Tests to be performed:<br/>
+   * 1. Test that validating a valid file from a URI or an input stream produces the same result.<br/>
+   * 2. Test that validating an invalid file from a URI or an input stream produces the same result.
+   */
+  public void testValidate()
+  {
+	try
+	{
+	  // Test that validating a valid file from a URI and an input stream produces the same result.
+	  String PLUGIN_ABSOLUTE_PATH = XSDValidationTestsPlugin.getInstallURL();
+	  String uri = "file:///" + PLUGIN_ABSOLUTE_PATH + "testresources/samples/Paths/Dash-InPath/DashInPathValid.xsd";
+	  ValidationReport report1 = validator.validate(uri, null, new NestedValidatorContext());
+	  ValidationReport report2 = null;
+	  InputStream is = null;
+	  try
+	  {
+	    is = new URL(uri).openStream();
+	    report2 = validator.validate(uri, is, new NestedValidatorContext());
+	  }
+	  catch(Exception e)
+	  {
+		fail("A problem occurred while validating a valid file with an inputstream: " + e);
+	  }
+	  finally
+	  {
+		if(is != null)
+		{
+		  try
+		  {
+		    is.close();
+		  }
+		  catch(IOException e)
+		  {
+			// Do nothing.
+		  }
+		}
+	  }
+	  assertTrue("Validation using a URI did not product a valid validation result.", report1.isValid());
+	  assertEquals("Validation using URI and using inputstream of the same file produces different numbers of errors.", report1.getValidationMessages().length, report2.getValidationMessages().length);
+	  
+      // Test that validating an invalid file from a URI and an input stream produces the same result.
+	  uri = "file:///" + PLUGIN_ABSOLUTE_PATH + "testresources/samples/Paths/Dash-InPath/DashInPathInvalid.xsd";
+	  report1 = validator.validate(uri, null, new NestedValidatorContext());
+	  report2 = null;
+	  is = null;
+	  try
+	  {
+	    is = new URL(uri).openStream();
+	    report2 = validator.validate(uri, is, new NestedValidatorContext());
+	  }
+	  catch(Exception e)
+	  {
+		fail("A problem occurred while validating an invalid file with an inputstream: " + e);
+	  }
+	  finally
+	  {
+		if(is != null)
+		{
+		  try
+		  {
+		    is.close();
+		  }
+		  catch(IOException e)
+		  {
+			// Do nothing.
+		  }
+		}
+	  }
+	  assertFalse("Validation using a URI did not product an invalid validation result.", report1.isValid());
+	  assertEquals("Validation using URI and using inputstream of the same file produces different numbers of errors.", report1.getValidationMessages().length, report2.getValidationMessages().length);
+	}
+	catch(Exception e)
+	{
+	  fail("Unable to locate plug-in location: " + e);
+	}
+  }
+}
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/core/internal/validation/eclipse/ValidatorWrapper.java b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/core/internal/validation/eclipse/ValidatorWrapper.java
new file mode 100644
index 0000000..6822392
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/core/internal/validation/eclipse/ValidatorWrapper.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 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.wst.xsd.core.internal.validation.eclipse;
+
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.xml.core.internal.validation.core.ValidationMessage;
+
+/**
+ * A wrapper class to allow for testing the Validator class.
+ */
+public class ValidatorWrapper extends Validator 
+{
+  /* (non-Javadoc)
+   * @see org.eclipse.wst.xsd.core.internal.validation.eclipse.Validator#addInfoToMessage(org.eclipse.wst.xml.core.internal.validation.core.ValidationMessage, org.eclipse.wst.validation.internal.provisional.core.IMessage)
+   */
+  public void addInfoToMessage(ValidationMessage validationMessage, IMessage message) 
+  {
+	super.addInfoToMessage(validationMessage, message);
+  }
+}
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/core/internal/validation/eclipse/XSDMessageInfoHelperTest.java b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/core/internal/validation/eclipse/XSDMessageInfoHelperTest.java
new file mode 100644
index 0000000..dc6eb1a
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/core/internal/validation/eclipse/XSDMessageInfoHelperTest.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.wst.xsd.core.internal.validation.eclipse;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Test case to test the XSDMessageInfoHelper class.
+ */
+public class XSDMessageInfoHelperTest extends TestCase 
+{
+  private XSDMessageInfoHelperWrapper helper = new XSDMessageInfoHelperWrapper();
+  
+  /**
+   * Create a tests suite from this test class.
+   * 
+   * @return A test suite containing this test class.
+   */
+  public static Test suite()
+  {
+    return new TestSuite(XSDMessageInfoHelperTest.class);
+  }
+  
+  /**
+   * Test that the createMessageInfo method returns {"", ""} when
+   * given a non-existant key and null message arguments.
+   */
+  public void testNotExistantKeyAndNullMessageArguments()
+  {
+	String[] messageInfo = helper.createMessageInfo("NON_EXISTANT_KEY", null);
+	assertEquals("The selection strategy returned was not an empty string.", "", messageInfo[0]);
+	assertEquals("The nameOrValue returned was not an empty string.", "", messageInfo[1]);
+  }
+  
+  /**
+   * Test that the createMessageInfo method returns {"", ""} when
+   * given a non-existant key an null message arguments.
+   */
+  public void testNullKeyAndMessageArguments()
+  {
+	String[] messageInfo = helper.createMessageInfo(null, null);
+	assertEquals("The selection strategy returned was not an empty string.", "", messageInfo[0]);
+	assertEquals("The nameOrValue returned was not an empty string.", "", messageInfo[1]);
+  }
+  
+  /**
+   * Test the method getFirstStringBetweenSingleQuotes. There are a few tests:
+   * 1. Test that a simple string with single quotes 'name' returns name.
+   * 2. Test that a string with no single quotes returns null.
+   * 3. Test that a string with a single single quote 'name returns null.
+   * 4. Test that a string with 3 single quotes 'name'name2' returns name.
+   */
+  public void testGetFirstStringBetweenSingleQuotes()
+  {
+	// 1. Test that a simple string with single quotes 'name' returns name.
+	String result = helper.getFirstStringBetweenSingleQuotes("'name'");
+	assertEquals("The returned string was not \"name\" for the string \"'name'\".", "name", result);
+	
+	// 2. Test that a string with no single quotes returns null.
+	result = helper.getFirstStringBetweenSingleQuotes("name");
+	assertNull("The returned string was not null for the string \"name\" with no single quotes.", result);
+	
+	// 3. Test that a string with a single single quote 'name returns null.
+	result = helper.getFirstStringBetweenSingleQuotes("'name");
+	assertNull("The returned string was not null for the string \"'name\" with one single quote.", result);
+	
+	// 4. Test that a string with 3 single quotes 'name'name2' returns name.
+	result = helper.getFirstStringBetweenSingleQuotes("'name'name2'");
+	assertEquals("The returned string was not \"name\" for the string \"'name'name2'\" with 3 single quotes.", "name", result);
+  }
+
+}
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/core/internal/validation/eclipse/XSDMessageInfoHelperWrapper.java b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/core/internal/validation/eclipse/XSDMessageInfoHelperWrapper.java
new file mode 100644
index 0000000..0442964
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/core/internal/validation/eclipse/XSDMessageInfoHelperWrapper.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.wst.xsd.core.internal.validation.eclipse;
+
+/**
+ * A wrapper class for the XSDMessageInfoHelper class for testing.
+ */
+public class XSDMessageInfoHelperWrapper extends XSDMessageInfoHelper 
+{
+  /* (non-Javadoc)
+   * @see org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDMessageInfoHelper#getFirstStringBetweenSingleQuotes(java.lang.String)
+   */
+  public String getFirstStringBetweenSingleQuotes(String s) 
+  {
+	return super.getFirstStringBetweenSingleQuotes(s);
+  }
+}
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/core/internal/validation/eclipse/XSDValidatorTest.java b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/core/internal/validation/eclipse/XSDValidatorTest.java
new file mode 100644
index 0000000..25a7458
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/core/internal/validation/eclipse/XSDValidatorTest.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.wst.xsd.core.internal.validation.eclipse;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Test the Eclipse specific XSD validator.
+ */
+public class XSDValidatorTest extends TestCase 
+{
+  /**
+   * Create a tests suite from this test class.
+   * 
+   * @return A test suite containing this test class.
+   */
+  public static Test suite()
+  {
+    return new TestSuite(XSDValidatorTest.class);
+  }
+  
+  /**
+   * Test to ensure the URI resolver is not null in the Eclipse
+   * specific XSD validator.
+   */
+  public void testURIResolverIsRegistered()
+  {
+	XSDValidatorWrapper validator = new XSDValidatorWrapper();
+	assertNotNull("The URI resolver is null.", validator.getURIResolver());
+  }
+
+}
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/core/internal/validation/eclipse/XSDValidatorWrapper.java b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/core/internal/validation/eclipse/XSDValidatorWrapper.java
new file mode 100644
index 0000000..9147eea
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/core/internal/validation/eclipse/XSDValidatorWrapper.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.wst.xsd.core.internal.validation.eclipse;
+
+import org.eclipse.wst.common.uriresolver.internal.provisional.URIResolver;
+
+/**
+ * Wrapper for the Eclipse XSD validator class to allow for testing.
+ */
+public class XSDValidatorWrapper extends XSDValidator 
+{
+  /**
+   * Constructor.
+   */
+  public XSDValidatorWrapper()
+  {
+	super();
+  }
+  
+  /**
+   * Get the URI resolver registered on the XML validator.
+   * 
+   * @return The URI resolver registered on the XML validator.
+   */
+  public URIResolver getURIResolver()
+  {
+	return uriresolver;
+  }
+}
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/validation/tests/internal/AllXSDTests.java b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/validation/tests/internal/AllXSDTests.java
new file mode 100644
index 0000000..6ba1e61
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/validation/tests/internal/AllXSDTests.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.wst.xsd.validation.tests.internal;
+import junit.framework.Test;
+
+import org.eclipse.wst.xsd.core.internal.validation.XSDValidationConfigurationTest;
+import org.eclipse.wst.xsd.core.internal.validation.eclipse.ValidatorTest;
+import org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDMessageInfoHelperTest;
+import org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDValidatorTest;
+/**
+ * The root test suite that contains all other XSD validator test suites.
+ */
+public class AllXSDTests extends junit.framework.TestSuite
+{
+  /**
+   * Create this test suite.
+   * 
+   * @return This test suite.
+   */
+  public static Test suite()
+  {
+    return new AllXSDTests();
+  }
+  
+  /**
+   * Constructor
+   */
+  public AllXSDTests()
+  {
+    super("AllXSDTests");
+    addTest(ValidatorTest.suite());
+    addTest(XSDMessageInfoHelperTest.suite());
+    addTest(XSDValidatorTest.suite());
+    addTest(BugFixesTest.suite());
+    addTest(PathsTest.suite());
+    addTestSuite(XSDValidationConfigurationTest.class);
+  }
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/validation/tests/internal/BaseTestCase.java b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/validation/tests/internal/BaseTestCase.java
new file mode 100644
index 0000000..b928455
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/validation/tests/internal/BaseTestCase.java
@@ -0,0 +1,333 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 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.wst.xsd.validation.tests.internal;
+
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Reader;
+import java.util.Iterator;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.wst.xml.core.internal.validation.core.ValidationMessage;
+import org.eclipse.wst.xml.core.internal.validation.core.ValidationReport;
+import org.eclipse.wst.xsd.core.internal.validation.XSDValidationConfiguration;
+import org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDValidator;
+
+/**
+ * Base test case class which provides methods to 
+ * - create logs
+ * - read from logs
+ * - run log comparison tests
+ */
+public class BaseTestCase extends TestCase
+{
+  protected String FILE_PROTOCOL = "file:///"; 
+  protected String PLUGIN_ABSOLUTE_PATH;
+  protected String SAMPLES_DIR = "testresources/samples/";
+  protected String GENERATED_RESULTS_DIR = "testresources/generatedResults/";
+  protected String IDEAL_RESULTS_DIR = "testresources/idealResults/";
+  protected String LOG_FILE_LOCATION = "results.log";
+  protected static final String PLUGIN_NAME = "org.eclipse.wst.xsd.validation.tests";
+  private XSDValidator validator = XSDValidator.getInstance();
+  
+  /* (non-Javadoc)
+   * @see junit.framework.TestCase#setUp()
+   */
+  protected void setUp()
+  {
+    PLUGIN_ABSOLUTE_PATH = XSDValidationTestsPlugin.getInstallURL();
+  }
+  
+  /**
+   * Run a validator test. The test will run the validator, log the results and compare the results
+   * with the ideal results. The test will only pass if the two log files are the same.
+   * 
+   * @param testfile The file to run the validator test on.
+   * @param loglocation The location to create the log file.
+   * @param idealloglocation The location of the ideal log file.
+   */
+  public void runTest(String testfile, String loglocation, String idealloglocation)
+  {
+	runTest(testfile, loglocation, idealloglocation, new XSDValidationConfiguration());
+  }
+  /**
+   * Run a validator test. The test will run the validator, log the results and compare the results
+   * with the ideal results. The test will only pass if the two log files are the same.
+   * 
+   * @param testfile 
+   * 		The file to run the validator test on.
+   * @param loglocation 
+   * 		The location to create the log file.
+   * @param idealloglocation 
+   * 		The location of the ideal log file.
+   * @param configuration 
+   * 		The XSDValidationConfiguration for this validation test.
+   */
+  public void runTest(String testfile, String loglocation, String idealloglocation, XSDValidationConfiguration configuration)
+  {
+    ValidationReport valreport = validator.validate(testfile, null, configuration);
+    try
+    {
+      createLog(loglocation, valreport);
+      String generatedLog = getStringFromFile(loglocation);
+      String idealLog = getStringFromFile(idealloglocation);
+      assertEquals(idealLog, generatedLog);
+    } catch (Exception e)
+    {
+      fail("Could not compare log files");
+    }
+  }
+  
+  /**
+   * Get a string representation of a file.
+   * 
+   * @param filename the file name of the file to get the string representation.
+   * @return The string representation if successful.
+   * @throws Exception Thrown if unable to create a string representaion of the file.
+   */
+  private String getStringFromFile(String filename) throws Exception
+  {
+    StringBuffer filestring = new StringBuffer();
+    Reader reader = null;
+    BufferedReader bufreader = null;
+    try
+    {
+      File file = new File(filename);
+      reader = new FileReader(file);
+      bufreader = new BufferedReader(reader);
+      while (bufreader.ready())
+      {
+        filestring.append(bufreader.readLine() + "\n");
+      }
+    } catch (FileNotFoundException e)
+    {
+      throw new Exception();
+    } finally
+    {
+      bufreader.close();
+      reader.close();
+    }
+    return filestring.toString();
+  }
+  
+  /**
+   * Create a log file for an XSD test.
+   * 
+   * @param filename The name of the log file to create.
+   * @param valreport The validation report for this file.
+   * @return The file contents as a string if successful or null if not successful.
+   */
+  private String createLog(String filename, ValidationReport valreport)
+  {
+     ValidationMessage[] valmessages = valreport.getValidationMessages();
+     int nummessages = valmessages.length;//validator.getErrors().size() + validator.getWarnings().size();
+     StringBuffer errorsString = new StringBuffer();
+     StringBuffer warningsString = new StringBuffer();
+     int numerrors = 0;
+     int numwarnings = 0;
+     for(int i = 0; i < nummessages; i++)
+     {
+       ValidationMessage valmes = valmessages[i];
+       if(valmes.getSeverity() == ValidationMessage.SEV_LOW)
+       {
+         numwarnings++;
+         String message = valmes.getMessage();
+         message = message.replaceAll("'[^']*" + PLUGIN_NAME + "[^'/]*/", "'");
+         message = message.replaceAll("[(][^(]*" + PLUGIN_NAME + "[^'/]*/", "(");
+         warningsString.append(message + " [" + valmes.getLineNumber() +", " + valmes.getColumnNumber() +"]\n");
+         warningsString.append(createNestedMessageString(valmes.getNestedMessages()));
+       }
+       else
+       {
+         numerrors++;
+         String message = valmes.getMessage();
+         message = message.replaceAll("'[^']*" + PLUGIN_NAME + "[^'/]*/", "'");
+         message = message.replaceAll("[(][^(]*" + PLUGIN_NAME + "[^'/]*/", "(");
+         errorsString.append(message + " [" + valmes.getLineNumber() +", " + valmes.getColumnNumber() +"]\n");
+         errorsString.append(createNestedMessageString(valmes.getNestedMessages()));
+       }
+     }
+     StringBuffer log = new StringBuffer();
+     log.append("number of errors      : " + numerrors + "\n");
+     if(numwarnings > 0)
+     {
+       log.append("number of warnings    : " + numwarnings + "\n");
+     }
+     log.append("\n------------error list-------------------------------------------\n");
+     if(numerrors == 0)
+     {
+       log.append("(none)\n");
+     }
+     else
+     {
+       log.append(errorsString.toString());
+     }
+     if(numwarnings > 0)
+     {
+       log.append("------------warning list-----------------------------------------\n");
+       log.append(errorsString.toString());
+     }
+     log.append(warningsString.toString());
+     log.append("-----------------------------------------------------------------\n");
+   
+     DataOutputStream outStream = null;
+    try
+    {
+      File logfile = new File(filename);
+      File parent = logfile.getParentFile();
+  	if (!parent.exists()) 
+  	{
+  	  parent.mkdirs();
+  	}
+      if(logfile.exists())
+      {
+        logfile.delete();
+      }
+      logfile.createNewFile();
+      
+      outStream = new DataOutputStream(new FileOutputStream(filename, true));
+      outStream.writeBytes(log.toString());
+      outStream.close();
+
+    } catch (IOException e)
+    {
+      // If we can't write the log then clear the log.
+      log.delete(0, log.length());
+    }
+    return log.toString();
+  }
+  
+  private String createNestedMessageString(List nestedMessages)
+  {
+    return createNestedMessageString(nestedMessages, 0);
+  }
+  
+  private String createNestedMessageString(List nestedMessages, int depth)
+  {
+    if(nestedMessages != null && nestedMessages.size() > 0)
+    {
+      String messageString = "";
+      Iterator nestedMesIter = nestedMessages.iterator();
+      while(nestedMesIter.hasNext())
+      {
+        ValidationMessage nesvalmes = (ValidationMessage)nestedMesIter.next();
+        for(int i = 0; i < depth; i++)
+        {
+          messageString += " ";
+        }
+        // If the message contains any file references make them relative.
+        String message = nesvalmes.getMessage();
+        message = message.replaceAll("'[^']*" + PLUGIN_NAME + "[^'/]*/", "'");
+        message = message.replaceAll("[(][^(]*" + PLUGIN_NAME + "[^'/]*/", "[(]");
+        messageString += ("-> " + message + " [" + nesvalmes.getLineNumber() +", " + nesvalmes.getColumnNumber() +"]\n");
+        messageString += createNestedMessageString(nesvalmes.getNestedMessages(), depth + 1);
+      }
+      return messageString;
+    }
+    else
+    {
+      return "";
+    }
+  }
+  
+  protected IProject createSimpleProject(String projectName, String[] files)
+  {
+    final IWorkspace workspace = ResourcesPlugin.getWorkspace();
+    final IProject project = workspace.getRoot().getProject(projectName);
+    if(!project.exists())
+    {
+      try
+	  {
+        project.create(null);
+      }
+      catch(CoreException e)
+	  {
+        fail("Could not create project " + projectName + e);
+      } 
+    }
+    if(!project.isOpen())
+    {
+      try
+	  {
+        project.open(null);
+	  }
+      catch(CoreException e)
+      {
+        fail("Could not open project " + projectName + e);
+	  }
+    }
+    try
+    {
+      IProjectDescription projectDescription = project.getDescription(); 
+      projectDescription.setName(projectName);
+      project.setDescription(projectDescription, null);
+    }
+    catch(Exception e)
+    {
+      fail("Unable to set project properties for project " + projectName + ". " + e);
+    }
+
+    if(files != null)
+    {
+      int numfiles = files.length;
+      for(int i = 0; i < numfiles; i++)
+      {
+        try
+		{
+          String filename = files[i];
+          filename = filename.replace('\\','/');
+          if(filename.startsWith("file:"))
+          {
+            filename = filename.substring(5);
+			while(filename.startsWith("/"))
+	        {
+	          filename = filename.substring(1);
+	        }
+          }
+          
+          File file = new File(filename);
+          FileInputStream in = new FileInputStream(file);
+          IFile iFile = project.getFile(file.getName());
+          if(!iFile.exists())
+          {
+            iFile.create(in, true, null);
+            in.close();
+          }
+		}
+        catch(Exception e)
+		{
+		  fail("Unable to locate file " + files[i]);
+		} 
+      }
+    }
+    try
+    {
+      project.refreshLocal(-1, null);
+    }
+    catch(Exception e)
+    {}
+    return project;
+  }
+}
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/validation/tests/internal/BugFixesTest.java b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/validation/tests/internal/BugFixesTest.java
new file mode 100644
index 0000000..6fa6ad6
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/validation/tests/internal/BugFixesTest.java
@@ -0,0 +1,214 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.wst.xsd.validation.tests.internal;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.eclipse.wst.xml.core.internal.XMLCorePlugin;
+import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalog;
+import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalogEntry;
+import org.eclipse.wst.xml.core.internal.catalog.provisional.INextCatalog;
+import org.eclipse.wst.xsd.core.internal.validation.XSDValidationConfiguration;
+
+
+
+/**
+ * Test class for bug fixes.
+ */
+public class BugFixesTest extends BaseTestCase
+{
+  private String BUGFIXES_DIR = "BugFixes/";
+  
+  /**
+   * Create a tests suite from this test class.
+   * 
+   * @return A test suite containing this test class.
+   */
+  public static Test suite()
+  {
+    return new TestSuite(BugFixesTest.class);
+  }
+  
+  /* (non-Javadoc)
+   * @see junit.framework.TestCase#setUp()
+   */
+  protected void setUp()
+  {
+    super.setUp();
+  }
+  
+  /**
+   * Test /BugFixes/Empty.xsd
+   */
+  public void testEmpty()
+  {
+    String testname = "Empty";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + BUGFIXES_DIR + "EmptyFile/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + BUGFIXES_DIR + "EmptyFile/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + BUGFIXES_DIR + "EmptyFile/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /BugFixes/InvalidSchemaInXMLCatalog/InvalidSchemaInXMLCatalog.xsd
+   */
+  public void testInvalidSchemaInXMLCatalog()
+  {
+    String testname = "InvalidSchemaInXMLCatalog";
+    String testfile = PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + BUGFIXES_DIR + "InvalidSchemaInXMLCatalog/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + BUGFIXES_DIR + "InvalidSchemaInXMLCatalog/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + BUGFIXES_DIR + "InvalidSchemaInXMLCatalog/" + testname + ".xsd-log";
+    
+    createSimpleProject("Project", new String[]{testfile});
+    
+    
+    ICatalog catalog = XMLCorePlugin.getDefault().getDefaultXMLCatalog();
+    INextCatalog[] nextCatalogs = catalog.getNextCatalogs();
+    for (int i = 0; i < nextCatalogs.length; i++)
+	{
+		INextCatalog nextCatalog = nextCatalogs[i];
+		if(XMLCorePlugin.USER_CATALOG_ID.equals(nextCatalog.getId())){
+			ICatalog userCatalog = nextCatalog.getReferencedCatalog();
+			if(userCatalog != null)
+			{
+				ICatalogEntry catalogEntry = (ICatalogEntry)userCatalog.createCatalogElement(ICatalogEntry.ENTRY_TYPE_PUBLIC);
+			    catalogEntry.setKey("testKey");
+			    catalogEntry.setURI("http://testuri");
+			    userCatalog.addCatalogElement(catalogEntry);
+			    runTest("platform:/resource/Project/InvalidSchemaInXMLCatalog.xsd"/*FILE_PROTOCOL + file.getLocation().toString()*/, loglocation, idealloglocation);
+			    catalog.removeCatalogElement(catalogEntry);
+			}	
+		}	
+	} 
+  }
+  
+  /**
+   * Test /BugFixes/MissingClosingSchemaTag/MissingClosingSchemaTag.xsd
+   */
+  public void testMissingClosingSchemaTag()
+  {
+    String testname = "MissingClosingSchemaTag";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + BUGFIXES_DIR + "MissingClosingSchemaTag/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + BUGFIXES_DIR + "MissingClosingSchemaTag/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + BUGFIXES_DIR + "MissingClosingSchemaTag/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /BugFixes/ImportXSDWithXSDImportInDiffDir/ImportXSDWithXSDImportInDiffDir.xsd
+   */
+  public void testImportXSDWithXSDImportInDiffDir()
+  {
+    String testname = "ImportXSDWithXSDImportInDiffDir";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + BUGFIXES_DIR + "ImportXSDWithXSDImportInDiffDir/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + BUGFIXES_DIR + "ImportXSDWithXSDImportInDiffDir/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + BUGFIXES_DIR + "ImportXSDWithXSDImportInDiffDir/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /BugFixes/ImportInvalidLocation/ImportInvalidLocation.xsd
+   */
+  public void testImportInvalidLocation()
+  {
+    String testname = "ImportInvalidLocation";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + BUGFIXES_DIR + "ImportInvalidLocation/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + BUGFIXES_DIR + "ImportInvalidLocation/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + BUGFIXES_DIR + "ImportInvalidLocation/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /BugFixes/TwoOpenBrackets/TwoOpenBrackets.xsd
+   */
+  public void testTwoOpenBrackets()
+  {
+    String testname = "TwoOpenBrackets";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + BUGFIXES_DIR + "TwoOpenBrackets/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + BUGFIXES_DIR + "TwoOpenBrackets/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + BUGFIXES_DIR + "TwoOpenBrackets/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /BugFixes/ImportWithIncorrectSlash/A.xsd
+   */
+  public void testImportWithIncorrectSlash()
+  {
+    String testname = "A";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + BUGFIXES_DIR + "ImportWithIncorrectSlash/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + BUGFIXES_DIR + "ImportWithIncorrectSlash/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + BUGFIXES_DIR + "ImportWithIncorrectSlash/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /BugFixes/HonourAllSchemaLocations/dog.xsd
+   */
+  public void testHonourAllSchemaLocations()
+  {
+    String testname = "dog";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + BUGFIXES_DIR + "HonourAllSchemaLocations/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + BUGFIXES_DIR + "HonourAllSchemaLocations/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + BUGFIXES_DIR + "HonourAllSchemaLocations/" + testname + ".xsd-log";
+    
+    XSDValidationConfiguration configuration = new XSDValidationConfiguration();
+    try
+    {
+      configuration.setFeature(XSDValidationConfiguration.HONOUR_ALL_SCHEMA_LOCATIONS, true);
+    }
+    catch(Exception e)
+    {
+      fail("Unable to set the HONOUR_ALL_SCHEMA_LOCATIONS feature to true: " + e);
+    }
+    runTest(testfile, loglocation, idealloglocation, configuration);
+  }
+  
+  /**
+   * Test /BugFixes/XSDRegisteredWithCatalog/InvalidSchemaWithNamespaceInCatalog.xsd
+   */
+  public void testInvalidSchemaWithNamespaceInCatalog()
+  {
+    String testname = "InvalidSchemaWithNamespaceInCatalog";
+    String testfile = PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + BUGFIXES_DIR + "XSDRegisteredWithCatalog/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + BUGFIXES_DIR + "XSDRegisteredWithCatalog/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + BUGFIXES_DIR + "XSDRegisteredWithCatalog/" + testname + ".xsd-log";
+    
+    createSimpleProject("Project", new String[]{testfile});
+    
+    
+    ICatalog catalog = XMLCorePlugin.getDefault().getDefaultXMLCatalog();
+    INextCatalog[] nextCatalogs = catalog.getNextCatalogs();
+    for (int i = 0; i < nextCatalogs.length; i++)
+	{
+		INextCatalog nextCatalog = nextCatalogs[i];
+		if(XMLCorePlugin.USER_CATALOG_ID.equals(nextCatalog.getId())){
+			ICatalog userCatalog = nextCatalog.getReferencedCatalog();
+			if(userCatalog != null)
+			{
+				ICatalogEntry catalogEntry = (ICatalogEntry)userCatalog.createCatalogElement(ICatalogEntry.ENTRY_TYPE_PUBLIC);
+			    catalogEntry.setKey("http://www.eclipse.org/webtools/Catalogue");
+			    catalogEntry.setURI("platform:/resource/Project/InvalidSchemaInXMLCatalog.xsd");
+			    userCatalog.addCatalogElement(catalogEntry);
+			    runTest("platform:/resource/Project/InvalidSchemaWithNamespaceInCatalog.xsd", loglocation, idealloglocation);
+			    catalog.removeCatalogElement(catalogEntry);
+			}	
+		}	
+	}
+  }
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/validation/tests/internal/PathsTest.java b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/validation/tests/internal/PathsTest.java
new file mode 100644
index 0000000..62b12a5
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/validation/tests/internal/PathsTest.java
@@ -0,0 +1,1086 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 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.wst.xsd.validation.tests.internal;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Tests that test various types of variations in file paths.
+ */
+public class PathsTest extends BaseTestCase
+{
+  private String PATHS_DIR = "Paths/";
+  
+  /**
+   * Create a tests suite from this test class.
+   * 
+   * @return A test suite containing this test class.
+   */
+  public static Test suite()
+  {
+    return new TestSuite(PathsTest.class);
+  }
+  
+  /* (non-Javadoc)
+   * @see junit.framework.TestCase#setUp()
+   */
+  protected void setUp()
+  {
+    super.setUp();
+  }
+  
+  /**
+   * Test /Paths/Space InPath/SpaceInPathValid.xsd
+   */
+  public void testSpaceInPathValid()
+  {
+    String testname = "SpaceInPathValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Space InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Space InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Space InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Space InPath/SpaceInPathInvalid.xsd
+   */
+  public void testSpaceInPathInvalid()
+  {
+    String testname = "SpaceInPathInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Space InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Space InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Space InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/CloseBracket)InPath/CloseBracketInPathValid.xsd
+   */
+  public void testCloseBracketInPathValid()
+  {
+    String testname = "CloseBracketInPathValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "CloseBracket)InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "CloseBracket)InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "CloseBracket)InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/CloseBracket)InPath/CloseBracketInPathInvalid.xsd
+   */
+  public void testCloseBrackettInPathInvalid()
+  {
+    String testname = "CloseBracketInPathInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "CloseBracket)InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "CloseBracket)InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "CloseBracket)InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/CloseBracketInFilename/CloseBracket)InFilenameValid.xsd
+   */
+  public void testCloseBracketInFilenameValid()
+  {
+    String testname = "CloseBracket)InFilenameValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "CloseBracketInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "CloseBracketInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "CloseBracketInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/CloseBracketInFilename/CloseBracket)InFilenameInvalid.xsd
+   */
+  public void testCloseBracketInFilenameInvalid()
+  {
+    String testname = "CloseBracket)InFilenameInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "CloseBracketInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "CloseBracketInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "CloseBracketInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Dash-InPath/DashInPathValid.xsd
+   */
+  public void testDashInPathValid()
+  {
+    String testname = "DashInPathValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Dash-InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Dash-InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Dash-InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Dash-InPath/DashInPathInvalid.xsd
+   */
+  public void testDashInPathInvalid()
+  {
+    String testname = "DashInPathInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Dash-InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Dash-InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Dash-InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/DashInFilename/Dash-InFilenameValid.xsd
+   */
+  public void testDashInFilenameValid()
+  {
+    String testname = "Dash-InFilenameValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "DashInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "DashInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "DashInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/DashInFilename/Dash-InFilenameInvalid.xsd
+   */
+  public void testDashInFilenameInvalid()
+  {
+    String testname = "Dash-InFilenameInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "DashInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "DashInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "DashInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Exclamation!InPath/ExclamationInPathValid.xsd
+   */
+  public void testExclamationInPathValid()
+  {
+    String testname = "ExclamationInPathValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Exclamation!InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Exclamation!InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Exclamation!InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Exclamation!InPath/ExclamationInPathInvalid.xsd
+   */
+  public void testExclamationInPathInvalid()
+  {
+    String testname = "ExclamationInPathInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Exclamation!InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Exclamation!InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Exclamation!InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/ExclamationInFilename/Exclamation!InFilenameValid.xsd
+   */
+  public void testExclamationInFilenameValid()
+  {
+    String testname = "Exclamation!InFilenameValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "ExclamationInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "ExclamationInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "ExclamationInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/ExclamationInFilename/Exclamation!InFilenameInvalid.xsd
+   */
+  public void testExclamationInFilenameInvalid()
+  {
+    String testname = "Exclamation!InFilenameInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "ExclamationInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "ExclamationInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "ExclamationInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/OpenBracket(InPath/OpenBracketInPathValid.xsd
+   */
+  public void testOpenBracketInPathValid()
+  {
+    String testname = "OpenBracketInPathValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "OpenBracket(InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "OpenBracket(InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "OpenBracket(InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/OpenBracket(InPath/OpenBracketInPathInvalid.xsd
+   */
+  public void testOpenBracketInPathInvalid()
+  {
+    String testname = "OpenBracketInPathInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "OpenBracket(InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "OpenBracket(InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "OpenBracket(InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/OpenBracketInFilename/OpenBracket(InFilenameValid.xsd
+   */
+  public void testOpenBracketInFilenameValid()
+  {
+    String testname = "OpenBracket(InFilenameValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "OpenBracketInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "OpenBracketInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "OpenBracketInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/OpenBracketInFilename/OpenBracket(InFilenameInvalid.xsd
+   */
+  public void testOpenBracketInFilenameInvalid()
+  {
+    String testname = "OpenBracket(InFilenameInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "OpenBracketInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "OpenBracketInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "OpenBracketInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Period.InPath/PeriodInPathValid.xsd
+   */
+  public void testPeriodInPathValid()
+  {
+    String testname = "PeriodInPathValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Period.InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Period.InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Period.InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Period.InPath/PeriodInPathInvalid.xsd
+   */
+  public void testPeriodInPathInvalid()
+  {
+    String testname = "PeriodInPathInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Period.InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Period.InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Period.InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/PeriodInFilename/Period.InFilenameValid.xsd
+   */
+  public void testPeriodInFilenameValid()
+  {
+    String testname = "Period.InFilenameValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "PeriodInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "PeriodInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "PeriodInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/PeriodInFilename/Period.InFilenameInvalid.xsd
+   */
+  public void testPeriodInFilenameInvalid()
+  {
+    String testname = "Period.InFilenameInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "PeriodInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "PeriodInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "PeriodInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Quote'InPath/QuoteInPathValid.xsd
+   */
+  public void testQuoteInPathValid()
+  {
+    String testname = "QuoteInPathValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Quote'InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Quote'InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Quote'InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Quote'InPath/QuoteInPathInvalid.xsd
+   */
+  public void testQuoteInPathInvalid()
+  {
+    String testname = "QuoteInPathInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Quote'InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Quote'InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Quote'InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/QuoteInFilename/Quote'InFilenameValid.xsd
+   */
+  public void testQuoteInFilenameValid()
+  {
+    String testname = "Quote'InFilenameValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "QuoteInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "QuoteInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "QuoteInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/QuoteInFilename/Quote'InFilenameInvalid.xsd
+   */
+  public void testQuoteInFilenameInvalid()
+  {
+    String testname = "Quote'InFilenameInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "QuoteInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "QuoteInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "QuoteInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/SpaceInFilename/Space InFilenameValid.xsd
+   */
+  public void testSpaceInFilenameValid()
+  {
+    String testname = "Space InFilenameValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "SpaceInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "SpaceInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "SpaceInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/SpaceInFilename/Space InFilenameInvalid.xsd
+   */
+  public void testSpaceInFilenameInvalid()
+  {
+    String testname = "Space InFilenameInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "SpaceInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "SpaceInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "SpaceInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Tilde~InPath/TildeInPathValid.xsd
+   */
+  public void testTildeInPathValid()
+  {
+    String testname = "TildeInPathValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Tilde~InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Tilde~InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Tilde~InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Tilde~InPath/TildeInPathInvalid.xsd
+   */
+  public void testTildeInPathInvalid()
+  {
+    String testname = "TildeInPathInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Tilde~InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Tilde~InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Tilde~InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/TildeInFilename/Tilde~InFilenameValid.xsd
+   */
+  public void testTildeInFilenameValid()
+  {
+    String testname = "Tilde~InFilenameValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "TildeInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "TildeInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "TildeInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/TildeInFilename/Tilde~InFilenameInvalid.xsd
+   */
+  public void testTildeInFilenameInvalid()
+  {
+    String testname = "Tilde~InFilenameInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "TildeInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "TildeInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "TildeInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Underscore_InPath/UnderscoreInPathValid.xsd
+   */
+  public void testUnderscoreInPathValid()
+  {
+    String testname = "UnderscoreInPathValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Underscore_InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Underscore_InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Underscore_InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Underscore_InPath/UnderscoreInPathInvalid.xsd
+   */
+  public void testUnderscoreInPathInvalid()
+  {
+    String testname = "UnderscoreInPathInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Underscore_InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Underscore_InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Underscore_InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/UnderscoreInFilename/Underscore_InFilenameValid.xsd
+   */
+  public void testUnderscoreInFilenameValid()
+  {
+    String testname = "Underscore_InFilenameValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "UnderscoreInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "UnderscoreInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "UnderscoreInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/UnderscoreInFilename/Underscore_InFilenameInvalid.xsd
+   */
+  public void testUnderscoreInFilenameInvalid()
+  {
+    String testname = "Underscore_InFilenameInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "UnderscoreInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "UnderscoreInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "UnderscoreInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/AngleHat^InPath/AngleHatInPathValid.xsd
+   */
+  public void testAngleHatInPathValid()
+  {
+    String testname = "AngleHatInPathValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "AngleHat^InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "AngleHat^InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "AngleHat^InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/AngleHat^InPath/AngleHatInPathInvalid.xsd
+   */
+  public void testAngleHatInPathInvalid()
+  {
+    String testname = "AngleHatInPathInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "AngleHat^InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "AngleHat^InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "AngleHat^InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/AngleHatInFilename/AngleHat^InFilenameValid.xsd
+   */
+  public void testAngleHatInFilenameValid()
+  {
+    String testname = "AngleHat^InFilenameValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "AngleHatInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "AngleHatInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "AngleHatInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/AngleHatInFilename/AngleHat^InFilenameInvalid.xsd
+   */
+  public void testAngleHatInFilenameInvalid()
+  {
+    String testname = "AngleHat^InFilenameInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "AngleHatInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "AngleHatInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "AngleHatInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /*****************
+   * Test Imports
+   *****************/
+  
+  /**
+   * Test /Paths/AngleHatInFilename/ImportAngleHat^InFilenameValid.xsd
+   */
+  public void testImportAngleHatInFilenameValid()
+  {
+    String testname = "ImportAngleHat^InFilenameValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "AngleHatInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "AngleHatInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "AngleHatInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/AngleHatInFilename/ImportAngleHat^InFilenameInvalid.xsd
+   */
+  public void testImportAngleHatInFilenameInvalid()
+  {
+    String testname = "ImportAngleHat^InFilenameInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "AngleHatInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "AngleHatInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "AngleHatInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/AngleHat^InPath/ImportAngleHatInPathValid.xsd
+   */
+  public void testImportAngleHatInPathValid()
+  {
+    String testname = "ImportAngleHatInPathValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "AngleHat^InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "AngleHat^InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "AngleHat^InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/AngleHat^InPath/ImportAngleHatInPathInvalid.xsd
+   */
+  public void testImportAngleHatInPathInvalid()
+  {
+    String testname = "ImportAngleHatInPathInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "AngleHat^InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "AngleHat^InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "AngleHat^InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+
+  /**
+   * Test /Paths/Space InPath/ImportSpaceInPathValid.xsd
+   */
+  public void testImportSpaceInPathValid()
+  {
+    String testname = "ImportSpaceInPathValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Space InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Space InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Space InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Space InPath/ImportSpaceInPathInvalid.xsd
+   */
+  public void testImportSpaceInPathInvalid()
+  {
+    String testname = "ImportSpaceInPathInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Space InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Space InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Space InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/CloseBracket)InPath/ImportCloseBracketInPathValid.xsd
+   */
+  public void testImportCloseBracketInPathValid()
+  {
+    String testname = "ImportCloseBracketInPathValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "CloseBracket)InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "CloseBracket)InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "CloseBracket)InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/CloseBracket)InPath/ImportCloseBracketInPathInvalid.xsd
+   */
+  public void testImportCloseBrackettInPathInvalid()
+  {
+    String testname = "ImportCloseBracketInPathInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "CloseBracket)InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "CloseBracket)InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "CloseBracket)InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/CloseBracketInFilename/ImportCloseBracket)InFilenameValid.xsd
+   */
+  public void testImportCloseBracketInFilenameValid()
+  {
+    String testname = "ImportCloseBracket)InFilenameValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "CloseBracketInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "CloseBracketInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "CloseBracketInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/CloseBracketInFilename/ImportCloseBracket)InFilenameInvalid.xsd
+   */
+  public void testImportCloseBracketInFilenameInvalid()
+  {
+    String testname = "ImportCloseBracket)InFilenameInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "CloseBracketInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "CloseBracketInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "CloseBracketInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Dash-InPath/ImportDashInPathValid.xsd
+   */
+  public void testImportDashInPathValid()
+  {
+    String testname = "ImportDashInPathValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Dash-InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Dash-InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Dash-InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Dash-InPath/ImportDashInPathInvalid.xsd
+   */
+  public void testImportDashInPathInvalid()
+  {
+    String testname = "ImportDashInPathInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Dash-InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Dash-InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Dash-InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/DashInFilename/ImportDash-InFilenameValid.xsd
+   */
+  public void testImportDashInFilenameValid()
+  {
+    String testname = "ImportDash-InFilenameValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "DashInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "DashInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "DashInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/DashInFilename/ImportDash-InFilenameInvalid.xsd
+   */
+  public void testImportDashInFilenameInvalid()
+  {
+    String testname = "ImportDash-InFilenameInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "DashInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "DashInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "DashInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Exclamation!InPath/ImportExclamationInPathValid.xsd
+   */
+  public void testImportExclamationInPathValid()
+  {
+    String testname = "ImportExclamationInPathValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Exclamation!InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Exclamation!InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Exclamation!InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Exclamation!InPath/ImportExclamationInPathInvalid.xsd
+   */
+  public void testImportExclamationInPathInvalid()
+  {
+    String testname = "ImportExclamationInPathInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Exclamation!InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Exclamation!InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Exclamation!InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/ExclamationInFilename/ImportExclamation!InFilenameValid.xsd
+   */
+  public void testImportExclamationInFilenameValid()
+  {
+    String testname = "ImportExclamation!InFilenameValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "ExclamationInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "ExclamationInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "ExclamationInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/ExclamationInFilename/ImportExclamation!InFilenameInvalid.xsd
+   */
+  public void testImportExclamationInFilenameInvalid()
+  {
+    String testname = "ImportExclamation!InFilenameInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "ExclamationInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "ExclamationInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "ExclamationInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/OpenBracket(InPath/ImportOpenBracketInPathValid.xsd
+   */
+  public void testImportOpenBracketInPathValid()
+  {
+    String testname = "ImportOpenBracketInPathValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "OpenBracket(InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "OpenBracket(InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "OpenBracket(InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/OpenBracket(InPath/ImportOpenBracketInPathInvalid.xsd
+   */
+  public void testImportOpenBracketInPathInvalid()
+  {
+    String testname = "ImportOpenBracketInPathInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "OpenBracket(InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "OpenBracket(InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "OpenBracket(InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/OpenBracketInFilename/ImportOpenBracket(InFilenameValid.xsd
+   */
+  public void testImportOpenBracketInFilenameValid()
+  {
+    String testname = "ImportOpenBracket(InFilenameValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "OpenBracketInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "OpenBracketInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "OpenBracketInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/OpenBracketInFilename/ImportOpenBracket(InFilenameInvalid.xsd
+   */
+  public void testImportOpenBracketInFilenameInvalid()
+  {
+    String testname = "ImportOpenBracket(InFilenameInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "OpenBracketInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "OpenBracketInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "OpenBracketInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Period.InPath/ImportPeriodInPathValid.xsd
+   */
+  public void testImportPeriodInPathValid()
+  {
+    String testname = "ImportPeriodInPathValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Period.InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Period.InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Period.InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Period.InPath/ImportPeriodInPathInvalid.xsd
+   */
+  public void testImportPeriodInPathInvalid()
+  {
+    String testname = "ImportPeriodInPathInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Period.InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Period.InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Period.InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/PeriodInFilename/ImportPeriod.InFilenameValid.xsd
+   */
+  public void testImportPeriodInFilenameValid()
+  {
+    String testname = "ImportPeriod.InFilenameValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "PeriodInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "PeriodInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "PeriodInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/PeriodInFilename/ImportPeriod.InFilenameInvalid.xsd
+   */
+  public void testImportPeriodInFilenameInvalid()
+  {
+    String testname = "ImportPeriod.InFilenameInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "PeriodInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "PeriodInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "PeriodInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Quote'InPath/ImportQuoteInPathValid.xsd
+   */
+  public void testImportQuoteInPathValid()
+  {
+    String testname = "ImportQuoteInPathValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Quote'InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Quote'InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Quote'InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Quote'InPath/ImportQuoteInPathInvalid.xsd
+   */
+  public void testImportQuoteInPathInvalid()
+  {
+    String testname = "ImportQuoteInPathInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Quote'InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Quote'InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Quote'InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/QuoteInFilename/ImportQuote'InFilenameValid.xsd
+   */
+  public void testImportQuoteInFilenameValid()
+  {
+    String testname = "ImportQuote'InFilenameValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "QuoteInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "QuoteInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "QuoteInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/QuoteInFilename/ImportQuote'InFilenameInvalid.xsd
+   */
+  public void testImportQuoteInFilenameInvalid()
+  {
+    String testname = "ImportQuote'InFilenameInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "QuoteInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "QuoteInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "QuoteInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/SpaceInFilename/ImportSpace InFilenameValid.xsd
+   */
+  public void testImportSpaceInFilenameValid()
+  {
+    String testname = "ImportSpace InFilenameValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "SpaceInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "SpaceInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "SpaceInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/SpaceInFilename/ImportSpace InFilenameInvalid.xsd
+   */
+  public void testImportSpaceInFilenameInvalid()
+  {
+    String testname = "ImportSpace InFilenameInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "SpaceInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "SpaceInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "SpaceInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Tilde~InPath/ImportTildeInPathValid.xsd
+   */
+  public void testImportTildeInPathValid()
+  {
+    String testname = "ImportTildeInPathValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Tilde~InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Tilde~InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Tilde~InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Tilde~InPath/ImportTildeInPathInvalid.xsd
+   */
+  public void testImportTildeInPathInvalid()
+  {
+    String testname = "ImportTildeInPathInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Tilde~InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Tilde~InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Tilde~InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/TildeInFilename/ImportTilde~InFilenameValid.xsd
+   */
+  public void testImportTildeInFilenameValid()
+  {
+    String testname = "ImportTilde~InFilenameValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "TildeInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "TildeInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "TildeInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/TildeInFilename/ImportTilde~InFilenameInvalid.xsd
+   */
+  public void testImportTildeInFilenameInvalid()
+  {
+    String testname = "ImportTilde~InFilenameInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "TildeInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "TildeInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "TildeInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Underscore_InPath/ImportUnderscoreInPathValid.xsd
+   */
+  public void testImportUnderscoreInPathValid()
+  {
+    String testname = "ImportUnderscoreInPathValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Underscore_InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Underscore_InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Underscore_InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/Underscore_InPath/ImportUnderscoreInPathInvalid.xsd
+   */
+  public void testImportUnderscoreInPathInvalid()
+  {
+    String testname = "ImportUnderscoreInPathInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "Underscore_InPath/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "Underscore_InPath/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "Underscore_InPath/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/UnderscoreInFilename/ImportUnderscore_InFilenameValid.xsd
+   */
+  public void testImportUnderscoreInFilenameValid()
+  {
+    String testname = "ImportUnderscore_InFilenameValid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "UnderscoreInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "UnderscoreInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "UnderscoreInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
+   * Test /Paths/UnderscoreInFilename/ImportUnderscore_InFilenameInvalid.xsd
+   */
+  public void testImportUnderscoreInFilenameInvalid()
+  {
+    String testname = "ImportUnderscore_InFilenameInvalid";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "UnderscoreInFilename/" + testname + ".xsd";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "UnderscoreInFilename/" + testname + ".xsd-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "UnderscoreInFilename/" + testname + ".xsd-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/validation/tests/internal/XSDValidationTestsPlugin.java b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/validation/tests/internal/XSDValidationTestsPlugin.java
new file mode 100644
index 0000000..a7871c1
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/src/org/eclipse/wst/xsd/validation/tests/internal/XSDValidationTestsPlugin.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 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.wst.xsd.validation.tests.internal;
+import java.io.IOException;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The plugin class for this test plugin.
+ */
+public class XSDValidationTestsPlugin extends Plugin
+{
+  protected static Bundle pluginBundle;
+
+  public XSDValidationTestsPlugin()
+  {
+  }
+  
+  /**
+   * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+   */
+  public void start(BundleContext context) throws Exception 
+  {
+	super.start(context);
+	pluginBundle = context.getBundle();
+  }
+  
+  /**
+   * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+   */
+  public void stop(BundleContext context) throws Exception 
+  {
+	pluginBundle = null;
+	super.stop(context);
+  }
+  
+  /**
+   * Get the install URL of this plugin.
+   * 
+   * @return the install url of this plugin
+   */
+  public static String getInstallURL()
+  {
+    try
+    {
+      return FileLocator.resolve(pluginBundle.getEntry("/")).getFile();
+    }
+    catch (IOException e)
+    {
+      return null;
+    }
+  }
+
+}
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/test.xml b/tests/org.eclipse.wst.xsd.validation.tests/test.xml
new file mode 100644
index 0000000..c5d8fd0
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/test.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0"?>
+
+<project
+	name="testsuite"
+	default="run"
+	basedir=".">
+
+	<!-- Configurable Properties -->
+
+	<!-- sets the properties eclipse-home, and library-file -->
+	<property
+		name="plugin-name"
+		value="org.eclipse.wst.xsd.validation.tests" />
+
+	<!-- End Configurable Properties -->
+
+	<!-- The property ${eclipse-home} should be passed into this script -->
+	<!-- Set a meaningful default value for when it is not. -->
+	<property
+		name="eclipse-home"
+		value="${basedir}\..\.." />
+	<property
+		name="bvtworkspace"
+		value="${basedir}" />
+	<property
+		name="library-file"
+		value="${eclipse-home}/plugins/org.eclipse.test_3.1.0/library.xml" />
+	<property
+		name="workspace-folder"
+		value="${bvtworkspace}/${plugin-name}" />
+
+	<!-- This target holds all initialization code that needs to be done for -->
+	<!-- all tests that are to be run. Initialization for individual tests -->
+	<!-- should be done within the body of the suite target. -->
+	<target name="init">
+		<tstamp />
+		<delete>
+			<fileset
+				dir="${eclipse-home}"
+				includes="org.eclipse.wst.xsd.validation.tests.*.xml" />
+		</delete>
+	</target>
+
+	<!-- This target defines the tests that need to be run. -->
+	<target name="suite">
+
+		<!-- Start with clean data workspace -->
+		<delete
+			dir="${workspace-folder}"
+			quiet="true" />
+
+		<ant
+			target="core-test"
+			antfile="${library-file}"
+			dir="${eclipse-home}">
+			<property
+				name="data-dir"
+				value="${workspace-folder}" />
+			<property
+				name="plugin-name"
+				value="${plugin-name}" />
+			<property
+				name="classname"
+				value="org.eclipse.wst.xsd.validation.tests.internal.AllXSDTests" />
+		</ant>
+
+	</target>
+
+	<!-- This target holds code to cleanup the testing environment after -->
+	<!-- after all of the tests have been run. You can use this target to -->
+	<!-- delete temporary files that have been created. -->
+	<target name="cleanup">
+		<delete
+			dir="${workspace-folder}"
+			quiet="true" />
+	</target>
+
+	<!-- This target runs the test suite. Any actions that need to happen -->
+	<!-- after all the tests have been run should go here. -->
+	<target
+		name="run"
+		depends="init,suite,cleanup">
+		<ant
+			target="collect"
+			antfile="${library-file}"
+			dir="${eclipse-home}">
+			<property
+				name="includes"
+				value="org.eclipse.wst.xsd.validation.tests*.xml" />
+			<property
+				name="output-file"
+				value="${plugin-name}.xml" />
+		</ant>
+	</target>
+
+</project>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/.cvsignore b/tests/org.eclipse.wst.xsd.validation.tests/testresources/.cvsignore
new file mode 100644
index 0000000..bb53574
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/.cvsignore
@@ -0,0 +1 @@
+generatedResults
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/EmptyFile/Empty.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/EmptyFile/Empty.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/EmptyFile/Empty.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/HonourAllSchemaLocations/dog.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/HonourAllSchemaLocations/dog.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/HonourAllSchemaLocations/dog.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/ImportInvalidLocation/ImportInvalidLocation.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/ImportInvalidLocation/ImportInvalidLocation.xsd-log
new file mode 100644
index 0000000..faffcef
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/ImportInvalidLocation/ImportInvalidLocation.xsd-log
@@ -0,0 +1,8 @@
+number of errors      : 0
+number of warnings    : 1
+
+------------error list-------------------------------------------
+(none)
+------------warning list-----------------------------------------
+schema_reference.4: Failed to read schema document 'subdir/importing.xsda', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>. [3, 98]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/ImportWithIncorrectSlash/A.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/ImportWithIncorrectSlash/A.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/ImportWithIncorrectSlash/A.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/ImportXSDWithXSDImportInDiffDir/ImportXSDWithXSDImportInDiffDir.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/ImportXSDWithXSDImportInDiffDir/ImportXSDWithXSDImportInDiffDir.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/ImportXSDWithXSDImportInDiffDir/ImportXSDWithXSDImportInDiffDir.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/InvalidSchemaInXMLCatalog/InvalidSchemaInXMLCatalog.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/InvalidSchemaInXMLCatalog/InvalidSchemaInXMLCatalog.xsd-log
new file mode 100644
index 0000000..54a6653
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/InvalidSchemaInXMLCatalog/InvalidSchemaInXMLCatalog.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+src-resolve.4.2: Error resolving component 'stringa'. It was detected that 'stringa' is in namespace 'http://www.w3.org/2001/XMLSchema', but components from this namespace are not referenceable from schema document 'platform:/resource/Project/InvalidSchemaInXMLCatalog.xsd'. If this is the incorrect namespace, perhaps the prefix of 'stringa' needs to be changed. If this is the correct namespace, then an appropriate 'import' tag should be added to 'platform:/resource/Project/InvalidSchemaInXMLCatalog.xsd'. [3, 50]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/MissingClosingSchemaTag/MissingClosingSchemaTag.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/MissingClosingSchemaTag/MissingClosingSchemaTag.xsd-log
new file mode 100644
index 0000000..e7fb00d
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/MissingClosingSchemaTag/MissingClosingSchemaTag.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+XML document structures must start and end within the same entity. [2, 125]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/TwoOpenBrackets/TwoOpenBrackets.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/TwoOpenBrackets/TwoOpenBrackets.xsd-log
new file mode 100644
index 0000000..cf33997
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/TwoOpenBrackets/TwoOpenBrackets.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+The markup in the document preceding the root element must be well-formed. [1, 2]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/XSDRegisteredWithCatalog/InvalidSchemaWithNamespaceInCatalog.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/XSDRegisteredWithCatalog/InvalidSchemaWithNamespaceInCatalog.xsd-log
new file mode 100644
index 0000000..5ed1a99
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/BugFixes/XSDRegisteredWithCatalog/InvalidSchemaWithNamespaceInCatalog.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+Element type "complexType" must be followed by either attribute specifications, ">" or "/>". [6, 3]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHatInFilename/AngleHat^InFilenameInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHatInFilename/AngleHat^InFilenameInvalid.xsd-log
new file mode 100644
index 0000000..97f8aa7
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHatInFilename/AngleHat^InFilenameInvalid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHatInFilename/AngleHat^InFilenameValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHatInFilename/AngleHat^InFilenameValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHatInFilename/AngleHat^InFilenameValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHatInFilename/ImportAngleHat^InFilenameInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHatInFilename/ImportAngleHat^InFilenameInvalid.xsd-log
new file mode 100644
index 0000000..d594c99
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHatInFilename/ImportAngleHat^InFilenameInvalid.xsd-log
@@ -0,0 +1,6 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+Referenced file contains errors (testresources/samples/Paths/AngleHatInFilename/AngleHat^InFilenameInvalid.xsd).  For more information, right click on the message and select "Show Details..." [1, 0]
+-> XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHatInFilename/ImportAngleHat^InFilenameValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHatInFilename/ImportAngleHat^InFilenameValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHatInFilename/ImportAngleHat^InFilenameValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHat^InPath/AngleHatInPathInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHat^InPath/AngleHatInPathInvalid.xsd-log
new file mode 100644
index 0000000..97f8aa7
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHat^InPath/AngleHatInPathInvalid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHat^InPath/AngleHatInPathValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHat^InPath/AngleHatInPathValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHat^InPath/AngleHatInPathValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHat^InPath/ImportAngleHatInPathInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHat^InPath/ImportAngleHatInPathInvalid.xsd-log
new file mode 100644
index 0000000..8fa6135
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHat^InPath/ImportAngleHatInPathInvalid.xsd-log
@@ -0,0 +1,6 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+Referenced file contains errors (testresources/samples/Paths/AngleHat^InPath/AngleHatInPathInvalid.xsd).  For more information, right click on the message and select "Show Details..." [1, 0]
+-> XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHat^InPath/ImportAngleHatInPathValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHat^InPath/ImportAngleHatInPathValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/AngleHat^InPath/ImportAngleHatInPathValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracket\051InPath/CloseBracketInPathInvalid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracket\051InPath/CloseBracketInPathInvalid.xsd-log"
new file mode 100644
index 0000000..97f8aa7
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracket\051InPath/CloseBracketInPathInvalid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracket\051InPath/CloseBracketInPathValid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracket\051InPath/CloseBracketInPathValid.xsd-log"
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracket\051InPath/CloseBracketInPathValid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracket\051InPath/ImportCloseBracketInPathInvalid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracket\051InPath/ImportCloseBracketInPathInvalid.xsd-log"
new file mode 100644
index 0000000..43a672e
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracket\051InPath/ImportCloseBracketInPathInvalid.xsd-log"
@@ -0,0 +1,6 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+Referenced file contains errors (testresources/samples/Paths/CloseBracket)InPath/CloseBracketInPathInvalid.xsd).  For more information, right click on the message and select "Show Details..." [1, 0]
+-> XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracket\051InPath/ImportCloseBracketInPathValid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracket\051InPath/ImportCloseBracketInPathValid.xsd-log"
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracket\051InPath/ImportCloseBracketInPathValid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracketInFilename/CloseBracket\051InFilenameInvalid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracketInFilename/CloseBracket\051InFilenameInvalid.xsd-log"
new file mode 100644
index 0000000..97f8aa7
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracketInFilename/CloseBracket\051InFilenameInvalid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracketInFilename/CloseBracket\051InFilenameValid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracketInFilename/CloseBracket\051InFilenameValid.xsd-log"
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracketInFilename/CloseBracket\051InFilenameValid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracketInFilename/ImportCloseBracket\051InFilenameInvalid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracketInFilename/ImportCloseBracket\051InFilenameInvalid.xsd-log"
new file mode 100644
index 0000000..2fcf49b
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracketInFilename/ImportCloseBracket\051InFilenameInvalid.xsd-log"
@@ -0,0 +1,6 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+Referenced file contains errors (testresources/samples/Paths/CloseBracketInFilename/CloseBracket)InFilenameInvalid.xsd).  For more information, right click on the message and select "Show Details..." [1, 0]
+-> XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracketInFilename/ImportCloseBracket\051InFilenameValid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracketInFilename/ImportCloseBracket\051InFilenameValid.xsd-log"
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/CloseBracketInFilename/ImportCloseBracket\051InFilenameValid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Dash-InPath/DashInPathInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Dash-InPath/DashInPathInvalid.xsd-log
new file mode 100644
index 0000000..97f8aa7
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Dash-InPath/DashInPathInvalid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Dash-InPath/DashInPathValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Dash-InPath/DashInPathValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Dash-InPath/DashInPathValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Dash-InPath/ImportDashInPathInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Dash-InPath/ImportDashInPathInvalid.xsd-log
new file mode 100644
index 0000000..3dcef18
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Dash-InPath/ImportDashInPathInvalid.xsd-log
@@ -0,0 +1,6 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+Referenced file contains errors (testresources/samples/Paths/Dash-InPath/DashInPathInvalid.xsd).  For more information, right click on the message and select "Show Details..." [1, 0]
+-> XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Dash-InPath/ImportDashInPathValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Dash-InPath/ImportDashInPathValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Dash-InPath/ImportDashInPathValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/DashInFilename/Dash-InFilenameInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/DashInFilename/Dash-InFilenameInvalid.xsd-log
new file mode 100644
index 0000000..97f8aa7
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/DashInFilename/Dash-InFilenameInvalid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/DashInFilename/Dash-InFilenameValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/DashInFilename/Dash-InFilenameValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/DashInFilename/Dash-InFilenameValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/DashInFilename/ImportDash-InFilenameInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/DashInFilename/ImportDash-InFilenameInvalid.xsd-log
new file mode 100644
index 0000000..82697df
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/DashInFilename/ImportDash-InFilenameInvalid.xsd-log
@@ -0,0 +1,6 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+Referenced file contains errors (testresources/samples/Paths/DashInFilename/Dash-InFilenameInvalid.xsd).  For more information, right click on the message and select "Show Details..." [1, 0]
+-> XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/DashInFilename/ImportDash-InFilenameValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/DashInFilename/ImportDash-InFilenameValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/DashInFilename/ImportDash-InFilenameValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Exclamation\041InPath/ExclamationInPathInvalid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Exclamation\041InPath/ExclamationInPathInvalid.xsd-log"
new file mode 100644
index 0000000..97f8aa7
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Exclamation\041InPath/ExclamationInPathInvalid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Exclamation\041InPath/ExclamationInPathValid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Exclamation\041InPath/ExclamationInPathValid.xsd-log"
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Exclamation\041InPath/ExclamationInPathValid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Exclamation\041InPath/ImportExclamationInPathInvalid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Exclamation\041InPath/ImportExclamationInPathInvalid.xsd-log"
new file mode 100644
index 0000000..d0627d4
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Exclamation\041InPath/ImportExclamationInPathInvalid.xsd-log"
@@ -0,0 +1,6 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+Referenced file contains errors (testresources/samples/Paths/Exclamation!InPath/ExclamationInPathInvalid.xsd).  For more information, right click on the message and select "Show Details..." [1, 0]
+-> XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Exclamation\041InPath/ImportExclamationInPathValid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Exclamation\041InPath/ImportExclamationInPathValid.xsd-log"
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Exclamation\041InPath/ImportExclamationInPathValid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/ExclamationInFilename/Exclamation\041InFilenameInvalid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/ExclamationInFilename/Exclamation\041InFilenameInvalid.xsd-log"
new file mode 100644
index 0000000..97f8aa7
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/ExclamationInFilename/Exclamation\041InFilenameInvalid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/ExclamationInFilename/Exclamation\041InFilenameValid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/ExclamationInFilename/Exclamation\041InFilenameValid.xsd-log"
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/ExclamationInFilename/Exclamation\041InFilenameValid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/ExclamationInFilename/ImportExclamation\041InFilenameInvalid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/ExclamationInFilename/ImportExclamation\041InFilenameInvalid.xsd-log"
new file mode 100644
index 0000000..80a8f42
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/ExclamationInFilename/ImportExclamation\041InFilenameInvalid.xsd-log"
@@ -0,0 +1,6 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+Referenced file contains errors (testresources/samples/Paths/ExclamationInFilename/Exclamation!InFilenameInvalid.xsd).  For more information, right click on the message and select "Show Details..." [1, 0]
+-> XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/ExclamationInFilename/ImportExclamation\041InFilenameValid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/ExclamationInFilename/ImportExclamation\041InFilenameValid.xsd-log"
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/ExclamationInFilename/ImportExclamation\041InFilenameValid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracket\050InPath/ImportOpenBracketInPathInvalid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracket\050InPath/ImportOpenBracketInPathInvalid.xsd-log"
new file mode 100644
index 0000000..7ed9be8
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracket\050InPath/ImportOpenBracketInPathInvalid.xsd-log"
@@ -0,0 +1,6 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+Referenced file contains errors (testresources/samples/Paths/OpenBracket(InPath/OpenBracketInPathInvalid.xsd).  For more information, right click on the message and select "Show Details..." [1, 0]
+-> XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracket\050InPath/ImportOpenBracketInPathValid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracket\050InPath/ImportOpenBracketInPathValid.xsd-log"
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracket\050InPath/ImportOpenBracketInPathValid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracket\050InPath/OpenBracketInPathInvalid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracket\050InPath/OpenBracketInPathInvalid.xsd-log"
new file mode 100644
index 0000000..97f8aa7
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracket\050InPath/OpenBracketInPathInvalid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracket\050InPath/OpenBracketInPathValid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracket\050InPath/OpenBracketInPathValid.xsd-log"
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracket\050InPath/OpenBracketInPathValid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracketInFilename/ImportOpenBracket\050InFilenameInvalid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracketInFilename/ImportOpenBracket\050InFilenameInvalid.xsd-log"
new file mode 100644
index 0000000..9dd8bce
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracketInFilename/ImportOpenBracket\050InFilenameInvalid.xsd-log"
@@ -0,0 +1,6 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+Referenced file contains errors (testresources/samples/Paths/OpenBracketInFilename/OpenBracket(InFilenameInvalid.xsd).  For more information, right click on the message and select "Show Details..." [1, 0]
+-> XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracketInFilename/ImportOpenBracket\050InFilenameValid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracketInFilename/ImportOpenBracket\050InFilenameValid.xsd-log"
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracketInFilename/ImportOpenBracket\050InFilenameValid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracketInFilename/OpenBracket\050InFilenameInvalid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracketInFilename/OpenBracket\050InFilenameInvalid.xsd-log"
new file mode 100644
index 0000000..97f8aa7
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracketInFilename/OpenBracket\050InFilenameInvalid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracketInFilename/OpenBracket\050InFilenameValid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracketInFilename/OpenBracket\050InFilenameValid.xsd-log"
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/OpenBracketInFilename/OpenBracket\050InFilenameValid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Period.InPath/ImportPeriodInPathInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Period.InPath/ImportPeriodInPathInvalid.xsd-log
new file mode 100644
index 0000000..60a7021
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Period.InPath/ImportPeriodInPathInvalid.xsd-log
@@ -0,0 +1,6 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+Referenced file contains errors (testresources/samples/Paths/Period.InPath/PeriodInPathInvalid.xsd).  For more information, right click on the message and select "Show Details..." [1, 0]
+-> XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Period.InPath/ImportPeriodInPathValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Period.InPath/ImportPeriodInPathValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Period.InPath/ImportPeriodInPathValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Period.InPath/PeriodInPathInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Period.InPath/PeriodInPathInvalid.xsd-log
new file mode 100644
index 0000000..97f8aa7
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Period.InPath/PeriodInPathInvalid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Period.InPath/PeriodInPathValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Period.InPath/PeriodInPathValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Period.InPath/PeriodInPathValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/PeriodInFilename/ImportPeriod.InFilenameInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/PeriodInFilename/ImportPeriod.InFilenameInvalid.xsd-log
new file mode 100644
index 0000000..fe79aea
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/PeriodInFilename/ImportPeriod.InFilenameInvalid.xsd-log
@@ -0,0 +1,6 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+Referenced file contains errors (testresources/samples/Paths/PeriodInFilename/Period.InFilenameInvalid.xsd).  For more information, right click on the message and select "Show Details..." [1, 0]
+-> XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/PeriodInFilename/ImportPeriod.InFilenameValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/PeriodInFilename/ImportPeriod.InFilenameValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/PeriodInFilename/ImportPeriod.InFilenameValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/PeriodInFilename/Period.InFilenameInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/PeriodInFilename/Period.InFilenameInvalid.xsd-log
new file mode 100644
index 0000000..97f8aa7
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/PeriodInFilename/Period.InFilenameInvalid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/PeriodInFilename/Period.InFilenameValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/PeriodInFilename/Period.InFilenameValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/PeriodInFilename/Period.InFilenameValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Quote\047InPath/ImportQuoteInPathInvalid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Quote\047InPath/ImportQuoteInPathInvalid.xsd-log"
new file mode 100644
index 0000000..9c739f9
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Quote\047InPath/ImportQuoteInPathInvalid.xsd-log"
@@ -0,0 +1,6 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+Referenced file contains errors (testresources/samples/Paths/Quote'InPath/QuoteInPathInvalid.xsd).  For more information, right click on the message and select "Show Details..." [1, 0]
+-> XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Quote\047InPath/ImportQuoteInPathValid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Quote\047InPath/ImportQuoteInPathValid.xsd-log"
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Quote\047InPath/ImportQuoteInPathValid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Quote\047InPath/QuoteInPathInvalid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Quote\047InPath/QuoteInPathInvalid.xsd-log"
new file mode 100644
index 0000000..97f8aa7
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Quote\047InPath/QuoteInPathInvalid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Quote\047InPath/QuoteInPathValid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Quote\047InPath/QuoteInPathValid.xsd-log"
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Quote\047InPath/QuoteInPathValid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/QuoteInFilename/ImportQuote\047InFilenameInvalid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/QuoteInFilename/ImportQuote\047InFilenameInvalid.xsd-log"
new file mode 100644
index 0000000..f8071e2
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/QuoteInFilename/ImportQuote\047InFilenameInvalid.xsd-log"
@@ -0,0 +1,6 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+Referenced file contains errors (testresources/samples/Paths/QuoteInFilename/Quote'InFilenameInvalid.xsd).  For more information, right click on the message and select "Show Details..." [1, 0]
+-> XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/QuoteInFilename/ImportQuote\047InFilenameValid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/QuoteInFilename/ImportQuote\047InFilenameValid.xsd-log"
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/QuoteInFilename/ImportQuote\047InFilenameValid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/QuoteInFilename/Quote\047InFilenameInvalid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/QuoteInFilename/Quote\047InFilenameInvalid.xsd-log"
new file mode 100644
index 0000000..97f8aa7
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/QuoteInFilename/Quote\047InFilenameInvalid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/QuoteInFilename/Quote\047InFilenameValid.xsd-log" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/QuoteInFilename/Quote\047InFilenameValid.xsd-log"
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/QuoteInFilename/Quote\047InFilenameValid.xsd-log"
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Space InPath/ImportSpaceInPathInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Space InPath/ImportSpaceInPathInvalid.xsd-log
new file mode 100644
index 0000000..569a6e2
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Space InPath/ImportSpaceInPathInvalid.xsd-log
@@ -0,0 +1,6 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+Referenced file contains errors (testresources/samples/Paths/Space InPath/SpaceInPathInvalid.xsd).  For more information, right click on the message and select "Show Details..." [1, 0]
+-> XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Space InPath/ImportSpaceInPathValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Space InPath/ImportSpaceInPathValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Space InPath/ImportSpaceInPathValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Space InPath/SpaceInPathInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Space InPath/SpaceInPathInvalid.xsd-log
new file mode 100644
index 0000000..97f8aa7
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Space InPath/SpaceInPathInvalid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Space InPath/SpaceInPathValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Space InPath/SpaceInPathValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Space InPath/SpaceInPathValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/SpaceInFilename/ImportSpace InFilenameInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/SpaceInFilename/ImportSpace InFilenameInvalid.xsd-log
new file mode 100644
index 0000000..bb78124
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/SpaceInFilename/ImportSpace InFilenameInvalid.xsd-log
@@ -0,0 +1,6 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+Referenced file contains errors (testresources/samples/Paths/SpaceInFilename/Space InFilenameInvalid.xsd).  For more information, right click on the message and select "Show Details..." [1, 0]
+-> XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/SpaceInFilename/ImportSpace InFilenameValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/SpaceInFilename/ImportSpace InFilenameValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/SpaceInFilename/ImportSpace InFilenameValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/SpaceInFilename/Space InFilenameInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/SpaceInFilename/Space InFilenameInvalid.xsd-log
new file mode 100644
index 0000000..97f8aa7
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/SpaceInFilename/Space InFilenameInvalid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/SpaceInFilename/Space InFilenameValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/SpaceInFilename/Space InFilenameValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/SpaceInFilename/Space InFilenameValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/TildeInFilename/Copy of -forXerces2.6.2- ImportTilde~InFilenameInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/TildeInFilename/Copy of -forXerces2.6.2- ImportTilde~InFilenameInvalid.xsd-log
new file mode 100644
index 0000000..0b9b109
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/TildeInFilename/Copy of -forXerces2.6.2- ImportTilde~InFilenameInvalid.xsd-log
@@ -0,0 +1,6 @@
+number of errors      : 1

+

+------------error list-------------------------------------------

+Referenced file contains errors (testresources/samples/Paths/TildeInFilename/Tilde%7EInFilenameInvalid.xsd).  For more information, right click on the message and select "Show Details..." [1, 0]

+-> XML document structures must start and end within the same entity. [4, 1]

+-----------------------------------------------------------------

diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/TildeInFilename/ImportTilde~InFilenameInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/TildeInFilename/ImportTilde~InFilenameInvalid.xsd-log
new file mode 100644
index 0000000..63f6e91
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/TildeInFilename/ImportTilde~InFilenameInvalid.xsd-log
@@ -0,0 +1,6 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+Referenced file contains errors (testresources/samples/Paths/TildeInFilename/Tilde~InFilenameInvalid.xsd).  For more information, right click on the message and select "Show Details..." [1, 0]
+-> XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/TildeInFilename/ImportTilde~InFilenameValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/TildeInFilename/ImportTilde~InFilenameValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/TildeInFilename/ImportTilde~InFilenameValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/TildeInFilename/Tilde~InFilenameInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/TildeInFilename/Tilde~InFilenameInvalid.xsd-log
new file mode 100644
index 0000000..97f8aa7
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/TildeInFilename/Tilde~InFilenameInvalid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/TildeInFilename/Tilde~InFilenameValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/TildeInFilename/Tilde~InFilenameValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/TildeInFilename/Tilde~InFilenameValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Tilde~InPath/ImportTildeInPathInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Tilde~InPath/ImportTildeInPathInvalid.xsd-log
new file mode 100644
index 0000000..1597130
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Tilde~InPath/ImportTildeInPathInvalid.xsd-log
@@ -0,0 +1,6 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+Referenced file contains errors (testresources/samples/Paths/Tilde~InPath/TildeInPathInvalid.xsd).  For more information, right click on the message and select "Show Details..." [1, 0]
+-> XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Tilde~InPath/ImportTildeInPathValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Tilde~InPath/ImportTildeInPathValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Tilde~InPath/ImportTildeInPathValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Tilde~InPath/TildeInPathInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Tilde~InPath/TildeInPathInvalid.xsd-log
new file mode 100644
index 0000000..97f8aa7
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Tilde~InPath/TildeInPathInvalid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Tilde~InPath/TildeInPathValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Tilde~InPath/TildeInPathValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Tilde~InPath/TildeInPathValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/UnderscoreInFilename/ImportUnderscore_InFilenameInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/UnderscoreInFilename/ImportUnderscore_InFilenameInvalid.xsd-log
new file mode 100644
index 0000000..49ea3f7
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/UnderscoreInFilename/ImportUnderscore_InFilenameInvalid.xsd-log
@@ -0,0 +1,6 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+Referenced file contains errors (testresources/samples/Paths/UnderscoreInFilename/Underscore_InFilenameInvalid.xsd).  For more information, right click on the message and select "Show Details..." [1, 0]
+-> XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/UnderscoreInFilename/ImportUnderscore_InFilenameValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/UnderscoreInFilename/ImportUnderscore_InFilenameValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/UnderscoreInFilename/ImportUnderscore_InFilenameValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/UnderscoreInFilename/Underscore_InFilenameInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/UnderscoreInFilename/Underscore_InFilenameInvalid.xsd-log
new file mode 100644
index 0000000..97f8aa7
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/UnderscoreInFilename/Underscore_InFilenameInvalid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/UnderscoreInFilename/Underscore_InFilenameValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/UnderscoreInFilename/Underscore_InFilenameValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/UnderscoreInFilename/Underscore_InFilenameValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Underscore_InPath/ImportUnderscoreInPathInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Underscore_InPath/ImportUnderscoreInPathInvalid.xsd-log
new file mode 100644
index 0000000..91e7786
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Underscore_InPath/ImportUnderscoreInPathInvalid.xsd-log
@@ -0,0 +1,6 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+Referenced file contains errors (testresources/samples/Paths/Underscore_InPath/UnderscoreInPathInvalid.xsd).  For more information, right click on the message and select "Show Details..." [1, 0]
+-> XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Underscore_InPath/ImportUnderscoreInPathValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Underscore_InPath/ImportUnderscoreInPathValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Underscore_InPath/ImportUnderscoreInPathValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Underscore_InPath/UnderscoreInPathInvalid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Underscore_InPath/UnderscoreInPathInvalid.xsd-log
new file mode 100644
index 0000000..97f8aa7
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Underscore_InPath/UnderscoreInPathInvalid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 1
+
+------------error list-------------------------------------------
+XML document structures must start and end within the same entity. [4, 1]
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Underscore_InPath/UnderscoreInPathValid.xsd-log b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Underscore_InPath/UnderscoreInPathValid.xsd-log
new file mode 100644
index 0000000..9bada50
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/idealResults/Paths/Underscore_InPath/UnderscoreInPathValid.xsd-log
@@ -0,0 +1,5 @@
+number of errors      : 0
+
+------------error list-------------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/EmptyFile/Empty.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/EmptyFile/Empty.xsd
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/EmptyFile/Empty.xsd
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/HonourAllSchemaLocations/Part1.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/HonourAllSchemaLocations/Part1.xsd
new file mode 100644
index 0000000..21c81f7
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/HonourAllSchemaLocations/Part1.xsd
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+	targetNamespace="http://www.example.org/Dog" 
+	xmlns:tns="http://www.example.org/Dog" >
+
+    <complexType name="Head"></complexType>
+</schema>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/HonourAllSchemaLocations/Part2.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/HonourAllSchemaLocations/Part2.xsd
new file mode 100644
index 0000000..0b13d05
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/HonourAllSchemaLocations/Part2.xsd
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+	targetNamespace="http://www.example.org/Dog" 
+	xmlns:tns="http://www.example.org/Dog" >
+
+
+    <complexType name="Tail"></complexType>
+</schema>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/HonourAllSchemaLocations/dog.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/HonourAllSchemaLocations/dog.xsd
new file mode 100644
index 0000000..6c4c669
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/HonourAllSchemaLocations/dog.xsd
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+	targetNamespace="http://www.example.org/ADog"
+	xmlns:tns="http://www.example.org/ADog"
+	xmlns:pref="http://www.example.org/Dog">
+	
+	<import namespace="http://www.example.org/Dog"
+		schemaLocation="Part1.xsd">
+	</import>
+	<import namespace="http://www.example.org/Dog"
+		schemaLocation="Part2.xsd">
+	</import>
+
+	<complexType name="DogType">
+		<sequence>
+
+			<element name="Tail" type="pref:Tail"></element>
+			<element name="Body" type="string"></element>
+		</sequence>
+	</complexType>
+
+	<element name="aDog" type="tns:DogType"></element>
+
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/ImportInvalidLocation/ImportInvalidLocation.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/ImportInvalidLocation/ImportInvalidLocation.xsd
new file mode 100644
index 0000000..4b8347e
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/ImportInvalidLocation/ImportInvalidLocation.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/root" xmlns:ex="http://www.example.com/root">
+    <import namespace="http://www.example.com/importing" schemaLocation="subdir/importing.xsda"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/ImportWithIncorrectSlash/A.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/ImportWithIncorrectSlash/A.xsd
new file mode 100644
index 0000000..0c20fe1
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/ImportWithIncorrectSlash/A.xsd
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://AC">
+  <xsd:include schemaLocation="C.xsd"/>
+  <xsd:import namespace="http://B" schemaLocation="B.xsd"/>
+</xsd:schema>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/ImportWithIncorrectSlash/B.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/ImportWithIncorrectSlash/B.xsd
new file mode 100644
index 0000000..b45007e
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/ImportWithIncorrectSlash/B.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://B">
+  <xsd:import namespace="http://AC" schemaLocation=".\C.xsd"/>
+</xsd:schema>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/ImportWithIncorrectSlash/C.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/ImportWithIncorrectSlash/C.xsd
new file mode 100644
index 0000000..f6df675
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/ImportWithIncorrectSlash/C.xsd
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://AC">
+   <xsd:complexType name="SampleType">
+    <xsd:sequence>
+     <xsd:element name="SampleElement" nillable="true" type="xsd:string"/>
+    </xsd:sequence>
+   </xsd:complexType>
+</xsd:schema>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/ImportXSDWithXSDImportInDiffDir/ImportXSDWithXSDImportInDiffDir.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/ImportXSDWithXSDImportInDiffDir/ImportXSDWithXSDImportInDiffDir.xsd
new file mode 100644
index 0000000..95e6af0
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/ImportXSDWithXSDImportInDiffDir/ImportXSDWithXSDImportInDiffDir.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/root" xmlns:ex="http://www.example.com/root">
+    <import namespace="http://www.example.com/importing" schemaLocation="subdir/importing.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/ImportXSDWithXSDImportInDiffDir/subdir/importing.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/ImportXSDWithXSDImportInDiffDir/subdir/importing.xsd
new file mode 100644
index 0000000..9af5462
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/ImportXSDWithXSDImportInDiffDir/subdir/importing.xsd
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/importing" xmlns:ex="http://www.example.com/importing" xmlns:simple="http://www.example.com/simple">
+  <import namespace="http://www.example.com/simple" schemaLocation="simple.xsd"/>
+    <simpleType name="mySimpleType">
+    <list itemType="string"/>
+  </simpleType>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/ImportXSDWithXSDImportInDiffDir/subdir/simple.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/ImportXSDWithXSDImportInDiffDir/subdir/simple.xsd
new file mode 100644
index 0000000..8810a4d
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/ImportXSDWithXSDImportInDiffDir/subdir/simple.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/simple" xmlns:ibm="http://www.example.com/simple">
+    <element name="myElement" type="string"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/InvalidSchemaInXMLCatalog/InvalidSchemaInXMLCatalog.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/InvalidSchemaInXMLCatalog/InvalidSchemaInXMLCatalog.xsd
new file mode 100644
index 0000000..8044319
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/InvalidSchemaInXMLCatalog/InvalidSchemaInXMLCatalog.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/invalid" xmlns:invalid="http://www.example.com/invalid">
+	<element name="NewGlobalElement" type="stringa"></element>
+</schema>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/MissingClosingSchemaTag/MissingClosingSchemaTag.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/MissingClosingSchemaTag/MissingClosingSchemaTag.xsd
new file mode 100644
index 0000000..d4d7634
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/MissingClosingSchemaTag/MissingClosingSchemaTag.xsd
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/TwoOpenBrackets/TwoOpenBrackets.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/TwoOpenBrackets/TwoOpenBrackets.xsd
new file mode 100644
index 0000000..297c8f6
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/TwoOpenBrackets/TwoOpenBrackets.xsd
@@ -0,0 +1,3 @@
+<<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/TwoOpenBrackets" xmlns:tns="http://www.example.org/TwoOpenBrackets">
+</schema>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/XSDRegisteredWithCatalog/InvalidSchemaWithNamespaceInCatalog.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/XSDRegisteredWithCatalog/InvalidSchemaWithNamespaceInCatalog.xsd
new file mode 100644
index 0000000..e3e24da
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/BugFixes/XSDRegisteredWithCatalog/InvalidSchemaWithNamespaceInCatalog.xsd
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" 
+        targetNamespace="http://www.eclipse.org/webtools/Catalogue" xmlns:c="http://www.eclipse.org/webtools/Catalogue">
+
+	<complexType name="PublicationType"
+		<sequence>
+			<element name="title" type="string"></element>
+			<element name="author" type="string" minOccurs="0" maxOccurs="unbounded"></element>
+			<element name="date" type="gYear"></element>
+		</sequence>
+	</complexType>
+	
+	<complexType name="BookType">
+		<complexContent>
+			<extension base="c:PublicationType">
+			    <sequence>
+                    <element name="isbn" type="string" />
+					<element name="publisher" type="string"/>
+                </sequence>
+			</extension>
+		</complexContent>
+	</complexType>
+	
+	<complexType name="MagazineType">
+		<complexContent>			
+			<restriction base="c:PublicationType">
+				<sequence>
+                    <element name="title" type="string" />
+					<element name="author" type="string" minOccurs="0" maxOccurs="0"/>
+					<element name="date" type="gYear"></element>
+				</sequence>
+			</restriction>
+		</complexContent>
+	</complexType>
+	
+	<element name="Publication" type="c:PublicationType" abstract="true"></element>
+	
+	<element name="Book" type="c:BookType" substitutionGroup="c:Publication"></element>
+
+	<element name="Magazine" type="c:MagazineType" substitutionGroup="c:Publication"></element>
+	
+	<element name="Catalogue">
+		<complexType>
+			<sequence>
+				<element ref="c:Publication" maxOccurs="unbounded"></element>
+			</sequence>
+		</complexType>
+	</element>
+	
+</schema>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHatInFilename/AngleHat^InFilenameInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHatInFilename/AngleHat^InFilenameInvalid.xsd
new file mode 100644
index 0000000..a0c6a60
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHatInFilename/AngleHat^InFilenameInvalid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHatInFilename/AngleHat^InFilenameValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHatInFilename/AngleHat^InFilenameValid.xsd
new file mode 100644
index 0000000..d27f474
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHatInFilename/AngleHat^InFilenameValid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHatInFilename/ImportAngleHat^InFilenameInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHatInFilename/ImportAngleHat^InFilenameInvalid.xsd
new file mode 100644
index 0000000..c6df147
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHatInFilename/ImportAngleHat^InFilenameInvalid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="AngleHat^InFilenameInvalid.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHatInFilename/ImportAngleHat^InFilenameValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHatInFilename/ImportAngleHat^InFilenameValid.xsd
new file mode 100644
index 0000000..e084e6e
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHatInFilename/ImportAngleHat^InFilenameValid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="AngleHat^InFilenameValid.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHat^InPath/AngleHatInPathInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHat^InPath/AngleHatInPathInvalid.xsd
new file mode 100644
index 0000000..a0c6a60
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHat^InPath/AngleHatInPathInvalid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHat^InPath/AngleHatInPathValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHat^InPath/AngleHatInPathValid.xsd
new file mode 100644
index 0000000..d27f474
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHat^InPath/AngleHatInPathValid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHat^InPath/ImportAngleHatInPathInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHat^InPath/ImportAngleHatInPathInvalid.xsd
new file mode 100644
index 0000000..2d82c95
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHat^InPath/ImportAngleHatInPathInvalid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="AngleHatInPathInvalid.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHat^InPath/ImportAngleHatInPathValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHat^InPath/ImportAngleHatInPathValid.xsd
new file mode 100644
index 0000000..67bd0d7
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/AngleHat^InPath/ImportAngleHatInPathValid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="AngleHatInPathValid.xsd"/>
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracket\051InPath/CloseBracketInPathInvalid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracket\051InPath/CloseBracketInPathInvalid.xsd"
new file mode 100644
index 0000000..a0c6a60
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracket\051InPath/CloseBracketInPathInvalid.xsd"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracket\051InPath/CloseBracketInPathValid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracket\051InPath/CloseBracketInPathValid.xsd"
new file mode 100644
index 0000000..d27f474
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracket\051InPath/CloseBracketInPathValid.xsd"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracket\051InPath/ImportCloseBracketInPathInvalid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracket\051InPath/ImportCloseBracketInPathInvalid.xsd"
new file mode 100644
index 0000000..8bd9a74
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracket\051InPath/ImportCloseBracketInPathInvalid.xsd"
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="CloseBracketInPathInvalid.xsd"/>
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracket\051InPath/ImportCloseBracketInPathValid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracket\051InPath/ImportCloseBracketInPathValid.xsd"
new file mode 100644
index 0000000..2180513
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracket\051InPath/ImportCloseBracketInPathValid.xsd"
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="CloseBracketInPathValid.xsd"/>
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracketInFilename/CloseBracket\051InFilenameInvalid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracketInFilename/CloseBracket\051InFilenameInvalid.xsd"
new file mode 100644
index 0000000..a0c6a60
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracketInFilename/CloseBracket\051InFilenameInvalid.xsd"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracketInFilename/CloseBracket\051InFilenameValid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracketInFilename/CloseBracket\051InFilenameValid.xsd"
new file mode 100644
index 0000000..d27f474
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracketInFilename/CloseBracket\051InFilenameValid.xsd"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracketInFilename/ImportCloseBracket\051InFilenameInvalid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracketInFilename/ImportCloseBracket\051InFilenameInvalid.xsd"
new file mode 100644
index 0000000..d60d06f
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracketInFilename/ImportCloseBracket\051InFilenameInvalid.xsd"
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="CloseBracket)InFilenameInvalid.xsd"/>
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracketInFilename/ImportCloseBracket\051InFilenameValid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracketInFilename/ImportCloseBracket\051InFilenameValid.xsd"
new file mode 100644
index 0000000..7a2503b
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/CloseBracketInFilename/ImportCloseBracket\051InFilenameValid.xsd"
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="CloseBracket)InFilenameValid.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Dash-InPath/DashInPathInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Dash-InPath/DashInPathInvalid.xsd
new file mode 100644
index 0000000..a0c6a60
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Dash-InPath/DashInPathInvalid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Dash-InPath/DashInPathValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Dash-InPath/DashInPathValid.xsd
new file mode 100644
index 0000000..d27f474
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Dash-InPath/DashInPathValid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Dash-InPath/ImportDashInPathInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Dash-InPath/ImportDashInPathInvalid.xsd
new file mode 100644
index 0000000..09648ca
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Dash-InPath/ImportDashInPathInvalid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="DashInPathInvalid.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Dash-InPath/ImportDashInPathValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Dash-InPath/ImportDashInPathValid.xsd
new file mode 100644
index 0000000..3f2da8d
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Dash-InPath/ImportDashInPathValid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="DashInPathValid.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/DashInFilename/Dash-InFilenameInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/DashInFilename/Dash-InFilenameInvalid.xsd
new file mode 100644
index 0000000..a0c6a60
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/DashInFilename/Dash-InFilenameInvalid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/DashInFilename/Dash-InFilenameValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/DashInFilename/Dash-InFilenameValid.xsd
new file mode 100644
index 0000000..d27f474
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/DashInFilename/Dash-InFilenameValid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/DashInFilename/ImportDash-InFilenameInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/DashInFilename/ImportDash-InFilenameInvalid.xsd
new file mode 100644
index 0000000..c534d83
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/DashInFilename/ImportDash-InFilenameInvalid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="Dash-InFilenameInvalid.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/DashInFilename/ImportDash-InFilenameValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/DashInFilename/ImportDash-InFilenameValid.xsd
new file mode 100644
index 0000000..b6334ae
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/DashInFilename/ImportDash-InFilenameValid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="Dash-InFilenameValid.xsd"/>
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Exclamation\041InPath/ExclamationInPathInvalid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Exclamation\041InPath/ExclamationInPathInvalid.xsd"
new file mode 100644
index 0000000..a0c6a60
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Exclamation\041InPath/ExclamationInPathInvalid.xsd"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Exclamation\041InPath/ExclamationInPathValid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Exclamation\041InPath/ExclamationInPathValid.xsd"
new file mode 100644
index 0000000..d27f474
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Exclamation\041InPath/ExclamationInPathValid.xsd"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Exclamation\041InPath/ImportExclamationInPathInvalid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Exclamation\041InPath/ImportExclamationInPathInvalid.xsd"
new file mode 100644
index 0000000..3189ff3
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Exclamation\041InPath/ImportExclamationInPathInvalid.xsd"
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="ExclamationInPathInvalid.xsd"/>
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Exclamation\041InPath/ImportExclamationInPathValid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Exclamation\041InPath/ImportExclamationInPathValid.xsd"
new file mode 100644
index 0000000..e8390c6
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Exclamation\041InPath/ImportExclamationInPathValid.xsd"
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="ExclamationInPathValid.xsd"/>
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/ExclamationInFilename/Exclamation\041InFilenameInvalid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/ExclamationInFilename/Exclamation\041InFilenameInvalid.xsd"
new file mode 100644
index 0000000..a0c6a60
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/ExclamationInFilename/Exclamation\041InFilenameInvalid.xsd"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/ExclamationInFilename/Exclamation\041InFilenameValid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/ExclamationInFilename/Exclamation\041InFilenameValid.xsd"
new file mode 100644
index 0000000..d27f474
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/ExclamationInFilename/Exclamation\041InFilenameValid.xsd"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/ExclamationInFilename/ImportExclamation\041InFilenameInvalid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/ExclamationInFilename/ImportExclamation\041InFilenameInvalid.xsd"
new file mode 100644
index 0000000..3430528
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/ExclamationInFilename/ImportExclamation\041InFilenameInvalid.xsd"
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="Exclamation!InFilenameInvalid.xsd"/>
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/ExclamationInFilename/ImportExclamation\041InFilenameValid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/ExclamationInFilename/ImportExclamation\041InFilenameValid.xsd"
new file mode 100644
index 0000000..e92dd97
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/ExclamationInFilename/ImportExclamation\041InFilenameValid.xsd"
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="Exclamation!InFilenameValid.xsd"/>
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracket\050InPath/ImportOpenBracketInPathInvalid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracket\050InPath/ImportOpenBracketInPathInvalid.xsd"
new file mode 100644
index 0000000..1412516
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracket\050InPath/ImportOpenBracketInPathInvalid.xsd"
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="OpenBracketInPathInvalid.xsd"/>
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracket\050InPath/ImportOpenBracketInPathValid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracket\050InPath/ImportOpenBracketInPathValid.xsd"
new file mode 100644
index 0000000..ee461dd
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracket\050InPath/ImportOpenBracketInPathValid.xsd"
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="OpenBracketInPathValid.xsd"/>
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracket\050InPath/OpenBracketInPathInvalid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracket\050InPath/OpenBracketInPathInvalid.xsd"
new file mode 100644
index 0000000..a0c6a60
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracket\050InPath/OpenBracketInPathInvalid.xsd"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracket\050InPath/OpenBracketInPathValid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracket\050InPath/OpenBracketInPathValid.xsd"
new file mode 100644
index 0000000..d27f474
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracket\050InPath/OpenBracketInPathValid.xsd"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracketInFilename/ImportOpenBracket\050InFilenameInvalid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracketInFilename/ImportOpenBracket\050InFilenameInvalid.xsd"
new file mode 100644
index 0000000..70a67e9
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracketInFilename/ImportOpenBracket\050InFilenameInvalid.xsd"
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="OpenBracket(InFilenameInvalid.xsd"/>
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracketInFilename/ImportOpenBracket\050InFilenameValid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracketInFilename/ImportOpenBracket\050InFilenameValid.xsd"
new file mode 100644
index 0000000..d0ab738
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracketInFilename/ImportOpenBracket\050InFilenameValid.xsd"
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="OpenBracket(InFilenameValid.xsd"/>
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracketInFilename/OpenBracket\050InFilenameInvalid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracketInFilename/OpenBracket\050InFilenameInvalid.xsd"
new file mode 100644
index 0000000..a0c6a60
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracketInFilename/OpenBracket\050InFilenameInvalid.xsd"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracketInFilename/OpenBracket\050InFilenameValid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracketInFilename/OpenBracket\050InFilenameValid.xsd"
new file mode 100644
index 0000000..d27f474
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/OpenBracketInFilename/OpenBracket\050InFilenameValid.xsd"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Period.InPath/ImportPeriodInPathInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Period.InPath/ImportPeriodInPathInvalid.xsd
new file mode 100644
index 0000000..4897802
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Period.InPath/ImportPeriodInPathInvalid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="PeriodInPathInvalid.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Period.InPath/ImportPeriodInPathValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Period.InPath/ImportPeriodInPathValid.xsd
new file mode 100644
index 0000000..223ab33
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Period.InPath/ImportPeriodInPathValid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="PeriodInPathValid.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Period.InPath/PeriodInPathInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Period.InPath/PeriodInPathInvalid.xsd
new file mode 100644
index 0000000..a0c6a60
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Period.InPath/PeriodInPathInvalid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Period.InPath/PeriodInPathValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Period.InPath/PeriodInPathValid.xsd
new file mode 100644
index 0000000..d27f474
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Period.InPath/PeriodInPathValid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/PeriodInFilename/ImportPeriod.InFilenameInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/PeriodInFilename/ImportPeriod.InFilenameInvalid.xsd
new file mode 100644
index 0000000..dc62544
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/PeriodInFilename/ImportPeriod.InFilenameInvalid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="Period.InFilenameInvalid.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/PeriodInFilename/ImportPeriod.InFilenameValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/PeriodInFilename/ImportPeriod.InFilenameValid.xsd
new file mode 100644
index 0000000..4e97d47
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/PeriodInFilename/ImportPeriod.InFilenameValid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="Period.InFilenameValid.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/PeriodInFilename/Period.InFilenameInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/PeriodInFilename/Period.InFilenameInvalid.xsd
new file mode 100644
index 0000000..a0c6a60
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/PeriodInFilename/Period.InFilenameInvalid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/PeriodInFilename/Period.InFilenameValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/PeriodInFilename/Period.InFilenameValid.xsd
new file mode 100644
index 0000000..d27f474
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/PeriodInFilename/Period.InFilenameValid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Quote\047InPath/ImportQuoteInPathInvalid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Quote\047InPath/ImportQuoteInPathInvalid.xsd"
new file mode 100644
index 0000000..fd7496c
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Quote\047InPath/ImportQuoteInPathInvalid.xsd"
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="QuoteInPathInvalid.xsd"/>
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Quote\047InPath/ImportQuoteInPathValid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Quote\047InPath/ImportQuoteInPathValid.xsd"
new file mode 100644
index 0000000..4f83c85
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Quote\047InPath/ImportQuoteInPathValid.xsd"
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="QuoteInPathValid.xsd"/>
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Quote\047InPath/QuoteInPathInvalid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Quote\047InPath/QuoteInPathInvalid.xsd"
new file mode 100644
index 0000000..a0c6a60
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Quote\047InPath/QuoteInPathInvalid.xsd"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Quote\047InPath/QuoteInPathValid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Quote\047InPath/QuoteInPathValid.xsd"
new file mode 100644
index 0000000..d27f474
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Quote\047InPath/QuoteInPathValid.xsd"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/QuoteInFilename/ImportQuote\047InFilenameInvalid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/QuoteInFilename/ImportQuote\047InFilenameInvalid.xsd"
new file mode 100644
index 0000000..f1fb34b
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/QuoteInFilename/ImportQuote\047InFilenameInvalid.xsd"
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="Quote'InFilenameInvalid.xsd"/>
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/QuoteInFilename/ImportQuote\047InFilenameValid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/QuoteInFilename/ImportQuote\047InFilenameValid.xsd"
new file mode 100644
index 0000000..9ccf6de
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/QuoteInFilename/ImportQuote\047InFilenameValid.xsd"
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="Quote'InFilenameValid.xsd"/>
+</schema>
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/QuoteInFilename/Quote\047InFilenameInvalid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/QuoteInFilename/Quote\047InFilenameInvalid.xsd"
new file mode 100644
index 0000000..a0c6a60
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/QuoteInFilename/Quote\047InFilenameInvalid.xsd"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+
diff --git "a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/QuoteInFilename/Quote\047InFilenameValid.xsd" "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/QuoteInFilename/Quote\047InFilenameValid.xsd"
new file mode 100644
index 0000000..d27f474
--- /dev/null
+++ "b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/QuoteInFilename/Quote\047InFilenameValid.xsd"
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Space InPath/ImportSpaceInPathInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Space InPath/ImportSpaceInPathInvalid.xsd
new file mode 100644
index 0000000..63a27ad
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Space InPath/ImportSpaceInPathInvalid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="SpaceInPathInvalid.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Space InPath/ImportSpaceInPathValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Space InPath/ImportSpaceInPathValid.xsd
new file mode 100644
index 0000000..3c93d20
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Space InPath/ImportSpaceInPathValid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="SpaceInPathValid.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Space InPath/SpaceInPathInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Space InPath/SpaceInPathInvalid.xsd
new file mode 100644
index 0000000..a0c6a60
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Space InPath/SpaceInPathInvalid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Space InPath/SpaceInPathValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Space InPath/SpaceInPathValid.xsd
new file mode 100644
index 0000000..d27f474
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Space InPath/SpaceInPathValid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/SpaceInFilename/ImportSpace InFilenameInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/SpaceInFilename/ImportSpace InFilenameInvalid.xsd
new file mode 100644
index 0000000..97c0baa
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/SpaceInFilename/ImportSpace InFilenameInvalid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="Space InFilenameInvalid.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/SpaceInFilename/ImportSpace InFilenameValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/SpaceInFilename/ImportSpace InFilenameValid.xsd
new file mode 100644
index 0000000..916ba37
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/SpaceInFilename/ImportSpace InFilenameValid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="Space InFilenameValid.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/SpaceInFilename/Space InFilenameInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/SpaceInFilename/Space InFilenameInvalid.xsd
new file mode 100644
index 0000000..a0c6a60
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/SpaceInFilename/Space InFilenameInvalid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/SpaceInFilename/Space InFilenameValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/SpaceInFilename/Space InFilenameValid.xsd
new file mode 100644
index 0000000..d27f474
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/SpaceInFilename/Space InFilenameValid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/TildeInFilename/ImportTilde~InFilenameInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/TildeInFilename/ImportTilde~InFilenameInvalid.xsd
new file mode 100644
index 0000000..2a09853
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/TildeInFilename/ImportTilde~InFilenameInvalid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="Tilde~InFilenameInvalid.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/TildeInFilename/ImportTilde~InFilenameValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/TildeInFilename/ImportTilde~InFilenameValid.xsd
new file mode 100644
index 0000000..fbe9a6c
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/TildeInFilename/ImportTilde~InFilenameValid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="Tilde~InFilenameValid.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/TildeInFilename/Tilde~InFilenameInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/TildeInFilename/Tilde~InFilenameInvalid.xsd
new file mode 100644
index 0000000..a0c6a60
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/TildeInFilename/Tilde~InFilenameInvalid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/TildeInFilename/Tilde~InFilenameValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/TildeInFilename/Tilde~InFilenameValid.xsd
new file mode 100644
index 0000000..d27f474
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/TildeInFilename/Tilde~InFilenameValid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Tilde~InPath/ImportTildeInPathInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Tilde~InPath/ImportTildeInPathInvalid.xsd
new file mode 100644
index 0000000..6963d4b
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Tilde~InPath/ImportTildeInPathInvalid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="TildeInPathInvalid.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Tilde~InPath/ImportTildeInPathValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Tilde~InPath/ImportTildeInPathValid.xsd
new file mode 100644
index 0000000..1c81133
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Tilde~InPath/ImportTildeInPathValid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="TildeInPathValid.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Tilde~InPath/TildeInPathInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Tilde~InPath/TildeInPathInvalid.xsd
new file mode 100644
index 0000000..a0c6a60
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Tilde~InPath/TildeInPathInvalid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Tilde~InPath/TildeInPathValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Tilde~InPath/TildeInPathValid.xsd
new file mode 100644
index 0000000..d27f474
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Tilde~InPath/TildeInPathValid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/UnderscoreInFilename/ImportUnderscore_InFilenameInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/UnderscoreInFilename/ImportUnderscore_InFilenameInvalid.xsd
new file mode 100644
index 0000000..0bda16e
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/UnderscoreInFilename/ImportUnderscore_InFilenameInvalid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="Underscore_InFilenameInvalid.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/UnderscoreInFilename/ImportUnderscore_InFilenameValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/UnderscoreInFilename/ImportUnderscore_InFilenameValid.xsd
new file mode 100644
index 0000000..cf216fc
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/UnderscoreInFilename/ImportUnderscore_InFilenameValid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="Underscore_InFilenameValid.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/UnderscoreInFilename/Underscore_InFilenameInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/UnderscoreInFilename/Underscore_InFilenameInvalid.xsd
new file mode 100644
index 0000000..a0c6a60
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/UnderscoreInFilename/Underscore_InFilenameInvalid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/UnderscoreInFilename/Underscore_InFilenameValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/UnderscoreInFilename/Underscore_InFilenameValid.xsd
new file mode 100644
index 0000000..d27f474
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/UnderscoreInFilename/Underscore_InFilenameValid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Underscore_InPath/ImportUnderscoreInPathInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Underscore_InPath/ImportUnderscoreInPathInvalid.xsd
new file mode 100644
index 0000000..c5277a1
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Underscore_InPath/ImportUnderscoreInPathInvalid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="UnderscoreInPathInvalid.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Underscore_InPath/ImportUnderscoreInPathValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Underscore_InPath/ImportUnderscoreInPathValid.xsd
new file mode 100644
index 0000000..fd74266
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Underscore_InPath/ImportUnderscoreInPathValid.xsd
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/import" xmlns:ex="http://www.example.com/import">
+  <import namespace="http://www.example.com" schemaLocation="UnderscoreInPathValid.xsd"/>
+</schema>
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Underscore_InPath/UnderscoreInPathInvalid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Underscore_InPath/UnderscoreInPathInvalid.xsd
new file mode 100644
index 0000000..a0c6a60
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Underscore_InPath/UnderscoreInPathInvalid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+
diff --git a/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Underscore_InPath/UnderscoreInPathValid.xsd b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Underscore_InPath/UnderscoreInPathValid.xsd
new file mode 100644
index 0000000..d27f474
--- /dev/null
+++ b/tests/org.eclipse.wst.xsd.validation.tests/testresources/samples/Paths/Underscore_InPath/UnderscoreInPathValid.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns:ex="http://www.example.com">
+</schema>