Testing Basics
Table Tests
Table tests run the same check against a small list of inputs and expected outputs.
table test
A table test stores example cases as data, then loops over them with one shared check.
Table Tests
table_tests.rb
Replay: real traced execution (multi-file project)
def square(number)
number * number
end
case_count = 3
cases = [
[1, 1],
[2, 4],
[3, 9],
[4, 16]
]
selected_cases = cases.first(case_count)
passed_count = 0
selected_cases.each do |input, expected|
actual = square(input)
passed_count += 1 if actual == expected
end
puts "cases=#{selected_cases.length}"
puts "passed=#{passed_count}"
puts "all_passed=#{passed_count == selected_cases.length}"
def square(number)
number * number
end
case_count = 2
cases = [
[1, 1],
[2, 4],
[3, 9],
[4, 16]
]
selected_cases = cases.first(case_count)
passed_count = 0
selected_cases.each do |input, expected|
actual = square(input)
passed_count += 1 if actual == expected
end
puts "cases=#{selected_cases.length}"
puts "passed=#{passed_count}"
puts "all_passed=#{passed_count == selected_cases.length}"
def square(number)
number * number
end
case_count = 4
cases = [
[1, 1],
[2, 4],
[3, 9],
[4, 16]
]
selected_cases = cases.first(case_count)
passed_count = 0
selected_cases.each do |input, expected|
actual = square(input)
passed_count += 1 if actual == expected
end
puts "cases=#{selected_cases.length}"
puts "passed=#{passed_count}"
puts "all_passed=#{passed_count == selected_cases.length}"
case_count ← 3, cases ← [[1, 1], [2, 4], [3, 9], [4, 16]], selected_cases ← [[1, 1], [2, 4], [3, 9]]
5case_count→ 3 = 3 #@case_count=2, 46cases→ [[1, 1], [2, 4], [3, 9], [4, 16]] = [7 [1, 1],8 [2, 4],9 [3, 9],10 [4, 16]11]1213selected_cases→ [[1, 1], [2, 4], [3, 9]] = cases.first(case_count)[[1, 1], [2, 4], [3, 9]]14passed_count→ 0 = 01516selected_cases[[1, 1], [2, 4], [3, 9]].each do |input, expected|17 actual = square(input)18 passed_count += 1 if actual == expected19enddo |input, expected|
pass 1 of 316selected_cases.each do |input1, expected1|17 actual = square(input1)18 passed_count += 1 if actual == expectedAll 3 passes — pass 1 is the card above pass inputexpected1 1 1 2 2 4 3 3 9 def square(number)
pass 1 of 31def square(number1)2 number1 * number3endAll 3 passes — pass 1 is the card above pass number1 1 2 2 3 3 selected_cases.each do |input, expected|
16selected_cases[[1, 1], [2, 4], [3, 9]].each do |input, expected|17 actual = square(input)18 passed_count += 1 if actual == expected19endputs "cases=#{selected_cases.length}"
21puts "cases=#{selected_cases.length3}"22puts "passed=#{passed_count3}"23puts "all_passed=#{passed_count3 == selected_cases.length3}"outputcases=3 passed=3 all_passed=true
case_count ← 2, cases ← [[1, 1], [2, 4], [3, 9], [4, 16]], selected_cases ← [[1, 1], [2, 4]]
5case_count→ 2 = 26cases→ [[1, 1], [2, 4], [3, 9], [4, 16]] = [7 [1, 1],8 [2, 4],9 [3, 9],10 [4, 16]11]1213selected_cases→ [[1, 1], [2, 4]] = cases.first(case_count)[[1, 1], [2, 4]]14passed_count→ 0 = 01516selected_cases[[1, 1], [2, 4]].each do |input, expected|17 actual = square(input)18 passed_count += 1 if actual == expected19enddo |input, expected|
pass 1 of 216selected_cases.each do |input1, expected1|17 actual = square(input1)18 passed_count += 1 if actual == expecteddef square(number)
pass 1 of 21def square(number1)2 number1 * number3enddo |input, expected|
pass 2 of 216selected_cases.each do |input2, expected4|17 actual = square(input2)18 passed_count += 1 if actual == expecteddef square(number)
pass 2 of 21def square(number2)2 number2 * number3endselected_cases.each do |input, expected|
16selected_cases[[1, 1], [2, 4]].each do |input, expected|17 actual = square(input)18 passed_count += 1 if actual == expected19endputs "cases=#{selected_cases.length}"
21puts "cases=#{selected_cases.length2}"22puts "passed=#{passed_count2}"23puts "all_passed=#{passed_count2 == selected_cases.length2}"outputcases=2 passed=2 all_passed=true
case_count ← 4, cases ← [[1, 1], [2, 4], [3, 9], [4, 16]], selected_cases ← [[1, 1], [2, 4], [3, 9], [4, 16]]
5case_count→ 4 = 46cases→ [[1, 1], [2, 4], [3, 9], [4, 16]] = [7 [1, 1],8 [2, 4],9 [3, 9],10 [4, 16]11]1213selected_cases→ [[1, 1], [2, 4], [3, 9], [4, 16]] = cases.first(case_count)[[1, 1], [2, 4], [3, 9], [4, 16]]14passed_count→ 0 = 01516selected_cases[[1, 1], [2, 4], [3, 9], [4, 16]].each do |input, expected|17 actual = square(input)18 passed_count += 1 if actual == expected19enddo |input, expected|
pass 1 of 416selected_cases.each do |input1, expected1|17 actual = square(input1)18 passed_count += 1 if actual == expectedAll 4 passes — pass 1 is the card above pass inputexpected1 1 1 2 2 4 3 3 9 4 4 16 def square(number)
pass 1 of 41def square(number1)2 number1 * number3endAll 4 passes — pass 1 is the card above pass number1 1 2 2 3 3 4 4 selected_cases.each do |input, expected|
16selected_cases[[1, 1], [2, 4], [3, 9], [4, 16]].each do |input, expected|17 actual = square(input)18 passed_count += 1 if actual == expected19endputs "cases=#{selected_cases.length}"
21puts "cases=#{selected_cases.length4}"22puts "passed=#{passed_count4}"23puts "all_passed=#{passed_count4 == selected_cases.length4}"outputcases=4 passed=4 all_passed=true