blob: 0c513ed1b1bb6296c043999125e7e5446051b35c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 Standards for Technology in Automotive Retail 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:
* David Carver - initial API and implementation
*******************************************************************************/
package org.eclipse.wst.xsl.exslt.ui.internal.contentassist.test;
import java.io.File;
import static org.junit.Assert.*;
import org.eclipse.core.resources.IResource;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.wst.xsl.exslt.ui.internal.contentassist.EXSLTCommonContentAssistProcessor;
import org.eclipse.wst.xsl.exslt.ui.tests.EXSLTUITestsPlugin;
import org.eclipse.wst.xsl.ui.tests.AbstractSourceViewerTest;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class EXSLTCommonContentAssistTest extends AbstractSourceViewerTest {
@Override
@Before
public void setUp() throws Exception {
if (!fTestProjectInitialized) {
setupTestProjectFiles(EXSLTUITestsPlugin.PLUGIN_ID);
fTestProject.refreshLocal(IResource.DEPTH_INFINITE, null);
fTestProjectInitialized = true;
}
}
@After
@Override
public void tearDown() {
}
@Test
public void testDocumentElementPropsoalAvailable() throws Exception {
fileName = "commonElements.xsl";
String xslFilePath = projectName + File.separator + fileName;
loadFileForTesting(xslFilePath);
try {
ICompletionProposal[] proposals = getXMLProposals(5, 9);
assertNotNull("Did not find proposals.", proposals);
for (ICompletionProposal proposal : proposals) {
if (proposal.getDisplayString().equals("common:document")) {
return;
}
}
} finally {
model.releaseFromEdit();
}
fail("Did not find EXSLT Commond document element in proposal list.");
}
@Test
public void testNodeSetFunctionExists() throws Exception {
fileName = "commonXpathFunctions.xsl";
String xslFilePath = projectName + File.separator + fileName;
loadFileForTesting(xslFilePath);
try {
ICompletionProposal[] proposals = getProposals(5, 23);
assertNotNull("Did not find proposals.", proposals);
for (ICompletionProposal proposal : proposals) {
if (proposal.getDisplayString().equals("common:node-set( )")) {
return;
}
}
} finally {
model.releaseFromEdit();
}
fail("Did not find EXSLT Common node-set function in test attribute proposal list.");
}
@Test
public void testNodeSetFunctionExistsSelect() throws Exception {
fileName = "commonXpathFunctions.xsl";
String xslFilePath = projectName + File.separator + fileName;
loadFileForTesting(xslFilePath);
try {
ICompletionProposal[] proposals = getProposals(8, 31);
assertNotNull("Did not find proposals.", proposals);
for (ICompletionProposal proposal : proposals) {
if (proposal.getDisplayString().equals("common:node-set( )")) {
return;
}
}
} finally {
model.releaseFromEdit();
}
fail("Did not find EXSLT Common node-set function in select attribute proposal list.");
}
@Test
public void testObjectTypeFunctionExistsSelect() throws Exception {
fileName = "commonXpathFunctions.xsl";
String xslFilePath = projectName + File.separator + fileName;
loadFileForTesting(xslFilePath);
try {
ICompletionProposal[] proposals = getProposals(8, 31);
assertNotNull("Did not find proposals.", proposals);
for (ICompletionProposal proposal : proposals) {
if (proposal.getDisplayString().equals("common:object-type( )")) {
return;
}
}
} finally {
model.releaseFromEdit();
}
fail("Did not find EXSLT Common node-set function in select attribute proposal list.");
}
@Override
protected ICompletionProposal[] getProposals(int lineNumber,
int numberOfCharacters) throws BadLocationException {
int offset = calculateOffset(lineNumber, numberOfCharacters);
return new EXSLTCommonContentAssistProcessor()
.computeCompletionProposals(sourceViewer, offset);
}
}