summaryrefslogtreecommitdiff
path: root/test/reline/kill_ring_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/reline/kill_ring_test.rb')
-rw-r--r--test/reline/kill_ring_test.rb256
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