blob: ff7734b326b8a7d315d6425f5073d10aeec4f7df [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008 xored software, Inc.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* xored software, Inc. - initial API and Implementation (Andrei Sobolev)
*******************************************************************************/
package org.eclipse.dltk.tcl.validators.tests;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import junit.framework.TestCase;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.dltk.core.ISourceModule;
import org.eclipse.dltk.core.tests.model.AbstractModelTests;
import org.eclipse.dltk.tcl.ast.TclCommand;
import org.eclipse.dltk.tcl.internal.validators.ICheckKinds;
import org.eclipse.dltk.tcl.internal.validators.TclCheckBuildParticipant;
import org.eclipse.dltk.tcl.internal.validators.TclValidatorTestsPlugin;
import org.eclipse.dltk.tcl.internal.validators.checks.UndefinedProcCheck;
import org.eclipse.dltk.tcl.parser.ITclParserOptions;
import org.eclipse.dltk.tcl.parser.TclError;
import org.eclipse.dltk.tcl.parser.TclErrorCollector;
import org.eclipse.dltk.tcl.parser.TclParser;
import org.eclipse.dltk.tcl.parser.definitions.DefinitionManager;
import org.eclipse.dltk.tcl.parser.definitions.NamespaceScopeProcessor;
import org.eclipse.dltk.tcl.parser.tests.TestUtils;
public class CheckMethodExistanceTest extends AbstractModelTests {
private static final String CHECK_PROC_EXISTS_NAME = "CheckProcExists";
private IProject project = null;
public CheckMethodExistanceTest() {
super("CheckMethodExistanceTest");
}
public void setUpSuite() throws Exception {
super.setUpSuite();
TclCheckBuildParticipant.TESTING_DO_CHECKS = false;
init();
}
private void init() throws CoreException, IOException {
if (this.project == null) {
this.project = setUpProject(CHECK_PROC_EXISTS_NAME, TclValidatorTestsPlugin.PLUGIN_ID);
}
waitForAutoBuild();
waitUntilIndexesReady();
}
public void tearDownSuite() throws Exception {
super.tearDownSuite();
deleteProject(CHECK_PROC_EXISTS_NAME);
}
public void testMethodExistsCheck001() throws Exception {
ISourceModule module = getSourceModule("/CheckProcExists/src/src1.tcl");
TestCase.assertNotNull(module);
TestCase.assertTrue(module.exists());
UndefinedProcCheck check = new UndefinedProcCheck();
TclParser parser = TestUtils.createParser();
TclErrorCollector errorCollector = new TclErrorCollector();
NamespaceScopeProcessor processor = DefinitionManager.getInstance()
.createProcessor();
parser.setOptionValue(ITclParserOptions.REPORT_UNKNOWN_AS_ERROR, false);
List<TclCommand> commands = parser.parse(module.getSource(),
errorCollector, processor);
TestCase.assertEquals(0, errorCollector.getCount());
check.checkCommands(commands, errorCollector,
new HashMap<String, String>(), module.getScriptProject(), null);
TestCase.assertEquals(1, errorCollector.getCount());
TclError error = errorCollector.getErrors()[0];
TestCase
.assertEquals(error.getCode(), ICheckKinds.CHECK_UNDEFINED_PROC);
}
public void testMethodExistsCheck002() throws Exception {
ISourceModule module = getSourceModule("/CheckProcExists/src/src2.tcl");
TestCase.assertNotNull(module);
TestCase.assertTrue(module.exists());
UndefinedProcCheck check = new UndefinedProcCheck();
TclParser parser = TestUtils.createParser();
TclErrorCollector errorCollector = new TclErrorCollector();
NamespaceScopeProcessor processor = DefinitionManager.getInstance()
.createProcessor();
parser.setOptionValue(ITclParserOptions.REPORT_UNKNOWN_AS_ERROR, false);
List<TclCommand> commands = parser.parse(module.getSource(),
errorCollector, processor);
TestCase.assertEquals(0, errorCollector.getCount());
check.checkCommands(commands, errorCollector,
new HashMap<String, String>(), module.getScriptProject(), null);
TestCase.assertEquals(4, errorCollector.getCount());
TclError[] errors = errorCollector.getErrors();
for (int i = 0; i < errors.length; i++) {
TclError error = errors[i];
TestCase.assertEquals(error.getCode(),
ICheckKinds.CHECK_UNDEFINED_PROC);
}
}
}