blob: c8a59545be8898d5db0b9f56eaa8adab1974806e [file] [log] [blame]
package org.eclipse.wst.xml.core.tests.model;
import java.io.File;
import java.io.IOException;
import java.util.List;
import junit.framework.TestCase;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.osgi.service.datalocation.Location;
import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
import org.eclipse.wst.xml.core.internal.modelhandler.XMLModelLoader;
import org.eclipse.wst.xml.core.tests.util.FileUtil;
import org.eclipse.wst.xml.core.tests.util.ProjectUnzipUtility;
/**
*
* @since 1.0
*/
public class TestXMLModelLoader extends TestCase {
private boolean isSetup = false;
private XMLModelLoader fLoader = null;
private final String fProjectName ="DOCUMENT-LOADER";
private final String fZipFileName = "xml-document-loader-tests.zip";
public TestXMLModelLoader() {
super("TestModelLoader");
}
protected void setUp() throws Exception {
super.setUp();
if(!this.isSetup){
fLoader = new XMLModelLoader();
doSetup();
this.isSetup = true;
}
}
private void doSetup() throws Exception {
// root of workspace directory
Location platformLocation = Platform.getInstanceLocation();
ProjectUnzipUtility unzipUtil = new ProjectUnzipUtility();
File zipFile = FileUtil.makeFileFor(ProjectUnzipUtility.PROJECT_ZIPS_FOLDER, fZipFileName, ProjectUnzipUtility.PROJECT_ZIPS_FOLDER);
unzipUtil.unzipAndImport(zipFile, platformLocation.getURL().getFile());
unzipUtil.initJavaProject(fProjectName);
}
public void testCreateEmptyModel() {
IStructuredModel model = fLoader.createModel();
assertNotNull("model is null", model);
}
public void testCreateModelWithDocument() {
IStructuredModel emptyModel = fLoader.createModel();
IStructuredDocument sDoc = emptyModel.getStructuredDocument();
sDoc.set("<?xml version=\"1.0\"?>\n<test>\n<item attr=\"val\" /></test>\n");
IStructuredModel modelFromDoc = fLoader.createModel(sDoc, "/test");
assertNotNull("model from doc is null", modelFromDoc);
}
public void testCreateModelWithModel() {
IStructuredModel emptyModel = fLoader.createModel();
IStructuredDocument sDoc = emptyModel.getStructuredDocument();
sDoc.set("<?xml version=\"1.0\"?>\n<test>\n<item attr=\"val\" /></test>\n");
// TODO: need an existing full model
//IStructuredModel modelFromModel = fLoader.createModel(emptyModel);
//assertNotNull("model from model is null", modelFromModel);
}
public void testGetAdapterFactories() {
List factories = fLoader.getAdapterFactories();
assertTrue("there were no adapter factories for XML", factories.size() > 0);
}
public void testLoad() {
// from a file
IFile f = getFile();
try {
IStructuredModel model = fLoader.createModel();
fLoader.load(f, model);
String text = model.getStructuredDocument().get();
assertTrue("failed to load", text.length() > 0);
}
catch (IOException e) {
e.printStackTrace();
}
catch (CoreException e) {
e.printStackTrace();
}
}
public void testLoadFromStream() {
// need to fix this test
// unless the API is going away...
// IFile f = getFile();
//
// try {
// IStructuredModel model = fLoader.createModel();
// fLoader.load(f.getContents(), model, EncodingRule.FORCE_DEFAULT);
// String text = model.getStructuredDocument().get();
// assertTrue("failed to load", text.length() > 0);
// }
// catch (IOException e) {
// e.printStackTrace();
// }
// catch (CoreException e) {
// e.printStackTrace();
// }
}
private IFile getFile() {
return ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(fProjectName + "/files/simple.xml"));
}
}