Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 7800

Show
Ignore:
Timestamp:
10/08/07 06:05:44 (11 months ago)
Author:
nzkoz
Message:

* Add Range#overlaps?(range), Range#include?(range), and Range#step without a block. [brandon] Closes #9746

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/activesupport/CHANGELOG

    r7775 r7800  
    11*SVN* 
     2 
     3* Add Range#overlaps?(range), Range#include?(range), and Range#step without a block. [brandon] 
    24 
    35* Correct BufferedLogger#level? checks.  #9806 [wildchild, Johan Sorensen] 
  • trunk/activesupport/lib/active_support/core_ext/range.rb

    r7719 r7800  
    11require 'active_support/core_ext/range/conversions' 
     2require File.dirname(__FILE__) + '/range/overlaps' 
     3require File.dirname(__FILE__) + '/range/include_range' 
     4require File.dirname(__FILE__) + '/range/blockless_step' 
    25 
    36class Range #:nodoc: 
    47  include ActiveSupport::CoreExtensions::Range::Conversions 
     8  include ActiveSupport::CoreExtensions::Range::Overlaps 
     9  include ActiveSupport::CoreExtensions::Range::IncludeRange 
     10  include ActiveSupport::CoreExtensions::Range::BlocklessStep 
    511end 
  • trunk/activesupport/test/core_ext/range_ext_test.rb

    r4595 r7800  
    1111    assert_equal "BETWEEN '2005-12-10 15:30:00' AND '2005-12-10 17:30:00'", date_range.to_s(:db) 
    1212  end 
     13   
     14  def test_overlaps_last_inclusive 
     15    assert((1..5).overlaps?(5..10)) 
     16  end 
     17 
     18  def test_overlaps_last_exclusive 
     19    assert !(1...5).overlaps?(5..10) 
     20  end 
     21 
     22  def test_overlaps_first_inclusive 
     23    assert((5..10).overlaps?(1..5)) 
     24  end 
     25   
     26  def test_overlaps_first_exclusive 
     27    assert !(5..10).overlaps?(1...5) 
     28  end 
     29   
     30  def test_should_include_identical_inclusive 
     31    assert((1..10).include?(1..10)) 
     32  end 
     33 
     34  def test_should_include_identical_exclusive 
     35    assert((1...10).include?(1...10)) 
     36  end 
     37 
     38  def test_should_include_other_with_exlusive_end 
     39    assert((1..10).include?(1...10)) 
     40  end 
     41 
     42  def test_exclusive_end_should_not_include_identical_with_inclusive_end 
     43    assert !(1...10).include?(1..10) 
     44  end 
     45 
     46  def test_should_not_include_overlapping_first 
     47    assert !(2..8).include?(1..3) 
     48  end 
     49   
     50  def test_should_not_include_overlapping_last 
     51    assert !(2..8).include?(5..9) 
     52  end 
     53   
     54  def test_blockless_step 
     55    assert_equal [1,3,5,7,9], (1..10).step(2) 
     56  end 
     57 
     58  def test_original_step 
     59    array = [] 
     60    (1..10).step(2) {|i| array << i } 
     61    assert_equal [1,3,5,7,9], array 
     62  end 
     63   
    1364end