diff options
Diffstat (limited to 'test/reline/kill_ring_test.rb')
-rw-r--r-- | test/reline/kill_ring_test.rb | 256 |
1 files changed, 256 insertions, 0 deletions
diff --git a/test/reline/kill_ring_test.rb b/test/reline/kill_ring_test.rb new file mode 100644 index 0000000000..8bebfe2177 --- /dev/null +++ b/test/reline/kill_ring_test.rb @@ -0,0 +1,256 @@ +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 +end |