1
- using NUnit . Framework ;
2
- using Python . Runtime ;
3
1
using System ;
4
- using System . Collections . Generic ;
5
- using System . Linq ;
6
2
using System . Text ;
3
+ using NUnit . Framework ;
4
+ using Python . Runtime ;
7
5
8
6
namespace Python . EmbeddingTest
9
7
{
@@ -20,7 +18,7 @@ public void SetUp()
20
18
gs = PythonEngine . AcquireLock ( ) ;
21
19
22
20
/* redirect sys.stdout to a .NET object */
23
- this . stream = new outstream ( ) ;
21
+ stream = new outstream ( ) ;
24
22
}
25
23
26
24
[ TearDown ]
@@ -48,21 +46,23 @@ public void AssignNone()
48
46
public void AssignObject ( )
49
47
{
50
48
dynamic sys = Py . Import ( "sys" ) ;
51
- sys . stdout = this . stream ;
49
+ sys . stdout = stream ;
52
50
// Check whether there are the same object.
53
51
Assert . AreEqual ( sys . stdout , stream ) ;
54
52
55
- this . stream . clear ( ) ;
53
+ stream . clear ( ) ;
56
54
PythonEngine . RunSimpleString ( "print('Hello!')" ) ;
57
55
Assert . AreEqual ( stream . getvalue ( ) , "Hello!\n " ) ;
58
56
}
59
57
60
58
/// <summary>
61
59
/// When the .NET object was created and used in Python side.
62
60
/// </summary>
61
+ /// <remarks>
62
+ /// Needs Pull Request #376 in order for the exception below to show up.
63
+ /// </remarks>
63
64
[ Test ]
64
- //[Explicit]
65
- [ Ignore ]
65
+ [ Ignore ( "System.ArgumentException : Cannot pass a GCHandle across AppDomains" ) ]
66
66
public void AssignObjectInPython ( )
67
67
{
68
68
PythonEngine . RunSimpleString ( @"
@@ -71,7 +71,7 @@ from Python.EmbeddingTest import outstream
71
71
sys.stdout = outstream()
72
72
" ) ;
73
73
dynamic sys = Py . Import ( "sys" ) ;
74
- var obj = sys . stdout ;
74
+ dynamic obj = sys . stdout ;
75
75
Assert . IsTrue ( obj is outstream ) ;
76
76
}
77
77
@@ -84,7 +84,7 @@ public void AssignPyObject()
84
84
dynamic sys = Py . Import ( "sys" ) ;
85
85
dynamic io = Py . Import ( "io" ) ;
86
86
sys . stderr = io . StringIO ( ) ;
87
- var bb = sys . stderr ; //Get the PyObject
87
+ dynamic bb = sys . stderr ; //Get the PyObject
88
88
bb . write ( "Hello!" ) ;
89
89
Assert . AreEqual ( bb . getvalue ( ) . ToString ( ) , "Hello!" ) ;
90
90
}
@@ -96,20 +96,20 @@ public void AssignPyObject()
96
96
public void PassObjectInPython ( )
97
97
{
98
98
dynamic sys = Py . Import ( "sys" ) ;
99
- sys . stdout = this . stream ;
99
+ sys . stdout = stream ;
100
100
101
101
//Pass the .NET object in Python side
102
102
PythonEngine . RunSimpleString ( "import sys\n " +
103
- "from io import StringIO\n " +
104
- "sys.stderr = sys.stdout\n " ) ;
103
+ "from io import StringIO\n " +
104
+ "sys.stderr = sys.stdout\n " ) ;
105
105
106
106
//Compare in Python
107
- this . stream . clear ( ) ;
107
+ stream . clear ( ) ;
108
108
PythonEngine . RunSimpleString ( "import sys\n " +
109
- "print((sys.stderr is sys.stdout))" ) ;
110
- Assert . AreEqual ( this . stream . getvalue ( ) , "True\n " ) ;
109
+ "print((sys.stderr is sys.stdout))" ) ;
110
+ Assert . AreEqual ( stream . getvalue ( ) , "True\n " ) ;
111
111
112
- //compare in .NET
112
+ //Compare in .NET
113
113
Assert . AreEqual ( sys . stdout , sys . stderr ) ;
114
114
}
115
115
@@ -120,15 +120,15 @@ public void PassObjectInPython()
120
120
public void PassPyObjectInNet ( )
121
121
{
122
122
dynamic sys = Py . Import ( "sys" ) ;
123
- sys . stdout = this . stream ;
123
+ sys . stdout = stream ;
124
124
sys . stderr = sys . stdout ;
125
125
126
126
//Compare in Python
127
- var res = PythonEngine . RunString ( "import sys\n " +
128
- "print(sys.stderr is sys.stdout)" ) ;
127
+ PyObject res = PythonEngine . RunString ( "import sys\n " +
128
+ "print(sys.stderr is sys.stdout)" ) ;
129
129
Assert . AreEqual ( sys . stdout . getvalue ( ) . ToString ( ) , "False\n " ) ;
130
130
131
- //compare in .NET
131
+ //Compare in .NET
132
132
Assert . AreEqual ( sys . stdout , sys . stderr ) ;
133
133
}
134
134
}
@@ -138,25 +138,34 @@ public void PassPyObjectInNet()
138
138
/// </summary>
139
139
public class outstream
140
140
{
141
+ private StringBuilder buffer ;
142
+
141
143
public outstream ( )
142
144
{
143
- this . buffer = new StringBuilder ( ) ;
145
+ buffer = new StringBuilder ( ) ;
144
146
}
145
- private StringBuilder buffer ;
146
- public void write ( String str )
147
+
148
+ public void write ( string str )
149
+ {
150
+ buffer . Append ( str ) ;
151
+ }
152
+
153
+ public void flush ( )
154
+ {
155
+ }
156
+
157
+ public void close ( )
147
158
{
148
- this . buffer . Append ( str ) ;
149
159
}
150
- public void flush ( ) { }
151
- public void close ( ) { }
152
160
153
161
public void clear ( )
154
162
{
155
- this . buffer . Clear ( ) ;
163
+ buffer . Clear ( ) ;
156
164
}
165
+
157
166
public string getvalue ( )
158
167
{
159
- return this . buffer . ToString ( ) ;
168
+ return buffer . ToString ( ) ;
160
169
}
161
170
}
162
171
}
0 commit comments