Skip to content

Commit 719f4c4

Browse files
committed
merge revision(s) 17827,17846:17848:
* gc.c: add rb_during_gc(). based on a patch from arton <artonx AT yahoo.co.jp> at [ruby-dev:35313]. * intern.h: ditto. * ext/win32ole/win32ole.c: avoid creating Ruby object during GC. thanks to arton <artonx AT yahoo.co.jp>. [ruby-dev:35313] * ext/win32ole/tests: add test_win32ole_event.rb, remove testOLEEVENT.rb * ext/win32ole/tests/testWIN32OLE.rb(test_convert_bignum): fix test. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@17926 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
1 parent 3dbc51f commit 719f4c4

File tree

9 files changed

+278
-98
lines changed

9 files changed

+278
-98
lines changed

ChangeLog

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,21 @@
1+
Mon Jul 7 12:23:05 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
2+
3+
* ext/win32ole/win32ole.c: avoid creating Ruby object during
4+
GC. thanks to arton <artonx AT yahoo.co.jp>. [ruby-dev:35313]
5+
6+
* ext/win32ole/tests: add test_win32ole_event.rb, remove
7+
testOLEEVENT.rb
8+
9+
* ext/win32ole/tests/testWIN32OLE.rb(test_convert_bignum):
10+
fix test.
11+
12+
Mon Jul 7 12:23:05 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
13+
14+
* gc.c: add rb_during_gc(). based on a patch from arton <artonx AT
15+
yahoo.co.jp> at [ruby-dev:35313].
16+
17+
* intern.h: ditto.
18+
119
Thu Jul 3 20:13:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
220

321
* marshal.c (w_object, marshal_dump, r_object0, marshal_load): search

ext/win32ole/tests/testOLEEVENT.rb

Lines changed: 0 additions & 91 deletions
This file was deleted.

ext/win32ole/tests/testWIN32OLE.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,8 @@ def test_convert_bignum
156156
sheet.range("A3").value = "=A1*10 + 9"
157157
assert_equal(9999999999, sheet.range("A2").value)
158158
assert_equal(9999999999, sheet.range("A3").value)
159-
159+
sheet.range("A4").value = "2008/03/04"
160+
assert_equal("2008/03/04 00:00:00", sheet.range("A4").value)
160161
ensure
161162
book.saved = true
162163
end
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
begin
2+
require 'win32ole'
3+
rescue LoadError
4+
end
5+
require 'test/unit'
6+
7+
if defined?(WIN32OLE_EVENT)
8+
class TestWIN32OLE_EVENT < Test::Unit::TestCase
9+
def create_temp_html
10+
fso = WIN32OLE.new('Scripting.FileSystemObject')
11+
dummy_file = fso.GetTempName + ".html"
12+
cfolder = fso.getFolder(".")
13+
f = cfolder.CreateTextFile(dummy_file)
14+
f.writeLine("<html><body>This is test HTML file for Win32OLE.</body></html>")
15+
f.close
16+
dummy_path = cfolder.path + "\\" + dummy_file
17+
dummy_path
18+
end
19+
20+
def setup
21+
@ie = WIN32OLE.new("InternetExplorer.Application")
22+
@ie.visible = true
23+
@event = ""
24+
@event2 = ""
25+
@event3 = ""
26+
@f = create_temp_html
27+
end
28+
29+
def default_handler(event, *args)
30+
@event += event
31+
end
32+
33+
def test_on_event
34+
ev = WIN32OLE_EVENT.new(@ie, 'DWebBrowserEvents')
35+
ev.on_event {|*args| default_handler(*args)}
36+
@ie.navigate("file:///#{@f}")
37+
while @ie.busy
38+
WIN32OLE_EVENT.new(@ie, 'DWebBrowserEvents')
39+
GC.start
40+
sleep 0.1
41+
end
42+
assert_match(/BeforeNavigate/, @event)
43+
assert_match(/NavigateComplete/, @event)
44+
end
45+
46+
def test_on_event2
47+
ev = WIN32OLE_EVENT.new(@ie, 'DWebBrowserEvents')
48+
ev.on_event('BeforeNavigate') {|*args| handler1}
49+
ev.on_event('BeforeNavigate') {|*args| handler2}
50+
@ie.navigate("file:///#{@f}")
51+
while @ie.busy
52+
sleep 0.1
53+
end
54+
assert_equal("handler2", @event2)
55+
end
56+
57+
def test_on_event3
58+
ev = WIN32OLE_EVENT.new(@ie, 'DWebBrowserEvents')
59+
ev.on_event {|*args| handler1}
60+
ev.on_event {|*args| handler2}
61+
@ie.navigate("file:///#{@f}")
62+
while @ie.busy
63+
sleep 0.1
64+
end
65+
assert_equal("handler2", @event2)
66+
end
67+
68+
def test_on_event4
69+
ev = WIN32OLE_EVENT.new(@ie, 'DWebBrowserEvents')
70+
ev.on_event{|*args| handler1}
71+
ev.on_event{|*args| handler2}
72+
ev.on_event('NavigateComplete'){|*args| handler3(*args)}
73+
@ie.navigate("file:///#{@f}")
74+
while @ie.busy
75+
sleep 0.1
76+
end
77+
assert(@event3!="")
78+
assert("handler2", @event2)
79+
end
80+
81+
def test_on_event5
82+
ev = WIN32OLE_EVENT.new(@ie, 'DWebBrowserEvents')
83+
ev.on_event {|*args| default_handler(*args)}
84+
ev.on_event('NavigateComplete'){|*args| handler3(*args)}
85+
@ie.navigate("file:///#{@f}")
86+
while @ie.busy
87+
sleep 0.1
88+
end
89+
assert_match(/BeforeNavigate/, @event)
90+
assert(/NavigateComplete/ !~ @event)
91+
assert(@event!="")
92+
end
93+
94+
def test_unadvise
95+
ev = WIN32OLE_EVENT.new(@ie, 'DWebBrowserEvents')
96+
ev.on_event {|*args| default_handler(*args)}
97+
@ie.navigate("file:///#{@f}")
98+
while @ie.busy
99+
sleep 0.1
100+
end
101+
assert_match(/BeforeNavigate/, @event)
102+
ev.unadvise
103+
@event = ""
104+
@ie.navigate("file:///#{@f}")
105+
while @ie.busy
106+
sleep 0.1
107+
end
108+
assert_equal("", @event);
109+
assert_raise(WIN32OLERuntimeError) {
110+
ev.on_event {|*args| default_handler(*args)}
111+
}
112+
end
113+
114+
def handler1
115+
@event2 = "handler1"
116+
end
117+
118+
def handler2
119+
@event2 = "handler2"
120+
end
121+
122+
def handler3(url)
123+
@event3 += url
124+
end
125+
126+
def teardown
127+
@ie.quit
128+
@ie = nil
129+
File.unlink(@f)
130+
GC.start
131+
end
132+
end
133+
end

ext/win32ole/tests/testall.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,5 @@
1212
require "test_ole_methods.rb"
1313
require "test_propertyputref.rb"
1414
require "test_word.rb"
15+
require "test_win32ole_event.rb"
1516
# require "testOLEEVENT"

0 commit comments

Comments
 (0)