From: Clark U. <cu...@us...> - 2005-05-12 14:00:58
|
Update of /cvsroot/jython/jython/Lib/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5838/jython/Lib/test Modified Files: Tag: collections-integration test_descrtut.py test_types.py test_jarray.py Log Message: PyList and PyTuple now implement java.util.List, list + List, and new array module. Index: test_descrtut.py =================================================================== RCS file: /cvsroot/jython/jython/Lib/test/test_descrtut.py,v retrieving revision 2.1 retrieving revision 2.1.4.1 diff -C2 -d -r2.1 -r2.1.4.1 *** test_descrtut.py 22 Feb 2005 04:19:28 -0000 2.1 --- test_descrtut.py 12 May 2005 14:00:48 -0000 2.1.4.1 *************** *** 190,209 **** '__doc__', '__eq__', - '__ge__', '__getattribute__', '__getitem__', '__getslice__', - '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', - '__le__', '__len__', - '__lt__', '__mul__', '__ne__', '__new__', ! '__reduce__', '__repr__', '__rmul__', --- 190,206 ---- '__doc__', '__eq__', '__getattribute__', '__getitem__', '__getslice__', '__hash__', '__iadd__', '__imul__', '__init__', '__len__', '__mul__', '__ne__', '__new__', ! '__nonzero__', ! '__radd__', '__repr__', '__rmul__', *************** *** 222,225 **** --- 219,223 ---- 'sort'] + The new introspection API gives more information than the old one: in addition to the regular methods, it also shows the methods that are Index: test_types.py =================================================================== RCS file: /cvsroot/jython/jython/Lib/test/test_types.py,v retrieving revision 1.1 retrieving revision 1.1.6.1 diff -C2 -d -r1.1 -r1.1.6.1 *** test_types.py 15 Feb 1999 14:54:12 -0000 1.1 --- test_types.py 12 May 2005 14:00:49 -0000 1.1.6.1 *************** *** 168,171 **** --- 168,245 ---- a.sort(revcmp) if a <> [2,1,0,-1,-2]: raise TestFailed, 'list sort with cmp func' + + # cpython 2.3 windowed index behavior + if range(10).index(6,4,8) <> 6: raise TestFailed, "windowed list index failed" + + if range(10).index(6,-20,100) <> 6: raise TestFailed, "windowed list index failed" + + if range(10).index(6,6,100) <> 6: raise TestFailed, "windowed list index failed" + + if range(10).index(0,0,1) <> 0: raise TestFailed, "windowed list index failed" + + if range(10).index(9,9,10) <> 9: raise TestFailed, "windowed list index failed" + + try: range(10).index(6,6,-1) + except ValueError: pass + else: raise TestFailed, "range(10).index(6,6,-1) did not raise ValueError" + + try: range(10).index(6,7,100) + except ValueError: pass + else: raise TestFailed, "range(10).index(6,7,100) did not raise ValueError" + + try: range(10).index(0,1,2) + except ValueError: pass + else: raise TestFailed, "range(10).index(0,1,2) did not raise ValueError" + + try: range(10).index(9,9,9) + except ValueError: pass + else: raise TestFailed, "range(10).index(9,9,9) did not raise ValueError" + + try: range(10).index(0,0,0) + except ValueError: pass + else: raise TestFailed, "range(10).index(0,0,0) did not raise ValueError" + + try: [].index("comfy pillow",0,0) + except ValueError: pass + else: raise TestFailed, "[].index('comfy pillow',0,0) did not raise ValueError" + + # cpython 2.3 insert behavior + l = range(4) + l.insert( -2, "spam") + if l <> [0, 1, "spam", 2, 3]: + raise TestFailed, "list.insert on negative index failed" + + l = range(4) + l.insert( 100, "spam") + if l <> [0, 1, 2, 3, "spam"]: + raise TestFailed, "list.insert on negative index failed" + + l = range(4) + l.insert(-100, "spam") + if l <> ["spam", 0, 1, 2, 3]: + raise TestFailed, "list.insert on negative index failed" + + # type restrictions + try: None + [] + except TypeError: pass + else: raise TestFailed, "expected TypeError on None + []" + + try: [] + None + except TypeError: pass + else: raise TestFailed, "expected TypeError on [] + None" + + try: (1,2,3) + [] + except TypeError: pass + else: raise TestFailed, "expected TypeError on (1,2,3) + []" + + try: [] + (1,2,3) + except TypeError: pass + else: raise TestFailed, "expected TypeError on [] + (1,2,3)" + + l = range(5) + del l[:] + if len(l) <> 0: raise TestFailed, "del <list>[:] did not empty list" + del l[:] # boundary case + # The following dumps core in unpatched Python 1.5: def myComparison(x,y): *************** *** 174,177 **** --- 248,258 ---- z.sort(myComparison) + print_test('Interoperability: list and java.util.List') + from java.util import ArrayList + al = ArrayList(range(5)) + l = range(5) + if not (l + al == range(5)*2): raise TestFailed, "list + java.util.List failed" + if not (al + l == range(5)*2): raise TestFailed, "java.util.List + list failed" + print_test('Mappings and Dictionaries', 2) d = {} Index: test_jarray.py =================================================================== RCS file: /cvsroot/jython/jython/Lib/test/test_jarray.py,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -C2 -d -r1.2 -r1.2.2.1 *** test_jarray.py 14 Apr 2005 03:50:14 -0000 1.2 --- test_jarray.py 12 May 2005 14:00:49 -0000 1.2.2.1 *************** *** 4,10 **** --- 4,12 ---- from test_support import * + print_test('jarray module (test_jarray.py)', 1) from jarray import array, zeros + import sys print_test('array', 2) *************** *** 25,35 **** def main(): - testtype('c', 'c') for type in (['b', 'h', 'i', 'l', 'f', 'd']): testtype(type, 1) ! #CAU: nyi unlink(TESTFN) --- 27,41 ---- def main(): testtype('c', 'c') for type in (['b', 'h', 'i', 'l', 'f', 'd']): testtype(type, 1) + + #test a mix of known success and failure cases + init_tests(); + extend_tests(); + fromlist_tests(); ! unlink(TESTFN) *************** *** 82,122 **** print 'array after append: ', a a.typecode ! #CAU: nyi a.itemsize ! ! #CAU: nyi if a.typecode in ('i', 'b', 'h', 'l'): ! #CAU: nyi a.byteswap() ! #CAU: nyi if a.typecode == 'c': ! #CAU: nyi f = open(TESTFN, "w") ! #CAU: nyi f.write("The quick brown fox jumps over the lazy dog.\n") ! #CAU: nyi f.close() ! #CAU: nyi f = open(TESTFN, 'r') ! #CAU: nyi a.fromfile(f, 10) ! #CAU: nyi f.close() ! #CAU: nyi if verbose: ! #CAU: nyi print 'char array with 10 bytes of TESTFN appended: ', a ! #CAU: nyi a.fromlist(['a', 'b', 'c']) ! #CAU: nyi if verbose: ! #CAU: nyi print 'char array with list appended: ', a ! #CAU: nyi a.insert(0, example) ! #CAU: nyi if verbose: ! #CAU: nyi print 'array of %s after inserting another:' % a.typecode, a ! #CAU: nyi f = open(TESTFN, 'w') ! #CAU: nyi a.tofile(f) ! #CAU: nyi f.close() ! #CAU: nyi # This block is just to verify that the operations don't blow up. ! #CAU: nyi a.tolist() ! #CAU: nyi a.tostring() repr(a) str(a) ! #CAU: nyi if verbose: ! #CAU: nyi print 'array of %s converted to a list: ' % a.typecode, a.tolist() ! #CAU: nyi if verbose: ! #CAU: jython 2.1 PyArray only supported tostring() on byte and char arrays ! #CAU: nyi print 'array of %s converted to a string: ' \ ! #CAU: nyi % a.typecode, `a.tostring()` if type == 'c': --- 88,127 ---- print 'array after append: ', a a.typecode ! a.itemsize ! if a.typecode in ('i', 'b', 'h', 'l'): ! a.byteswap() ! if a.typecode == 'c': ! f = open(TESTFN, "w") ! f.write("The quick brown fox jumps over the lazy dog.\n") ! f.close() ! f = open(TESTFN, 'r') ! a.fromfile(f, 10) ! f.close() ! if verbose: ! print 'char array with 10 bytes of TESTFN appended: ', a ! a.fromlist(['a', 'b', 'c']) ! if verbose: ! print 'char array with list appended: ', a ! a.insert(0, example) ! if verbose: ! print 'array of %s after inserting another:' % a.typecode, a ! f = open(TESTFN, 'w') ! a.tofile(f) ! f.close() ! ! # This block is just to verify that the operations don't blow up. ! a.tolist() ! a.tostring() repr(a) str(a) ! if verbose: ! print 'array of %s converted to a list: ' % a.typecode, a.tolist() ! if verbose: ! print 'array of %s converted to a string: ' \ ! % a.typecode, `a.tostring()` if type == 'c': *************** *** 199,214 **** # test that overflow exceptions are raised as expected for assignment # to array of specific integral types ! #CAU: nyi from math import pow ! #CAU: nyi if type in ('b', 'h', 'i', 'l'): ! #CAU: nyi # check signed and unsigned versions ! #CAU: nyi a = array(type) ! #CAU: nyi signedLowerLimit = -1 * long(pow(2, a.itemsize * 8 - 1)) ! #CAU: nyi signedUpperLimit = long(pow(2, a.itemsize * 8 - 1)) - 1L ! #CAU: nyi unsignedLowerLimit = 0 ! #CAU: nyi unsignedUpperLimit = long(pow(2, a.itemsize * 8)) - 1L ! #CAU: nyi testoverflow(type, signedLowerLimit, signedUpperLimit) ! #CAU: nyi testoverflow(type.upper(), unsignedLowerLimit, unsignedUpperLimit) main() --- 204,390 ---- # test that overflow exceptions are raised as expected for assignment # to array of specific integral types ! from math import pow ! ! #check using long inputs ! if type in ('b', 'h', 'i', 'l'): ! a = array([], type) ! signedLowerLimit = -1 * long(pow(2, a.itemsize * 8 - 1)) ! signedUpperLimit = long(pow(2, a.itemsize * 8 - 1)) - 1L ! unsignedLowerLimit = 0 ! unsignedUpperLimit = long(pow(2, a.itemsize * 8)) - 1L ! testoverflow(type, signedLowerLimit, signedUpperLimit) ! ! #check using integer inputs - int cannot hold MAXINT+1 nor MININT-1 ! # so only valid test types are byte and short for this test ! if type in ('b', 'h'): ! a = array([], type) ! signedLowerLimit = -1 * int(pow(2, a.itemsize * 8 - 1)) ! signedUpperLimit = int(pow(2, a.itemsize * 8 - 1)) - 1 ! unsignedLowerLimit = 0 ! unsignedUpperLimit = int(pow(2, a.itemsize * 8)) - 1 ! testoverflow(type, signedLowerLimit, signedUpperLimit) ! ! ! def init_tests(): ! test = array(['t','e','s','t'], 'c') ! assert init_test( "String initialisation", "test", 'c') == test, "string initialisation failed" ! ! test = array([41,42,43,44], 'i') ! s = test.tostring(); ! assert init_test( "String2 initialisation", s, 'i') == test, "string 2 initialisation failed" ! ! init_test( "List initialisation", [1,2,3,4], 'i') ! ! init_test( "Tuple initialisation", (1,2,3,4), 'i') ! ! test = array([1,2,3,4], 'i') ! assert init_test( "array initialisation", test, 'i') == test, "array init failed" ! ! try: ! init_test( "Broken list initialisation", [1,2,3,4, 'fred'], 'i') ! raise TestFailed, "Broken list initialisation" ! except TypeError: ! pass ! ! test = array([1,2,3,4], 'i') ! try: ! init_test( "Broken PyArray initialisation", test, 'd') ! raise TestFailed, "Broken PyArray initialisation" ! except TypeError: ! pass ! ! f = open(TESTFN, "w") ! #f.write("\x00\x00\x00\x01") ! f.write("test message\nline2\nline3"); ! f.close(); ! ! f = open(TESTFN, "r") ! try: ! init_test( "Invalid initialisation object (file)", f, 'i') ! raise TestFailed, "Invalid initialisation object (file)" ! except TypeError: ! pass ! f.close() ! ! try: ! init_test( "Invalid initialisation object (module)", sys, 'i') ! raise TestFailed, "Invalid initialisation object (module)" ! except TypeError: ! pass ! ! def extend_tests(): ! test = array('testextend', 'c') ! assert extend_test("String extend", "test", "extend", 'c') == test, "String extend failed" ! ! test = array([1,2,3,4,51,52,53,54], 'i'); ! assert extend_test("List extend", [1,2,3,4], [51,52,53,54], 'i') == test, "List extend failed" ! ! test = array((1,2,3,4,51,52,53,54), 'i'); ! assert extend_test("Tuple extend", (1,2,3,4), (51,52,53,54), 'i') == test, "Tuple extend failed" ! ! try: ! extend_test("Broken list extend", [1,2,3,4], [51,52,53,"fred"], 'i') ! raise TestFailed, "Broken list extend" ! except TypeError: ! pass + a = array([123.45, 567.89], 'd') + test = array([1,2,3,4], 'i') + try: + assert extend_test("Array type mismatch test", [1,2,3,4], a, 'i') == test, "Array mismatch test failed" + raise TestFailed, "Array type mismatch test" + except TypeError: + pass + del a + + f = open(TESTFN, "r") + try: + extend_test("incorrect type extend (file)", [1,2,3,4], f, 'i') + raise TestFailed, "incorrect type extend (file)" + except TypeError: + pass + f.close() + + try: + extend_test("incorrect type extend (module)", (1,2,3,4), sys, 'i') + raise TestFailed, "incorrect type extend (module)" + except TypeError: + pass + + try: + extend_test("incorrect type extend (integer)", [], 456, 'i') + raise TestFailed, "incorrect type extend (integer)" + except TypeError: + pass + + def fromlist_tests(): + test = array(['t','e','s','t','h','e','l','l','o'], 'c') + assert fromlist_test("String fromlist", "test", ['h','e','l','l','o'], 'c') == test, "String fromlist failed" + test = array([1,2,3,4,51,52,53,54], 'i') + assert fromlist_test("integer fromlist", [1,2,3,4], [51,52,53,54], 'i') == test, "integer fromlist failed" + + try: + fromlist_test("broken fromlist (integer)", [1,2,3,4], [51,52,53,"fred"], 'i') + raise TestFailed, "broken fromlist (integer)" + except TypeError: + pass + + try: + fromlist_test("invalid fromlist (tuple)", [1,2,3,4], (51,52,53,54), 'i') + raise TestFailed, "invalid fromlist (tuple)" + except TypeError: + pass + + def init_test(name, init, typecode): + if verbose: + print 40*'*' + print name, "- type:", typecode + print "initialiser:", init + + a = array(init, typecode) + + if verbose: + print a + + return a + + def extend_test(name, init, extend, typecode): + if verbose: + print 40*'*' + print name, "- type:", typecode + + a = array(init, typecode) + + if verbose: + print "initial:", a + print "extended by:", extend + + a.extend(extend) + + #if no exceptions then + if verbose: + print "final:", a + + return a + + def fromlist_test(name, init, listdata, typecode): + if verbose: + print 40*'*' + print name , "- type:", typecode + + a = array(init, typecode) + + if verbose: + print "initial:", a + print "fromlist source:", listdata + + a.fromlist(listdata) + + #if no exceptions then + if verbose: + print "final:", a + + return a main() |