/*
* Copyright 2009-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.eclipse.jdt.core.groovy.tests.search;
import org.junit.Test;
/**
* Tests for synthetic accessor type inferencing.
*/
public final class SyntheticAccessorInferencingTests extends InferencingTestSuite {
@Test
public void testSyntheticAccessors() throws Exception {
String contents =
"// yes underlines and no content assist\n" +
"String getProperty1(param){}\n" +
"void getProperty2(){}\n" +
"boolean isProperty3(param){}\n" +
"String isProperty4(){}\n" +
"void isProperty5(){}\n" +
"void setProperty6(){}\n" +
"void setProperty7(param1, param2){}\n" +
"String setProperty8(param){}\n" +
"\n" +
"// no underlines and yes content assist\n" +
"def setProperty1a(param) {}\n" +
"void setProperty2a(param) {}\n" +
"def getProperty3a() {}\n" +
"def isProperty4a() {}\n" +
"\n" +
"property1\n" +
"property2\n" +
"property3\n" +
"property4\n" +
"property5\n" +
"property6\n" +
"property7\n" +
"property8\n" +
"\n" +
"property1a = 1\n" +
"property2a = 2\n" +
"property3a\n" +
"property4a \n" +
"\n" +
"class Cat {\n" +
" // yes underlines and no content assist\n" +
" static String getPropertyCat1(Search self, param){}\n" +
" static void getPropertyCat2(Search self){}\n" +
" static boolean isPropertyCat3(Search self, param){}\n" +
" static String isPropertyCat4(Search self){}\n" +
" static void isPropertyCat5(Search self){}\n" +
" static void setPropertyCat6(Search self){}\n" +
" static void setPropertyCat7(Search self, param1, param2){}\n" +
" static String setPropertyCat8(Search self, param){}\n" +
" static def isPropertyCat9(Search self) {}\n" +
" def getPropertyCat10(File self) {}\n" +
" \n" +
" // no underlines and yes content assist\n" +
" static def setPropertyCat1a(Search self, param) {}\n" +
" static void setPropertyCat2a(Search self, param) {}\n" +
" static def getPropertyCat3a(Search self) {}\n" +
"}\n" +
"use (Cat) {\n" +
" propertyCat1\n" +
" propertyCat2\n" +
" propertyCat3 \n" +
" propertyCat4\n" +
" propertyCat5\n" +
" propertyCat6\n" +
" propertyCat7\n" +
" propertyCat8\n" +
" propertyCat9\n" +
" \n" +
" propertyCat1a\n" +
" propertyCat2a\n" +
" propertyCat3a\n" +
"}";
shouldBeUnknown(contents, "property1");
shouldBeUnknown(contents, "property2");
shouldBeUnknown(contents, "property3");
shouldBeUnknown(contents, "property4");
shouldBeUnknown(contents, "property5");
shouldBeUnknown(contents, "property6");
shouldBeUnknown(contents, "property7");
shouldBeUnknown(contents, "property8");
shouldBeUnknown(contents, "propertyCat1");
shouldBeUnknown(contents, "propertyCat2");
shouldBeUnknown(contents, "propertyCat3");
shouldBeUnknown(contents, "propertyCat4");
shouldBeUnknown(contents, "propertyCat5");
shouldBeUnknown(contents, "propertyCat6");
shouldBeUnknown(contents, "propertyCat7");
shouldBeUnknown(contents, "propertyCat8");
shouldBeUnknown(contents, "propertyCat9");
shouldBeKnown(contents, "property1a", "Search");
shouldBeKnown(contents, "property2a", "Search");
shouldBeKnown(contents, "property3a", "Search");
shouldBeKnown(contents, "property4a", "Search");
shouldBeKnown(contents, "propertyCat1a", "Cat");
shouldBeKnown(contents, "propertyCat2a", "Cat");
shouldBeKnown(contents, "propertyCat3a", "Cat");
}
private void shouldBeUnknown(String contents, String var) {
int start = contents.indexOf(var);
int end = start + var.length();
assertUnknownConfidence(contents, start, end, "Search", false);
}
private void shouldBeKnown(String contents, String var, String type) {
int start = contents.lastIndexOf(var);
int end = start + var.length();
assertDeclaringType(contents, start, end, type, false);
}
}