PageRenderTime 25ms CodeModel.GetById 1ms RepoModel.GetById 0ms app.codeStats 0ms

/pypy/objspace/std/test/test_stdobjspace.py

https://bitbucket.org/pypy/pypy/
Python | 83 lines | 79 code | 4 blank | 0 comment | 0 complexity | 23d6ebb4f8a06f315213833fda3b604a MD5 | raw file
Possible License(s): AGPL-3.0, BSD-3-Clause, Apache-2.0
  1. import py
  2. from py.test import raises
  3. from pypy.interpreter.error import OperationError
  4. from pypy.tool.pytest.objspace import gettestobjspace
  5. class TestW_StdObjSpace:
  6. def test_wrap_wrap(self):
  7. py.test.skip("maybe unskip in the future")
  8. raises(TypeError,
  9. self.space.wrap,
  10. self.space.wrap(0))
  11. def test_str_w_non_str(self):
  12. raises(OperationError,self.space.str_w,self.space.wrap(None))
  13. raises(OperationError,self.space.str_w,self.space.wrap(0))
  14. def test_int_w_non_int(self):
  15. raises(OperationError,self.space.int_w,self.space.wrap(None))
  16. raises(OperationError,self.space.int_w,self.space.wrap(""))
  17. def test_uint_w_non_int(self):
  18. raises(OperationError,self.space.uint_w,self.space.wrap(None))
  19. raises(OperationError,self.space.uint_w,self.space.wrap(""))
  20. def test_sliceindices(self):
  21. space = self.space
  22. w_obj = space.appexec([], """():
  23. class Stuff(object):
  24. def indices(self, l):
  25. return 1,2,3
  26. return Stuff()
  27. """)
  28. w = space.wrap
  29. w_slice = space.newslice(w(1), w(2), w(1))
  30. assert space.sliceindices(w_slice, w(3)) == (1,2,1)
  31. assert space.sliceindices(w_obj, w(3)) == (1,2,3)
  32. def test_fastpath_isinstance(self):
  33. from pypy.objspace.std.bytesobject import W_BytesObject
  34. from pypy.objspace.std.intobject import W_IntObject
  35. from pypy.objspace.std.iterobject import W_AbstractSeqIterObject
  36. from pypy.objspace.std.iterobject import W_SeqIterObject
  37. space = self.space
  38. assert space._get_interplevel_cls(space.w_str) is W_BytesObject
  39. assert space._get_interplevel_cls(space.w_int) is W_IntObject
  40. class X(W_BytesObject):
  41. def __init__(self):
  42. pass
  43. typedef = None
  44. assert space.isinstance_w(X(), space.w_str)
  45. w_sequenceiterator = space.gettypefor(W_SeqIterObject)
  46. cls = space._get_interplevel_cls(w_sequenceiterator)
  47. assert cls is W_AbstractSeqIterObject
  48. def test_withstrbuf_fastpath_isinstance(self):
  49. from pypy.objspace.std.bytesobject import W_AbstractBytesObject
  50. space = gettestobjspace(withstrbuf=True)
  51. cls = space._get_interplevel_cls(space.w_str)
  52. assert cls is W_AbstractBytesObject
  53. def test_wrap_various_unsigned_types(self):
  54. import sys
  55. from rpython.rlib.rarithmetic import r_uint
  56. from rpython.rtyper.lltypesystem import lltype, rffi
  57. space = self.space
  58. value = sys.maxint * 2
  59. x = r_uint(value)
  60. assert space.eq_w(space.wrap(value), space.wrap(x))
  61. x = rffi.cast(rffi.UINTPTR_T, r_uint(value))
  62. assert x > 0
  63. assert space.eq_w(space.wrap(value), space.wrap(x))
  64. value = 60000
  65. x = rffi.cast(rffi.USHORT, r_uint(value))
  66. assert space.eq_w(space.wrap(value), space.wrap(x))
  67. value = 200
  68. x = rffi.cast(rffi.UCHAR, r_uint(value))
  69. assert space.eq_w(space.wrap(value), space.wrap(x))