blob: dc2ccfa53264fa2d94423758dbc40e9b3e109c1d [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 groovy.grape
import groovy.test.GroovyTestCase
/**
* Created by IntelliJ IDEA.
* User: Danno
* Date: Jan 20, 2008
* Time: 5:14:11 PM
*/
class GrapeClassLoaderTest extends GroovyTestCase {
public GrapeClassLoaderTest() {
// insure files are installed locally
Grape.resolve([autoDownload:true, classLoader:new GroovyClassLoader()],
[groupId:'com.jidesoft', artifactId:'jide-oss', version:'[2.2.1,2.3)'],
[groupId:'org.testng', artifactId:'testng', version:'5.8', classifier:'jdk15'])
}
public void testGrapes() {
GroovyClassLoader loader = new GroovyClassLoader()
Class testClass = loader.parseClass("""
import com.jidesoft.swing.JideSplitButton
@Grapes([@Grab(group = 'com.jidesoft', module = 'jide-oss', version = '[2.2.1,2.3)')])
public class TestConstructorAnnotation {
String field
public TestConstructorAnnotation() {
field = JideSplitButton.class.name
}
}""")
assert testClass.newInstance().field == 'com.jidesoft.swing.JideSplitButton'
}
public void testConstructorAnnotation() {
GroovyClassLoader loader = new GroovyClassLoader()
Class testClass = loader.parseClass("""
import com.jidesoft.swing.JideSplitButton
public class TestConstructorAnnotation {
String field
@Grab(group = 'com.jidesoft', module = 'jide-oss', version = '[2.2.1,2.3)')
public TestConstructorAnnotation() {
field = JideSplitButton.class.name
}
}""")
assert testClass.newInstance().field == 'com.jidesoft.swing.JideSplitButton'
}
public void testClassFieldAnnotation() {
GroovyClassLoader loader = new GroovyClassLoader()
Class testClass = loader.parseClass("""
import com.jidesoft.swing.JideSplitButton
public class TestClassFieldAnnotation {
@Grab(group = 'com.jidesoft', module = 'jide-oss', version = '[2.2.1,2.3)')
private String field
public TestClassFieldAnnotation() {
field = JideSplitButton.class.name
}
public String testMethod() {
return field
}
}""")
assert testClass.newInstance().testMethod() == 'com.jidesoft.swing.JideSplitButton'
}
public void testClassPropertyAnnotation() {
GroovyClassLoader loader = new GroovyClassLoader()
Class testClass = loader.parseClass("""
import com.jidesoft.swing.JideSplitButton
public class TestClassPropertyAnnotation {
@Grab(group = 'com.jidesoft', module = 'jide-oss', version = '[2.2.1,2.3)')
String field
public TestClassPropertyAnnotation() {
field = JideSplitButton.class.name
}
public String testMethod() {
return field
}
}""")
assert testClass.newInstance().testMethod() == 'com.jidesoft.swing.JideSplitButton'
}
// annotations are discarded on local vars currently
// public void testClassLocalVariableAnnotation() {
// GroovyClassLoader loader = new GroovyClassLoader()
// Class testClass = loader.parseClass("""
//import com.jidesoft.swing.JideSplitButton
//
// public class TestClassLocalVariableAnnotation {
//
// public String testMethod() {
// @Grab(group = 'com.jidesoft', module = 'jide-oss', version = '[2.2.1,2.3)')
// String field = JideSplitButton.class.name
// return field
// }
//}""")
// assert testClass.newInstance().testMethod() == 'com.jidesoft.swing.JideSplitButton'
// }
//
// annotations are discarded on local vars currently
// public void testScriptLocalVariableAnnotation() {
// GroovyClassLoader loader = new GroovyClassLoader()
// Class testClass = loader.parseClass("""
//import com.jidesoft.swing.JideSplitButton
//
//@Grab(group = 'com.jidesoft', module = 'jide-oss', version = '[2.2.1,2.3)')
//String field = JideSplitButton.class.name
//
//
//String testMethod() {
// return field
//}""")
// assert testClass.newInstance().testMethod() == 'com.jidesoft.swing.JideSplitButton'
// }
public void testClassStaticMethodAnnotation() {
GroovyClassLoader loader = new GroovyClassLoader()
Class testClass = loader.parseClass("""
import com.jidesoft.swing.JideSplitButton
public class TestClassStaticMethodAnnotation {
@groovy.lang.Grab(group = 'com.jidesoft', module = 'jide-oss', version = '[2.2.1,2.3)')
public static String testMethod () {
return JideSplitButton.class.name
}
}""")
assert testClass.testMethod() == 'com.jidesoft.swing.JideSplitButton'
}
public void testClassMethodAnnotation() {
GroovyClassLoader loader = new GroovyClassLoader()
Class testClass = loader.parseClass("""
import com.jidesoft.swing.JideSplitButton
public class TestClassMethodAnnotation {
@groovy.lang.Grab(group = 'com.jidesoft', module = 'jide-oss', version = '[2.2.1,2.3)')
public String testMethod () {
return JideSplitButton.class.name
}
}""")
assert testClass.newInstance().testMethod() == 'com.jidesoft.swing.JideSplitButton'
}
public void testScriptStaticMethodAnnotation() {
GroovyClassLoader loader = new GroovyClassLoader()
Class testClass = loader.parseClass("""
import com.jidesoft.swing.JideSplitButton
@groovy.lang.Grab(group = 'com.jidesoft', module = 'jide-oss', version = '[2.2.1,2.3)')
public static String testMethod () {
return JideSplitButton.class.name
}""")
assert testClass.testMethod() == 'com.jidesoft.swing.JideSplitButton'
}
public void testScriptMethodAnnotation() {
GroovyClassLoader loader = new GroovyClassLoader()
Class testClass = loader.parseClass("""
import com.jidesoft.swing.JideSplitButton
@groovy.lang.Grab(group = 'com.jidesoft', module = 'jide-oss', version = '[2.2.1,2.3)')
public String testMethod () {
return JideSplitButton.class.name
}""")
assert testClass.newInstance().testMethod() == 'com.jidesoft.swing.JideSplitButton'
}
public void testClassParameterAnnotation() {
GroovyClassLoader loader = new GroovyClassLoader()
Class testClass = loader.parseClass("""
import com.jidesoft.swing.JideSplitButton
public class TestClassStaticMethodAnnotation {
public String testMethod (
@groovy.lang.Grab(group = 'com.jidesoft', module = 'jide-oss', version = '[2.2.1,2.3)')
String bogus
) {
return JideSplitButton.class.name
}
}""")
assert testClass.newInstance().testMethod('x') == 'com.jidesoft.swing.JideSplitButton'
}
public void testScriptParameterAnnotation() {
GroovyClassLoader loader = new GroovyClassLoader()
Class testClass = loader.parseClass("""
import com.jidesoft.swing.JideSplitButton
public String testMethod (
@groovy.lang.Grab(group = 'com.jidesoft', module = 'jide-oss', version = '[2.2.1,2.3)')
String bogus
) {
println "Foo"
return JideSplitButton.class.name
}""")
assert testClass.newInstance().testMethod('x') == 'com.jidesoft.swing.JideSplitButton'
}
public void testTypeAnnotation() {
GroovyClassLoader loader = new GroovyClassLoader()
Class testClass = loader.parseClass("""
import com.jidesoft.swing.JideSplitButton
@Grab(group = 'com.jidesoft', module = 'jide-oss', version = '[2.2.1,2.3)')
public class TestTypeAnnotation {
public static String testMethod () {
return JideSplitButton.class.name
}
}""")
assert testClass.testMethod() == 'com.jidesoft.swing.JideSplitButton'
}
public void testFQNAnnotation() {
GroovyClassLoader loader = new GroovyClassLoader()
Class testClass = loader.parseClass("""
import com.jidesoft.swing.JideSplitButton
@groovy.lang.Grab(group = 'com.jidesoft', module = 'jide-oss', version = '[2.2.1,2.3)')
public class TestFQNAnnotation {
public static String testMethod () {
return JideSplitButton.class.name
}
}""")
assert testClass.testMethod() == 'com.jidesoft.swing.JideSplitButton'
}
public void testAliasedAnnotation() {
GroovyClassLoader loader = new GroovyClassLoader()
Class testClass = loader.parseClass("""
import com.jidesoft.swing.JideSplitButton
import groovy.lang.Grab as require_gem
@require_gem(group = 'com.jidesoft', module = 'jide-oss', version = '[2.2.1,2.3)')
public class TestAliasedAnnotation {
public static String testMethod () {
return JideSplitButton.class.name
}
}""")
assert testClass.testMethod() == 'com.jidesoft.swing.JideSplitButton'
}
void testClassifier() {
GroovyClassLoader loader = new GroovyClassLoader()
Class testClass = loader.parseClass("""
import org.testng.TestNG
@Grab(group = 'org.testng', module = 'testng', version = '5.8', classifier = 'jdk15')
class TestTypeAnnotation {
static String testMethod() {
TestNG.name
}
}""")
assert testClass.testMethod() == 'org.testng.TestNG'
}
}