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
019514e8
Commit
019514e8
authored
Mar 28, 2006
by
Georg Brandl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Make test_augassign pass with -Qnew and convert to unittest.
parent
b921a844
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
325 additions
and
310 deletions
+325
-310
Lib/test/output/test_augassign
Lib/test/output/test_augassign
+0
-51
Lib/test/test_augassign.py
Lib/test/test_augassign.py
+325
-259
No files found.
Lib/test/output/test_augassign
deleted
100644 → 0
View file @
b921a844
test_augassign
6
[6]
6
[1, 2, 3, 4, 1, 2, 3, 4]
[1, 2, 1, 2, 3]
True
True
True
11
True
12
True
True
13
__add__ called
__radd__ called
__iadd__ called
__sub__ called
__rsub__ called
__isub__ called
__mul__ called
__rmul__ called
__imul__ called
__div__ called
__rdiv__ called
__idiv__ called
__floordiv__ called
__rfloordiv__ called
__ifloordiv__ called
__mod__ called
__rmod__ called
__imod__ called
__pow__ called
__rpow__ called
__ipow__ called
__or__ called
__ror__ called
__ior__ called
__and__ called
__rand__ called
__iand__ called
__xor__ called
__rxor__ called
__ixor__ called
__rshift__ called
__rrshift__ called
__irshift__ called
__lshift__ called
__rlshift__ called
__ilshift__ called
Lib/test/test_augassign.py
View file @
019514e8
# Augmented assignment test.
x
=
2
x
+=
1
x
*=
2
x
**=
2
x
-=
8
x
/=
2
x
//=
1
x
%=
12
x
&=
2
x
|=
5
x
^=
1
print
x
x
=
[
2
]
x
[
0
]
+=
1
x
[
0
]
*=
2
x
[
0
]
**=
2
x
[
0
]
-=
8
x
[
0
]
/=
2
x
[
0
]
//=
2
x
[
0
]
%=
12
x
[
0
]
&=
2
x
[
0
]
|=
5
x
[
0
]
^=
1
print
x
x
=
{
0
:
2
}
x
[
0
]
+=
1
x
[
0
]
*=
2
x
[
0
]
**=
2
x
[
0
]
-=
8
x
[
0
]
/=
2
x
[
0
]
//=
1
x
[
0
]
%=
12
x
[
0
]
&=
2
x
[
0
]
|=
5
x
[
0
]
^=
1
print
x
[
0
]
x
=
[
1
,
2
]
x
+=
[
3
,
4
]
x
*=
2
print
x
x
=
[
1
,
2
,
3
]
y
=
x
x
[
1
:
2
]
*=
2
y
[
1
:
2
]
+=
[
1
]
print
x
print
x
is
y
class
aug_test
:
def
__init__
(
self
,
value
):
self
.
val
=
value
def
__radd__
(
self
,
val
):
return
self
.
val
+
val
def
__add__
(
self
,
val
):
return
aug_test
(
self
.
val
+
val
)
class
aug_test2
(
aug_test
):
def
__iadd__
(
self
,
val
):
self
.
val
=
self
.
val
+
val
return
self
class
aug_test3
(
aug_test
):
def
__iadd__
(
self
,
val
):
return
aug_test3
(
self
.
val
+
val
)
x
=
aug_test
(
1
)
y
=
x
x
+=
10
print
isinstance
(
x
,
aug_test
)
print
y
is
not
x
print
x
.
val
x
=
aug_test2
(
2
)
y
=
x
x
+=
10
print
y
is
x
print
x
.
val
x
=
aug_test3
(
3
)
y
=
x
x
+=
10
print
isinstance
(
x
,
aug_test3
)
print
y
is
not
x
print
x
.
val
class
testall
:
def
__add__
(
self
,
val
):
print
"__add__ called"
def
__radd__
(
self
,
val
):
print
"__radd__ called"
def
__iadd__
(
self
,
val
):
print
"__iadd__ called"
return
self
def
__sub__
(
self
,
val
):
print
"__sub__ called"
def
__rsub__
(
self
,
val
):
print
"__rsub__ called"
def
__isub__
(
self
,
val
):
print
"__isub__ called"
return
self
def
__mul__
(
self
,
val
):
print
"__mul__ called"
def
__rmul__
(
self
,
val
):
print
"__rmul__ called"
def
__imul__
(
self
,
val
):
print
"__imul__ called"
return
self
def
__div__
(
self
,
val
):
print
"__div__ called"
def
__rdiv__
(
self
,
val
):
print
"__rdiv__ called"
def
__idiv__
(
self
,
val
):
print
"__idiv__ called"
return
self
def
__floordiv__
(
self
,
val
):
print
"__floordiv__ called"
return
self
def
__ifloordiv__
(
self
,
val
):
print
"__ifloordiv__ called"
return
self
def
__rfloordiv__
(
self
,
val
):
print
"__rfloordiv__ called"
return
self
def
__truediv__
(
self
,
val
):
print
"__truediv__ called"
return
self
def
__itruediv__
(
self
,
val
):
print
"__itruediv__ called"
return
self
def
__mod__
(
self
,
val
):
print
"__mod__ called"
def
__rmod__
(
self
,
val
):
print
"__rmod__ called"
def
__imod__
(
self
,
val
):
print
"__imod__ called"
return
self
def
__pow__
(
self
,
val
):
print
"__pow__ called"
def
__rpow__
(
self
,
val
):
print
"__rpow__ called"
def
__ipow__
(
self
,
val
):
print
"__ipow__ called"
return
self
def
__or__
(
self
,
val
):
print
"__or__ called"
def
__ror__
(
self
,
val
):
print
"__ror__ called"
def
__ior__
(
self
,
val
):
print
"__ior__ called"
return
self
def
__and__
(
self
,
val
):
print
"__and__ called"
def
__rand__
(
self
,
val
):
print
"__rand__ called"
def
__iand__
(
self
,
val
):
print
"__iand__ called"
return
self
def
__xor__
(
self
,
val
):
print
"__xor__ called"
def
__rxor__
(
self
,
val
):
print
"__rxor__ called"
def
__ixor__
(
self
,
val
):
print
"__ixor__ called"
return
self
def
__rshift__
(
self
,
val
):
print
"__rshift__ called"
def
__rrshift__
(
self
,
val
):
print
"__rrshift__ called"
def
__irshift__
(
self
,
val
):
print
"__irshift__ called"
return
self
def
__lshift__
(
self
,
val
):
print
"__lshift__ called"
def
__rlshift__
(
self
,
val
):
print
"__rlshift__ called"
def
__ilshift__
(
self
,
val
):
print
"__ilshift__ called"
return
self
x
=
testall
()
x
+
1
1
+
x
x
+=
1
x
-
1
1
-
x
x
-=
1
x
*
1
1
*
x
x
*=
1
if
1
/
2
==
0
:
x
/
1
1
/
x
x
/=
1
else
:
# True division is in effect, so "/" doesn't map to __div__ etc;
# but the canned expected-output file requires that those get called.
x
.
__div__
(
1
)
x
.
__rdiv__
(
1
)
x
.
__idiv__
(
1
)
x
//
1
1
//
x
x
//=
1
x
%
1
1
%
x
x
%=
1
x
**
1
1
**
x
x
**=
1
x
|
1
1
|
x
x
|=
1
x
&
1
1
&
x
x
&=
1
x
^
1
1
^
x
x
^=
1
x
>>
1
1
>>
x
x
>>=
1
x
<<
1
1
<<
x
x
<<=
1
from
test.test_support
import
run_unittest
import
unittest
class
AugAssignTest
(
unittest
.
TestCase
):
def
testBasic
(
self
):
x
=
2
x
+=
1
x
*=
2
x
**=
2
x
-=
8
x
//=
5
x
%=
3
x
&=
2
x
|=
5
x
^=
1
x
/=
2
if
1
/
2
==
0
:
# classic division
self
.
assertEquals
(
x
,
3
)
else
:
# new-style division (with -Qnew)
self
.
assertEquals
(
x
,
3.0
)
def
testInList
(
self
):
x
=
[
2
]
x
[
0
]
+=
1
x
[
0
]
*=
2
x
[
0
]
**=
2
x
[
0
]
-=
8
x
[
0
]
//=
5
x
[
0
]
%=
3
x
[
0
]
&=
2
x
[
0
]
|=
5
x
[
0
]
^=
1
x
[
0
]
/=
2
if
1
/
2
==
0
:
self
.
assertEquals
(
x
[
0
],
3
)
else
:
self
.
assertEquals
(
x
[
0
],
3.0
)
def
testInDict
(
self
):
x
=
{
0
:
2
}
x
[
0
]
+=
1
x
[
0
]
*=
2
x
[
0
]
**=
2
x
[
0
]
-=
8
x
[
0
]
//=
5
x
[
0
]
%=
3
x
[
0
]
&=
2
x
[
0
]
|=
5
x
[
0
]
^=
1
x
[
0
]
/=
2
if
1
/
2
==
0
:
self
.
assertEquals
(
x
[
0
],
3
)
else
:
self
.
assertEquals
(
x
[
0
],
3.0
)
def
testSequences
(
self
):
x
=
[
1
,
2
]
x
+=
[
3
,
4
]
x
*=
2
self
.
assertEquals
(
x
,
[
1
,
2
,
3
,
4
,
1
,
2
,
3
,
4
])
x
=
[
1
,
2
,
3
]
y
=
x
x
[
1
:
2
]
*=
2
y
[
1
:
2
]
+=
[
1
]
self
.
assertEquals
(
x
,
[
1
,
2
,
1
,
2
,
3
])
self
.
assert_
(
x
is
y
)
def
testCustomMethods1
(
self
):
class
aug_test
:
def
__init__
(
self
,
value
):
self
.
val
=
value
def
__radd__
(
self
,
val
):
return
self
.
val
+
val
def
__add__
(
self
,
val
):
return
aug_test
(
self
.
val
+
val
)
class
aug_test2
(
aug_test
):
def
__iadd__
(
self
,
val
):
self
.
val
=
self
.
val
+
val
return
self
class
aug_test3
(
aug_test
):
def
__iadd__
(
self
,
val
):
return
aug_test3
(
self
.
val
+
val
)
x
=
aug_test
(
1
)
y
=
x
x
+=
10
self
.
assert_
(
isinstance
(
x
,
aug_test
))
self
.
assert_
(
y
is
not
x
)
self
.
assertEquals
(
x
.
val
,
11
)
x
=
aug_test2
(
2
)
y
=
x
x
+=
10
self
.
assert_
(
y
is
x
)
self
.
assertEquals
(
x
.
val
,
12
)
x
=
aug_test3
(
3
)
y
=
x
x
+=
10
self
.
assert_
(
isinstance
(
x
,
aug_test3
))
self
.
assert_
(
y
is
not
x
)
self
.
assertEquals
(
x
.
val
,
13
)
def
testCustomMethods2
(
test_self
):
output
=
[]
class
testall
:
def
__add__
(
self
,
val
):
output
.
append
(
"__add__ called"
)
def
__radd__
(
self
,
val
):
output
.
append
(
"__radd__ called"
)
def
__iadd__
(
self
,
val
):
output
.
append
(
"__iadd__ called"
)
return
self
def
__sub__
(
self
,
val
):
output
.
append
(
"__sub__ called"
)
def
__rsub__
(
self
,
val
):
output
.
append
(
"__rsub__ called"
)
def
__isub__
(
self
,
val
):
output
.
append
(
"__isub__ called"
)
return
self
def
__mul__
(
self
,
val
):
output
.
append
(
"__mul__ called"
)
def
__rmul__
(
self
,
val
):
output
.
append
(
"__rmul__ called"
)
def
__imul__
(
self
,
val
):
output
.
append
(
"__imul__ called"
)
return
self
def
__div__
(
self
,
val
):
output
.
append
(
"__div__ called"
)
def
__rdiv__
(
self
,
val
):
output
.
append
(
"__rdiv__ called"
)
def
__idiv__
(
self
,
val
):
output
.
append
(
"__idiv__ called"
)
return
self
def
__floordiv__
(
self
,
val
):
output
.
append
(
"__floordiv__ called"
)
return
self
def
__ifloordiv__
(
self
,
val
):
output
.
append
(
"__ifloordiv__ called"
)
return
self
def
__rfloordiv__
(
self
,
val
):
output
.
append
(
"__rfloordiv__ called"
)
return
self
def
__truediv__
(
self
,
val
):
output
.
append
(
"__truediv__ called"
)
return
self
def
__itruediv__
(
self
,
val
):
output
.
append
(
"__itruediv__ called"
)
return
self
def
__mod__
(
self
,
val
):
output
.
append
(
"__mod__ called"
)
def
__rmod__
(
self
,
val
):
output
.
append
(
"__rmod__ called"
)
def
__imod__
(
self
,
val
):
output
.
append
(
"__imod__ called"
)
return
self
def
__pow__
(
self
,
val
):
output
.
append
(
"__pow__ called"
)
def
__rpow__
(
self
,
val
):
output
.
append
(
"__rpow__ called"
)
def
__ipow__
(
self
,
val
):
output
.
append
(
"__ipow__ called"
)
return
self
def
__or__
(
self
,
val
):
output
.
append
(
"__or__ called"
)
def
__ror__
(
self
,
val
):
output
.
append
(
"__ror__ called"
)
def
__ior__
(
self
,
val
):
output
.
append
(
"__ior__ called"
)
return
self
def
__and__
(
self
,
val
):
output
.
append
(
"__and__ called"
)
def
__rand__
(
self
,
val
):
output
.
append
(
"__rand__ called"
)
def
__iand__
(
self
,
val
):
output
.
append
(
"__iand__ called"
)
return
self
def
__xor__
(
self
,
val
):
output
.
append
(
"__xor__ called"
)
def
__rxor__
(
self
,
val
):
output
.
append
(
"__rxor__ called"
)
def
__ixor__
(
self
,
val
):
output
.
append
(
"__ixor__ called"
)
return
self
def
__rshift__
(
self
,
val
):
output
.
append
(
"__rshift__ called"
)
def
__rrshift__
(
self
,
val
):
output
.
append
(
"__rrshift__ called"
)
def
__irshift__
(
self
,
val
):
output
.
append
(
"__irshift__ called"
)
return
self
def
__lshift__
(
self
,
val
):
output
.
append
(
"__lshift__ called"
)
def
__rlshift__
(
self
,
val
):
output
.
append
(
"__rlshift__ called"
)
def
__ilshift__
(
self
,
val
):
output
.
append
(
"__ilshift__ called"
)
return
self
x
=
testall
()
x
+
1
1
+
x
x
+=
1
x
-
1
1
-
x
x
-=
1
x
*
1
1
*
x
x
*=
1
if
1
/
2
==
0
:
x
/
1
1
/
x
x
/=
1
else
:
# True division is in effect, so "/" doesn't map to __div__ etc;
# but the canned expected-output file requires that those get called.
x
.
__div__
(
1
)
x
.
__rdiv__
(
1
)
x
.
__idiv__
(
1
)
x
//
1
1
//
x
x
//=
1
x
%
1
1
%
x
x
%=
1
x
**
1
1
**
x
x
**=
1
x
|
1
1
|
x
x
|=
1
x
&
1
1
&
x
x
&=
1
x
^
1
1
^
x
x
^=
1
x
>>
1
1
>>
x
x
>>=
1
x
<<
1
1
<<
x
x
<<=
1
test_self
.
assertEquals
(
output
,
'''
\
__add__ called
__radd__ called
__iadd__ called
__sub__ called
__rsub__ called
__isub__ called
__mul__ called
__rmul__ called
__imul__ called
__div__ called
__rdiv__ called
__idiv__ called
__floordiv__ called
__rfloordiv__ called
__ifloordiv__ called
__mod__ called
__rmod__ called
__imod__ called
__pow__ called
__rpow__ called
__ipow__ called
__or__ called
__ror__ called
__ior__ called
__and__ called
__rand__ called
__iand__ called
__xor__ called
__rxor__ called
__ixor__ called
__rshift__ called
__rrshift__ called
__irshift__ called
__lshift__ called
__rlshift__ called
__ilshift__ called
'''
.
splitlines
())
def
test_main
():
run_unittest
(
AugAssignTest
)
if
__name__
==
'__main__'
:
test_main
()
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