blob: 60184180e95a374f3c77fdb0efac5b249be02237 [file] [log] [blame]
/*
* SpreadDotTest.groovy
*
* @author Pilho Kim
*/
/**
* Test for the spread dot operator "*.".
*
* For an example,
* list*.property
* means
* list.collect { it?.property }
*/
public class SpreadDotTest extends GroovyTestCase {
public void testSpreadDot() {
def m1 = ["a":1, "b":2]
def m2 = ["a":11, "b":22]
def m3 = ["a":111, "b":222]
def x = [m1,m2,m3]
println x*.a
println x*."a"
assert x == [m1, m2, m3]
def m4 = null
x << m4
println x*.a
println x*."a"
assert x == [m1, m2, m3, null]
def d = new SpreadDotDemo()
x << d
println x*."a"
assert x == [m1, m2, m3, null, d]
def y = new SpreadDotDemo2()
println y."a"
println y.a
x << y
println x*."a"
assert x == [m1, m2, m3, null, d, y]
}
public void testSpreadDot2() {
def a = new SpreadDotDemo()
def b = new SpreadDotDemo2()
def x = [a, b]
println ([a,b]*.fnB("1"))
assert [a,b]*.fnB("1") == [a.fnB("1"), b.fnB("1")]
println ([a,b]*.fnB())
assert [a,b]*.fnB() == [a.fnB(), b.fnB()]
}
}
class SpreadDotDemo {
public java.util.Date getA() {
return new Date()
}
public String fnB() {
return "bb"
}
public String fnB(String m) {
return "BB$m"
}
}
class SpreadDotDemo2 {
public String getAttribute(String key) {
return "Attribute $key"
}
public String get(String key) {
return getAttribute("Get $key")
}
public String fnB() {
return "cc"
}
public String fnB(String m) {
return "CC$m"
}
}