You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-04 01:09:52 +08:00
Better test coverage of operators (in 2.7 and 3.0)
This commit is contained in:
Binary file not shown.
Binary file not shown.
BIN
test/bytecode_2.7_run/15_mixed_expressions.pyc
Normal file
BIN
test/bytecode_2.7_run/15_mixed_expressions.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_3.0_run/15_mixed_expressions.pyc
Normal file
BIN
test/bytecode_3.0_run/15_mixed_expressions.pyc
Normal file
Binary file not shown.
@@ -1,4 +1,4 @@
|
|||||||
# Tests BINARY_TRUE_DIVIDE and INPLACE_TRUE_DIVIDE
|
# Tests BINARY_TRUE_DIVIDE and INPLACE_TRUE_DIVIDE
|
||||||
from __future__ import division # needed on 2.6 and 2.7
|
from __future__ import division # needed on 2.2 .. 2.7
|
||||||
x = len(__file__) / 1
|
x = len(__file__) / 1
|
||||||
x /= 1
|
x /= 1
|
||||||
|
53
test/simple_source/expression/15_mixed_expressions.py
Normal file
53
test/simple_source/expression/15_mixed_expressions.py
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Covers a large number of operators
|
||||||
|
#
|
||||||
|
# This code is RUNNABLE!
|
||||||
|
from __future__ import division # needed on 2.2 .. 2.7
|
||||||
|
|
||||||
|
import sys
|
||||||
|
PYTHON_VERSION = sys.version_info[0] + (sys.version_info[1] / 10.0)
|
||||||
|
|
||||||
|
# some floats (from 01_float.py)
|
||||||
|
|
||||||
|
x = 1e300
|
||||||
|
assert 0.0 == x * 0
|
||||||
|
assert x * 1e300 == float("inf")
|
||||||
|
assert str(float("inf") * 0.0) == "nan"
|
||||||
|
assert str(float("-inf") * 0.0) == "nan"
|
||||||
|
assert -1e300 * 1e300 == float("-inf")
|
||||||
|
|
||||||
|
# Complex (adapted from 02_complex.py)
|
||||||
|
y = 5j
|
||||||
|
assert y ** 2 == -25
|
||||||
|
y **= 3
|
||||||
|
assert y == (-0-125j)
|
||||||
|
|
||||||
|
|
||||||
|
# Tests BINARY_TRUE_DIVIDE and INPLACE_TRUE_DIVIDE (from 02_try_divide.py)
|
||||||
|
x = 2
|
||||||
|
assert 4 / x == 2
|
||||||
|
|
||||||
|
if PYTHON_VERSION >= 2.2:
|
||||||
|
x = 5
|
||||||
|
assert x / 2 == 2.5
|
||||||
|
x = 3
|
||||||
|
x /= 2
|
||||||
|
assert x == 1.5
|
||||||
|
|
||||||
|
x = 2
|
||||||
|
assert 4 // x == 2
|
||||||
|
x = 7
|
||||||
|
x //= 2
|
||||||
|
assert x == 3
|
||||||
|
|
||||||
|
x = 3
|
||||||
|
assert x % 2 == 1
|
||||||
|
x %= 2
|
||||||
|
assert x == 1
|
||||||
|
|
||||||
|
assert x << 2 == 4
|
||||||
|
x <<= 3
|
||||||
|
assert x == 8
|
||||||
|
|
||||||
|
assert x >> 1 == 4
|
||||||
|
x >>= 1
|
||||||
|
assert x == 4
|
@@ -62,7 +62,8 @@ class Scanner3(Scanner):
|
|||||||
# Create opcode classification sets
|
# Create opcode classification sets
|
||||||
# Note: super initilization above initializes self.opc
|
# Note: super initilization above initializes self.opc
|
||||||
|
|
||||||
# Ops that start SETUP_ ... We will COME_FROM with these names
|
# For ops that start SETUP_ ... we will add COME_FROM with these names
|
||||||
|
# at the their targets.
|
||||||
# Some blocks and END_ statements. And they can start
|
# Some blocks and END_ statements. And they can start
|
||||||
# a new statement
|
# a new statement
|
||||||
if self.version < 3.8:
|
if self.version < 3.8:
|
||||||
|
Reference in New Issue
Block a user