A small assertion compares the expected value with the actual value and turns that comparison into a pass or fail result.

Program

Play the script to choose the expected value and see whether the assertion passes.

expected
assert_equal.sh
Replay: real traced execution (multi-file project)
#!/usr/bin/env bash

expected=12
actual=12
if [[ "$actual" == "$expected" ]]; then
    result="pass"
else
    result="fail"
fi
echo "assert:$result"
#!/usr/bin/env bash

expected=10
actual=12
if [[ "$actual" == "$expected" ]]; then
    result="pass"
else
    result="fail"
fi
echo "assert:$result"
  1. expected ← 12

    3expected=124actual=12
    values this step12expected
  2. actual ← 12

    3expected=124actual=125if [[ "$actual" == "$expected" ]]; then
    values this step12actual
  3. if [[ "$actual" == "$expected" ]]; then

    4actual=125if [[ "$actual" == "$expected" ]]; then6    result="pass"
    values this step12actual12expected
  4. result ← pass

    5if [[ "$actual" == "$expected" ]]; then6    result="pass"7else
    values this steppassresult
  5. echo "assert:$result"

    9fi10echo "assert:$result"
    outputassert:pass
    values this steppassresult
  1. expected ← 10

    3expected=104actual=12
    values this step10expected
  2. actual ← 12

    3expected=104actual=125if [[ "$actual" == "$expected" ]]; then
    values this step12actual
  3. if [[ "$actual" == "$expected" ]]; then

    4actual=125if [[ "$actual" == "$expected" ]]; then6    result="pass"
    values this step12actual10expected
  4. result ← fail

    7else8    result="fail"9fi
    values this stepfailresult
  5. echo "assert:$result"

    9fi10echo "assert:$result"
    outputassert:fail
    values this stepfailresult
assertion An assertion checks whether one observed value matches the expected value.
string comparison `[[ "$a" == "$b" ]]` compares two shell strings.
test result A clear pass/fail word makes later summaries easy to build.