Skip to content

Instantly share code, notes, and snippets.

@sentientmonkey
Created July 15, 2015 06:33
Show Gist options
  • Select an option

  • Save sentientmonkey/7b85af768714205ff015 to your computer and use it in GitHub Desktop.

Select an option

Save sentientmonkey/7b85af768714205ff015 to your computer and use it in GitHub Desktop.
require 'minitest/autorun'
module ExclusiveRange
refine Range do
def rinclude? value
self.begin < value && value <= self.end
end
end
end
using ExclusiveRange
def exclusive_between? min, max, value
(min..max).rinclude? value
end
class TestExclusiveBetween < Minitest::Test
def assert_between min, max, value
is_between = exclusive_between? min, max, value
assert is_between, "expected #{value} to be > #{min} and <= #{max}"
end
def refute_between min, max, value
is_between = exclusive_between? min, max, value
refute is_between, "expected #{value} to not be > #{min} and <= #{max}"
end
def test_number_between_min_and_max
assert_between 0.0, 1.0, 0.4
end
def test_maximum_is_included
assert_between 0.0, 1.0, 1.0
end
def test_just_a_little_above_minimum_is_included
assert_between 0.0, 1.0, Float::EPSILON
end
def test_minimum_is_excluded
refute_between 0.0, 1.0, 0.0
end
def test_above_max_is_excluded
refute_between 0.0, 1.0, 2.0
end
def test_just_a_little_above_maximum_is_excluded
refute_between 0.0, 1.0, 1.0+Float::EPSILON
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment