Skip to content

Instantly share code, notes, and snippets.

@markglenfletcher
Created September 6, 2014 19:07
Show Gist options
  • Save markglenfletcher/6a688bad638ee66055c6 to your computer and use it in GitHub Desktop.
Save markglenfletcher/6a688bad638ee66055c6 to your computer and use it in GitHub Desktop.
Minitesting
def reverse_str(str)
reversed = ''
i = str.length - 1
until i == -1 do
reversed << str[i]
i -= 1
end
reversed
end
def reverse_str2(str)
str.reverse
end
require 'minitest/autorun'
require 'minitest/benchmark'
require_relative 'reverse_str'
module SharedAsserts
def assert_string_reverse(input,expected)
assert_equal expected, reverse_str(input)
end
end
class TestReverseStr < Minitest::Test
include SharedAsserts
def test_ab
assert_string_reverse 'ab','ba'
end
def test_bat
assert_string_reverse 'tab', 'bat'
end
def test_racercar
assert_string_reverse 'racercar', 'racrecar'
end
end
class TestReverseStr2 < Minitest::Test
include SharedAsserts
def test_ab
assert_string_reverse 'ab','ba'
end
def test_bat
assert_string_reverse 'tab', 'bat'
end
def test_racercar
assert_string_reverse 'racercar', 'racrecar'
end
end
class TestReverseStrBenchmark < Minitest::Benchmark
bench_range { bench_exp 1, 10_000 }
def bench_reverse_str
assert_performance_linear do |n|
n.times { reverse_str string_for_bench }
end
end
def bench_reverse_str2
assert_performance_linear do |n|
n.times { reverse_str2 string_for_bench }
end
end
private
def string_for_bench
[*'A'..'Z'].sample(10).join
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment