Вы должны знать, что
firstPriceValue.text().replace(/\D*/, "")
не мутирует firstPriceValue
. Метод text()
возвращает строковое представление, и строки являются неизменяемыми, поэтому вызов replace()
для строки возвращает новую и не изменяет строку, для которой был вызван метод. Чтобы исправить это, вы должны захватить результат из вышеприведенного метода и присвоить его переменной, например:
def price = firstPriceValue.text().replace(/\D*/, "")
Другое дело, что сравнение строк с >
не будет работать так, как вы ожидаете. Взгляните на этот пример из оболочки Groovy:
groovy:000> '9999' > '10000'
===> true
Чтобы избежать таких проблем, вам нужно привести число, представленное в виде String, к числовому значению, BigDecimal
, например:
groovy:000> ('9999' as BigDecimal) > ('10000' as BigDecimal)
===> false
И, наконец, вы можете использовать метод every()
коллекции, чтобы убедиться, что все цены соответствуют определенному предикату. Примерно так:
def price = firstPriceValue.text().replace(/\D*/, "") as BigDecimal
assert allPrices.every {
def currentPrice = it.text().replace(/\D*/, "") as BigDecimal
return currentPrice > price
}
allPrices.every()
вернет true
, если все цены соответствуют данному предикату, и false
в противном случае.