def expectedPremiums = [6.19, 6.47, 6.90]
def xmlString = """<root xmlns:b="test">
<b:quote-data>
<b:premium>6.13</b:premium>
</b:quote-data>
<b:quote-data>
<b:premium>6.45</b:premium>
</b:quote-data>
<b:quote-data>
<b:premium>6.91</b:premium>
</b:quote-data>
</root>"""
def xml = new XmlSlurper().parseText(xmlString)
def premiums = xml.'**'.findAll {it.name() == 'premium'}*.toBigDecimal()
println premiums
def tolerance = 0.05
def failurePremiums = [:]
expectedPremiums.eachWithIndex { expected, index ->
if ((expected-tolerance) <= premiums[index] && premiums[index] <= (expected+tolerance)) {
println "${premiums[index]} is in range"
} else {
println "${premiums[index]} is not falling in range, failed"
failurePremiums[expected] = premiums[index]
}
}
assert !failurePremiums
, "Not matched data(expected vs actual) : ${failurePremiums}"
ZGVmIGV4cGVjdGVkUHJlbWl1bXMgPSBbNi4xOSwgNi40NywgNi45MF0KZGVmIHhtbFN0cmluZyA9ICIiIjxyb290IHhtbG5zOmI9InRlc3QiPgo8YjpxdW90ZS1kYXRhPgo8YjpwcmVtaXVtPjYuMTM8L2I6cHJlbWl1bT4KPC9iOnF1b3RlLWRhdGE+CjxiOnF1b3RlLWRhdGE+CjxiOnByZW1pdW0+Ni40NTwvYjpwcmVtaXVtPgo8L2I6cXVvdGUtZGF0YT4KPGI6cXVvdGUtZGF0YT4KPGI6cHJlbWl1bT42LjkxPC9iOnByZW1pdW0+CjwvYjpxdW90ZS1kYXRhPgo8L3Jvb3Q+IiIiCmRlZiB4bWwgPSBuZXcgWG1sU2x1cnBlcigpLnBhcnNlVGV4dCh4bWxTdHJpbmcpCmRlZiBwcmVtaXVtcyA9IHhtbC4nKionLmZpbmRBbGwge2l0Lm5hbWUoKSA9PSAncHJlbWl1bSd9Ki50b0JpZ0RlY2ltYWwoKQpwcmludGxuIHByZW1pdW1zCmRlZiB0b2xlcmFuY2UgPSAwLjA1CmRlZiBmYWlsdXJlUHJlbWl1bXMgPSBbOl0KZXhwZWN0ZWRQcmVtaXVtcy5lYWNoV2l0aEluZGV4IHsgZXhwZWN0ZWQsIGluZGV4IC0+CglpZiAoKGV4cGVjdGVkLXRvbGVyYW5jZSkgPD0gcHJlbWl1bXNbaW5kZXhdICYmIHByZW1pdW1zW2luZGV4XSA8PSAoZXhwZWN0ZWQrdG9sZXJhbmNlKSkgewogICAgIHByaW50bG4gIiR7cHJlbWl1bXNbaW5kZXhdfSBpcyBpbiByYW5nZSIKCX0gZWxzZSB7CgkgIHByaW50bG4gIiR7cHJlbWl1bXNbaW5kZXhdfSBpcyBub3QgZmFsbGluZyBpbiByYW5nZSwgZmFpbGVkIgoJICBmYWlsdXJlUHJlbWl1bXNbZXhwZWN0ZWRdID0gcHJlbWl1bXNbaW5kZXhdCgl9Cn0KYXNzZXJ0ICFmYWlsdXJlUHJlbWl1bXMsICJOb3QgbWF0Y2hlZCBkYXRhKGV4cGVjdGVkIHZzIGFjdHVhbCkgOiAke2ZhaWx1cmVQcmVtaXVtc30iCg==
[6.13, 6.45, 6.91]
6.13 is not falling in range, failed
6.45 is in range
6.91 is in range
Caught: java.lang.AssertionError: Not matched data(expected vs actual) : [6.19:6.13]. Expression: failurePremiums. Values: failurePremiums = [6.19:6.13]
java.lang.AssertionError: Not matched data(expected vs actual) : [6.19:6.13]. Expression: failurePremiums. Values: failurePremiums = [6.19:6.13]
at prog.run(prog.groovy:26)