| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 56e0baa commit b04658e
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -90,9 +90,17 @@ public static IInterfaceTest pass_through(IInterfaceTest s) | |||
| 90 | 90 | return s; | |
| 91 | 91 | } | |
| 92 | 92 | ||
| 93 | - public static void test_event(IInterfaceTest x, int value) | ||
| 93 | + public static int test_event(IInterfaceTest x, int value) | ||
| 94 | 94 | { | |
| 95 | + // reuse the event handler from eventtest.cs | ||
| 96 | + EventTest et = new EventTest(); | ||
| 97 | + x.TestEvent += et.GenericHandler; | ||
| 98 | + | ||
| 99 | + // raise the event (should trigger both python and managed handlers) | ||
| 95 | 100 | x.OnTestEvent(value); | |
| 101 | + | ||
| 102 | + x.TestEvent -= et.GenericHandler; | ||
| 103 | + return et.value; | ||
| 96 | 104 | } | |
| 97 | 105 | } | |
| 98 | 106 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -11,7 +11,7 @@ | |||
| 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) | |
| Back | FazBrowse Home | New Git URL |
0 commit comments