Author: Yannick Jadoul <[email protected]>
Branch: py3.7-bpo-29839
Changeset: r97819:81794cb4ab7f
Date: 2019-10-18 19:30 +0200
http://bitbucket.org/pypy/pypy/changeset/81794cb4ab7f/

Log:    Added (well, copied) apptest for len

diff --git a/pypy/module/__builtin__/test/test_builtin.py 
b/pypy/module/__builtin__/test/test_builtin.py
--- a/pypy/module/__builtin__/test/test_builtin.py
+++ b/pypy/module/__builtin__/test/test_builtin.py
@@ -751,6 +751,41 @@
             __dict__ = property(fget=getDict)
         assert vars(C_get_vars()) == {'a':2}
 
+    def test_len(self):
+        import sys
+        assert len('123') == 3
+        assert len(()) == 0
+        assert len((1, 2, 3, 4)) == 4
+        assert len([1, 2, 3, 4]) == 4
+        assert len({}) == 0
+        assert len({'a':1, 'b': 2}) == 2
+        class BadSeq:
+            def __len__(self):
+                raise ValueError
+        raises(ValueError, len, BadSeq())
+        class InvalidLen:
+            def __len__(self):
+                return None
+        raises(TypeError, len, InvalidLen())
+        class FloatLen:
+            def __len__(self):
+                return 4.5
+        raises(TypeError, len, FloatLen())
+        class NegativeLen:
+            def __len__(self):
+                return -10
+        raises(ValueError, len, NegativeLen())
+        class HugeLen:
+            def __len__(self):
+                return sys.maxsize + 1
+        raises(OverflowError, len, HugeLen())
+        class HugeNegativeLen:
+            def __len__(self):
+                return -sys.maxsize-10
+        raises(ValueError, len, HugeNegativeLen())
+        class NoLenMethod(object): pass
+        raises(TypeError, len, NoLenMethod())
+
 
 class AppTestGetattr:
     spaceconfig = {}
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to