FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
pythonnet/tests/test_interface.py at v3.0.3 · pythonnet/pythonnet · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
pythonnet
/
pythonnet
Public
Notifications
You must be signed in to change notification settings
Fork
780
Star
5.5k
Code
Issues
153
Pull requests
12
Discussions
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Discussions
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
pythonnet
/
tests
/
test_interface.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
163 lines (117 loc) · 4.8 KB
Breadcrumbs
pythonnet
/
tests
/
test_interface.py
Copy path
File metadata and controls
163 lines (117 loc) · 4.8 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# -*- coding: utf-8 -*-
"""Test CLR interface support."""
import
Python
.
Test
as
Test
import
pytest
from
.
utils
import
DictProxyType
def
test_interface_standard_attrs
():
"""Test standard class attributes."""
from
Python
.
Test
import
IPublicInterface
assert
IPublicInterface
.
__name__
==
'IPublicInterface'
assert
IPublicInterface
.
__module__
==
'Python.Test'
assert
isinstance
(
IPublicInterface
.
__dict__
,
DictProxyType
)
def
test_global_interface_visibility
():
"""Test visibility of module-level interfaces."""
from
Python
.
Test
import
IPublicInterface
assert
IPublicInterface
.
__name__
==
'IPublicInterface'
with
pytest
.
raises
(
ImportError
):
from
Python
.
Test
import
IInternalInterface
_
=
IInternalInterface
with
pytest
.
raises
(
AttributeError
):
_
=
Test
.
IInternalInterface
def
test_nested_interface_visibility
():
"""Test visibility of nested interfaces."""
from
Python
.
Test
import
InterfaceTest
ob
=
InterfaceTest
.
IPublic
assert
ob
.
__name__
==
'IPublic'
ob
=
InterfaceTest
.
IProtected
assert
ob
.
__name__
==
'IProtected'
with
pytest
.
raises
(
AttributeError
):
_
=
InterfaceTest
.
IInternal
with
pytest
.
raises
(
AttributeError
):
_
=
InterfaceTest
.
IPrivate
def
test_explicit_cast_to_interface
():
"""Test explicit cast to an interface."""
from
Python
.
Test
import
InterfaceTest
ob
=
InterfaceTest
()
assert
type
(
ob
).
__name__
==
'InterfaceTest'
assert
hasattr
(
ob
,
'HelloProperty'
)
i1
=
Test
.
ISayHello1
(
ob
)
assert
type
(
i1
).
__name__
==
'ISayHello1'
assert
hasattr
(
i1
,
'SayHello'
)
assert
i1
.
SayHello
()
==
'hello 1'
assert
not
hasattr
(
i1
,
'HelloProperty'
)
assert
i1
.
__implementation__
==
ob
assert
i1
.
__raw_implementation__
==
ob
i2
=
Test
.
ISayHello2
(
ob
)
assert
type
(
i2
).
__name__
==
'ISayHello2'
assert
i2
.
SayHello
()
==
'hello 2'
assert
hasattr
(
i2
,
'SayHello'
)
assert
not
hasattr
(
i2
,
'HelloProperty'
)
def
test_interface_object_returned_through_method
():
"""Test interface type is used if method return type is interface"""
from
Python
.
Test
import
InterfaceTest
ob
=
InterfaceTest
()
hello1
=
ob
.
GetISayHello1
()
assert
type
(
hello1
).
__name__
==
'ISayHello1'
assert
hello1
.
__implementation__
.
__class__
.
__name__
==
"InterfaceTest"
assert
hello1
.
SayHello
()
==
'hello 1'
def
test_interface_object_returned_through_out_param
():
"""Test interface type is used for out parameters of interface types"""
from
Python
.
Test
import
InterfaceTest
ob
=
InterfaceTest
()
hello2
=
ob
.
GetISayHello2
(
None
)
assert
type
(
hello2
).
__name__
==
'ISayHello2'
assert
hello2
.
SayHello
()
==
'hello 2'
def
test_interface_out_param_python_impl
():
from
Python
.
Test
import
IOutArg
,
OutArgCaller
class
MyOutImpl
(
IOutArg
):
__namespace__
=
"Python.Test"
def
MyMethod_Out
(
self
,
name
,
index
):
other_index
=
101
return
(
'MyName'
,
other_index
)
py_impl
=
MyOutImpl
()
assert
101
==
OutArgCaller
.
CallMyMethod_Out
(
py_impl
)
def
test_null_interface_object_returned
():
"""Test None is used also for methods with interface return types"""
from
Python
.
Test
import
InterfaceTest
ob
=
InterfaceTest
()
hello1
,
hello2
=
ob
.
GetNoSayHello
(
None
)
assert
hello1
is
None
assert
hello2
is
None
def
test_interface_array_returned
():
"""Test interface type used for methods returning interface arrays"""
from
Python
.
Test
import
InterfaceTest
ob
=
InterfaceTest
()
hellos
=
ob
.
GetISayHello1Array
()
assert
type
(
hellos
[
0
]).
__name__
==
'ISayHello1'
assert
hellos
[
0
].
__implementation__
.
__class__
.
__name__
==
"InterfaceTest"
def
test_implementation_access
():
"""Test the __implementation__ and __raw_implementation__ properties"""
import
System
clrVal
=
System
.
Int32
(
100
)
i
=
System
.
IComparable
(
clrVal
)
assert
100
==
i
.
__implementation__
assert
clrVal
==
i
.
__raw_implementation__
assert
i
.
__implementation__
!=
i
.
__raw_implementation__
def
test_interface_collection_iteration
():
"""Test interface type is used when iterating over interface collection"""
import
System
from
System
.
Collections
.
Generic
import
List
elem
=
System
.
IComparable
(
System
.
Int32
(
100
))
typed_list
=
List
[
System
.
IComparable
]()
typed_list
.
Add
(
elem
)
for
e
in
typed_list
:
assert
type
(
e
).
__name__
==
"IComparable"
untyped_list
=
System
.
Collections
.
ArrayList
()
untyped_list
.
Add
(
elem
)
for
e
in
untyped_list
:
assert
type
(
e
).
__name__
==
"int"
def
test_methods_of_Object_are_available
():
"""Test calling methods inherited from Object"""
import
System
clrVal
=
System
.
Int32
(
100
)
i
=
System
.
IComparable
(
clrVal
)
assert
i
.
Equals
(
clrVal
)
assert
clrVal
.
GetHashCode
()
==
i
.
GetHashCode
()
assert
clrVal
.
GetType
()
==
i
.
GetType
()
assert
clrVal
.
ToString
()
==
i
.
ToString
()
Back
|
FazBrowse Home
|
New Git URL