Какие свойства я могу проверить здесь?

Учитывая функцию как:

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: приоритет для применения мультипликаторов от высшего к низшему

0 ответов

Другие вопросы по тегам