blob: 50f4ce9554b20690d59a2ae814c3942546f117b6 [file]
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package org.jetbrains.plugins.gradle.dsl
import com.intellij.psi.PsiMethod
import com.intellij.testFramework.RunAll
import groovy.transform.CompileDynamic
import groovy.transform.CompileStatic
import org.jetbrains.plugins.gradle.highlighting.GradleHighlightingBaseTest
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrMethodCall
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrReferenceExpression
import org.jetbrains.plugins.groovy.util.ResolveTest
import org.junit.Test
import static org.jetbrains.plugins.gradle.service.resolve.GradleCommonClassNames.GRADLE_API_PROJECT
@CompileStatic
class GradleProjectTest extends GradleHighlightingBaseTest implements ResolveTest {
@Test
void resolveTest() {
importProject('')
new RunAll().append {
'resolve explicit getter'()
} append {
'resolve property'()
} append {
'resolve explicit setter'()
} append {
'resolve explicit setter without argument'()
} append {
'resolve property setter'()
} append {
'resolve implicit setter'()
} append {
'resolve implicit setter without argument'()
} append {
'property vs task'()
} run()
}
void 'resolve explicit getter'() {
doTest('<caret>getGroup()') {
def results = elementUnderCaret(GrMethodCall).multiResolve(false)
assert results.size() == 1
def method = assertInstanceOf(results[0].element, PsiMethod)
assert method.name == 'getGroup'
assert method.containingClass.qualifiedName == GRADLE_API_PROJECT
}
}
void 'resolve property'() {
doTest('<caret>group') {
def results = elementUnderCaret(GrReferenceExpression).multiResolve(false)
assert results.size() == 1
def method = assertInstanceOf(results[0].element, PsiMethod)
assert method.name == 'getGroup'
assert method.containingClass.qualifiedName == GRADLE_API_PROJECT
}
}
void 'resolve explicit setter'() {
doTest('<caret>setGroup(1)') {
def results = elementUnderCaret(GrMethodCall).multiResolve(false)
assert results.size() == 1
def method = assertInstanceOf(results[0].element, PsiMethod)
assert method.name == 'setGroup'
assert method.containingClass.qualifiedName == GRADLE_API_PROJECT
}
}
void 'resolve explicit setter without argument'() {
doTest('<caret>setGroup()') {
def results = elementUnderCaret(GrMethodCall).multiResolve(false)
assert results.size() == 1
def method = assertInstanceOf(results[0].element, PsiMethod)
assert method.name == 'setGroup'
assert method.containingClass.qualifiedName == GRADLE_API_PROJECT
}
}
void 'resolve property setter'() {
doTest('<caret>group = 42') {
def results = elementUnderCaret(GrReferenceExpression).multiResolve(false)
assert results.size() == 1
def method = assertInstanceOf(results[0].element, PsiMethod)
assert method.name == 'setGroup'
assert method.containingClass.qualifiedName == GRADLE_API_PROJECT
}
}
void 'resolve implicit setter'() {
doTest('<caret>group(42)') {
setterMethodTest('group', 'setGroup', GRADLE_API_PROJECT)
}
}
void 'resolve implicit setter without argument'() {
doTest('<caret>group()') {
setterMethodTest('group', 'setGroup', GRADLE_API_PROJECT)
}
}
@CompileDynamic
void 'property vs task'() {
doTest('<caret>dependencies') {
methodTest(resolveTest(PsiMethod), "getDependencies", GRADLE_API_PROJECT)
}
}
}