Helper functions keep repeated test reporting logic in one place.

test helper A helper function gives repeated checks a clear name and return value.

Helper Functions

multiplier
helper_functions.go
Replay: real traced execution (multi-file project)
package main

import "fmt"

func checkEqual(actual int, expected int) string {
	if actual == expected {
		return "pass"
	}
	return "fail"
}

func main() {
	var multiplier = 3
	actual := multiplier * 5
	expected := 15
	result := checkEqual(actual, expected)

	fmt.Println("multiplier=", multiplier)
	fmt.Println("actual=", actual)
	fmt.Println("expected=", expected)
	fmt.Println("result=", result)
}
package main

import "fmt"

func checkEqual(actual int, expected int) string {
	if actual == expected {
		return "pass"
	}
	return "fail"
}

func main() {
	var multiplier = 2
	actual := multiplier * 5
	expected := 15
	result := checkEqual(actual, expected)

	fmt.Println("multiplier=", multiplier)
	fmt.Println("actual=", actual)
	fmt.Println("expected=", expected)
	fmt.Println("result=", result)
}
package main

import "fmt"

func checkEqual(actual int, expected int) string {
	if actual == expected {
		return "pass"
	}
	return "fail"
}

func main() {
	var multiplier = 4
	actual := multiplier * 5
	expected := 15
	result := checkEqual(actual, expected)

	fmt.Println("multiplier=", multiplier)
	fmt.Println("actual=", actual)
	fmt.Println("expected=", expected)
	fmt.Println("result=", result)
}
  1. multiplier ← 3, actual ← 15, expected ← 15

    12func main() {13  var multiplier→ 3 = 3 //@multiplier=2, 414  actual→ 15 := multiplier3 * 515  expected→ 15 := 1516  result := checkEqual(actual15, expected15)
  2. func checkEqual(actual int, expected int) string

    5func checkEqual(actual15 int, expected15 int) string {6  if actual == expected {
  3. if actual == expected

    5func checkEqual(actual int, expected int) string {6  if actual15 == expected15 {7    return "pass"8  }
  4. result ← "pass"

    15  expected := 1516  result→ "pass" := checkEqual(actual15, expected15)1718  fmt.Println("multiplier=", multiplier3)19  fmt.Println("actual=", actual15)20  fmt.Println("expected=", expected15)21  fmt.Println("result=", result"pass")22}
    outputmultiplier= 3
    actual= 15
    expected= 15
    result= pass
  1. multiplier ← 2, actual ← 10, expected ← 15

    12func main() {13  var multiplier→ 2 = 214  actual→ 10 := multiplier2 * 515  expected→ 15 := 1516  result := checkEqual(actual10, expected15)
  2. func checkEqual(actual int, expected int) string

    5func checkEqual(actual10 int, expected15 int) string {6  if actual == expected {7    return "pass"8  }9  return "fail"10}
  3. result ← "fail"

    15  expected := 1516  result→ "fail" := checkEqual(actual10, expected15)1718  fmt.Println("multiplier=", multiplier2)19  fmt.Println("actual=", actual10)20  fmt.Println("expected=", expected15)21  fmt.Println("result=", result"fail")22}
    outputmultiplier= 2
    actual= 10
    expected= 15
    result= fail
  1. multiplier ← 4, actual ← 20, expected ← 15

    12func main() {13  var multiplier→ 4 = 414  actual→ 20 := multiplier4 * 515  expected→ 15 := 1516  result := checkEqual(actual20, expected15)
  2. func checkEqual(actual int, expected int) string

    5func checkEqual(actual20 int, expected15 int) string {6  if actual == expected {7    return "pass"8  }9  return "fail"10}
  3. result ← "fail"

    15  expected := 1516  result→ "fail" := checkEqual(actual20, expected15)1718  fmt.Println("multiplier=", multiplier4)19  fmt.Println("actual=", actual20)20  fmt.Println("expected=", expected15)21  fmt.Println("result=", result"fail")22}
    outputmultiplier= 4
    actual= 20
    expected= 15
    result= fail