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
aba0b13f
Commit
aba0b13f
authored
Feb 29, 2012
by
Ezio Melotti
Browse files
Options
Browse Files
Download
Plain Diff
#14089: merge with 3.2.
parents
6ea00ef2
682d3742
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
22 additions
and
0 deletions
+22
-0
Lib/test/test_fractions.py
Lib/test/test_fractions.py
+22
-0
No files found.
Lib/test/test_fractions.py
View file @
aba0b13f
...
@@ -6,6 +6,7 @@ import math
...
@@ -6,6 +6,7 @@ import math
import
numbers
import
numbers
import
operator
import
operator
import
fractions
import
fractions
import
sys
import
unittest
import
unittest
from
copy
import
copy
,
deepcopy
from
copy
import
copy
,
deepcopy
from
pickle
import
dumps
,
loads
from
pickle
import
dumps
,
loads
...
@@ -76,6 +77,9 @@ class DummyRational(object):
...
@@ -76,6 +77,9 @@ class DummyRational(object):
def
__float__
(
self
):
def
__float__
(
self
):
assert
False
,
"__float__ should not be invoked"
assert
False
,
"__float__ should not be invoked"
class
DummyFraction
(
fractions
.
Fraction
):
"""Dummy Fraction subclass for copy and deepcopy testing."""
class
GcdTest
(
unittest
.
TestCase
):
class
GcdTest
(
unittest
.
TestCase
):
def
testMisc
(
self
):
def
testMisc
(
self
):
...
@@ -286,9 +290,14 @@ class FractionTest(unittest.TestCase):
...
@@ -286,9 +290,14 @@ class FractionTest(unittest.TestCase):
self
.
assertEqual
(
F
(
201
,
200
).
limit_denominator
(
100
),
F
(
1
))
self
.
assertEqual
(
F
(
201
,
200
).
limit_denominator
(
100
),
F
(
1
))
self
.
assertEqual
(
F
(
201
,
200
).
limit_denominator
(
101
),
F
(
102
,
101
))
self
.
assertEqual
(
F
(
201
,
200
).
limit_denominator
(
101
),
F
(
102
,
101
))
self
.
assertEqual
(
F
(
0
).
limit_denominator
(
10000
),
F
(
0
))
self
.
assertEqual
(
F
(
0
).
limit_denominator
(
10000
),
F
(
0
))
for
i
in
(
0
,
-
1
):
self
.
assertRaisesMessage
(
ValueError
,
"max_denominator should be at least 1"
,
F
(
1
).
limit_denominator
,
i
)
def
testConversions
(
self
):
def
testConversions
(
self
):
self
.
assertTypedEquals
(
-
1
,
math
.
trunc
(
F
(
-
11
,
10
)))
self
.
assertTypedEquals
(
-
1
,
math
.
trunc
(
F
(
-
11
,
10
)))
self
.
assertTypedEquals
(
1
,
math
.
trunc
(
F
(
11
,
10
)))
self
.
assertTypedEquals
(
-
2
,
math
.
floor
(
F
(
-
11
,
10
)))
self
.
assertTypedEquals
(
-
2
,
math
.
floor
(
F
(
-
11
,
10
)))
self
.
assertTypedEquals
(
-
1
,
math
.
ceil
(
F
(
-
11
,
10
)))
self
.
assertTypedEquals
(
-
1
,
math
.
ceil
(
F
(
-
11
,
10
)))
self
.
assertTypedEquals
(
-
1
,
math
.
ceil
(
F
(
-
10
,
10
)))
self
.
assertTypedEquals
(
-
1
,
math
.
ceil
(
F
(
-
10
,
10
)))
...
@@ -329,6 +338,7 @@ class FractionTest(unittest.TestCase):
...
@@ -329,6 +338,7 @@ class FractionTest(unittest.TestCase):
self
.
assertEqual
(
F
(
8
,
27
),
F
(
2
,
3
)
**
F
(
3
))
self
.
assertEqual
(
F
(
8
,
27
),
F
(
2
,
3
)
**
F
(
3
))
self
.
assertEqual
(
F
(
27
,
8
),
F
(
2
,
3
)
**
F
(
-
3
))
self
.
assertEqual
(
F
(
27
,
8
),
F
(
2
,
3
)
**
F
(
-
3
))
self
.
assertTypedEquals
(
2.0
,
F
(
4
)
**
F
(
1
,
2
))
self
.
assertTypedEquals
(
2.0
,
F
(
4
)
**
F
(
1
,
2
))
self
.
assertEqual
(
F
(
1
,
1
),
+
F
(
1
,
1
))
z
=
pow
(
F
(
-
1
),
F
(
1
,
2
))
z
=
pow
(
F
(
-
1
),
F
(
1
,
2
))
self
.
assertAlmostEqual
(
z
.
real
,
0
)
self
.
assertAlmostEqual
(
z
.
real
,
0
)
self
.
assertEqual
(
z
.
imag
,
1
)
self
.
assertEqual
(
z
.
imag
,
1
)
...
@@ -395,6 +405,10 @@ class FractionTest(unittest.TestCase):
...
@@ -395,6 +405,10 @@ class FractionTest(unittest.TestCase):
TypeError
,
TypeError
,
"unsupported operand type(s) for +: 'Fraction' and 'Decimal'"
,
"unsupported operand type(s) for +: 'Fraction' and 'Decimal'"
,
operator
.
add
,
F
(
3
,
11
),
Decimal
(
'3.1415926'
))
operator
.
add
,
F
(
3
,
11
),
Decimal
(
'3.1415926'
))
self
.
assertRaisesMessage
(
TypeError
,
"unsupported operand type(s) for +: 'Decimal' and 'Fraction'"
,
operator
.
add
,
Decimal
(
'3.1415926'
),
F
(
3
,
11
))
def
testComparisons
(
self
):
def
testComparisons
(
self
):
self
.
assertTrue
(
F
(
1
,
2
)
<
F
(
2
,
3
))
self
.
assertTrue
(
F
(
1
,
2
)
<
F
(
2
,
3
))
...
@@ -538,9 +552,12 @@ class FractionTest(unittest.TestCase):
...
@@ -538,9 +552,12 @@ class FractionTest(unittest.TestCase):
self
.
assertEqual
(
"7"
,
str
(
F
(
7
,
1
)))
self
.
assertEqual
(
"7"
,
str
(
F
(
7
,
1
)))
def
testHash
(
self
):
def
testHash
(
self
):
hmod
=
sys
.
hash_info
.
modulus
hinf
=
sys
.
hash_info
.
inf
self
.
assertEqual
(
hash
(
2.5
),
hash
(
F
(
5
,
2
)))
self
.
assertEqual
(
hash
(
2.5
),
hash
(
F
(
5
,
2
)))
self
.
assertEqual
(
hash
(
10
**
50
),
hash
(
F
(
10
**
50
)))
self
.
assertEqual
(
hash
(
10
**
50
),
hash
(
F
(
10
**
50
)))
self
.
assertNotEqual
(
hash
(
float
(
10
**
23
)),
hash
(
F
(
10
**
23
)))
self
.
assertNotEqual
(
hash
(
float
(
10
**
23
)),
hash
(
F
(
10
**
23
)))
self
.
assertEqual
(
hinf
,
hash
(
F
(
1
,
hmod
)))
# Check that __hash__ produces the same value as hash(), for
# Check that __hash__ produces the same value as hash(), for
# consistency with int and Decimal. (See issue #10356.)
# consistency with int and Decimal. (See issue #10356.)
self
.
assertEqual
(
hash
(
F
(
-
1
)),
F
(
-
1
).
__hash__
())
self
.
assertEqual
(
hash
(
F
(
-
1
)),
F
(
-
1
).
__hash__
())
...
@@ -574,9 +591,14 @@ class FractionTest(unittest.TestCase):
...
@@ -574,9 +591,14 @@ class FractionTest(unittest.TestCase):
def
test_copy_deepcopy_pickle
(
self
):
def
test_copy_deepcopy_pickle
(
self
):
r
=
F
(
13
,
7
)
r
=
F
(
13
,
7
)
dr
=
DummyFraction
(
13
,
7
)
self
.
assertEqual
(
r
,
loads
(
dumps
(
r
)))
self
.
assertEqual
(
r
,
loads
(
dumps
(
r
)))
self
.
assertEqual
(
id
(
r
),
id
(
copy
(
r
)))
self
.
assertEqual
(
id
(
r
),
id
(
copy
(
r
)))
self
.
assertEqual
(
id
(
r
),
id
(
deepcopy
(
r
)))
self
.
assertEqual
(
id
(
r
),
id
(
deepcopy
(
r
)))
self
.
assertNotEqual
(
id
(
dr
),
id
(
copy
(
dr
)))
self
.
assertNotEqual
(
id
(
dr
),
id
(
deepcopy
(
dr
)))
self
.
assertTypedEquals
(
dr
,
copy
(
dr
))
self
.
assertTypedEquals
(
dr
,
deepcopy
(
dr
))
def
test_slots
(
self
):
def
test_slots
(
self
):
# Issue 4998
# Issue 4998
...
...
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