Author: Brian Kearns <[email protected]>
Branch:
Changeset: r61016:81d9454bb7dc
Date: 2013-02-09 22:06 -0500
http://bitbucket.org/pypy/pypy/changeset/81d9454bb7dc/
Log: put these tests where they will be executed and fix them up
diff --git a/lib_pypy/pypy_test/test_collections.py
b/lib_pypy/pypy_test/test_collections.py
deleted file mode 100644
--- a/lib_pypy/pypy_test/test_collections.py
+++ /dev/null
@@ -1,64 +0,0 @@
-from __future__ import absolute_import
-from lib_pypy import _collections as collections
-import py
-
-class TestDeque:
- def test_remove_empty(self):
- d = collections.deque([])
- py.test.raises(ValueError, d.remove, 1)
-
- def test_remove_mutating(self):
- class MutatingCmp(object):
- def __eq__(self, other):
- d.clear()
- return True
-
- d = collections.deque([MutatingCmp()])
- py.test.raises(IndexError, d.remove, 1)
-
- def test_remove_failing(self):
- class FailingCmp(object):
- def __eq__(self, other):
- assert False
-
- f = FailingCmp()
- d = collections.deque([1, 2, 3, f, 4, 5])
- d.remove(3)
- py.test.raises(AssertionError, d.remove, 4)
- assert d == collections.deque([1, 2, f, 4, 5])
-
- def test_maxlen(self):
- d = collections.deque([], 3)
- d.append(1); d.append(2); d.append(3); d.append(4)
- assert list(d) == [2, 3, 4]
- assert repr(d) == "deque([2, 3, 4], maxlen=3)"
-
- import pickle
- d2 = pickle.loads(pickle.dumps(d))
- assert repr(d2) == "deque([2, 3, 4], maxlen=3)"
-
- import copy
- d3 = copy.copy(d)
- assert repr(d3) == "deque([2, 3, 4], maxlen=3)"
-
- def test_count(self):
- d = collections.deque([1, 2, 2, 3, 2])
- assert d.count(2) == 3
- assert d.count(4) == 0
-
- def test_reverse(self):
- d = collections.deque([1, 2, 2, 3, 2])
- d.reverse()
- assert list(d) == [2, 3, 2, 2, 1]
-
- d = collections.deque(range(100))
- d.reverse()
- assert list(d) == range(99, -1, -1)
-
- def test_subclass_with_kwargs(self):
- class SubclassWithKwargs(collections.deque):
- def __init__(self, newarg=1):
- collections.deque.__init__(self)
-
- # SF bug #1486663 -- this used to erroneously raise a TypeError
- SubclassWithKwargs(newarg=1)
diff --git a/lib_pypy/pypy_test/test_datetime.py
b/lib_pypy/pypy_test/test_datetime.py
deleted file mode 100644
--- a/lib_pypy/pypy_test/test_datetime.py
+++ /dev/null
@@ -1,59 +0,0 @@
-from __future__ import absolute_import
-import py
-
-from lib_pypy import datetime
-
-def test_repr():
- print datetime
- expected = "datetime.datetime(1, 2, 3, 0, 0)"
- assert repr(datetime.datetime(1,2,3)) == expected
-
-def test_strptime():
- import time, sys
- if sys.version_info < (2, 6):
- py.test.skip("needs the _strptime module")
-
- string = '2004-12-01 13:02:47'
- format = '%Y-%m-%d %H:%M:%S'
- expected = datetime.datetime(*(time.strptime(string, format)[0:6]))
- got = datetime.datetime.strptime(string, format)
- assert expected == got
-
-def test_datetime_rounding():
- b = 0.0000001
- a = 0.9999994
-
- assert datetime.datetime.utcfromtimestamp(a).microsecond == 999999
- assert datetime.datetime.utcfromtimestamp(a).second == 0
- a += b
- assert datetime.datetime.utcfromtimestamp(a).microsecond == 999999
- assert datetime.datetime.utcfromtimestamp(a).second == 0
- a += b
- assert datetime.datetime.utcfromtimestamp(a).microsecond == 0
- assert datetime.datetime.utcfromtimestamp(a).second == 1
-
-def test_more_datetime_rounding():
- # this test verified on top of CPython 2.7 (using a plain
- # "import datetime" above)
- expected_results = {
- -1000.0: 'datetime.datetime(1970, 1, 1, 0, 43, 20)',
- -999.9999996: 'datetime.datetime(1970, 1, 1, 0, 43, 20)',
- -999.4: 'datetime.datetime(1970, 1, 1, 0, 43, 20, 600000)',
- -999.0000004: 'datetime.datetime(1970, 1, 1, 0, 43, 21)',
- -1.0: 'datetime.datetime(1970, 1, 1, 0, 59, 59)',
- -0.9999996: 'datetime.datetime(1970, 1, 1, 0, 59, 59)',
- -0.4: 'datetime.datetime(1970, 1, 1, 0, 59, 59, 600000)',
- -0.0000004: 'datetime.datetime(1970, 1, 1, 1, 0)',
- 0.0: 'datetime.datetime(1970, 1, 1, 1, 0)',
- 0.0000004: 'datetime.datetime(1970, 1, 1, 1, 0)',
- 0.4: 'datetime.datetime(1970, 1, 1, 1, 0, 0, 400000)',
- 0.9999996: 'datetime.datetime(1970, 1, 1, 1, 0, 1)',
- 1000.0: 'datetime.datetime(1970, 1, 1, 1, 16, 40)',
- 1000.0000004: 'datetime.datetime(1970, 1, 1, 1, 16, 40)',
- 1000.4: 'datetime.datetime(1970, 1, 1, 1, 16, 40, 400000)',
- 1000.9999996: 'datetime.datetime(1970, 1, 1, 1, 16, 41)',
- 1293843661.191: 'datetime.datetime(2011, 1, 1, 2, 1, 1, 191000)',
- }
- for t in sorted(expected_results):
- dt = datetime.datetime.fromtimestamp(t)
- assert repr(dt) == expected_results[t]
diff --git a/lib_pypy/pypy_test/test_deque_extra.py
b/lib_pypy/pypy_test/test_deque_extra.py
deleted file mode 100644
--- a/lib_pypy/pypy_test/test_deque_extra.py
+++ /dev/null
@@ -1,56 +0,0 @@
-# Deque Tests
-from __future__ import absolute_import
-import py
-
-
-n = 10
-class Test_deque:
- def setup_method(self,method):
-
- from lib_pypy._collections import deque
- self.deque = deque
- self.d = deque(range(n))
-
- def test_deque(self):
-
- assert len(self.d) == n
- for i in range(n):
- assert i == self.d[i]
- for i in range(n-1, -1, -1):
- assert self.d.pop() == i
- assert len(self.d) == 0
-
- def test_deque_iter(self):
- it = iter(self.d)
- py.test.raises(TypeError, len, it)
- assert it.next() == 0
- self.d.pop()
- py.test.raises(RuntimeError, it.next)
-
- def test_deque_reversed(self):
- it = reversed(self.d)
- py.test.raises(TypeError, len, it)
- assert it.next() == n-1
- assert it.next() == n-2
- self.d.pop()
- py.test.raises(RuntimeError, it.next)
-
- def test_deque_remove(self):
- d = self.d
- py.test.raises(ValueError, d.remove, "foobar")
-
- def test_mutate_during_remove(self):
- # Handle evil mutator
- class MutateCmp:
- def __init__(self, deque, result):
- self.deque = deque
- self.result = result
- def __eq__(self, other):
- self.deque.clear()
- return self.result
-
- for match in (True, False):
- d = self.deque(['ab'])
- d.extend([MutateCmp(d, match), 'c'])
- py.test.raises(IndexError, d.remove, 'c')
- assert len(d) == 0
diff --git a/pypy/module/test_lib_pypy/test_collections.py
b/pypy/module/test_lib_pypy/test_collections.py
--- a/pypy/module/test_lib_pypy/test_collections.py
+++ b/pypy/module/test_lib_pypy/test_collections.py
@@ -1,25 +1,136 @@
-
"""
Extra tests for the pure Python PyPy _collections module
(not used in normal PyPy's)
"""
-class AppTestCollections:
+from __future__ import absolute_import
+from lib_pypy import _collections as collections
+import py
+
+class TestDeque:
+ def setup_method(self, method):
+ self.n = 10
+ self.d = collections.deque(range(self.n))
+
+ def test_deque(self):
+ assert len(self.d) == self.n
+ for i in range(self.n):
+ assert i == self.d[i]
+ for i in range(self.n-1, -1, -1):
+ assert self.d.pop() == i
+ assert len(self.d) == 0
+
+ def test_deque_iter(self):
+ it = iter(self.d)
+ py.test.raises(TypeError, len, it)
+ assert it.next() == 0
+ self.d.pop()
+ py.test.raises(RuntimeError, it.next)
+
+ def test_deque_reversed(self):
+ it = reversed(self.d)
+ py.test.raises(TypeError, len, it)
+ assert it.next() == self.n-1
+ assert it.next() == self.n-2
+ self.d.pop()
+ py.test.raises(RuntimeError, it.next)
+
+ def test_deque_remove(self):
+ d = self.d
+ py.test.raises(ValueError, d.remove, "foobar")
+
+ def test_mutate_during_remove(self):
+ # Handle evil mutator
+ class MutateCmp:
+ def __init__(self, deque, result):
+ self.deque = deque
+ self.result = result
+ def __eq__(self, other):
+ self.deque.clear()
+ return self.result
+
+ for match in (True, False):
+ d = collections.deque(['ab'])
+ d.extend([MutateCmp(d, match), 'c'])
+ py.test.raises(IndexError, d.remove, 'c')
+ assert len(d) == 0
+
+class TestDequeExtra:
+ def test_remove_empty(self):
+ d = collections.deque([])
+ py.test.raises(ValueError, d.remove, 1)
+
+ def test_remove_mutating(self):
+ class MutatingCmp(object):
+ def __eq__(self, other):
+ d.clear()
+ return True
+
+ d = collections.deque([MutatingCmp()])
+ py.test.raises(IndexError, d.remove, 1)
+
+ def test_remove_failing(self):
+ class FailingCmp(object):
+ def __eq__(self, other):
+ assert False
+
+ f = FailingCmp()
+ d = collections.deque([1, 2, 3, f, 4, 5])
+ d.remove(3)
+ py.test.raises(AssertionError, d.remove, 4)
+ assert d == collections.deque([1, 2, f, 4, 5])
+
+ def test_maxlen(self):
+ d = collections.deque([], 3)
+ d.append(1); d.append(2); d.append(3); d.append(4)
+ assert list(d) == [2, 3, 4]
+ assert repr(d) == "deque([2, 3, 4], maxlen=3)"
+
+ import pickle
+ d2 = pickle.loads(pickle.dumps(d))
+ assert repr(d2) == "deque([2, 3, 4], maxlen=3)"
+
+ import copy
+ d3 = copy.copy(d)
+ assert repr(d3) == "deque([2, 3, 4], maxlen=3)"
+
+ def test_count(self):
+ d = collections.deque([1, 2, 2, 3, 2])
+ assert d.count(2) == 3
+ assert d.count(4) == 0
+
+ def test_reverse(self):
+ d = collections.deque([1, 2, 2, 3, 2])
+ d.reverse()
+ assert list(d) == [2, 3, 2, 2, 1]
+
+ d = collections.deque(range(100))
+ d.reverse()
+ assert list(d) == range(99, -1, -1)
+
+ def test_subclass_with_kwargs(self):
+ class SubclassWithKwargs(collections.deque):
+ def __init__(self, newarg=1):
+ collections.deque.__init__(self)
+
+ # SF bug #1486663 -- this used to erroneously raise a TypeError
+ SubclassWithKwargs(newarg=1)
+
+class TestDefaultDict:
def test_copy(self):
- import _collections
def f():
return 42
- d = _collections.defaultdict(f, {2: 3})
+ d = collections.defaultdict(f, {2: 3})
#
d1 = d.copy()
- assert type(d1) is _collections.defaultdict
+ assert type(d1) is collections.defaultdict
assert len(d1) == 1
assert d1[2] == 3
assert d1[3] == 42
#
import copy
d2 = copy.deepcopy(d)
- assert type(d2) is _collections.defaultdict
+ assert type(d2) is collections.defaultdict
assert len(d2) == 1
assert d2[2] == 3
assert d2[3] == 42
diff --git a/pypy/module/test_lib_pypy/test_datetime.py
b/pypy/module/test_lib_pypy/test_datetime.py
--- a/pypy/module/test_lib_pypy/test_datetime.py
+++ b/pypy/module/test_lib_pypy/test_datetime.py
@@ -1,17 +1,71 @@
"""Additional tests for datetime."""
+from __future__ import absolute_import
+from lib_pypy import datetime
import py
-import time
-from lib_pypy import datetime
-import copy
-import os
+def test_repr():
+ print datetime
+ expected = "datetime.datetime(1, 2, 3, 0, 0)"
+ assert repr(datetime.datetime(1,2,3)) == expected
+
+def test_strptime():
+ import time, sys
+ if sys.version_info < (2, 6):
+ py.test.skip("needs the _strptime module")
+
+ string = '2004-12-01 13:02:47'
+ format = '%Y-%m-%d %H:%M:%S'
+ expected = datetime.datetime(*(time.strptime(string, format)[0:6]))
+ got = datetime.datetime.strptime(string, format)
+ assert expected == got
+
+def test_datetime_rounding():
+ b = 0.0000001
+ a = 0.9999994
+
+ assert datetime.datetime.utcfromtimestamp(a).microsecond == 999999
+ assert datetime.datetime.utcfromtimestamp(a).second == 0
+ a += b
+ assert datetime.datetime.utcfromtimestamp(a).microsecond == 999999
+ assert datetime.datetime.utcfromtimestamp(a).second == 0
+ a += b
+ assert datetime.datetime.utcfromtimestamp(a).microsecond == 0
+ assert datetime.datetime.utcfromtimestamp(a).second == 1
+
+def test_more_datetime_rounding():
+ # this test verified on top of CPython 2.7 (using a plain
+ # "import datetime" above)
+ expected_results = {
+ -1000.0: 'datetime.datetime(1969, 12, 31, 23, 43, 20)',
+ -999.9999996: 'datetime.datetime(1969, 12, 31, 23, 43, 20)',
+ -999.4: 'datetime.datetime(1969, 12, 31, 23, 43, 20, 600000)',
+ -999.0000004: 'datetime.datetime(1969, 12, 31, 23, 43, 21)',
+ -1.0: 'datetime.datetime(1969, 12, 31, 23, 59, 59)',
+ -0.9999996: 'datetime.datetime(1969, 12, 31, 23, 59, 59)',
+ -0.4: 'datetime.datetime(1969, 12, 31, 23, 59, 59, 600000)',
+ -0.0000004: 'datetime.datetime(1970, 1, 1, 0, 0)',
+ 0.0: 'datetime.datetime(1970, 1, 1, 0, 0)',
+ 0.0000004: 'datetime.datetime(1970, 1, 1, 0, 0)',
+ 0.4: 'datetime.datetime(1970, 1, 1, 0, 0, 0, 400000)',
+ 0.9999996: 'datetime.datetime(1970, 1, 1, 0, 0, 1)',
+ 1000.0: 'datetime.datetime(1970, 1, 1, 0, 16, 40)',
+ 1000.0000004: 'datetime.datetime(1970, 1, 1, 0, 16, 40)',
+ 1000.4: 'datetime.datetime(1970, 1, 1, 0, 16, 40, 400000)',
+ 1000.9999996: 'datetime.datetime(1970, 1, 1, 0, 16, 41)',
+ 1293843661.191: 'datetime.datetime(2011, 1, 1, 1, 1, 1, 191000)',
+ }
+ for t in sorted(expected_results):
+ dt = datetime.datetime.utcfromtimestamp(t)
+ assert repr(dt) == expected_results[t]
def test_utcfromtimestamp():
"""Confirm that utcfromtimestamp and fromtimestamp give consistent results.
Based on danchr's test script in https://bugs.pypy.org/issue986
"""
+ import os
+ import time
try:
prev_tz = os.environ.get("TZ")
os.environ["TZ"] = "GMT"
@@ -88,6 +142,8 @@
datetime.datetime(10, 10, 10, 10, 10, 10, 10.)
def test_utcnow_microsecond():
+ import copy
+
dt = datetime.datetime.utcnow()
assert type(dt.microsecond) is int
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit