More indexing tests
authorRobert Bradshaw <robertwb@math.washington.edu>
Wed, 11 Mar 2009 11:46:33 +0000 (04:46 -0700)
committerRobert Bradshaw <robertwb@math.washington.edu>
Wed, 11 Mar 2009 11:46:33 +0000 (04:46 -0700)
tests/run/dictintindex.pyx
tests/run/index.pyx

index df739065405b8c919beab796013115fc6cfe2866..1aca230dade5016c9fab81c87aa3636c15c74607 100644 (file)
@@ -42,9 +42,9 @@ KeyError: 0
 >>> test_del_int()
 Traceback (most recent call last):
 KeyError: 0
->>> test_del_uint()
+>>> test_del_uint()  #doctest: +ELLIPSIS
 Traceback (most recent call last):
-KeyError: 0
+KeyError: 0...
 >>> test_del_longlong() #doctest: +ELLIPSIS
 Traceback (most recent call last):
 KeyError: 0...
index 492598dbe30711f42f9c7225c9d02a4e20d2a246..58bcf4413a09cc419746378645e66be589604e0a 100644 (file)
@@ -42,6 +42,10 @@ IndexError: string index out of range
 Traceback (most recent call last):
 ...
 TypeError: 'int' object is unsubscriptable
+
+>>> test_unsigned_long()
+>>> test_unsigned_short()
+>>> test_long_long()
 """
 
 
@@ -53,3 +57,45 @@ def index_list(list L, int i):
 
 def index_object(object o, int i):
     return o[i]
+
+
+# These make sure that our fast indexing works with large and unsigned types. 
+
+def test_unsigned_long():
+    cdef int i
+    cdef unsigned long ix
+    cdef D = {}
+    for i from 0 <= i < sizeof(unsigned long) * 8:
+        ix = (<unsigned long>1) << i
+        D[ix] = True
+    for i from 0 <= i < sizeof(unsigned long) * 8:
+        ix = (<unsigned long>1) << i
+        assert D[ix] is True
+        del D[ix]
+    assert len(D) == 0
+
+def test_unsigned_short():
+    cdef int i
+    cdef unsigned short ix
+    cdef D = {}
+    for i from 0 <= i < sizeof(unsigned short) * 8:
+        ix = (<unsigned short>1) << i
+        D[ix] = True
+    for i from 0 <= i < sizeof(unsigned short) * 8:
+        ix = (<unsigned short>1) << i
+        assert D[ix] is True
+        del D[ix]
+    assert len(D) == 0
+
+def test_long_long():
+    cdef int i
+    cdef long long ix
+    cdef D = {}
+    for i from 0 <= i < sizeof(long long) * 8:
+        ix = (<long long>1) << i
+        D[ix] = True
+    for i from 0 <= i < sizeof(long long) * 8:
+        ix = (<long long>1) << i
+        assert D[ix] is True
+        del D[ix]
+    assert len(D) == 0