Testing Basics
Edge Cases
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
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}"
raw_name ← Ada
6raw_name→ Ada = " Ada " #@raw_name="", " Ruby "7normalized = normalize_name(raw_name Ada )8expected_blank = raw_name.strip.empty?trimmed ← Ada
1def normalize_name(name Ada )2 trimmed→ Ada = name.stripAda3 trimmed.empty?false ? "Anonymous" : trimmedAda4endnormalized ← 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
raw_name ← (empty)
6raw_name→ (empty) = ""7normalized = normalize_name(raw_name(empty))8expected_blank = raw_name.strip.empty?trimmed ← (empty)
1def normalize_name(name(empty))2 trimmed→ (empty) = name.strip(empty)3 trimmed.empty?true ? "Anonymous" : trimmed(empty)4endnormalized ← 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
raw_name ← Ruby
6raw_name→ Ruby = " Ruby "7normalized = normalize_name(raw_name Ruby )8expected_blank = raw_name.strip.empty?trimmed ← Ruby
1def normalize_name(name Ruby )2 trimmed→ Ruby = name.stripRuby3 trimmed.empty?false ? "Anonymous" : trimmedRuby4endnormalized ← 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