1- #if ! UNITY_WEBGL && ! UNITY_IOS && ! UNITY_ANDROID || FORCE_TEST_PYTHON
1+ #if ! UNITY_WEBGL && ! UNITY_IOS && ! UNITY_ANDROID || FORCE_TEST_PYTHON
22using NUnit . Framework ;
33using System ;
44using System . Runtime . InteropServices ;
@@ -25,35 +25,22 @@ public void ListGenericPythonTest()
2525 Assert . AreEqual ( res , 6 ) ;
2626 pythonEnv . Dispose ( ) ;
2727 }
28-
29- /* [Test]
28+
29+ [ Test ]
3030 public void StaticGenericMethodPythonTest ( )
3131 {
3232 var pythonEnv = new ScriptEnv ( new BackendPython ( ) ) ;
3333 string genericTypeName1 = pythonEnv . Eval < string > ( @"
3434(lambda: (
35- CS := CSharp(),
36- GenericTestClass := CS.load_type('Puerts.UnitTest.GenericTestClass'),
37- Int32 := CS.load_type('System.Int32'),
38- Utils := CS.load_type('Puerts.Utils'),
39- methods := Utils.GetMethodAndOverrideMethodByName($1, 'StaticGenericMethod'),
40- result := [None],
41- [
42- (
43- result.__setitem__(0, method.MakeGenericMethod(Int32).Invoke(None, None))
44- if method.GetParameters().Length == 0 and method.GetGenericArguments().Length == 1
45- else None
46- )
47- for i in range(methods.Length)
48- for method in [methods.GetValue(i)]
49- ],
50- result[0]
35+ GenericTestClass := puerts.load_type('Puerts.UnitTest.GenericTestClass'),
36+ Int32 := puerts.load_type('System.Int32'),
37+ puerts.generic_method(GenericTestClass, 'StaticGenericMethod', Int32)()
5138)[-1])()
5239" ) ;
5340 Assert . AreEqual ( genericTypeName1 , "Int32" ) ;
5441 pythonEnv . Dispose ( ) ;
5542 }
56- */
43+
5744
5845 [ Test ]
5946 public void ListRangePythonTest ( )
@@ -73,35 +60,6 @@ import System
7360
7461 pythonEnv . Dispose ( ) ;
7562 }
76- /*
77- [Test]
78- public void StaticGenericMethodInvalidClassPythonTest()
79- {
80- var pythonEnv = new ScriptEnv(new BackendPython());
81- try
82- {
83- pythonEnv.Eval<string>(@"
84- exec('''
85- CS = CSharp()
86- Int32 = CS.load_type('System.Int32')
87- Utils = CS.load_type('Puerts.Utils')
88- TypeExtensions = CS.load_type('Puerts.TypeExtensions')
89- UnitTest = CS.load_type('Puerts.UnitTest')
90- methods = Utils.GetMethodAndOverrideMethodByName($1, 'StaticGenericMethod')
91- result = ''
92- ''')
93- result
94- ");
95- }
96- catch (Exception e)
97- {
98- StringAssert.Contains("the class must be a constructor", e.Message);
99- pythonEnv.Dispose();
100- return;
101- }
102- pythonEnv.Dispose();
103- throw new Exception("unexpected reach here");
104- }
10563
10664 [ Test ]
10765 public void StaticGenericMethodInvalidGenericArgumentsPythonTest ( )
@@ -110,21 +68,11 @@ public void StaticGenericMethodInvalidGenericArgumentsPythonTest()
11068 try
11169 {
11270 pythonEnv . Eval < string > ( @"
113- exec('''
114- CS = CSharp()
115- GenericTestClass = CS.load_type('Puerts.UnitTest.GenericTestClass')
116- Utils = CS.load_type('Puerts.Utils')
117- TypeExtensions = CS.load_type('Puerts.TypeExtensions')
118- methods = Utils.GetMethodAndOverrideMethodByName($1, 'StaticGenericMethod')
119-
120- for i in range(methods.Length):
121- method = methods.GetValue(i)
122- if method.GetParameters().Length == 0 and method.GetGenericArguments().Length == 1:
123- generic_method = method.MakeGenericMethod(3)
124- result = generic_method.Invoke(None, None)
125- break
126- ''')
127- result
71+ (lambda: (
72+ GenericTestClass := puerts.load_type('Puerts.UnitTest.GenericTestClass'),
73+ func := puerts.generic_method(GenericTestClass, 'StaticGenericMethod', 3),
74+ func()
75+ )[-1])()
12876" ) ;
12977 Assert . True ( false ) ;
13078 }
@@ -143,24 +91,10 @@ public void StaticGenericMethodInvalidCallArgumentsPythonTest()
14391 {
14492 string genericTypeName1 = pythonEnv . Eval < string > ( @"
14593(lambda: (
146- CS := CSharp(),
147- GenericTestClass := CS.load_type('Puerts.UnitTest.GenericTestClass'),
148- Int32 := CS.load_type('System.Int32'),
149- Utils := CS.load_type('Puerts.Utils'),
150- TypeExtensions := CS.load_type('Puerts.TypeExtensions'),
151- methods := Utils.GetMethodAndOverrideMethodByName(GenericTestClass, 'StaticGenericMethod'),
152- result := [
153- (
154- generic_method := methods.GetValue(i).MakeGenericMethod(Int32),
155- Array := CS.load_type('System.Array'),
156- args := Array.CreateInstance(CS.load_type('System.Object'), 1),
157- args.SetValue('hello', 0),
158- generic_method.Invoke(None, args)
159- )[-1]
160- for i in range(methods.Length)
161- if methods.GetValue(i).GetParameters().Length == 1 and methods.GetValue(i).GetGenericArguments().Length == 1
162- ],
163- ''
94+ GenericTestClass := puerts.load_type('Puerts.UnitTest.GenericTestClass'),
95+ Int32 := puerts.load_type('System.Int32'),
96+ func := puerts.generic_method(GenericTestClass, 'StaticGenericMethod', Int32),
97+ func('hello')
16498)[-1])()
16599" ) ;
166100 } , "invalid arguments to StaticGenericMethod" ) ;
@@ -173,71 +107,62 @@ public void StaticGenericMethodTestOverloadPythonTest()
173107 var pythonEnv = new ScriptEnv ( new BackendPython ( ) ) ;
174108 string result = pythonEnv . Eval < string > ( @"
175109(lambda: (
176- CS := CSharp(),
177- GenericTestClass := CS.load_type('Puerts.UnitTest.GenericTestClass'),
178- Int32 := CS.load_type('System.Int32'),
179- Utils := CS.load_type('Puerts.Utils'),
180- methods := Utils.GetMethodAndOverrideMethodByName($1, 'StaticGenericMethod'),
181- Array := CS.load_type('System.Array'),
182- result := [None],
183- [
184- (
185- args := Array.CreateInstance(CS.load_type('System.Object'), 1),
186- args.SetValue(3, 0),
187- result.__setitem__(0, method.MakeGenericMethod(Int32).Invoke(None, args))
188- )[-1]
189- if (params := method.GetParameters()).Length == 1 and method.GetGenericArguments().Length == 1
190- else None
191- for i in range(methods.Length)
192- for method in [methods.GetValue(i)]
193- ],
194- result[0]
110+ GenericTestClass := puerts.load_type('Puerts.UnitTest.GenericTestClass'),
111+ Int32 := puerts.load_type('System.Int32'),
112+ func := puerts.generic_method(GenericTestClass, 'StaticGenericMethod', Int32),
113+ func(3)
195114)[-1])()
196115" ) ;
197116 Assert . AreEqual ( result , "3" ) ;
198117 pythonEnv . Dispose ( ) ;
199118 }
200119
201- [Test]
120+ /* [Test]
202121 public void InstanceGenericMethodPythonTest()
203122 {
204123 var pythonEnv = new ScriptEnv(new BackendPython());
205124 string result = pythonEnv.Eval<string>(@"
206125(lambda: (
207- CS := CSharp(),
208- GenericTestClass := CS.load_type('Puerts.UnitTest.GenericTestClass'),
209- Int32 := CS.load_type('System.Int32'),
126+ GenericTestClass := puerts.load_type('Puerts.UnitTest.GenericTestClass'),
127+ Int32 := puerts.load_type('System.Int32'),
210128 testobj := GenericTestClass(),
211129 setattr(testobj, 'stringProp', 'world'),
212- Utils := CS.load_type('Puerts.Utils'),
213- methods := Utils.GetMethodAndOverrideMethodByName($1, 'InstanceGenericMethod'),
214- result := [None],
215- [
216- (
217- result.__setitem__(0, method.MakeGenericMethod(Int32).Invoke(testobj, None))
218- if method.GetParameters().Length == 0 and method.GetGenericArguments().Length == 1
219- else None
220- )
221- for i in range(methods.Length)
222- for method in [methods.GetValue(i)]
223- ],
224- result[0]
130+ method := puerts.generic_method(GenericTestClass, 'InstanceGenericMethod', Int32),
131+ method(testobj)
225132)[-1])()
226133");
227134 Assert.AreEqual(result, "world_Int32");
228135 pythonEnv.Dispose();
229- }
136+ }*/
230137
231138 [ Test ]
232139 public void GenericAccessPythonTest ( )
233140 {
234141 var pythonEnv = new ScriptEnv ( new BackendPython ( ) ) ;
235142 string result = pythonEnv . Eval < string > ( @"
236143(lambda: (
237- CS := CSharp(),
238- GenericTestClass_1 := CS.load_type('Puerts.UnitTest.GenericTestClass`1'),
239- String := CS.load_type('System.String'),
240- GenericTestClass := GenericTestClass_1[String],
144+ GenericTestClass_T1 := puerts.load_type('Puerts.UnitTest.GenericTestClass`1'),
145+ String := puerts.load_type('System.String'),
146+ GenericTestClass := puerts.generic(GenericTestClass_T1, String),
147+ setattr(GenericTestClass, 'v', '6'),
148+ Inner := GenericTestClass.Inner,
149+ Inner(),
150+ Inner.stringProp
151+ )[-1])()
152+ " ) ;
153+ Assert . AreEqual ( result , "hello" ) ;
154+ pythonEnv . Dispose ( ) ;
155+ }
156+
157+ [ Test ]
158+ public void GenericAccessGetItemSyntaxPythonTest ( )
159+ {
160+ var pythonEnv = new ScriptEnv ( new BackendPython ( ) ) ;
161+ string result = pythonEnv . Eval < string > ( @"
162+ (lambda: (
163+ GenericTestClass_T1 := puerts.load_type('Puerts.UnitTest.GenericTestClass`1'),
164+ String := puerts.load_type('System.String'),
165+ GenericTestClass := GenericTestClass_T1[String],
241166 setattr(GenericTestClass, 'v', '6'),
242167 Inner := GenericTestClass.Inner,
243168 Inner(),
@@ -254,41 +179,20 @@ public void CreateFunctionByMethodInfoPythonTest()
254179 {
255180 var pythonEnv = new ScriptEnv ( new BackendPython ( ) ) ;
256181 string result = pythonEnv . Eval < string > ( @"
257- exec('''
258- CS = CSharp()
259- GenericTestClass = CS.load_type('Puerts.UnitTest.GenericTestClass')
260- Int32 = CS.load_type('System.Int32')
261- Utils = CS.load_type('Puerts.Utils')
262- TypeExtensions = CS.load_type('Puerts.TypeExtensions')
263- cls = TypeExtensions.GetType(GenericTestClass)
264- methods = Utils.GetMethodAndOverrideMethodByName($1, 'StaticGenericMethod')
265-
266- overloads = []
267- for i in range(methods.Length):
268- method = methods.GetValue(i)
269- overloads.append(method.MakeGenericMethod(Int32))
270-
271- result1 = ''''
272- result2 = ''''
273- for method in overloads:
274- params = method.GetParameters()
275- if params.Length == 0:
276- result1 = method.Invoke(None, None)
277- elif params.Length == 1:
278- Array = CS.load_type('System.Array')
279- args = Array.CreateInstance(CS.load_type('System.Object'), 1)
280- args.SetValue(1024, 0)
281- result2 = method.Invoke(None, args)
182+ (lambda: (
183+ GenericTestClass := puerts.load_type('Puerts.UnitTest.GenericTestClass'),
184+ Int32 := puerts.load_type('System.Int32'),
282185
283- result = result1 + result2
284- ')
285- result
186+ func := puerts.generic_method(GenericTestClass, 'StaticGenericMethod', Int32),
187+ result := func() + func(1024),
188+ result
189+ )[-1])()
286190" ) ;
287191 Assert . AreEqual ( result , "Int321024" ) ;
288192 pythonEnv . Dispose ( ) ;
289193 }
290194#endif
291- */
195+
292196 }
293197}
294198
0 commit comments