FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

GitHub Viewer

# -*- coding: utf-8 -*- # FIXME: This test module randomly passes/fails even if all tests are skipped. # Something fishy is going on with the Test fixtures. Behavior seen on CI on # both Linux and Windows # TODO: Remove delay of class creations. Adding SetUp/TearDown may help import unittest import System from Python.Test import (IInterfaceTest, SubClassTest, EventArgsTest, FunctionsTest) from System.Collections.Generic import List from _compat import range def interface_test_class_fixture(): """Delay creation of class until test starts.""" class InterfaceTestClass(IInterfaceTest): """class that implements the test interface""" __namespace__ = "Python.Test" def foo(self): return "InterfaceTestClass" def bar(self, x, i): return "/".join([x] * i) return InterfaceTestClass def derived_class_fixture(): """Delay creation of class until test starts.""" class DerivedClass(SubClassTest): """class that derives from a class deriving from IInterfaceTest""" __namespace__ = "Python.Test" def foo(self): return "DerivedClass" def base_foo(self): return SubClassTest.foo(self) def super_foo(self): return super(DerivedClass, self).foo() def bar(self, x, i): return "_".join([x] * i) def return_list(self): l = List[str]() l.Add("A") l.Add("B") l.Add("C") return l return DerivedClass def derived_event_test_class_fixture(): """Delay creation of class until test starts.""" class DerivedEventTest(IInterfaceTest): """class that implements IInterfaceTest.TestEvent""" __namespace__ = "Python.Test" def __init__(self): self.event_handlers = [] # event handling def add_TestEvent(self, handler): self.event_handlers.append(handler) def remove_TestEvent(self, handler): self.event_handlers.remove(handler) def OnTestEvent(self, value): args = EventArgsTest(value) for handler in self.event_handlers: handler(self, args) return DerivedEventTest class SubClassTests(unittest.TestCase): """Test sub-classing managed types""" @unittest.skip(reason="FIXME: test randomly pass/fails") def test_base_class(self): """Test base class managed type""" ob = SubClassTest() self.assertEqual(ob.foo(), "foo") self.assertEqual(FunctionsTest.test_foo(ob), "foo") self.assertEqual(ob.bar("bar", 2), "bar") self.assertEqual(FunctionsTest.test_bar(ob, "bar", 2), "bar") self.assertEqual(ob.not_overriden(), "not_overriden") self.assertEqual(list(ob.return_list()), ["a", "b", "c"]) self.assertEqual(list(SubClassTest.test_list(ob)), ["a", "b", "c"]) @unittest.skip(reason="FIXME: test randomly pass/fails") def test_interface(self): """Test python classes can derive from C# interfaces""" InterfaceTestClass = interface_test_class_fixture() ob = InterfaceTestClass() self.assertEqual(ob.foo(), "InterfaceTestClass") self.assertEqual(FunctionsTest.test_foo(ob), "InterfaceTestClass") self.assertEqual(ob.bar("bar", 2), "bar/bar") self.assertEqual(FunctionsTest.test_bar(ob, "bar", 2), "bar/bar") x = FunctionsTest.pass_through(ob) self.assertEqual(id(x), id(ob)) @unittest.skip(reason="FIXME: test randomly pass/fails") def test_derived_class(self): """Test python class derived from managed type""" DerivedClass = derived_class_fixture() ob = DerivedClass() self.assertEqual(ob.foo(), "DerivedClass") self.assertEqual(ob.base_foo(), "foo") self.assertEqual(ob.super_foo(), "foo") self.assertEqual(FunctionsTest.test_foo(ob), "DerivedClass") self.assertEqual(ob.bar("bar", 2), "bar_bar") self.assertEqual(FunctionsTest.test_bar(ob, "bar", 2), "bar_bar") self.assertEqual(ob.not_overriden(), "not_overriden") self.assertEqual(list(ob.return_list()), ["A", "B", "C"]) self.assertEqual(list(SubClassTest.test_list(ob)), ["A", "B", "C"]) x = FunctionsTest.pass_through(ob) self.assertEqual(id(x), id(ob)) @unittest.skip(reason="FIXME: test randomly pass/fails") def test_create_instance(self): """Test derived instances can be created from managed code""" DerivedClass = derived_class_fixture() ob = FunctionsTest.create_instance(DerivedClass) self.assertEqual(ob.foo(), "DerivedClass") self.assertEqual(FunctionsTest.test_foo(ob), "DerivedClass") self.assertEqual(ob.bar("bar", 2), "bar_bar") self.assertEqual(FunctionsTest.test_bar(ob, "bar", 2), "bar_bar") self.assertEqual(ob.not_overriden(), "not_overriden") x = FunctionsTest.pass_through(ob) self.assertEqual(id(x), id(ob)) InterfaceTestClass = interface_test_class_fixture() ob2 = FunctionsTest.create_instance(InterfaceTestClass) self.assertEqual(ob2.foo(), "InterfaceTestClass") self.assertEqual(FunctionsTest.test_foo(ob2), "InterfaceTestClass") self.assertEqual(ob2.bar("bar", 2), "bar/bar") self.assertEqual(FunctionsTest.test_bar(ob2, "bar", 2), "bar/bar") y = FunctionsTest.pass_through(ob2) self.assertEqual(id(y), id(ob2)) @unittest.skip(reason="FIXME: test randomly pass/fails") def test_events(self): class EventHandler(object): def handler(self, x, args): self.value = args.value event_handler = EventHandler() x = SubClassTest() x.TestEvent += event_handler.handler self.assertEqual(FunctionsTest.test_event(x, 1), 1) self.assertEqual(event_handler.value, 1) InterfaceTestClass = interface_test_class_fixture() i = InterfaceTestClass() with self.assertRaises(System.NotImplementedException): FunctionsTest.test_event(i, 2) DerivedEventTest = derived_event_test_class_fixture() d = DerivedEventTest() d.add_TestEvent(event_handler.handler) self.assertEqual(FunctionsTest.test_event(d, 3), 3) self.assertEqual(event_handler.value, 3) self.assertEqual(len(d.event_handlers), 1) def test_isinstance(self): a = [str(x) for x in range(0, 1000)] b = [System.String(x) for x in a] for x in a: self.assertFalse(isinstance(x, System.Object)) self.assertFalse(isinstance(x, System.String)) for x in b: self.assertTrue(isinstance(x, System.Object)) self.assertTrue(isinstance(x, System.String)) def test_suite(): return unittest.makeSuite(SubClassTests)

Back | FazBrowse Home | New Git URL