|
11 | 11 | clr.AddReference('System')
|
12 | 12 |
|
13 | 13 | import sys, os, string, unittest, types
|
14 |
| -from Python.Test import TestFunctions, SubClassTest, IInterfaceTest |
| 14 | +from Python.Test import TestFunctions, SubClassTest, IInterfaceTest, TestEventArgs |
15 | 15 | from System.Collections.Generic import List
|
16 | 16 | from System import NotImplementedException
|
17 | 17 |
|
@@ -48,6 +48,26 @@ def return_list(self):
|
48 | 48 | l.Add("C")
|
49 | 49 | return l
|
50 | 50 |
|
| 51 | +# class that implements IInterfaceTest.TestEvent |
| 52 | +class DerivedEventTest(IInterfaceTest): |
| 53 | + __namespace__ = "Python.Test" |
| 54 | + |
| 55 | + def __init__(self): |
| 56 | + self.event_handlers = [] |
| 57 | + |
| 58 | + # event handling |
| 59 | + def add_TestEvent(self, handler): |
| 60 | + self.event_handlers.append(handler) |
| 61 | + |
| 62 | + def remove_TestEvent(self, handler): |
| 63 | + self.event_handlers.remove(handler) |
| 64 | + |
| 65 | + def OnTestEvent(self, value): |
| 66 | + args = TestEventArgs(value) |
| 67 | + for handler in self.event_handlers: |
| 68 | + handler(self, args) |
| 69 | + |
| 70 | + |
51 | 71 | class SubClassTests(unittest.TestCase):
|
52 | 72 | """Test subclassing managed types"""
|
53 | 73 |
|
@@ -120,12 +140,18 @@ def handler(self, x, args):
|
120 | 140 |
|
121 | 141 | x = SubClassTest()
|
122 | 142 | x.TestEvent += event_handler.handler
|
123 |
| - TestFunctions.test_event(x, 1) |
| 143 | + self.assertEqual(TestFunctions.test_event(x, 1), 1) |
124 | 144 | self.assertEqual(event_handler.value, 1)
|
125 | 145 |
|
126 | 146 | i = InterfaceTestClass()
|
127 | 147 | self.assertRaises(NotImplementedException, TestFunctions.test_event, i, 2)
|
128 | 148 |
|
| 149 | + d = DerivedEventTest() |
| 150 | + d.add_TestEvent(event_handler.handler) |
| 151 | + self.assertEqual(TestFunctions.test_event(d, 3), 3) |
| 152 | + self.assertEqual(event_handler.value, 3) |
| 153 | + self.assertEqual(len(d.event_handlers), 1) |
| 154 | + |
129 | 155 |
|
130 | 156 | def test_suite():
|
131 | 157 | return unittest.makeSuite(SubClassTests)
|
|
0 commit comments