diff options
Diffstat (limited to 'spec/ruby/library/win32ole/win32ole_method')
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 |
