给出如下函数:
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无法表达。也许这是一个强有力的主张,但我无法找到办法。 测试这样一个函数的方法是什么?使用oracle测试?
属性1:仅当x>时才应用乘数脱粒
属性2:一旦应用乘数,则不应用其他乘数
属性3:应用乘数的优先级最高到最低