summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/yarp/dispatcher_test.rb40
1 files changed, 40 insertions, 0 deletions
diff --git a/test/yarp/dispatcher_test.rb b/test/yarp/dispatcher_test.rb
new file mode 100644
index 0000000000..52be2ba32f
--- /dev/null
+++ b/test/yarp/dispatcher_test.rb
@@ -0,0 +1,40 @@
+# frozen_string_literal: true
+
+require_relative "test_helper"
+
+module YARP
+ class DispatcherTest < TestCase
+ def setup
+ @listener = Class.new do
+ attr_reader :events_received
+
+ def initialize
+ @events_received = []
+ end
+
+ def call_node_enter(node)
+ @events_received << :call_node_enter
+ end
+
+ def call_node_leave(node)
+ @events_received << :call_node_leave
+ end
+ end.new
+ end
+
+ def test_dispatching_events
+ dispatcher = Dispatcher.new
+ dispatcher.register(@listener, :call_node_enter, :call_node_leave)
+
+ root = YARP.parse(<<~RUBY).value
+ def foo
+ something(1, 2, 3)
+ end
+ RUBY
+
+ dispatcher.dispatch(root)
+
+ assert_equal([:call_node_enter, :call_node_leave], @listener.events_received)
+ end
+ end
+end