aboutsummaryrefslogtreecommitdiffstats
path: root/spec/rubyspec/library/win32ole/win32ole_method
diff options
context:
space:
mode:
Diffstat (limited to 'spec/rubyspec/library/win32ole/win32ole_method')
-rw-r--r--spec/rubyspec/library/win32ole/win32ole_method/dispid_spec.rb20
-rw-r--r--spec/rubyspec/library/win32ole/win32ole_method/event_interface_spec.rb26
-rw-r--r--spec/rubyspec/library/win32ole/win32ole_method/event_spec.rb20
-rw-r--r--spec/rubyspec/library/win32ole/win32ole_method/helpcontext_spec.rb26
-rw-r--r--spec/rubyspec/library/win32ole/win32ole_method/helpfile_spec.rb20
-rw-r--r--spec/rubyspec/library/win32ole/win32ole_method/helpstring_spec.rb20
-rw-r--r--spec/rubyspec/library/win32ole/win32ole_method/invkind_spec.rb20
-rw-r--r--spec/rubyspec/library/win32ole/win32ole_method/invoke_kind_spec.rb20
-rw-r--r--spec/rubyspec/library/win32ole/win32ole_method/name_spec.rb11
-rw-r--r--spec/rubyspec/library/win32ole/win32ole_method/new_spec.rb33
-rw-r--r--spec/rubyspec/library/win32ole/win32ole_method/offset_vtbl_spec.rb21
-rw-r--r--spec/rubyspec/library/win32ole/win32ole_method/params_spec.rb28
-rw-r--r--spec/rubyspec/library/win32ole/win32ole_method/return_type_detail_spec.rb21
-rw-r--r--spec/rubyspec/library/win32ole/win32ole_method/return_type_spec.rb20
-rw-r--r--spec/rubyspec/library/win32ole/win32ole_method/return_vtype_spec.rb20
-rw-r--r--spec/rubyspec/library/win32ole/win32ole_method/shared/name.rb20
-rw-r--r--spec/rubyspec/library/win32ole/win32ole_method/size_opt_params_spec.rb20
-rw-r--r--spec/rubyspec/library/win32ole/win32ole_method/size_params_spec.rb20
-rw-r--r--spec/rubyspec/library/win32ole/win32ole_method/to_s_spec.rb11
-rw-r--r--spec/rubyspec/library/win32ole/win32ole_method/visible_spec.rb20
20 files changed, 417 insertions, 0 deletions
diff --git a/spec/rubyspec/library/win32ole/win32ole_method/dispid_spec.rb b/spec/rubyspec/library/win32ole/win32ole_method/dispid_spec.rb
new file mode 100644
index 0000000000..840cdf72b8
--- /dev/null
+++ b/spec/rubyspec/library/win32ole/win32ole_method/dispid_spec.rb
@@ -0,0 +1,20 @@
+platform_is :windows do
+ require 'win32ole'
+
+ describe "WIN32OLE_METHOD#dispid" do
+ before :each do
+ ole_type = WIN32OLE_TYPE.new("Microsoft Shell Controls And Automation", "Shell")
+ @m = WIN32OLE_METHOD.new(ole_type, "namespace")
+ end
+
+ it "raises ArgumentError if argument is given" do
+ lambda { @m.dispid(0) }.should raise_error ArgumentError
+ end
+
+ it "returns expected dispatch ID for Shell's 'namespace' method" do
+ @m.dispid.should == 1610743810 # value found in MRI's test
+ end
+
+ end
+
+end
diff --git a/spec/rubyspec/library/win32ole/win32ole_method/event_interface_spec.rb b/spec/rubyspec/library/win32ole/win32ole_method/event_interface_spec.rb
new file mode 100644
index 0000000000..9d3ca2b8e4
--- /dev/null
+++ b/spec/rubyspec/library/win32ole/win32ole_method/event_interface_spec.rb
@@ -0,0 +1,26 @@
+platform_is :windows do
+ require 'win32ole'
+
+ describe "WIN32OLE_METHOD#event_interface" do
+ before :each do
+ ole_type = WIN32OLE_TYPE.new("Microsoft Internet Controls", "WebBrowser")
+ @navigate_method = WIN32OLE_METHOD.new(ole_type, "NavigateComplete")
+ ole_type = WIN32OLE_TYPE.new("Microsoft Shell Controls And Automation", "Shell")
+ @namespace_method = WIN32OLE_METHOD.new(ole_type, "namespace")
+ end
+
+ it "raises ArgumentError if argument is given" do
+ lambda { @navigate_method.event_interface(1) }.should raise_error ArgumentError
+ end
+
+ it "returns expected string for browser's 'NavigateComplete' method" do
+ @navigate_method.event_interface.should == "DWebBrowserEvents"
+ end
+
+ it "returns nil if method has no event interface" do
+ @namespace_method.event_interface.should be_nil
+ end
+
+ end
+
+end
diff --git a/spec/rubyspec/library/win32ole/win32ole_method/event_spec.rb b/spec/rubyspec/library/win32ole/win32ole_method/event_spec.rb
new file mode 100644
index 0000000000..25435438aa
--- /dev/null
+++ b/spec/rubyspec/library/win32ole/win32ole_method/event_spec.rb
@@ -0,0 +1,20 @@
+platform_is :windows do
+ require 'win32ole'
+
+ describe "WIN32OLE_METHOD#event?" do
+ before :each do
+ ole_type = WIN32OLE_TYPE.new("Microsoft Internet Controls", "WebBrowser")
+ @navigate_method = WIN32OLE_METHOD.new(ole_type, "NavigateComplete")
+ end
+
+ it "raises ArgumentError if argument is given" do
+ lambda { @navigate_method.event?(1) }.should raise_error ArgumentError
+ end
+
+ it "returns true for browser's 'NavigateComplete' method" do
+ @navigate_method.event?.should be_true
+ end
+
+ end
+
+end
diff --git a/spec/rubyspec/library/win32ole/win32ole_method/helpcontext_spec.rb b/spec/rubyspec/library/win32ole/win32ole_method/helpcontext_spec.rb
new file mode 100644
index 0000000000..c0e66a7a18
--- /dev/null
+++ b/spec/rubyspec/library/win32ole/win32ole_method/helpcontext_spec.rb
@@ -0,0 +1,26 @@
+platform_is :windows do
+ require 'win32ole'
+
+ describe "WIN32OLE_METHOD#helpcontext" do
+ before :each do
+ ole_type = WIN32OLE_TYPE.new("Microsoft Internet Controls", "WebBrowser")
+ @navigate_method = WIN32OLE_METHOD.new(ole_type, "NavigateComplete")
+ ole_type = WIN32OLE_TYPE.new("Microsoft Scripting Runtime", "File")
+ @m_file_name = WIN32OLE_METHOD.new(ole_type, "name")
+ end
+
+ it "raises ArgumentError if argument is given" do
+ lambda { @navigate_method.helpcontext(1) }.should raise_error ArgumentError
+ end
+
+ it "returns expected value for browser's 'NavigateComplete' method" do
+ @navigate_method.helpcontext.should == 0
+ end
+
+ it "returns expected value for Scripting Runtime's 'name' method" do
+ @m_file_name.helpcontext.should == 2181996 # value indicated in MRI's test
+ end
+
+ end
+
+end
diff --git a/spec/rubyspec/library/win32ole/win32ole_method/helpfile_spec.rb b/spec/rubyspec/library/win32ole/win32ole_method/helpfile_spec.rb
new file mode 100644
index 0000000000..72cc4da16b
--- /dev/null
+++ b/spec/rubyspec/library/win32ole/win32ole_method/helpfile_spec.rb
@@ -0,0 +1,20 @@
+platform_is :windows do
+ require 'win32ole'
+
+ describe "WIN32OLE_METHOD#helpfile" do
+ before :each do
+ ole_type = WIN32OLE_TYPE.new("Microsoft Scripting Runtime", "File")
+ @m_file_name = WIN32OLE_METHOD.new(ole_type, "name")
+ end
+
+ it "raises ArgumentError if argument is given" do
+ lambda { @m_file_name.helpfile(1) }.should raise_error ArgumentError
+ end
+
+ it "returns expected value for Scripting Runtime's 'File' method" do
+ @m_file_name.helpfile.should =~ /VBENLR.*\.CHM$/i
+ end
+
+ end
+
+end
diff --git a/spec/rubyspec/library/win32ole/win32ole_method/helpstring_spec.rb b/spec/rubyspec/library/win32ole/win32ole_method/helpstring_spec.rb
new file mode 100644
index 0000000000..60105d0aa2
--- /dev/null
+++ b/spec/rubyspec/library/win32ole/win32ole_method/helpstring_spec.rb
@@ -0,0 +1,20 @@
+platform_is :windows do
+ require 'win32ole'
+
+ describe "WIN32OLE_METHOD#helpstring" do
+ before :each do
+ ole_type = WIN32OLE_TYPE.new("Microsoft Scripting Runtime", "File")
+ @m_file_name = WIN32OLE_METHOD.new(ole_type, "name")
+ end
+
+ it "raises ArgumentError if argument is given" do
+ lambda { @m_file_name.helpstring(1) }.should raise_error ArgumentError
+ end
+
+ it "returns expected value for Scripting Runtime's 'File' method" do
+ @m_file_name.helpstring.should == "Get name of file" # value indicated in MRI's test
+ end
+
+ end
+
+end
diff --git a/spec/rubyspec/library/win32ole/win32ole_method/invkind_spec.rb b/spec/rubyspec/library/win32ole/win32ole_method/invkind_spec.rb
new file mode 100644
index 0000000000..cf0a74bbce
--- /dev/null
+++ b/spec/rubyspec/library/win32ole/win32ole_method/invkind_spec.rb
@@ -0,0 +1,20 @@
+platform_is :windows do
+ require 'win32ole'
+
+ describe "WIN32OLE_METHOD#invkind" do
+ before :each do
+ ole_type = WIN32OLE_TYPE.new("Microsoft Scripting Runtime", "File")
+ @m_file_name = WIN32OLE_METHOD.new(ole_type, "name")
+ end
+
+ it "raises ArgumentError if argument is given" do
+ lambda { @m_file_name.invkind(1) }.should raise_error ArgumentError
+ end
+
+ it "returns expected value for Scripting Runtime's 'name' method" do
+ @m_file_name.invkind.should == 2
+ end
+
+ end
+
+end
diff --git a/spec/rubyspec/library/win32ole/win32ole_method/invoke_kind_spec.rb b/spec/rubyspec/library/win32ole/win32ole_method/invoke_kind_spec.rb
new file mode 100644
index 0000000000..4d2af8fb0c
--- /dev/null
+++ b/spec/rubyspec/library/win32ole/win32ole_method/invoke_kind_spec.rb
@@ -0,0 +1,20 @@
+platform_is :windows do
+ require 'win32ole'
+
+ describe "WIN32OLE_METHOD#invoke_kind" do
+ before :each do
+ ole_type = WIN32OLE_TYPE.new("Microsoft Scripting Runtime", "File")
+ @m_file_name = WIN32OLE_METHOD.new(ole_type, "name")
+ end
+
+ it "raises ArgumentError if argument is given" do
+ lambda { @m_file_name.invoke_kind(1) }.should raise_error ArgumentError
+ end
+
+ it "returns expected value for Scripting Runtime's 'name' method" do
+ @m_file_name.invoke_kind.should =~ /^(UNKNOWN|PROPERTY|PROPERTYGET|PROPERTYPUT|PROPERTYPUTREF|FUNC)$/
+ end
+
+ end
+
+end
diff --git a/spec/rubyspec/library/win32ole/win32ole_method/name_spec.rb b/spec/rubyspec/library/win32ole/win32ole_method/name_spec.rb
new file mode 100644
index 0000000000..0c2b3eeba0
--- /dev/null
+++ b/spec/rubyspec/library/win32ole/win32ole_method/name_spec.rb
@@ -0,0 +1,11 @@
+require File.expand_path('../shared/name', __FILE__)
+
+platform_is :windows do
+ require 'win32ole'
+
+ describe "WIN32OLE_METHOD#name" do
+ it_behaves_like :win32ole_method_name, :name
+
+ end
+
+end
diff --git a/spec/rubyspec/library/win32ole/win32ole_method/new_spec.rb b/spec/rubyspec/library/win32ole/win32ole_method/new_spec.rb
new file mode 100644
index 0000000000..fc8d1d7691
--- /dev/null
+++ b/spec/rubyspec/library/win32ole/win32ole_method/new_spec.rb
@@ -0,0 +1,33 @@
+platform_is :windows do
+ require 'win32ole'
+
+ describe "WIN32OLE_METHOD.new" do
+ before :each do
+ @ole_type = WIN32OLE_TYPE.new("Microsoft Shell Controls And Automation", "Shell")
+ end
+
+ it "raises TypeError when given non-strings" do
+ lambda { WIN32OLE_METHOD.new(1, 2) }.should raise_error TypeError
+ end
+
+ it "raises ArgumentError if only 1 arugment is given" do
+ lambda { WIN32OLE_METHOD.new("hello") }.should raise_error ArgumentError
+ lambda { WIN32OLE_METHOD.new(@ole_type) }.should raise_error ArgumentError
+ end
+
+ it "returns a valid WIN32OLE_METHOD object" do
+ WIN32OLE_METHOD.new(@ole_type, "Open").should be_kind_of WIN32OLE_METHOD
+ WIN32OLE_METHOD.new(@ole_type, "open").should be_kind_of WIN32OLE_METHOD
+ end
+
+ it "raises WIN32OLERuntimeError if the method does not exist" do
+ lambda { WIN32OLE_METHOD.new(@ole_type, "NonexistentMethod") }.should raise_error WIN32OLERuntimeError
+ end
+
+ it "raises TypeError if second argument is not a String" do
+ lambda { WIN32OLE_METHOD.new(@ole_type, 5) }.should raise_error TypeError
+ end
+
+ end
+
+end
diff --git a/spec/rubyspec/library/win32ole/win32ole_method/offset_vtbl_spec.rb b/spec/rubyspec/library/win32ole/win32ole_method/offset_vtbl_spec.rb
new file mode 100644
index 0000000000..e436441409
--- /dev/null
+++ b/spec/rubyspec/library/win32ole/win32ole_method/offset_vtbl_spec.rb
@@ -0,0 +1,21 @@
+platform_is :windows do
+ require 'win32ole'
+
+ describe "WIN32OLE_METHOD#offset_vtbl" do
+ before :each do
+ ole_type = WIN32OLE_TYPE.new("Microsoft Scripting Runtime", "File")
+ @m_file_name = WIN32OLE_METHOD.new(ole_type, "name")
+ end
+
+ it "raises ArgumentError if argument is given" do
+ lambda { @m_file_name.offset_vtbl(1) }.should raise_error ArgumentError
+ end
+
+ it "returns expected value for Scripting Runtime's 'name' method" do
+ pointer_size = RUBY_PLATFORM =~ /\bx64\b/ ? 64 : 1.size * 8
+ @m_file_name.offset_vtbl.should == pointer_size
+ end
+
+ end
+
+end
diff --git a/spec/rubyspec/library/win32ole/win32ole_method/params_spec.rb b/spec/rubyspec/library/win32ole/win32ole_method/params_spec.rb
new file mode 100644
index 0000000000..08c7f04bdd
--- /dev/null
+++ b/spec/rubyspec/library/win32ole/win32ole_method/params_spec.rb
@@ -0,0 +1,28 @@
+platform_is :windows do
+ require 'win32ole'
+
+ describe "WIN32OLE_METHOD#params" do
+ before :each do
+ ole_type = WIN32OLE_TYPE.new("Microsoft Scripting Runtime", "File")
+ @m_file_name = WIN32OLE_METHOD.new(ole_type, "name")
+ ole_type = WIN32OLE_TYPE.new("Microsoft Shell Controls And Automation", "Shell")
+ @m_browse_for_folder = WIN32OLE_METHOD.new(ole_type, "BrowseForFolder")
+ end
+
+ it "raises ArgumentError if argument is given" do
+ lambda { @m_file_name.params(1) }.should raise_error ArgumentError
+ end
+
+ it "returns empty array for Scripting Runtime's 'name' method" do
+ @m_file_name.params.should be_kind_of Array
+ @m_file_name.params.should be_empty
+ end
+
+ it "returns 4-element array of WIN32OLE_PARAM for Shell's 'BrowseForFolder' method" do
+ @m_browse_for_folder.params.all? { |p| p.kind_of? WIN32OLE_PARAM }.should be_true
+ @m_browse_for_folder.params.size == 4
+ end
+
+ end
+
+end
diff --git a/spec/rubyspec/library/win32ole/win32ole_method/return_type_detail_spec.rb b/spec/rubyspec/library/win32ole/win32ole_method/return_type_detail_spec.rb
new file mode 100644
index 0000000000..b8f2bbe084
--- /dev/null
+++ b/spec/rubyspec/library/win32ole/win32ole_method/return_type_detail_spec.rb
@@ -0,0 +1,21 @@
+platform_is :windows do
+ require 'win32ole'
+
+ describe "WIN32OLE_METHOD#return_type_detail" do
+ before :each do
+ ole_type = WIN32OLE_TYPE.new("Microsoft Shell Controls And Automation", "Shell")
+ @m_browse_for_folder = WIN32OLE_METHOD.new(ole_type, "BrowseForFolder")
+ end
+
+ it "raises ArgumentError if argument is given" do
+ lambda { @m_browse_for_folder.return_type_detail(1) }.should raise_error ArgumentError
+ end
+
+ it "returns expected value for Shell Control's 'BrowseForFolder' method" do
+ @m_browse_for_folder.return_type_detail.should be_kind_of Array
+ @m_browse_for_folder.return_type_detail.should == ['PTR', 'USERDEFINED', 'Folder']
+ end
+
+ end
+
+end
diff --git a/spec/rubyspec/library/win32ole/win32ole_method/return_type_spec.rb b/spec/rubyspec/library/win32ole/win32ole_method/return_type_spec.rb
new file mode 100644
index 0000000000..b68481fe59
--- /dev/null
+++ b/spec/rubyspec/library/win32ole/win32ole_method/return_type_spec.rb
@@ -0,0 +1,20 @@
+platform_is :windows do
+ require 'win32ole'
+
+ describe "WIN32OLE_METHOD#return_type" do
+ before :each do
+ ole_type = WIN32OLE_TYPE.new("Microsoft Scripting Runtime", "File")
+ @m_file_name = WIN32OLE_METHOD.new(ole_type, "name")
+ end
+
+ it "raises ArgumentError if argument is given" do
+ lambda { @m_file_name.return_type(1) }.should raise_error ArgumentError
+ end
+
+ it "returns expected value for Scripting Runtime's 'name' method" do
+ @m_file_name.return_type.should == 'BSTR'
+ end
+
+ end
+
+end
diff --git a/spec/rubyspec/library/win32ole/win32ole_method/return_vtype_spec.rb b/spec/rubyspec/library/win32ole/win32ole_method/return_vtype_spec.rb
new file mode 100644
index 0000000000..f236de01f9
--- /dev/null
+++ b/spec/rubyspec/library/win32ole/win32ole_method/return_vtype_spec.rb
@@ -0,0 +1,20 @@
+platform_is :windows do
+ require 'win32ole'
+
+ describe "WIN32OLE_METHOD#return_vtype" do
+ before :each do
+ ole_type = WIN32OLE_TYPE.new("Microsoft Shell Controls And Automation", "Shell")
+ @m_browse_for_folder = WIN32OLE_METHOD.new(ole_type, "BrowseForFolder")
+ end
+
+ it "raises ArgumentError if argument is given" do
+ lambda { @m_browse_for_folder.return_vtype(1) }.should raise_error ArgumentError
+ end
+
+ it "returns expected value for Shell Control's 'BrowseForFolder' method" do
+ @m_browse_for_folder.return_vtype.should == 26
+ end
+
+ end
+
+end
diff --git a/spec/rubyspec/library/win32ole/win32ole_method/shared/name.rb b/spec/rubyspec/library/win32ole/win32ole_method/shared/name.rb
new file mode 100644
index 0000000000..2be6478a6e
--- /dev/null
+++ b/spec/rubyspec/library/win32ole/win32ole_method/shared/name.rb
@@ -0,0 +1,20 @@
+platform_is :windows do
+ require 'win32ole'
+
+ describe :win32ole_method_name, shared: true do
+ before :each do
+ ole_type = WIN32OLE_TYPE.new("Microsoft Scripting Runtime", "File")
+ @m_file_name = WIN32OLE_METHOD.new(ole_type, "name")
+ end
+
+ it "raises ArgumentError if argument is given" do
+ lambda { @m_file_name.send(@method, 1) }.should raise_error ArgumentError
+ end
+
+ it "returns expected value for Scripting Runtime's 'name' method" do
+ @m_file_name.send(@method).should == 'Name' # note the capitalization
+ end
+
+ end
+
+end
diff --git a/spec/rubyspec/library/win32ole/win32ole_method/size_opt_params_spec.rb b/spec/rubyspec/library/win32ole/win32ole_method/size_opt_params_spec.rb
new file mode 100644
index 0000000000..a63c50474c
--- /dev/null
+++ b/spec/rubyspec/library/win32ole/win32ole_method/size_opt_params_spec.rb
@@ -0,0 +1,20 @@
+platform_is :windows do
+ require 'win32ole'
+
+ describe "WIN32OLE_METHOD#size_opt_params" do
+ before :each do
+ ole_type = WIN32OLE_TYPE.new("Microsoft Shell Controls And Automation", "Shell")
+ @m_browse_for_folder = WIN32OLE_METHOD.new(ole_type, "BrowseForFolder")
+ end
+
+ it "raises ArgumentError if argument is given" do
+ lambda { @m_browse_for_folder.size_opt_params(1) }.should raise_error ArgumentError
+ end
+
+ it "returns expected value for Shell Control's 'BrowseForFolder' method" do
+ @m_browse_for_folder.size_opt_params.should == 1
+ end
+
+ end
+
+end
diff --git a/spec/rubyspec/library/win32ole/win32ole_method/size_params_spec.rb b/spec/rubyspec/library/win32ole/win32ole_method/size_params_spec.rb
new file mode 100644
index 0000000000..fe93d5bc66
--- /dev/null
+++ b/spec/rubyspec/library/win32ole/win32ole_method/size_params_spec.rb
@@ -0,0 +1,20 @@
+platform_is :windows do
+ require 'win32ole'
+
+ describe "WIN32OLE_METHOD#size_params" do
+ before :each do
+ ole_type = WIN32OLE_TYPE.new("Microsoft Shell Controls And Automation", "Shell")
+ @m_browse_for_folder = WIN32OLE_METHOD.new(ole_type, "BrowseForFolder")
+ end
+
+ it "raises ArgumentError if argument is given" do
+ lambda { @m_browse_for_folder.size_params(1) }.should raise_error ArgumentError
+ end
+
+ it "returns expected value for Shell Control's 'BrowseForFolder' method" do
+ @m_browse_for_folder.size_params.should == 4
+ end
+
+ end
+
+end
diff --git a/spec/rubyspec/library/win32ole/win32ole_method/to_s_spec.rb b/spec/rubyspec/library/win32ole/win32ole_method/to_s_spec.rb
new file mode 100644
index 0000000000..95fd2fcdb5
--- /dev/null
+++ b/spec/rubyspec/library/win32ole/win32ole_method/to_s_spec.rb
@@ -0,0 +1,11 @@
+require File.expand_path('../shared/name', __FILE__)
+
+platform_is :windows do
+ require 'win32ole'
+
+ describe "WIN32OLE_METHOD#name" do
+ it_behaves_like :win32ole_method_name, :to_s
+
+ end
+
+end
diff --git a/spec/rubyspec/library/win32ole/win32ole_method/visible_spec.rb b/spec/rubyspec/library/win32ole/win32ole_method/visible_spec.rb
new file mode 100644
index 0000000000..b49fac6066
--- /dev/null
+++ b/spec/rubyspec/library/win32ole/win32ole_method/visible_spec.rb
@@ -0,0 +1,20 @@
+platform_is :windows do
+ require 'win32ole'
+
+ describe "WIN32OLE_METHOD#visible?" do
+ before :each do
+ ole_type = WIN32OLE_TYPE.new("Microsoft Shell Controls And Automation", "Shell")
+ @m_browse_for_folder = WIN32OLE_METHOD.new(ole_type, "BrowseForFolder")
+ end
+
+ it "raises ArgumentError if argument is given" do
+ lambda { @m_browse_for_folder.visible?(1) }.should raise_error ArgumentError
+ end
+
+ it "returns true for Shell Control's 'BrowseForFolder' method" do
+ @m_browse_for_folder.visible?.should be_true
+ end
+
+ end
+
+end