Check a pure function against a known answer.

test-function A pure function always returns the same result for the same input, so a test calls it and compares the result with a known expected value.

Testing a Function

input
TestFunction.scala
Replay: real traced execution (multi-file project)
object Main {
  def square(n: Int): Int = {
    n * n
  }

  def main(args: Array[String]): Unit = {
    val input = 3
    val result = square(input)
    val expected = 9
    val status = if (result == expected) "pass" else "fail"

    println("result=" + result)
    println("status=" + status)
  }
}
object Main {
  def square(n: Int): Int = {
    n * n
  }

  def main(args: Array[String]): Unit = {
    val input = 4
    val result = square(input)
    val expected = 9
    val status = if (result == expected) "pass" else "fail"

    println("result=" + result)
    println("status=" + status)
  }
}
object Main {
  def square(n: Int): Int = {
    n * n
  }

  def main(args: Array[String]): Unit = {
    val input = 5
    val result = square(input)
    val expected = 9
    val status = if (result == expected) "pass" else "fail"

    println("result=" + result)
    println("status=" + status)
  }
}
  1. input ← 3

    6def main(args: Array[String]): Unit = {7  val input→ 3 = 3 //@input=4, 58  val result = square(input3)9  val expected = 910  val status = if (result == expected) "pass" else "fail"
  2. def square(n: Int): Int =

    1object Main {2  def square(n3: Int): Int = {3    n3 * n4  }
  3. result ← 9, expected ← 9, status ← pass

    7    val input = 3 //@input=4, 58    val result→ 9 = square(input3)9    val expected→ 9 = 910    val status→ pass = if (result9 == expected9) "pass" else "fail"1112    println("result=" + result9)13    println("status=" + statuspass)14  }15}
    outputresult=9
    status=pass
  1. input ← 4

    6def main(args: Array[String]): Unit = {7  val input→ 4 = 48  val result = square(input4)9  val expected = 910  val status = if (result == expected) "pass" else "fail"
  2. def square(n: Int): Int =

    1object Main {2  def square(n4: Int): Int = {3    n4 * n4  }
  3. result ← 16, expected ← 9, status ← fail

    7    val input = 48    val result→ 16 = square(input4)9    val expected→ 9 = 910    val status→ fail = if (result16 == expected9) "pass" else "fail"1112    println("result=" + result16)13    println("status=" + statusfail)14  }15}
    outputresult=16
    status=fail
  1. input ← 5

    6def main(args: Array[String]): Unit = {7  val input→ 5 = 58  val result = square(input5)9  val expected = 910  val status = if (result == expected) "pass" else "fail"
  2. def square(n: Int): Int =

    1object Main {2  def square(n5: Int): Int = {3    n5 * n4  }
  3. result ← 25, expected ← 9, status ← fail

    7    val input = 58    val result→ 25 = square(input5)9    val expected→ 9 = 910    val status→ fail = if (result25 == expected9) "pass" else "fail"1112    println("result=" + result25)13    println("status=" + statusfail)14  }15}
    outputresult=25
    status=fail