mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			268 lines
		
	
	
	
		
			15 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			268 lines
		
	
	
	
		
			15 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
require_relative 'helper'
 | 
						|
 | 
						|
class Reline::KillRing::Test < Reline::TestCase
 | 
						|
  def setup
 | 
						|
    @prompt = '> '
 | 
						|
    @kill_ring = Reline::KillRing.new
 | 
						|
  end
 | 
						|
 | 
						|
  def test_append_one
 | 
						|
    assert_equal(Reline::KillRing::State::FRESH, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('a')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal('a', @kill_ring.yank)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal('a', @kill_ring.yank)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal(['a', 'a'], @kill_ring.yank_pop)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal(['a', 'a'], @kill_ring.yank_pop)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
  end
 | 
						|
 | 
						|
  def test_append_two
 | 
						|
    assert_equal(Reline::KillRing::State::FRESH, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('a')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::FRESH, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('b')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal('b', @kill_ring.yank)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal('b', @kill_ring.yank)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal(['a', 'b'], @kill_ring.yank_pop)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal(['b', 'a'], @kill_ring.yank_pop)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
  end
 | 
						|
 | 
						|
  def test_append_three
 | 
						|
    assert_equal(Reline::KillRing::State::FRESH, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('a')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::FRESH, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('b')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::FRESH, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('c')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal('c', @kill_ring.yank)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal('c', @kill_ring.yank)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal(['b', 'c'], @kill_ring.yank_pop)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal(['a', 'b'], @kill_ring.yank_pop)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal(['c', 'a'], @kill_ring.yank_pop)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
  end
 | 
						|
 | 
						|
  def test_append_three_with_max_two
 | 
						|
    @kill_ring = Reline::KillRing.new(2)
 | 
						|
    assert_equal(Reline::KillRing::State::FRESH, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('a')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::FRESH, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('b')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::FRESH, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('c')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal('c', @kill_ring.yank)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal('c', @kill_ring.yank)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal(['b', 'c'], @kill_ring.yank_pop)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal(['c', 'b'], @kill_ring.yank_pop)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal(['b', 'c'], @kill_ring.yank_pop)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
  end
 | 
						|
 | 
						|
  def test_append_four_with_max_two
 | 
						|
    @kill_ring = Reline::KillRing.new(2)
 | 
						|
    assert_equal(Reline::KillRing::State::FRESH, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('a')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::FRESH, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('b')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::FRESH, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('c')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::FRESH, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('d')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal('d', @kill_ring.yank)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal('d', @kill_ring.yank)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal(['c', 'd'], @kill_ring.yank_pop)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal(['d', 'c'], @kill_ring.yank_pop)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal(['c', 'd'], @kill_ring.yank_pop)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
  end
 | 
						|
 | 
						|
  def test_append_after
 | 
						|
    assert_equal(Reline::KillRing::State::FRESH, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('a')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('b')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal('ab', @kill_ring.yank)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal('ab', @kill_ring.yank)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal(['ab', 'ab'], @kill_ring.yank_pop)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal(['ab', 'ab'], @kill_ring.yank_pop)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
  end
 | 
						|
 | 
						|
  def test_append_before
 | 
						|
    assert_equal(Reline::KillRing::State::FRESH, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('a')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('b', true)
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal('ba', @kill_ring.yank)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal('ba', @kill_ring.yank)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal(['ba', 'ba'], @kill_ring.yank_pop)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal(['ba', 'ba'], @kill_ring.yank_pop)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
  end
 | 
						|
 | 
						|
  def test_append_chain_two
 | 
						|
    assert_equal(Reline::KillRing::State::FRESH, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('a')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('b')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::FRESH, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('c')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('d')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal('cd', @kill_ring.yank)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal('cd', @kill_ring.yank)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal(['ab', 'cd'], @kill_ring.yank_pop)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal(['cd', 'ab'], @kill_ring.yank_pop)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
  end
 | 
						|
 | 
						|
  def test_append_complex_chain
 | 
						|
    assert_equal(Reline::KillRing::State::FRESH, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('c')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('d')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('b', true)
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('e')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('a', true)
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::FRESH, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('A')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.append('B')
 | 
						|
    assert_equal(Reline::KillRing::State::CONTINUED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(Reline::KillRing::State::PROCESSED, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal('AB', @kill_ring.yank)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal('AB', @kill_ring.yank)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal(['abcde', 'AB'], @kill_ring.yank_pop)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
    assert_equal(['AB', 'abcde'], @kill_ring.yank_pop)
 | 
						|
    assert_equal(Reline::KillRing::State::YANK, @kill_ring.instance_variable_get(:@state))
 | 
						|
  end
 | 
						|
 | 
						|
  def test_enumerable
 | 
						|
    @kill_ring.append('a')
 | 
						|
    @kill_ring.process
 | 
						|
    @kill_ring.process
 | 
						|
    @kill_ring.append('b')
 | 
						|
    @kill_ring.process
 | 
						|
    @kill_ring.process
 | 
						|
    @kill_ring.append('c')
 | 
						|
    @kill_ring.process
 | 
						|
    assert_equal(%w{c b a}, @kill_ring.to_a)
 | 
						|
  end
 | 
						|
end
 |