我可以在这里测试哪些属性?

时间:2016-03-17 15:37:51

标签: scala scalacheck

给出如下函数:

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:应用乘数的优先级最高到最低

0 个答案:

没有答案