Какие свойства я могу проверить здесь?
Учитывая функцию как:
def f(x: BigDecimal, high: BigDecimal, highest: BigDecimal, thresh: BigDecimal): BigDecimal = {
val lowMultiplier = BigDecimal(0.2)
val highMultiplier = BigDecimal(0.4)
val highestMultiplier = BigDecimal(0.45)
if (x > thresh)
if (highest == 0)
if (high == 0)
(x - thresh) * lowMultiplier
else (x - thresh) * highMultiplier
else (x - thresh) * highestMultiplier
else BigDecimal(0)
}
Я думал, что следующие свойства имеют смысл для этой функции, но проблема в том, что свойства 2 и 3 невозможно выразить. Может быть, это серьезное требование, но я не могу найти способ сделать это. Каков подход к проверке функции, заданной как таковой? Тест с помощью оракула?
свойство 1: множитель применяется только если x > thresh
свойство 2: после применения множителя другой множитель не применяется
свойство 3: приоритет для применения мультипликаторов от высшего к низшему