diff options
author | suke <suke@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-05-01 09:05:08 +0000 |
---|---|---|
committer | suke <suke@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-05-01 09:05:08 +0000 |
commit | 2bdd9d6eba7f2088e017ae80e0029c236eeb47e0 (patch) | |
tree | 495cb40485a055756292d2f34e0e04f1ffa14a0c /test/win32ole/test_folderitem2_invokeverb.rb | |
parent | 0cf4abaa278e338f3aa6e4633f06ef2da934ccf8 (diff) |
ext/win32ole/win32ole.c (add_event_call_back): should not
delete event handler when the event name is not entried.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10125 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/win32ole/test_folderitem2_invokeverb.rb')
-rw-r--r-- | test/win32ole/test_folderitem2_invokeverb.rb | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/test/win32ole/test_folderitem2_invokeverb.rb b/test/win32ole/test_folderitem2_invokeverb.rb new file mode 100644 index 0000000000..0707684681 --- /dev/null +++ b/test/win32ole/test_folderitem2_invokeverb.rb @@ -0,0 +1,80 @@ +# +# This script check that Win32OLE can execute InvokeVerb method of FolderItem2. +# + +begin + require 'win32ole' +rescue +end + +require 'test/unit' + +if defined?(WIN32OLE) + class TestInvokeVerb < Test::Unit::TestCase + def setup + # + # make dummy.txt file for InvokeVerb test. + # + + @fso = WIN32OLE.new('Scripting.FileSystemObject') + @dummy_path = @fso.GetTempName + @cfolder = @fso.getFolder(".") + f = @cfolder.CreateTextFile(@dummy_path) + f.close + @dummy_path = @cfolder.path + "\\" + @dummy_path + + @shell=WIN32OLE.new('Shell.Application') + @fi2 = @shell.NameSpace(@dummy_path).ParentFolder.ParseName(@shell.NameSpace(@dummy_path).Title) + @shortcut = nil + + # + # Search the 'Create Shortcut (&S)' string. + # Yes, I know the string in the Windows 2000 Japanese Edition. + # But I do not know about the string in any other Windows. + # + verbs = @fi2.verbs + verbs.extend(Enumerable) + @shortcut = verbs.collect{|verb| + verb.name + }.find {|name| + /.*\(\&S\)$/ =~ name + } + end + + def find_link(path) + arlink = [] + @cfolder.files.each do |f| + if /\.lnk$/ =~ f.path + linkinfo = @shell.NameSpace(f.path).self.getlink + arlink.push f if linkinfo.path == path + end + end + arlink + end + + def test_invokeverb + links = find_link(@dummy_path) + assert(0, links.size) + + # Now create shortcut to @dummy_path + assert(@shortcut) + arg = WIN32OLE_VARIANT.new(@shortcut) + @fi2.InvokeVerb(arg) + + # Now search shortcut to @dummy_path + links = find_link(@dummy_path) + assert(1, links.size) + @lpath = links[0].path + end + + def teardown + if @lpath + @fso.deleteFile(@lpath) + end + if @dummy_path + @fso.deleteFile(@dummy_path) + end + end + + end +end |