Created
September 6, 2014 19:07
-
-
Save markglenfletcher/6a688bad638ee66055c6 to your computer and use it in GitHub Desktop.
Minitesting
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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