summaryrefslogtreecommitdiff
path: root/spec/ruby/library/win32ole/win32ole_method
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/library/win32ole/win32ole_method')
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/dispid_spec.rb21
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/event_interface_spec.rb29
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/event_spec.rb23
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/helpcontext_spec.rb27
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/helpfile_spec.rb21
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/helpstring_spec.rb21
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/invkind_spec.rb21
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/invoke_kind_spec.rb21
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/name_spec.rb12
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/new_spec.rb34
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/offset_vtbl_spec.rb22
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/params_spec.rb29
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/return_type_detail_spec.rb22
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/return_type_spec.rb21
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/return_vtype_spec.rb21
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/shared/name.rb20
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/size_opt_params_spec.rb21
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/size_params_spec.rb21
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/to_s_spec.rb12
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/visible_spec.rb21
20 files changed, 440 insertions, 0 deletions
diff --git a/spec/ruby/library/win32ole/win32ole_method/dispid_spec.rb b/spec/ruby/library/win32ole/win32ole_method/dispid_spec.rb
new file mode 100644
index 0000000000..43084eb943
--- /dev/null
+++ b/spec/ruby/library/win32ole/win32ole_method/dispid_spec.rb
@@ -0,0 +1,21 @@
+require_relative "../../../spec_helper"
+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
+ -> { @m.dispid(0) }.should.raise 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/ruby/library/win32ole/win32ole_method/event_interface_spec.rb b/spec/ruby/library/win32ole/win32ole_method/event_interface_spec.rb
new file mode 100644
index 0000000000..1d00fb9696
--- /dev/null
+++ b/spec/ruby/library/win32ole/win32ole_method/event_interface_spec.rb
@@ -0,0 +1,29 @@
+require_relative "../../../spec_helper"
+platform_is :windows do
+ require_relative '../fixtures/classes'
+ guard -> { WIN32OLESpecs::SYSTEM_MONITOR_CONTROL_AVAILABLE } do
+
+ describe "WIN32OLE::Method#event_interface" do
+ before :each do
+ ole_type = WIN32OLE::Type.new("System Monitor Control", "SystemMonitor")
+ @on_dbl_click_method = WIN32OLE::Method.new(ole_type, "OnDblClick")
+ 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
+ -> { @on_dbl_click_method.event_interface(1) }.should.raise ArgumentError
+ end
+
+ it "returns expected string for System Monitor Control's 'OnDblClick' method" do
+ @on_dbl_click_method.event_interface.should == "DISystemMonitorEvents"
+ end
+
+ it "returns nil if method has no event interface" do
+ @namespace_method.event_interface.should == nil
+ end
+
+ end
+ end
+
+end
diff --git a/spec/ruby/library/win32ole/win32ole_method/event_spec.rb b/spec/ruby/library/win32ole/win32ole_method/event_spec.rb
new file mode 100644
index 0000000000..fd611519cb
--- /dev/null
+++ b/spec/ruby/library/win32ole/win32ole_method/event_spec.rb
@@ -0,0 +1,23 @@
+require_relative "../../../spec_helper"
+platform_is :windows do
+ require_relative '../fixtures/classes'
+ guard -> { WIN32OLESpecs::SYSTEM_MONITOR_CONTROL_AVAILABLE } do
+
+ describe "WIN32OLE::Method#event?" do
+ before :each do
+ ole_type = WIN32OLE::Type.new("System Monitor Control", "SystemMonitor")
+ @on_dbl_click_method = WIN32OLE::Method.new(ole_type, "OnDblClick")
+ end
+
+ it "raises ArgumentError if argument is given" do
+ -> { @on_dbl_click_method.event?(1) }.should.raise ArgumentError
+ end
+
+ it "returns true for System Monitor Control's 'OnDblClick' method" do
+ @on_dbl_click_method.event?.should == true
+ end
+
+ end
+ end
+
+end
diff --git a/spec/ruby/library/win32ole/win32ole_method/helpcontext_spec.rb b/spec/ruby/library/win32ole/win32ole_method/helpcontext_spec.rb
new file mode 100644
index 0000000000..88164bcd1f
--- /dev/null
+++ b/spec/ruby/library/win32ole/win32ole_method/helpcontext_spec.rb
@@ -0,0 +1,27 @@
+require_relative "../../../spec_helper"
+platform_is :windows do
+ require 'win32ole'
+
+ describe "WIN32OLE::Method#helpcontext" do
+ before :each do
+ ole_type = WIN32OLE::Type.new("Microsoft Scripting Runtime", "FileSystemObject")
+ @get_file_version = WIN32OLE::Method.new(ole_type, "GetFileVersion")
+ 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
+ -> { @get_file_version.helpcontext(1) }.should.raise ArgumentError
+ end
+
+ it "returns expected value for FileSystemObject's 'GetFileVersion' method" do
+ @get_file_version.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/ruby/library/win32ole/win32ole_method/helpfile_spec.rb b/spec/ruby/library/win32ole/win32ole_method/helpfile_spec.rb
new file mode 100644
index 0000000000..314f58c062
--- /dev/null
+++ b/spec/ruby/library/win32ole/win32ole_method/helpfile_spec.rb
@@ -0,0 +1,21 @@
+require_relative "../../../spec_helper"
+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
+ -> { @m_file_name.helpfile(1) }.should.raise 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/ruby/library/win32ole/win32ole_method/helpstring_spec.rb b/spec/ruby/library/win32ole/win32ole_method/helpstring_spec.rb
new file mode 100644
index 0000000000..2a93acdb37
--- /dev/null
+++ b/spec/ruby/library/win32ole/win32ole_method/helpstring_spec.rb
@@ -0,0 +1,21 @@
+require_relative "../../../spec_helper"
+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
+ -> { @m_file_name.helpstring(1) }.should.raise 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/ruby/library/win32ole/win32ole_method/invkind_spec.rb b/spec/ruby/library/win32ole/win32ole_method/invkind_spec.rb
new file mode 100644
index 0000000000..16e5412a36
--- /dev/null
+++ b/spec/ruby/library/win32ole/win32ole_method/invkind_spec.rb
@@ -0,0 +1,21 @@
+require_relative "../../../spec_helper"
+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
+ -> { @m_file_name.invkind(1) }.should.raise 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/ruby/library/win32ole/win32ole_method/invoke_kind_spec.rb b/spec/ruby/library/win32ole/win32ole_method/invoke_kind_spec.rb
new file mode 100644
index 0000000000..312860a9c5
--- /dev/null
+++ b/spec/ruby/library/win32ole/win32ole_method/invoke_kind_spec.rb
@@ -0,0 +1,21 @@
+require_relative "../../../spec_helper"
+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
+ -> { @m_file_name.invoke_kind(1) }.should.raise 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/ruby/library/win32ole/win32ole_method/name_spec.rb b/spec/ruby/library/win32ole/win32ole_method/name_spec.rb
new file mode 100644
index 0000000000..6e2e233a62
--- /dev/null
+++ b/spec/ruby/library/win32ole/win32ole_method/name_spec.rb
@@ -0,0 +1,12 @@
+require_relative "../../../spec_helper"
+require_relative 'shared/name'
+
+platform_is :windows do
+ require 'win32ole'
+
+ describe "WIN32OLE::Method#name" do
+ it_behaves_like :win32ole_method_name, :name
+
+ end
+
+end
diff --git a/spec/ruby/library/win32ole/win32ole_method/new_spec.rb b/spec/ruby/library/win32ole/win32ole_method/new_spec.rb
new file mode 100644
index 0000000000..d805d80128
--- /dev/null
+++ b/spec/ruby/library/win32ole/win32ole_method/new_spec.rb
@@ -0,0 +1,34 @@
+require_relative "../../../spec_helper"
+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
+ -> { WIN32OLE::Method.new(1, 2) }.should.raise TypeError
+ end
+
+ it "raises ArgumentError if only 1 argument is given" do
+ -> { WIN32OLE::Method.new("hello") }.should.raise ArgumentError
+ -> { WIN32OLE::Method.new(@ole_type) }.should.raise ArgumentError
+ end
+
+ it "returns a valid WIN32OLE::Method object" do
+ WIN32OLE::Method.new(@ole_type, "Open").should.is_a? WIN32OLE::Method
+ WIN32OLE::Method.new(@ole_type, "open").should.is_a? WIN32OLE::Method
+ end
+
+ it "raises WIN32OLE::RuntimeError if the method does not exist" do
+ -> { WIN32OLE::Method.new(@ole_type, "NonexistentMethod") }.should.raise WIN32OLE::RuntimeError
+ end
+
+ it "raises TypeError if second argument is not a String" do
+ -> { WIN32OLE::Method.new(@ole_type, 5) }.should.raise TypeError
+ end
+
+ end
+
+end
diff --git a/spec/ruby/library/win32ole/win32ole_method/offset_vtbl_spec.rb b/spec/ruby/library/win32ole/win32ole_method/offset_vtbl_spec.rb
new file mode 100644
index 0000000000..7c7e49ff3a
--- /dev/null
+++ b/spec/ruby/library/win32ole/win32ole_method/offset_vtbl_spec.rb
@@ -0,0 +1,22 @@
+require_relative "../../../spec_helper"
+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
+ -> { @m_file_name.offset_vtbl(1) }.should.raise ArgumentError
+ end
+
+ it "returns expected value for Scripting Runtime's 'name' method" do
+ pointer_size = PlatformGuard::POINTER_SIZE
+ @m_file_name.offset_vtbl.should == pointer_size
+ end
+
+ end
+
+end
diff --git a/spec/ruby/library/win32ole/win32ole_method/params_spec.rb b/spec/ruby/library/win32ole/win32ole_method/params_spec.rb
new file mode 100644
index 0000000000..40a543fa55
--- /dev/null
+++ b/spec/ruby/library/win32ole/win32ole_method/params_spec.rb
@@ -0,0 +1,29 @@
+require_relative "../../../spec_helper"
+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
+ -> { @m_file_name.params(1) }.should.raise ArgumentError
+ end
+
+ it "returns empty array for Scripting Runtime's 'name' method" do
+ @m_file_name.params.should.is_a? Array
+ @m_file_name.params.should.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 == true
+ @m_browse_for_folder.params.size == 4
+ end
+
+ end
+
+end
diff --git a/spec/ruby/library/win32ole/win32ole_method/return_type_detail_spec.rb b/spec/ruby/library/win32ole/win32ole_method/return_type_detail_spec.rb
new file mode 100644
index 0000000000..6d46c705c6
--- /dev/null
+++ b/spec/ruby/library/win32ole/win32ole_method/return_type_detail_spec.rb
@@ -0,0 +1,22 @@
+require_relative "../../../spec_helper"
+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
+ -> { @m_browse_for_folder.return_type_detail(1) }.should.raise ArgumentError
+ end
+
+ it "returns expected value for Shell Control's 'BrowseForFolder' method" do
+ @m_browse_for_folder.return_type_detail.should.is_a? Array
+ @m_browse_for_folder.return_type_detail.should == ['PTR', 'USERDEFINED', 'Folder']
+ end
+
+ end
+
+end
diff --git a/spec/ruby/library/win32ole/win32ole_method/return_type_spec.rb b/spec/ruby/library/win32ole/win32ole_method/return_type_spec.rb
new file mode 100644
index 0000000000..5afaf202f2
--- /dev/null
+++ b/spec/ruby/library/win32ole/win32ole_method/return_type_spec.rb
@@ -0,0 +1,21 @@
+require_relative "../../../spec_helper"
+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
+ -> { @m_file_name.return_type(1) }.should.raise 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/ruby/library/win32ole/win32ole_method/return_vtype_spec.rb b/spec/ruby/library/win32ole/win32ole_method/return_vtype_spec.rb
new file mode 100644
index 0000000000..882b5eaf43
--- /dev/null
+++ b/spec/ruby/library/win32ole/win32ole_method/return_vtype_spec.rb
@@ -0,0 +1,21 @@
+require_relative "../../../spec_helper"
+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
+ -> { @m_browse_for_folder.return_vtype(1) }.should.raise 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/ruby/library/win32ole/win32ole_method/shared/name.rb b/spec/ruby/library/win32ole/win32ole_method/shared/name.rb
new file mode 100644
index 0000000000..ef63999836
--- /dev/null
+++ b/spec/ruby/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
+ -> { @m_file_name.send(@method, 1) }.should.raise 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/ruby/library/win32ole/win32ole_method/size_opt_params_spec.rb b/spec/ruby/library/win32ole/win32ole_method/size_opt_params_spec.rb
new file mode 100644
index 0000000000..e03a97c6c0
--- /dev/null
+++ b/spec/ruby/library/win32ole/win32ole_method/size_opt_params_spec.rb
@@ -0,0 +1,21 @@
+require_relative "../../../spec_helper"
+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
+ -> { @m_browse_for_folder.size_opt_params(1) }.should.raise 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/ruby/library/win32ole/win32ole_method/size_params_spec.rb b/spec/ruby/library/win32ole/win32ole_method/size_params_spec.rb
new file mode 100644
index 0000000000..f64f77af46
--- /dev/null
+++ b/spec/ruby/library/win32ole/win32ole_method/size_params_spec.rb
@@ -0,0 +1,21 @@
+require_relative "../../../spec_helper"
+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
+ -> { @m_browse_for_folder.size_params(1) }.should.raise 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/ruby/library/win32ole/win32ole_method/to_s_spec.rb b/spec/ruby/library/win32ole/win32ole_method/to_s_spec.rb
new file mode 100644
index 0000000000..cdcc4525b1
--- /dev/null
+++ b/spec/ruby/library/win32ole/win32ole_method/to_s_spec.rb
@@ -0,0 +1,12 @@
+require_relative "../../../spec_helper"
+require_relative 'shared/name'
+
+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/ruby/library/win32ole/win32ole_method/visible_spec.rb b/spec/ruby/library/win32ole/win32ole_method/visible_spec.rb
new file mode 100644
index 0000000000..a04ac6570b
--- /dev/null
+++ b/spec/ruby/library/win32ole/win32ole_method/visible_spec.rb
@@ -0,0 +1,21 @@
+require_relative "../../../spec_helper"
+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
+ -> { @m_browse_for_folder.visible?(1) }.should.raise ArgumentError
+ end
+
+ it "returns true for Shell Control's 'BrowseForFolder' method" do
+ @m_browse_for_folder.visible?.should == true
+ end
+
+ end
+
+end