blob: 09011586428b6893f5a22693077e291ea8b02b2a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
require 'rubyunit'
require 'win32ole'
class TestWIN32OLE_EVENT < RUNIT::TestCase
def setup
@excel = WIN32OLE.new("Excel.Application")
@excel.visible = true
@event = ""
@event2 = ""
end
def test_on_event
book = @excel.workbooks.Add
value = ""
begin
ev = WIN32OLE_EVENT.new(book, 'WorkbookEvents')
ev.on_event('SheetChange'){|arg1, arg2|
begin
value = arg1.value
rescue
value = $!.message
end
}
book.Worksheets(1).Range("A1").value = "OK"
ensure
book.saved = true
end
assert_equal("OK", value)
end
def handler1
@event += "handler1"
end
def handler2
@event += "handler2"
end
def handler3
@event += "handler3"
end
def test_on_event2
book = @excel.workbooks.Add
begin
ev = WIN32OLE_EVENT.new(book, 'WorkbookEvents')
ev.on_event('SheetChange'){|arg1, arg2|
handler1
}
ev.on_event('SheetChange'){|arg1, arg2|
handler2
}
book.Worksheets(1).Range("A1").value = "OK"
ensure
book.saved = true
end
assert_equal("handler2", @event)
end
def test_on_event3
book = @excel.workbooks.Add
begin
ev = WIN32OLE_EVENT.new(book, 'WorkbookEvents')
ev.on_event{ handler1 }
ev.on_event{ handler2 }
book.Worksheets(1).Range("A1").value = "OK"
ensure
book.saved = true
end
assert_equal("handler2", @event)
end
def test_on_event4
book = @excel.workbooks.Add
begin
ev = WIN32OLE_EVENT.new(book, 'WorkbookEvents')
ev.on_event{ handler1 }
ev.on_event{ handler2 }
ev.on_event('SheetChange'){|arg1, arg2| handler3 }
book.Worksheets(1).Range("A1").value = "OK"
ensure
book.saved = true
end
assert_equal("handler3", @event)
end
def teardown
@excel.quit
@excel = nil
GC.start
end
end
|