blob: 17f2f43ce3977d2dff4d9910ce1178b6d2f8559a [file] [log] [blame]
package groovy
class SafeNavigationTest extends GroovyTestCase {
void testNullNavigation() {
def x = null
def y = x?.bar
assert y == null
}
void testNormalPropertyNavigation() {
def x = ['a':456, 'foo':['bar':123, 'x':456], 'z':99]
def y = x?.foo?.bar
println("found y ${x?.foo?.bar}")
assert y == 123
}
void testNullPropertyNavigation() {
def x = null
def y = x?.foo?.bar
assert y == null
def Date d = null
def t = d?.time
assert t == null
}
void testNormalMethodCall() {
def x = 1234
def y = x?.toString()
assert y == "1234"
}
void testNullMethodCall() {
def x = null
def y = x?.toString()
assert y == null
}
// ------------------------------------
// GROOVY-5479
private checkDouble(x) {
x?.toString()
}
void testCachedSafeNavigation() {
assert checkDouble(1234)!=null
assert checkDouble(null)==null
}
// ------------------------------------
}