blob: 79468e6230ca2201704e155354ebce79228fc867 [file] [log] [blame]
/**
* Tests the behaviour of the runtime evaluating methods of Groovy's MetaClass system
* @author Graeme Rocher
* @since 1.1
*
* Created: Sep 10, 2007
* Time: 8:17:29 AM
*
*/
package groovy.lang
class GetMethodsTest extends GroovyTestCase {
void testGetMethods() {
GMTest2.metaClass.doStuff = {-> "foo" }
GMTest2.metaClass.getFoo = {-> "foo" }
GMTest2.metaClass.bar = "bar"
GMTest2.metaClass.'static'.doMoreStuff = {-> "more" }
def t = new GMTest2()
assert t.metaClass.methods.find { it.name == 'one' }
assert t.metaClass.methods.find { it.name == 'three' }
assert t.metaClass.methods.find { it.name == 'foo' }
assert t.metaClass.methods.find { it.name == 'getSeven' }
assert t.metaClass.methods.find { it.name == 'getEight' }
assert t.metaClass.methods.find { it.name == 'bar' }
assert t.metaClass.methods.find { it.name == 'toString' }
assert t.metaClass.methods.find { it.name == 'getEight' }
assert t.metaClass.methods.find { it.name == 'stuff' }
assert t.metaClass.methods.find { it.name == 'doStuff' }
assert t.metaClass.methods.find { it.name == 'getFoo' }
assert t.metaClass.methods.find { it.name == 'getBar' }
assert t.metaClass.methods.find { it.name == 'setBar' }
assert t.metaClass.methods.find { it.name == 'doMoreStuff' }
}
void testGetProperties() {
GMTest2.metaClass.getFoo = {-> "foo" }
GMTest2.metaClass.bar = "bar"
def t = new GMTest2()
assert t.metaClass.properties.find { it.name == 'five' }
assert t.metaClass.properties.find { it.name == 'six' }
assert t.metaClass.properties.find { it.name == 'seven' }
assert t.metaClass.properties.find { it.name == 'eight' }
assert t.metaClass.properties.find { it.name == 'foo' }
assert t.metaClass.properties.find { it.name == 'bar' }
}
}
class GMTest1 {
String five
def two = { "three" }
def one() { "two"}
def one(String one) { "two: $one" }
def three(String one) { "four" }
def three(Integer one) { "four" }
def foo(String name) {
"bar"
}
String getSeven() { "seven" }
}
class GMTest2 extends GMTest1 {
String six
def bar(String name) { "foo" }
static stuff() { "goodie" }
String getEight() { "eight" }
}