package org.jboss.tools.common.text.ext.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.jboss.tools.common.text.ext.util.StructuredModelWrapper;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
public class StructuredModelWrapperTest {
@BeforeClass
public static void createProject() throws InvocationTargetException, IOException, CoreException, InterruptedException {
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("smtest");
project.create(null);
project.open(null);
IFile xmlFile = project.getFile("test1.xml");
xmlFile.create(
new ByteArrayInputStream(
("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<root/>").getBytes()),
IResource.FORCE, null);
IFile htmlFile = project.getFile("test1.html");
htmlFile.create(
new ByteArrayInputStream(
("<!DOCTYPE html>\n" +
"<html ng-app=\"test\">\n" +
"<body>\n" +
"</body>\n" +
"</html>").getBytes()),
IResource.FORCE, null);
}
@Test
public void testExecuteForHtmlDocument() {
IFile testFile = ResourcesPlugin.getWorkspace().getRoot().getProject("smtest").getFile("test1.html");
StructuredModelWrapper.execute(testFile, xmlDocument -> { assertNotNull(xmlDocument); });
}
@Test
public void testExecuteForXmlDocument() {
IFile testFile = ResourcesPlugin.getWorkspace().getRoot().getProject("smtest").getFile("test1.xml");
StructuredModelWrapper.execute(testFile, xmlDocument -> { assertNotNull(xmlDocument); });
}
@Test
public void testExecuteForXmlDocumentICommand2() {
IFile testFile = ResourcesPlugin.getWorkspace().getRoot().getProject("smtest").getFile("test1.xml");
String result = StructuredModelWrapper.execute(testFile, model -> {
assertNotNull(model);
return model.getStructuredDocument()
.getFirstStructuredDocumentRegion()
.getNext() // <?xml ...>
.getNext() // '\n'
.getText();// <root/>
});
assertNotNull(result);
assertEquals("<root/>",result);
}
@AfterClass
public static void removeProject() {
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("smtest");
try {
project.delete(IResource.FORCE, null);
} catch (CoreException e) {
IStatus status = new Status(IStatus.ERROR,"org.jboss.tools.common.text.ext.test","Could not remove test project");
Platform.getLog(Platform.getBundle("org.jboss.tools.common.text.ext.test")).log(status);
}
}
}