📄 propertytest.groovy
字号:
/** * Tests the use of properties in Groovy * * @author <a href="mailto:james@coredevelopers.net">James Strachan</a> * @version $Revision: 1.14 $ */class PropertyTest extends GroovyTestCase { void testNormalPropertyGettersAndSetters() { println("About to create Foo") def foo = new Foo() println("created ${foo}") def value = foo.getMetaClass() println("metaClass ${value}") println(foo.inspect()) println("name ${foo.name}, blah ${foo.blah}") assert foo.name == "James" assert foo.getName() == "James" assert foo.location == "London" assert foo.getLocation() == "London" assert foo.blah == 9 assert foo.getBlah() == 9 foo.name = "Bob" foo.location = "Atlanta" assert foo.name == "Bob" assert foo.getName() == "Bob" assert foo.location == "Atlanta" assert foo.getLocation() == "Atlanta" } void testOverloadedGetter() { def foo = new Foo() println("count ${foo.count}") assert foo.getCount() == 1 assert foo.count == 1 foo.count = 7 assert foo.count == 7 assert foo.getCount() == 7 } void testNoSetterAvailableOnPrivateProperty() { def foo = new Foo() // methods should fail on non-existent method calls shouldFail { foo.blah = 4 } shouldFail { foo.setBlah(4) } } void testCannotSeePrivateProperties() { def foo = new Foo() // def access fails on non-existent def //shouldFail { def x = foo.invisible } //todo: correct handling of access rules // methods should fail on non-existent method calls shouldFail { foo.getQ() } } void testConstructorWithNamedProperties() { def foo = new Foo(name:'Gromit', location:'Moon') assert foo.name == 'Gromit' assert foo.location == 'Moon' println("created bean ${foo.inspect()}") } void testToString() { def foo = new Foo(name:'Gromit', location:'Moon') println foo } void testArrayLengthProperty() { // create two arrays, since all use the same MetaArrayLengthProperty object - // make sure it can work for all types and sizes def i = new Integer[5] def s = new String[10] // put something in it to make sure we're returning the *allocated* length, and // not the *used* length s[0] = "hello" assert i.length == 5 assert s.length == 10 // this def does not mean there is a getLength() method shouldFail { i.getLength() } // verify we can't set this def, it's read-only shouldFail { i.length = 6 } } void testGstringAssignment() { def foo = new Foo() foo.body = "${foo.name}" assert foo.body == "James" } void testFinalProperty() { def shell = new GroovyShell(); def text = """ class A { final foo = 1 } A.class.declaredMethods.each { assert it.name!="setFoo" } assert new A().foo==1 """ shell.evaluate(text); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -