From 7278c5d4d59498ec58da33069dbc3a01523c762e Mon Sep 17 00:00:00 2001 From: yag Date: Sun, 19 Feb 2017 11:12:47 +0800 Subject: [PATCH] unit test for Overflow and across AppDomains Exceptions reproduction --- src/embed_tests/pyinitialize.cs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/embed_tests/pyinitialize.cs b/src/embed_tests/pyinitialize.cs index bfd95aaab..ba2578266 100644 --- a/src/embed_tests/pyinitialize.cs +++ b/src/embed_tests/pyinitialize.cs @@ -36,5 +36,33 @@ public static void StartAndStopTwice() PythonEngine.Initialize(); PythonEngine.Shutdown(); } + + [Test] + [Ignore("System.OverflowException : Arithmetic operation resulted in an overflow")] + //[Ignore("System.ArgumentException : Cannot pass a GCHandle across AppDomains")] + public void ReInitialize() + { + string code = "from System import Int32\n"; + PythonEngine.Initialize(); + using (Py.GIL()) + { + //import any class or struct from .NET + PythonEngine.RunSimpleString(code); + } + PythonEngine.Shutdown(); + + PythonEngine.Initialize(); + using (Py.GIL()) + { + //Import a class/struct from .NET + //This class/struct must be imported during the first initialization. + PythonEngine.RunSimpleString(code); + //Create an instance of the class/struct + //System.OverflowException Exception will be raised here. + //If replacing int with Int64, OverflowException will be replaced with AppDomain exception. + PythonEngine.RunSimpleString("Int32(1)"); + } + PythonEngine.Shutdown(); + } } }