Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
896632ea
Commit
896632ea
authored
Feb 08, 2016
by
Serhiy Storchaka
Browse files
Options
Browse Files
Download
Plain Diff
Issue #25983: Added tests for multi-argument type().
parents
b8e5eb31
763f9f0d
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
155 additions
and
0 deletions
+155
-0
Lib/test/test_builtin.py
Lib/test/test_builtin.py
+155
-0
No files found.
Lib/test/test_builtin.py
View file @
896632ea
...
...
@@ -1668,6 +1668,161 @@ class ShutdownTest(unittest.TestCase):
self
.
assertEqual
([
"before"
,
"after"
],
out
.
decode
().
splitlines
())
class
TestType
(
unittest
.
TestCase
):
def
test_new_type
(
self
):
A
=
type
(
'A'
,
(),
{})
self
.
assertEqual
(
A
.
__name__
,
'A'
)
self
.
assertEqual
(
A
.
__qualname__
,
'A'
)
self
.
assertEqual
(
A
.
__module__
,
__name__
)
self
.
assertEqual
(
A
.
__bases__
,
(
object
,))
self
.
assertIs
(
A
.
__base__
,
object
)
x
=
A
()
self
.
assertIs
(
type
(
x
),
A
)
self
.
assertIs
(
x
.
__class__
,
A
)
class
B
:
def
ham
(
self
):
return
'ham%d'
%
self
C
=
type
(
'C'
,
(
B
,
int
),
{
'spam'
:
lambda
self
:
'spam%s'
%
self
})
self
.
assertEqual
(
C
.
__name__
,
'C'
)
self
.
assertEqual
(
C
.
__qualname__
,
'C'
)
self
.
assertEqual
(
C
.
__module__
,
__name__
)
self
.
assertEqual
(
C
.
__bases__
,
(
B
,
int
))
self
.
assertIs
(
C
.
__base__
,
int
)
self
.
assertIn
(
'spam'
,
C
.
__dict__
)
self
.
assertNotIn
(
'ham'
,
C
.
__dict__
)
x
=
C
(
42
)
self
.
assertEqual
(
x
,
42
)
self
.
assertIs
(
type
(
x
),
C
)
self
.
assertIs
(
x
.
__class__
,
C
)
self
.
assertEqual
(
x
.
ham
(),
'ham42'
)
self
.
assertEqual
(
x
.
spam
(),
'spam42'
)
self
.
assertEqual
(
x
.
to_bytes
(
2
,
'little'
),
b'
\
x2a
\
x00
'
)
def
test_type_new_keywords
(
self
):
class
B
:
def
ham
(
self
):
return
'ham%d'
%
self
C
=
type
.
__new__
(
type
,
name
=
'C'
,
bases
=
(
B
,
int
),
dict
=
{
'spam'
:
lambda
self
:
'spam%s'
%
self
})
self
.
assertEqual
(
C
.
__name__
,
'C'
)
self
.
assertEqual
(
C
.
__qualname__
,
'C'
)
self
.
assertEqual
(
C
.
__module__
,
__name__
)
self
.
assertEqual
(
C
.
__bases__
,
(
B
,
int
))
self
.
assertIs
(
C
.
__base__
,
int
)
self
.
assertIn
(
'spam'
,
C
.
__dict__
)
self
.
assertNotIn
(
'ham'
,
C
.
__dict__
)
def
test_type_name
(
self
):
for
name
in
'A'
,
'
\
xc4
'
,
'
\
U0001f40d
'
,
'B.A'
,
'42'
,
''
:
with
self
.
subTest
(
name
=
name
):
A
=
type
(
name
,
(),
{})
self
.
assertEqual
(
A
.
__name__
,
name
)
self
.
assertEqual
(
A
.
__qualname__
,
name
)
self
.
assertEqual
(
A
.
__module__
,
__name__
)
with
self
.
assertRaises
(
ValueError
):
type
(
'A
\
x00
B'
,
(),
{})
with
self
.
assertRaises
(
ValueError
):
type
(
'A
\
udcdc
B'
,
(),
{})
with
self
.
assertRaises
(
TypeError
):
type
(
b'A'
,
(),
{})
C
=
type
(
'C'
,
(),
{})
for
name
in
'A'
,
'
\
xc4
'
,
'
\
U0001f40d
'
,
'B.A'
,
'42'
,
''
:
with
self
.
subTest
(
name
=
name
):
C
.
__name__
=
name
self
.
assertEqual
(
C
.
__name__
,
name
)
self
.
assertEqual
(
C
.
__qualname__
,
'C'
)
self
.
assertEqual
(
C
.
__module__
,
__name__
)
A
=
type
(
'C'
,
(),
{})
with
self
.
assertRaises
(
ValueError
):
A
.
__name__
=
'A
\
x00
B'
self
.
assertEqual
(
A
.
__name__
,
'C'
)
with
self
.
assertRaises
(
ValueError
):
A
.
__name__
=
'A
\
udcdc
B'
self
.
assertEqual
(
A
.
__name__
,
'C'
)
with
self
.
assertRaises
(
TypeError
):
A
.
__name__
=
b'A'
self
.
assertEqual
(
A
.
__name__
,
'C'
)
def
test_type_qualname
(
self
):
A
=
type
(
'A'
,
(),
{
'__qualname__'
:
'B.C'
})
self
.
assertEqual
(
A
.
__name__
,
'A'
)
self
.
assertEqual
(
A
.
__qualname__
,
'B.C'
)
self
.
assertEqual
(
A
.
__module__
,
__name__
)
with
self
.
assertRaises
(
TypeError
):
type
(
'A'
,
(),
{
'__qualname__'
:
b'B'
})
self
.
assertEqual
(
A
.
__qualname__
,
'B.C'
)
A
.
__qualname__
=
'D.E'
self
.
assertEqual
(
A
.
__name__
,
'A'
)
self
.
assertEqual
(
A
.
__qualname__
,
'D.E'
)
with
self
.
assertRaises
(
TypeError
):
A
.
__qualname__
=
b'B'
self
.
assertEqual
(
A
.
__qualname__
,
'D.E'
)
def
test_type_doc
(
self
):
for
doc
in
'x'
,
'
\
xc4
'
,
'
\
U0001f40d
'
,
'x
\
x00
y'
,
b'x'
,
42
,
None
:
A
=
type
(
'A'
,
(),
{
'__doc__'
:
doc
})
self
.
assertEqual
(
A
.
__doc__
,
doc
)
with
self
.
assertRaises
(
UnicodeEncodeError
):
type
(
'A'
,
(),
{
'__doc__'
:
'x
\
udcdc
y'
})
A
=
type
(
'A'
,
(),
{})
self
.
assertEqual
(
A
.
__doc__
,
None
)
for
doc
in
'x'
,
'
\
xc4
'
,
'
\
U0001f40d
'
,
'x
\
x00
y'
,
'x
\
udcdc
y'
,
b'x'
,
42
,
None
:
A
.
__doc__
=
doc
self
.
assertEqual
(
A
.
__doc__
,
doc
)
def
test_bad_args
(
self
):
with
self
.
assertRaises
(
TypeError
):
type
()
with
self
.
assertRaises
(
TypeError
):
type
(
'A'
,
())
with
self
.
assertRaises
(
TypeError
):
type
(
'A'
,
(),
{},
())
with
self
.
assertRaises
(
TypeError
):
type
(
'A'
,
(),
dict
=
{})
with
self
.
assertRaises
(
TypeError
):
type
(
'A'
,
[],
{})
with
self
.
assertRaises
(
TypeError
):
type
(
'A'
,
(),
types
.
MappingProxyType
({}))
with
self
.
assertRaises
(
TypeError
):
type
(
'A'
,
(
None
,),
{})
with
self
.
assertRaises
(
TypeError
):
type
(
'A'
,
(
bool
,),
{})
with
self
.
assertRaises
(
TypeError
):
type
(
'A'
,
(
int
,
str
),
{})
def
test_bad_slots
(
self
):
with
self
.
assertRaises
(
TypeError
):
type
(
'A'
,
(),
{
'__slots__'
:
b'x'
})
with
self
.
assertRaises
(
TypeError
):
type
(
'A'
,
(
int
,),
{
'__slots__'
:
'x'
})
with
self
.
assertRaises
(
TypeError
):
type
(
'A'
,
(),
{
'__slots__'
:
''
})
with
self
.
assertRaises
(
TypeError
):
type
(
'A'
,
(),
{
'__slots__'
:
'42'
})
with
self
.
assertRaises
(
TypeError
):
type
(
'A'
,
(),
{
'__slots__'
:
'x
\
x00
y'
})
with
self
.
assertRaises
(
ValueError
):
type
(
'A'
,
(),
{
'__slots__'
:
'x'
,
'x'
:
0
})
with
self
.
assertRaises
(
TypeError
):
type
(
'A'
,
(),
{
'__slots__'
:
(
'__dict__'
,
'__dict__'
)})
with
self
.
assertRaises
(
TypeError
):
type
(
'A'
,
(),
{
'__slots__'
:
(
'__weakref__'
,
'__weakref__'
)})
class
B
:
pass
with
self
.
assertRaises
(
TypeError
):
type
(
'A'
,
(
B
,),
{
'__slots__'
:
'__dict__'
})
with
self
.
assertRaises
(
TypeError
):
type
(
'A'
,
(
B
,),
{
'__slots__'
:
'__weakref__'
})
def
load_tests
(
loader
,
tests
,
pattern
):
from
doctest
import
DocTestSuite
tests
.
addTest
(
DocTestSuite
(
builtins
))
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment