summaryrefslogtreecommitdiffstats
path: root/player/mruby/observable_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'player/mruby/observable_test.rb')
-rw-r--r--player/mruby/observable_test.rb27
1 files changed, 27 insertions, 0 deletions
diff --git a/player/mruby/observable_test.rb b/player/mruby/observable_test.rb
new file mode 100644
index 0000000000..1a5cfcac6b
--- /dev/null
+++ b/player/mruby/observable_test.rb
@@ -0,0 +1,27 @@
+# require[_relative] doesn't like non .rb/.so/.a extensions in MRI
+load File.expand_path('./observable.mrb', __dir__)
+
+empty = Observable.create { |observer| observer.complete }
+value = -> (v) { Observable.create { |observer| observer.next(v) } }
+failure = Observable.create { |observer| observer.error("some error") }
+
+subscriptions = {
+ next: -> (x) { puts "next: '#{x}'" },
+ error: -> (x) { puts "error: '#{x}'" },
+ complete: -> () { puts "complete" }
+}
+
+empty.subscribe(subscriptions)
+value.("hello world").subscribe(subscriptions)
+value.("hello world").subscribe { |x| puts "block based subscription: '#{x}'" }
+value.(2).map { |x| x + 1 } .subscribe(subscriptions)
+failure.subscribe(subscriptions)
+failure # prints nothing, observables are lazy!
+
+# output will be:
+
+# complete
+# next: 'hello world'
+# block based sub hello world
+# next: '3'
+# error: 'some error'