ruby-changes:38014
From: hsbt <ko1@a...>
Date: Thu, 26 Mar 2015 10:05:24 +0900 (JST)
Subject: [ruby-changes:38014] hsbt:r50095 (trunk): * test/test_observer.rb: add tests for Observable module.
hsbt 2015-03-26 10:05:18 +0900 (Thu, 26 Mar 2015) New Revision: 50095 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=50095 Log: * test/test_observer.rb: add tests for Observable module. [fix GH-859] Patch by @brightbits Added files: trunk/test/test_observer.rb Modified files: trunk/ChangeLog Index: ChangeLog =================================================================== --- ChangeLog (revision 50094) +++ ChangeLog (revision 50095) @@ -1,3 +1,8 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Thu Mar 26 10:05:13 2015 SHIBATA Hiroshi <shibata.hiroshi@g...> + + * test/test_observer.rb: add tests for Observable module. + [fix GH-859] Patch by @brightbits + Thu Mar 26 06:35:10 2015 Eric Wong <e@8...> * README.EXT: add redirect [ruby-core:68631] Index: test/test_observer.rb =================================================================== --- test/test_observer.rb (revision 0) +++ test/test_observer.rb (revision 50095) @@ -0,0 +1,65 @@ https://github.com/ruby/ruby/blob/trunk/test/test_observer.rb#L1 +require 'test/unit' +require 'observer' + +class TestObserver < Test::Unit::TestCase + class TestObservable + include Observable + + def notify(*args) + changed + notify_observers(*args) + end + end + + class TestWatcher + def initialize(observable) + @notifications = [] + observable.add_observer(self) + end + + attr_reader :notifications + + def update(*args) + @notifications << args + end + end + + def test_observers + observable = TestObservable.new + + assert_equal(0, observable.count_observers) + + watcher1 = TestWatcher.new(observable) + + assert_equal(1, observable.count_observers) + + observable.notify("test", 123) + + watcher2 = TestWatcher.new(observable) + + assert_equal(2, observable.count_observers) + + observable.notify(42) + + assert_equal([["test", 123], [42]], watcher1.notifications) + assert_equal([[42]], watcher2.notifications) + + observable.delete_observer(watcher1) + + assert_equal(1, observable.count_observers) + + observable.notify(:cats) + + assert_equal([["test", 123], [42]], watcher1.notifications) + assert_equal([[42], [:cats]], watcher2.notifications) + + observable.delete_observers + + assert_equal(0, observable.count_observers) + + observable.notify("nope") + + assert_equal([["test", 123], [42]], watcher1.notifications) + assert_equal([[42], [:cats]], watcher2.notifications) + end +end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/