diff options
author | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-25 15:02:05 +0000 |
---|---|---|
committer | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-25 15:02:05 +0000 |
commit | 0dc342de848a642ecce8db697b8fecd83a63e117 (patch) | |
tree | 2b7ed4724aff1f86073e4740134bda9c4aac1a39 /trunk/test/win32ole/test_folderitem2_invokeverb.rb | |
parent | ef70cf7138ab8034b5b806f466e4b484b24f0f88 (diff) |
added tag v1_9_0_4
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_9_0_4@18845 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'trunk/test/win32ole/test_folderitem2_invokeverb.rb')
-rw-r--r-- | trunk/test/win32ole/test_folderitem2_invokeverb.rb | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/trunk/test/win32ole/test_folderitem2_invokeverb.rb b/trunk/test/win32ole/test_folderitem2_invokeverb.rb new file mode 100644 index 0000000000..07cb9802d6 --- /dev/null +++ b/trunk/test/win32ole/test_folderitem2_invokeverb.rb @@ -0,0 +1,89 @@ +# +# This script check that Win32OLE can execute InvokeVerb method of FolderItem2. +# + +begin + require 'win32ole' +rescue LoadError +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_file = @fso.GetTempName + @cfolder = @fso.getFolder(".") + f = @cfolder.CreateTextFile(@dummy_file) + f.close + @dummy_path = @cfolder.path + "\\" + @dummy_file + + @shell=WIN32OLE.new('Shell.Application') + @nsp = @shell.NameSpace(@cfolder.path) + @fi2 = @nsp.parseName(@dummy_file) + + @shortcut = nil + + # + # Search the 'Create Shortcut (&S)' string in Japanese. + # 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) + @cp = WIN32OLE.codepage + begin + WIN32OLE.codepage = 932 + rescue + end + @shortcut = verbs.collect{|verb| + verb.name + }.find {|name| + name.unpack("C*") == [131, 86, 131, 135, 129, 91, 131, 103, 131, 74, 131, 98, 131, 103, 130, 204, 141, 236, 144, 172, 40, 38, 83, 41] + # /.*\(\&S\)$/ =~ name + } + end + + def find_link(path) + arlink = [] + @cfolder.files.each do |f| + if /\.lnk$/ =~ f.path + linkinfo = @nsp.parseName(f.name).getLink + arlink.push f if linkinfo.path == path + end + end + arlink + end + + def test_invokeverb + links = find_link(@dummy_path) + assert(0, links.size) + + assert(@shortcut) + + # Now create shortcut to @dummy_path + 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 + WIN32OLE.codepage = @cp + end + + end +end |