| /** |
| * Tests the use of new property methods in Groovy: eachProperty(), eachPropertyName(), and |
| * allProperties() |
| * |
| * @author john stump |
| * @version $Revision$ |
| */ |
| class PropertyTest2 extends GroovyTestCase { |
| |
| void testEachPropertyName() { |
| foo = new Foo() |
| |
| // these are the properties that should be there |
| props = ['name', 'count', 'location', 'blah'] |
| foo.eachPropertyName { |prop| |
| //println "looking for ${prop} in ${props}" |
| |
| // we should not see private or protected properties |
| assert prop != "invisible" |
| assert prop != "prot" |
| |
| // remove this one from the list |
| props = props - [prop] |
| } |
| |
| // make sure there are none left over |
| //println "count left in props list is ${props.count()}" |
| assert props.count() == 0 |
| } |
| |
| void testEachProperty() { |
| foo = new Foo() |
| |
| // these are the properties and their values that should be there |
| props = ['name':'James', 'count':1, 'location':'London', 'blah':9] |
| foo.eachProperty { |prop| |
| //println "looking for ${prop.name} in ${props}" |
| |
| // we should not see private or protected properties |
| assert prop.name != "invisible" |
| assert prop.name != "prot" |
| |
| value = props[prop.name] |
| if(value != null) |
| assert prop.value == value |
| |
| // remove this one from the map |
| props.remove(prop.name) |
| } |
| |
| // make sure there are none left over |
| //println "count left in props map is ${props.size()}" |
| assert props.size() == 0 |
| } |
| |
| void testAllProperties() { |
| foo = new Foo() |
| |
| // these are the properties that should be there |
| props = ['name', 'count', 'location', 'blah'] |
| |
| foo.allProperties().each { props -= [it.name] } |
| |
| // there should be none left |
| //println props |
| assert props.size() == 0 |
| } |
| |
| // make sure allProperties() works with expando objects too |
| void testAllPropertiesExpando() { |
| foo = new Expando() |
| |
| foo.name = 'John' |
| foo.location = 'Colorado' |
| foo.count = 23 |
| foo.blah = true |
| |
| // these are the properties that should be there |
| props = ['name', 'count', 'location', 'blah'] |
| foo.allProperties().each { props -= [it.name] } |
| |
| // there should be none left |
| //println props |
| assert props.size() == 0 |
| } |
| } |
| |