12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- require 'spec_helper'
- describe V8::Portal::Proxies do
- include V8::MemSpec
-
- context "A Ruby object embedded into JavaScript" do
- it "holds a hard reference to any ruby object which is linked to a javascript proxy" do
- subject.register_javascript_proxy c::Object::New(), :for => Object.new
- ruby_gc do
- subject.should_not be_empty
- end
- end
- it "releases the hard reference if its corresponding javascript object has been garbage collected" do
- ruby_gc do
- rb_object = Object.new
- js_proxy = c::Object::New()
- subject.should be_empty
- subject.register_javascript_proxy js_proxy, :for => rb_object
- rb_object = nil
- subject.should_not be_empty
- v8_gc()
- end
- subject.should be_empty
- end
- end
- context "A JavaScript object embedded into Ruby" do
- it "holds a hard reference to any JavaScript object which is linked to a Ruby proxy" do
- proxy = Object.new
- subject.register_ruby_proxy proxy, :for => c::Object::New()
- ruby_gc do
- subject.should_not be_empty
- end
- end
- it "clears any strong references to the JavaScript object when it's Ruby proxy is garbage collected" do
- subject.register_ruby_proxy Object.new, :for => c::Object::New()
- subject.should_not be_empty
- ruby_gc do
- v8_gc
- GC.start
- v8_gc
- end
- subject.should be_empty
- end
- end
- end
|