Edge-case tests cover inputs near boundaries, such as blank strings or extra spaces.

edge case An edge case checks behavior at a boundary that ordinary examples might miss.

Edge Cases

raw_name
edge_cases.rb
Replay: real traced execution (multi-file project)
def normalize_name(name)
  trimmed = name.strip
  trimmed.empty? ? "Anonymous" : trimmed
end

raw_name = "  Ada  "
normalized = normalize_name(raw_name)
expected_blank = raw_name.strip.empty?
uses_fallback = normalized == "Anonymous"

puts "raw=#{raw_name}"
puts "normalized=#{normalized}"
puts "blank_input=#{expected_blank}"
puts "fallback=#{uses_fallback}"
def normalize_name(name)
  trimmed = name.strip
  trimmed.empty? ? "Anonymous" : trimmed
end

raw_name = ""
normalized = normalize_name(raw_name)
expected_blank = raw_name.strip.empty?
uses_fallback = normalized == "Anonymous"

puts "raw=#{raw_name}"
puts "normalized=#{normalized}"
puts "blank_input=#{expected_blank}"
puts "fallback=#{uses_fallback}"
def normalize_name(name)
  trimmed = name.strip
  trimmed.empty? ? "Anonymous" : trimmed
end

raw_name = "  Ruby  "
normalized = normalize_name(raw_name)
expected_blank = raw_name.strip.empty?
uses_fallback = normalized == "Anonymous"

puts "raw=#{raw_name}"
puts "normalized=#{normalized}"
puts "blank_input=#{expected_blank}"
puts "fallback=#{uses_fallback}"
  1. raw_name ← Ada

    6raw_name→   Ada   = "  Ada  "  #@raw_name="", "  Ruby  "7normalized = normalize_name(raw_name  Ada  )8expected_blank = raw_name.strip.empty?
  2. trimmed ← Ada

    1def normalize_name(name  Ada  )2  trimmed→ Ada = name.stripAda3  trimmed.empty?false ? "Anonymous" : trimmedAda4end
  3. normalized ← Ada, expected_blank ← false, uses_fallback ← false

    6raw_name = "  Ada  "  #@raw_name="", "  Ruby  "7normalized→ Ada = normalize_name(raw_name  Ada  )8expected_blank→ false = raw_name.strip.empty?false9uses_fallback→ false = normalizedAda == "Anonymous"1011puts "raw=#{raw_name  Ada  }"12puts "normalized=#{normalizedAda}"13puts "blank_input=#{expected_blankfalse}"14puts "fallback=#{uses_fallbackfalse}"
    outputraw=  Ada
    normalized=Ada
    blank_input=false
    fallback=false
  1. raw_name ← (empty)

    6raw_name→ (empty) = ""7normalized = normalize_name(raw_name(empty))8expected_blank = raw_name.strip.empty?
  2. trimmed ← (empty)

    1def normalize_name(name(empty))2  trimmed→ (empty) = name.strip(empty)3  trimmed.empty?true ? "Anonymous" : trimmed(empty)4end
  3. normalized ← Anonymous, expected_blank ← true, uses_fallback ← true

    6raw_name = ""7normalized→ Anonymous = normalize_name(raw_name(empty))8expected_blank→ true = raw_name.strip.empty?true9uses_fallback→ true = normalizedAnonymous == "Anonymous"1011puts "raw=#{raw_name(empty)}"12puts "normalized=#{normalizedAnonymous}"13puts "blank_input=#{expected_blanktrue}"14puts "fallback=#{uses_fallbacktrue}"
    outputraw=
    normalized=Anonymous
    blank_input=true
    fallback=true
  1. raw_name ← Ruby

    6raw_name→   Ruby   = "  Ruby  "7normalized = normalize_name(raw_name  Ruby  )8expected_blank = raw_name.strip.empty?
  2. trimmed ← Ruby

    1def normalize_name(name  Ruby  )2  trimmed→ Ruby = name.stripRuby3  trimmed.empty?false ? "Anonymous" : trimmedRuby4end
  3. normalized ← Ruby, expected_blank ← false, uses_fallback ← false

    6raw_name = "  Ruby  "7normalized→ Ruby = normalize_name(raw_name  Ruby  )8expected_blank→ false = raw_name.strip.empty?false9uses_fallback→ false = normalizedRuby == "Anonymous"1011puts "raw=#{raw_name  Ruby  }"12puts "normalized=#{normalizedRuby}"13puts "blank_input=#{expected_blankfalse}"14puts "fallback=#{uses_fallbackfalse}"
    outputraw=  Ruby
    normalized=Ruby
    blank_input=false
    fallback=false