aboutsummaryrefslogtreecommitdiffstats
path: root/test/core
diff options
context:
space:
mode:
authorToshiaki Asai <toshi.alternative@gmail.com>2015-08-26 14:27:43 +0900
committerToshiaki Asai <toshi.alternative@gmail.com>2015-08-26 23:06:46 +0900
commit5551f7360398e46525e9d54553e441a6a713fb6d (patch)
treef8f7a331e4ec648cdb39c7a61baf182878565031 /test/core
parent9dcab42a88652c0969d4fcb8fb8c3f028a6683ea (diff)
downloadmikutter-5551f7360398e46525e9d54553e441a6a713fb6d.tar.gz
pluggaloidを使う
Diffstat (limited to 'test/core')
-rw-r--r--test/core/test_event.rb132
-rw-r--r--test/core/test_event_filter.rb65
-rw-r--r--test/core/test_event_listener.rb60
-rw-r--r--test/core/test_plugin.rb117
4 files changed, 0 insertions, 374 deletions
diff --git a/test/core/test_event.rb b/test/core/test_event.rb
deleted file mode 100644
index 81331dcb..00000000
--- a/test/core/test_event.rb
+++ /dev/null
@@ -1,132 +0,0 @@
-# -*- coding: utf-8 -*-
-
-require File.expand_path(File.dirname(__FILE__) + '/../helper')
-
-Dir.chdir(File.expand_path(File.dirname(__FILE__) + '/../core'))
-$LOAD_PATH.push '.'
-require 'utils'
-
-miquire :lib, 'test_unit_extensions'
-miquire :core, 'event', 'event_listener', 'event_filter'
-
-class TC_Event < Test::Unit::TestCase
- def setup
- Event.clear!
- end
-
- def wait
- while !Delayer.empty?
- Delayer.run
- end
- end
-
- must "register" do
- assert_instance_of Event, Event[:register_test]
- assert Event[:register_test].eql? Event[:register_test]
- assert_raise(ArgumentError) {
- Event["fail"] }
- end
-
- must "priority" do
- assert_kind_of Symbol, Event[:prio1].priority
- Event[:prio1].options[:priority] = :ui_response
- assert_equal :ui_response, Event[:prio1].priority
- end
-
- must "call event with filtering" do
- r = 0
- EventListener.new(Event[:call_event]) do |v|
- r = v end
- event = Event[:call_event].call(1)
- assert_equal Event[:call_event], event, 'Event#call は self を返す'
- wait
- assert_equal 1, r, 'イベントを呼び出すことができる'
- r = 0
- EventFilter.new(Event[:call_event]) do |v|
- [v + 1] end
- event = Event[:call_event].call(1)
- assert_equal Event[:call_event], event, 'Event#call は self を返す'
- wait
- assert_equal 2, r, 'フィルタがあるイベントを呼び出すことができる'
- end
-
- must "call event with filtering in another thread" do
- Event.filter_another_thread = true
- r = 0
- EventListener.new(Event[:call_event]) do |v|
- r = v end
- event = Event[:call_event].call(1)
- assert_equal Event[:call_event], event, 'Event#call は self を返す'
- Delayer.run while not Delayer.empty?
- assert_equal 1, r, 'フィルタを別スレッドで実行する設定の時、フィルタのないイベントを呼び出すことができる'
- r = 0
- EventFilter.new(Event[:call_event]) do |v|
- [v + 1] end
- event = Event[:call_event].call(1)
- assert_equal Event[:call_event], event, 'Event#call は self を返す'
- wait
- assert_equal 2, r, 'フィルタがバックグラウンドスレッドで実行される'
- end
-
- must "called event raises exception" do
- r = 0
- EventListener.new(Event[:call_event]) do |v|
- r = v
- raise end
- event = Event[:call_event].call(1)
- assert_equal Event[:call_event], event, 'Event#call は self を返す'
- assert_raise('イベント中で例外が起こった時、Delayer#runがその例外を投げる') {
- wait }
- assert_equal(1, r)
- r = 0
- EventFilter.new(Event[:call_event]) do |v|
- [v + 1] end
- event = Event[:call_event].call(1)
- assert_equal Event[:call_event], event, 'Event#call は self を返す'
- assert_raise('フィルタがあるイベント中で例外が起こった時、Delayer#runがその例外を投げる') {
- wait }
- assert_equal(2, r)
- r = 0
- EventFilter.new(Event[:call_event]) do |v|
- raise
- [v] end
- event = Event[:call_event].call(1)
- assert_equal Event[:call_event], event, 'Event#call は self を返す'
- assert_raise('フィルタで例外が起こった場合、EventListenerは実行されず、Delayer#runがその例外を投げる') {
- wait }
- assert_equal(0, r)
-
- end
-
- must "call event with filter raises exception in another thread" do
- Event.filter_another_thread = true
- r = 0
- exception = Class.new(RuntimeError)
- EventListener.new(Event[:call_event]) do |v|
- r = v
- raise exception end
- event = Event[:call_event].call(1)
- assert_equal Event[:call_event], event, 'Event#call は self を返す'
- assert_raise(exception, 'イベント中で例外が起こった時、Delayer#runがその例外を投げる') {
- wait }
- assert_equal(1, r)
- r = 0
- EventFilter.new(Event[:call_event]) do |v|
- [v + 1] end
- event = Event[:call_event].call(1)
- assert_equal Event[:call_event], event, 'Event#call は self を返す'
- assert_raise(exception, 'フィルタがあるイベント中で例外が起こった時、Delayer#runがその例外を投げる') {
- wait }
- assert_equal(2, r)
- r = 0
- filter_exception = Class.new(RuntimeError)
- EventFilter.new(Event[:call_event]) do |v|
- raise filter_exception
- [v] end
- event = Event[:call_event].call(1)
- assert_equal Event[:call_event], event, 'Event#call は self を返す'
- assert_raise(filter_exception, 'フィルタで例外が起こった場合、EventListenerは実行されず、Delayer#runがその例外を投げる') {
- wait }
- assert_equal(0, r)
- end
-end
diff --git a/test/core/test_event_filter.rb b/test/core/test_event_filter.rb
deleted file mode 100644
index 248cebed..00000000
--- a/test/core/test_event_filter.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-# -*- coding: utf-8 -*-
-
-require File.expand_path(File.dirname(__FILE__) + '/../helper')
-
-Dir.chdir(File.expand_path(File.dirname(__FILE__) + '/../core'))
-$LOAD_PATH.push '.'
-require 'utils'
-
-miquire :lib, 'test_unit_extensions'
-miquire :core, 'event_filter', 'event_listener'
-
-class TC_EventFilter < Test::Unit::TestCase
- def setup
- Event.clear!
- end
-
- must "start listening" do
- value = d_value = sum = d_sum = 0
- increase = EventListener.new(Event[:increase]) { |v|
- value += v
- d_value -= v
- sum += v
- }
- decrease = EventListener.new(Event[:decrease]) { |v|
- value -= v
- d_value += v
- d_sum += v
- }
- EventFilter.new(Event[:increase]){ |v| [v * 2] }
- Event[:increase].call(1)
- Delayer.run while not Delayer.empty?
- assert_equal(2, value)
- assert_equal(-2, d_value)
-
- Event[:decrease].call(2)
- Event[:increase].call(3)
- Delayer.run while not Delayer.empty?
- assert_equal(6, value)
- assert_equal(-6, d_value)
-
- assert_equal(8, sum)
- assert_equal(2, d_sum)
- end
-
- must "cancel" do
- EventFilter.new(Event[:increase]){ |v| [v * 2] }
- result = Event[:increase].filtering(1)
- assert_equal([2], result)
-
- EventFilter.new(Event[:increase]){ |v| [v * 2] }
- result = Event[:increase].filtering(1)
- assert_equal([4], result)
-
- e1 = EventFilter.new(Event[:increase]){ |v| EventFilter.cancel! }
- result = Event[:increase].filtering(1)
- assert_equal(false, result)
-
- e1.detach
-
- EventFilter.new(Event[:increase]){ |v, &cont| cont.call([v*3]) }
- result = Event[:increase].filtering(1)
- assert_equal([12], result)
- end
-end
-
diff --git a/test/core/test_event_listener.rb b/test/core/test_event_listener.rb
deleted file mode 100644
index 1eb78e38..00000000
--- a/test/core/test_event_listener.rb
+++ /dev/null
@@ -1,60 +0,0 @@
-# -*- coding: utf-8 -*-
-
-require File.expand_path(File.dirname(__FILE__) + '/../helper')
-
-Dir.chdir(File.expand_path(File.dirname(__FILE__) + '/../core'))
-$LOAD_PATH.push '.'
-require 'utils'
-
-miquire :lib, 'test_unit_extensions'
-miquire :core, 'event_listener'
-
-class TC_EventListener < Test::Unit::TestCase
- def setup
- Event.clear!
- end
-
- must "start listening" do
- value = d_value = sum = d_sum = 0
- increase = EventListener.new(Event[:increase]) { |v|
- value += v
- d_value -= v
- sum += v
- }
- decrease = EventListener.new(Event[:decrease]) { |v|
- value -= v
- d_value += v
- d_sum += v
- }
- Event[:increase].call(1)
- Delayer.run while not Delayer.empty?
- assert_equal(1, value)
- assert_equal(-1, d_value)
-
- Event[:decrease].call(2)
- Event[:increase].call(3)
- Delayer.run while not Delayer.empty?
- assert_equal(2, value)
- assert_equal(-2, d_value)
-
- assert_equal(4, sum)
- assert_equal(2, d_sum)
- end
-
- must "event stop" do
- value = 0
- EventListener.new(Event[:stop_test]) { |v, &stop|
- stop.call if (v % 2) == 0
- }
- EventListener.new(Event[:stop_test]) { |v|
- value += v
- }
- Event[:stop_test].call(1)
- Event[:stop_test].call(2)
- Event[:stop_test].call(3)
- Event[:stop_test].call(4)
- Delayer.run while not Delayer.empty?
- assert_equal(4, value)
- end
-end
-
diff --git a/test/core/test_plugin.rb b/test/core/test_plugin.rb
deleted file mode 100644
index 69084d0e..00000000
--- a/test/core/test_plugin.rb
+++ /dev/null
@@ -1,117 +0,0 @@
-# -*- coding: utf-8 -*-
-
-require File.expand_path(File.dirname(__FILE__) + '/../helper')
-
-miquire :core, 'plugin'
-
-class TC_Plugin < Test::Unit::TestCase
- def setup
- Plugin.clear!
- end
-
- must "basic plugin" do
- sum = 0
- Plugin.create(:event) do
- on_increase do |v|
- sum += v end
-
- filter_increase do |v|
- [v * 2]
- end
- end
- Event[:increase].call(1)
- Delayer.run while not Delayer.empty?
- assert_equal(2, sum)
- end
-
- must "uninstall" do
- sum = 0
- Plugin.create(:event) do
- on_increase do |v|
- sum += v end
- filter_increase do |v|
- [v * 2]
- end
- end
- Plugin.create(:event).uninstall
- Event[:increase].call(1)
- Delayer.run while not Delayer.empty?
- assert_equal(0, sum)
- end
-
- must "detach" do
- sum = 0
- event = filter = nil
- Plugin.create(:event) do
- event = on_increase do |v|
- sum += v end
- filter = filter_increase do |v|
- [v * 2]
- end
- end
- Event[:increase].call(1)
- Delayer.run while not Delayer.empty?
- assert_equal(2, sum)
-
- Plugin.create(:event).detach filter
- Event[:increase].call(1)
- Delayer.run while not Delayer.empty?
- assert_equal(3, sum)
-
- Plugin.create(:event).detach event
- Event[:increase].call(1)
- Delayer.run while not Delayer.empty?
- assert_equal(3, sum)
- end
-
- must "get plugin list" do
- assert_equal([], Plugin.plugin_list)
- Plugin.create(:plugin_0)
- assert_equal([:plugin_0], Plugin.plugin_list)
- Plugin.create(:plugin_1)
- assert_equal([:plugin_0, :plugin_1], Plugin.plugin_list)
- end
-
- must "dsl method defevent" do
- Plugin.create :defevent do
- defevent :increase, prototype: [Integer] end
- assert_equal([Integer], Event[:increase].options[:prototype])
- assert_equal(Plugin[:defevent], Event[:increase].options[:plugin])
- end
-
- must "unload hook" do
- value = 0
- Plugin.create(:unload) {
- on_unload {
- value += 2 }
- on_unload {
- value += 1 } }
- assert_equal(value, 0)
- Plugin.create(:unload).uninstall
- assert_equal(value, 3)
- end
-
- must "simple dsl" do
- Plugin.create :dsl_def do
- defdsl :twice do |number|
- number * 2
- end
- end
-
- dsl_use = Plugin.create(:dsl_use)
- assert_equal(4, dsl_use.twice(2))
- assert_equal(0, dsl_use.twice(0))
- assert_equal(-26, dsl_use.twice(-13))
- end
-
- must "callback dsl" do
- Plugin.create :dsl_def do
- defdsl :rejector do |value, &condition|
- value.reject(&condition)
- end
- end
-
- dsl_use = Plugin.create(:dsl_use)
- assert_equal([2, 4, 6], dsl_use.rejector(1..6){ |d| 0 != (d & 1) })
- end
-end