summaryrefslogtreecommitdiff
path: root/spec/ruby/library/observer
diff options
context:
space:
mode:
authoreregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-09-20 20:18:52 +0000
committereregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-09-20 20:18:52 +0000
commit1d15d5f08032acf1b7bceacbb450d617ff6e0931 (patch)
treea3785a79899302bc149e4a6e72f624ac27dc1f10 /spec/ruby/library/observer
parent75bfc6440d595bf339007f4fb280fd4d743e89c1 (diff)
Move spec/rubyspec to spec/ruby for consistency
* Other ruby implementations use the spec/ruby directory. [Misc #13792] [ruby-core:82287] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'spec/ruby/library/observer')
-rw-r--r--spec/ruby/library/observer/add_observer_spec.rb23
-rw-r--r--spec/ruby/library/observer/count_observers_spec.rb23
-rw-r--r--spec/ruby/library/observer/delete_observer_spec.rb19
-rw-r--r--spec/ruby/library/observer/delete_observers_spec.rb19
-rw-r--r--spec/ruby/library/observer/fixtures/classes.rb17
-rw-r--r--spec/ruby/library/observer/notify_observers_spec.rb31
6 files changed, 132 insertions, 0 deletions
diff --git a/spec/ruby/library/observer/add_observer_spec.rb b/spec/ruby/library/observer/add_observer_spec.rb
new file mode 100644
index 0000000000..7a2d349c85
--- /dev/null
+++ b/spec/ruby/library/observer/add_observer_spec.rb
@@ -0,0 +1,23 @@
+require File.expand_path('../../../spec_helper', __FILE__)
+require File.expand_path('../fixtures/classes', __FILE__)
+
+describe "Observer#add_observer" do
+
+ before :each do
+ @observable = ObservableSpecs.new
+ @observer = ObserverCallbackSpecs.new
+ end
+
+ it "adds the observer" do
+ @observer.value.should == nil
+ @observable.changed
+ @observable.notify_observers("test")
+ @observer.value.should == nil
+
+ @observable.add_observer(@observer)
+ @observable.changed
+ @observable.notify_observers("test2")
+ @observer.value.should == "test2"
+ end
+
+end
diff --git a/spec/ruby/library/observer/count_observers_spec.rb b/spec/ruby/library/observer/count_observers_spec.rb
new file mode 100644
index 0000000000..68eaccfaaa
--- /dev/null
+++ b/spec/ruby/library/observer/count_observers_spec.rb
@@ -0,0 +1,23 @@
+require File.expand_path('../../../spec_helper', __FILE__)
+require File.expand_path('../fixtures/classes', __FILE__)
+
+describe "Observer#count_observers" do
+ before :each do
+ @observable = ObservableSpecs.new
+ @observer = ObserverCallbackSpecs.new
+ @observer2 = ObserverCallbackSpecs.new
+ end
+
+ it "returns the number of observers" do
+ @observable.count_observers.should == 0
+ @observable.add_observer(@observer)
+ @observable.count_observers.should == 1
+ @observable.add_observer(@observer2)
+ @observable.count_observers.should == 2
+ end
+
+ it "returns the number of unique observers" do
+ 2.times { @observable.add_observer(@observer) }
+ @observable.count_observers.should == 1
+ end
+end
diff --git a/spec/ruby/library/observer/delete_observer_spec.rb b/spec/ruby/library/observer/delete_observer_spec.rb
new file mode 100644
index 0000000000..b9dc95167c
--- /dev/null
+++ b/spec/ruby/library/observer/delete_observer_spec.rb
@@ -0,0 +1,19 @@
+require File.expand_path('../../../spec_helper', __FILE__)
+require File.expand_path('../fixtures/classes', __FILE__)
+
+describe "Observer#delete_observer" do
+ before :each do
+ @observable = ObservableSpecs.new
+ @observer = ObserverCallbackSpecs.new
+ end
+
+ it "deletes the observer" do
+ @observable.add_observer(@observer)
+ @observable.delete_observer(@observer)
+
+ @observable.changed
+ @observable.notify_observers("test")
+ @observer.value.should == nil
+ end
+
+end
diff --git a/spec/ruby/library/observer/delete_observers_spec.rb b/spec/ruby/library/observer/delete_observers_spec.rb
new file mode 100644
index 0000000000..58b10418dd
--- /dev/null
+++ b/spec/ruby/library/observer/delete_observers_spec.rb
@@ -0,0 +1,19 @@
+require File.expand_path('../../../spec_helper', __FILE__)
+require File.expand_path('../fixtures/classes', __FILE__)
+
+describe "Observer#delete_observers" do
+ before :each do
+ @observable = ObservableSpecs.new
+ @observer = ObserverCallbackSpecs.new
+ end
+
+ it "deletes the observers" do
+ @observable.add_observer(@observer)
+ @observable.delete_observers
+
+ @observable.changed
+ @observable.notify_observers("test")
+ @observer.value.should == nil
+ end
+
+end
diff --git a/spec/ruby/library/observer/fixtures/classes.rb b/spec/ruby/library/observer/fixtures/classes.rb
new file mode 100644
index 0000000000..70cd1b1be2
--- /dev/null
+++ b/spec/ruby/library/observer/fixtures/classes.rb
@@ -0,0 +1,17 @@
+require 'observer'
+
+class ObserverCallbackSpecs
+ attr_reader :value
+
+ def initialize
+ @value = nil
+ end
+
+ def update(value)
+ @value = value
+ end
+end
+
+class ObservableSpecs
+ include Observable
+end
diff --git a/spec/ruby/library/observer/notify_observers_spec.rb b/spec/ruby/library/observer/notify_observers_spec.rb
new file mode 100644
index 0000000000..cafbdd56e6
--- /dev/null
+++ b/spec/ruby/library/observer/notify_observers_spec.rb
@@ -0,0 +1,31 @@
+require File.expand_path('../../../spec_helper', __FILE__)
+require File.expand_path('../fixtures/classes', __FILE__)
+
+describe "Observer#notify_observers" do
+
+ before :each do
+ @observable = ObservableSpecs.new
+ @observer = ObserverCallbackSpecs.new
+ @observable.add_observer(@observer)
+ end
+
+ it "must call changed before notifying observers" do
+ @observer.value.should == nil
+ @observable.notify_observers("test")
+ @observer.value.should == nil
+ end
+
+ it "verifies observer responds to update" do
+ lambda {
+ @observable.add_observer(@observable)
+ }.should raise_error(NoMethodError)
+ end
+
+ it "receives the callback" do
+ @observer.value.should == nil
+ @observable.changed
+ @observable.notify_observers("test")
+ @observer.value.should == "test"
+ end
+
+end