Esempio n. 1
0
    def test_empty_extend_with_any(self):
        empty = W_ListObject(self.space, [])
        assert isinstance(empty.strategy, EmptyListStrategy)
        empty.extend(W_ListObject(self.space, [self.space.wrap(1), self.space.wrap(2), self.space.wrap(3)]))
        assert isinstance(empty.strategy, IntegerListStrategy)

        empty = W_ListObject(self.space, [])
        assert isinstance(empty.strategy, EmptyListStrategy)
        empty.extend(W_ListObject(self.space, [self.space.wrap("a"), self.space.wrap("b"), self.space.wrap("c")]))
        assert isinstance(empty.strategy, StringListStrategy)

        empty = W_ListObject(self.space, [])
        assert isinstance(empty.strategy, EmptyListStrategy)
        r = make_range_list(self.space, 1,3,7)
        empty.extend(r)
        assert isinstance(empty.strategy, RangeListStrategy)
        print empty.getitem(6)
        assert self.space.is_true(self.space.eq(empty.getitem(1), self.space.wrap(4)))

        empty = W_ListObject(self.space, [])
        assert isinstance(empty.strategy, EmptyListStrategy)
        empty.extend(W_ListObject(self.space, [self.space.wrap(1), self.space.wrap(2), self.space.wrap(3)]))
        assert isinstance(empty.strategy, IntegerListStrategy)

        empty = W_ListObject(self.space, [])
        assert isinstance(empty.strategy, EmptyListStrategy)
        empty.extend(W_ListObject(self.space, []))
        assert isinstance(empty.strategy, EmptyListStrategy)
Esempio n. 2
0
    def test_setitem(self):
        space = self.space
        w = space.wrap
        # This should work if test_listobject.py passes
        l = W_ListObject(space, [w('a'),w('b'),w('c')])
        assert space.eq_w(l.getitem(0), w('a'))
        l.setitem(0, w('d'))
        assert space.eq_w(l.getitem(0), w('d'))

        assert isinstance(l.strategy, BytesListStrategy)

        # IntStrategy to ObjectStrategy
        l = W_ListObject(space, [w(1),w(2),w(3)])
        assert isinstance(l.strategy, IntegerListStrategy)
        l.setitem(0, w('d'))
        assert isinstance(l.strategy, ObjectListStrategy)

        # BytesStrategy to ObjectStrategy
        l = W_ListObject(space, [w('a'),w('b'),w('c')])
        assert isinstance(l.strategy, BytesListStrategy)
        l.setitem(0, w(2))
        assert isinstance(l.strategy, ObjectListStrategy)

        # UnicodeStrategy to ObjectStrategy
        l = W_ListObject(space, [w(u'a'),w(u'b'),w(u'c')])
        assert isinstance(l.strategy, UnicodeListStrategy)
        l.setitem(0, w(2))
        assert isinstance(l.strategy, ObjectListStrategy)

        # FloatStrategy to ObjectStrategy
        l = W_ListObject(space, [w(1.2),w(2.3),w(3.4)])
        assert isinstance(l.strategy, FloatListStrategy)
        l.setitem(0, w("a"))
        assert isinstance(l.strategy, ObjectListStrategy)
Esempio n. 3
0
    def test_setitem(self):
        # This should work if test_listobject.py passes
        l = W_ListObject(self.space, [self.space.wrap('a'),self.space.wrap('b'),self.space.wrap('c')])
        assert self.space.eq_w(l.getitem(0), self.space.wrap('a'))
        l.setitem(0, self.space.wrap('d'))
        assert self.space.eq_w(l.getitem(0), self.space.wrap('d'))

        assert isinstance(l.strategy, StringListStrategy)

        # IntStrategy to ObjectStrategy
        l = W_ListObject(self.space, [self.space.wrap(1),self.space.wrap(2),self.space.wrap(3)])
        assert isinstance(l.strategy, IntegerListStrategy)
        l.setitem(0, self.space.wrap('d'))
        assert isinstance(l.strategy, ObjectListStrategy)

        # StringStrategy to ObjectStrategy
        l = W_ListObject(self.space, [self.space.wrap('a'),self.space.wrap('b'),self.space.wrap('c')])
        assert isinstance(l.strategy, StringListStrategy)
        l.setitem(0, self.space.wrap(2))
        assert isinstance(l.strategy, ObjectListStrategy)

        # FloatStrategy to ObjectStrategy
        l = W_ListObject(self.space, [self.space.wrap(1.2),self.space.wrap(2.3),self.space.wrap(3.4)])
        assert isinstance(l.strategy, FloatListStrategy)
        l.setitem(0, self.space.wrap("a"))
        assert isinstance(l.strategy, ObjectListStrategy)
Esempio n. 4
0
    def test_setitem(self):
        space = self.space
        w = space.wrap
        wb = space.wrapbytes
        # This should work if test_listobject.py passes
        l = W_ListObject(space, [w('a'),w('b'),w('c')])
        assert space.eq_w(l.getitem(0), w('a'))
        l.setitem(0, w('d'))
        assert space.eq_w(l.getitem(0), w('d'))

        assert isinstance(l.strategy, UnicodeListStrategy)

        # IntStrategy to ObjectStrategy
        l = W_ListObject(space, [w(1),w(2),w(3)])
        assert isinstance(l.strategy, IntegerListStrategy)
        l.setitem(0, w('d'))
        assert isinstance(l.strategy, ObjectListStrategy)

        # BytesStrategy to ObjectStrategy
        l = W_ListObject(space, [wb('a'),wb('b'),wb('c')])
        assert isinstance(l.strategy, BytesListStrategy)
        l.setitem(0, w(2))
        assert isinstance(l.strategy, ObjectListStrategy)

        # FloatStrategy to ObjectStrategy
        l = W_ListObject(space, [w(1.2),w(2.3),w(3.4)])
        assert isinstance(l.strategy, FloatListStrategy)
        l.setitem(0, w("a"))
        assert isinstance(l.strategy, ObjectListStrategy)
Esempio n. 5
0
 def test_int_or_float_from_float(self):
     space = self.space
     w = space.wrap
     w_l = W_ListObject(space, [space.wrap(-42.5)])
     assert isinstance(w_l.strategy, FloatListStrategy)
     w_l.append(w(-15))
     assert isinstance(w_l.strategy, IntOrFloatListStrategy)
     assert space.float_w(w_l.getitem(0)) == -42.5
     assert space.int_w(w_l.getitem(1)) == -15
     assert space.len_w(w_l) == 2
Esempio n. 6
0
 def test_int_or_float_from_integer(self):
     space = self.space
     w = space.wrap
     w_l = W_ListObject(space, [space.wrap(int(-2**31))])
     assert isinstance(w_l.strategy, IntegerListStrategy)
     w_l.append(w(-5.1))
     assert isinstance(w_l.strategy, IntOrFloatListStrategy)
     assert space.int_w(w_l.getitem(0)) == -2**31
     assert space.float_w(w_l.getitem(1)) == -5.1
     assert space.len_w(w_l) == 2
Esempio n. 7
0
    def test_empty_extend_with_any(self):
        empty = W_ListObject(self.space, [])
        assert isinstance(empty.strategy, EmptyListStrategy)
        empty.extend(
            W_ListObject(
                self.space,
                [self.space.wrap(1),
                 self.space.wrap(2),
                 self.space.wrap(3)]))
        assert isinstance(empty.strategy, IntegerListStrategy)

        empty = W_ListObject(self.space, [])
        assert isinstance(empty.strategy, EmptyListStrategy)
        empty.extend(
            W_ListObject(self.space, [
                self.space.wrap("a"),
                self.space.wrap("b"),
                self.space.wrap("c")
            ]))
        assert isinstance(empty.strategy, StringListStrategy)

        empty = W_ListObject(self.space, [])
        assert isinstance(empty.strategy, EmptyListStrategy)
        r = make_range_list(self.space, 1, 3, 7)
        empty.extend(r)
        assert isinstance(empty.strategy, RangeListStrategy)
        print empty.getitem(6)
        assert self.space.is_true(
            self.space.eq(empty.getitem(1), self.space.wrap(4)))

        empty = W_ListObject(self.space, [])
        assert isinstance(empty.strategy, EmptyListStrategy)
        empty.extend(
            W_ListObject(
                self.space,
                [self.space.wrap(1),
                 self.space.wrap(2),
                 self.space.wrap(3)]))
        assert isinstance(empty.strategy, IntegerListStrategy)

        empty = W_ListObject(self.space, [])
        assert isinstance(empty.strategy, EmptyListStrategy)
        empty.extend(
            W_ListObject(self.space, [
                self.space.wrap(1.1),
                self.space.wrap(2.2),
                self.space.wrap(3.3)
            ]))
        assert isinstance(empty.strategy, FloatListStrategy)

        empty = W_ListObject(self.space, [])
        assert isinstance(empty.strategy, EmptyListStrategy)
        empty.extend(W_ListObject(self.space, []))
        assert isinstance(empty.strategy, EmptyListStrategy)
Esempio n. 8
0
 def test_int_or_float_from_float_int_overflow(self):
     if sys.maxint == 2147483647:
         py.test.skip("only on 64-bit")
     space = self.space
     w = space.wrap
     ovf1 = 2 ** 31
     w_l = W_ListObject(space, [space.wrap(1.2)])
     assert isinstance(w_l.strategy, FloatListStrategy)
     w_l.append(w(ovf1))
     assert isinstance(w_l.strategy, ObjectListStrategy)
     assert space.float_w(w_l.getitem(0)) == 1.2
     assert space.int_w(w_l.getitem(1)) == ovf1
     assert space.len_w(w_l) == 2
Esempio n. 9
0
    def test_empty_extend_with_any(self):
        space = self.space
        w = space.wrap
        wb = space.wrapbytes

        empty = W_ListObject(space, [])
        assert isinstance(empty.strategy, EmptyListStrategy)
        empty.extend(W_ListObject(space, [w(1), w(2), w(3)]))
        assert isinstance(empty.strategy, IntegerListStrategy)

        empty = W_ListObject(space, [])
        assert isinstance(empty.strategy, EmptyListStrategy)
        empty.extend(W_ListObject(space, [wb("a"), wb("b"), wb("c")]))
        assert isinstance(empty.strategy, BytesListStrategy)

        empty = W_ListObject(space, [])
        assert isinstance(empty.strategy, EmptyListStrategy)
        empty.extend(W_ListObject(space, [w(u"a"), w(u"b"), w(u"c")]))
        assert isinstance(empty.strategy, UnicodeListStrategy)

        empty = W_ListObject(space, [])
        assert isinstance(empty.strategy, EmptyListStrategy)
        r = make_range_list(space, 1,3,7)
        empty.extend(r)
        assert isinstance(empty.strategy, RangeListStrategy)
        print empty.getitem(6)
        assert space.is_true(space.eq(empty.getitem(1), w(4)))

        empty = W_ListObject(space, [])
        assert isinstance(empty.strategy, EmptyListStrategy)
        r = make_range_list(space, 0, 1, 10)
        empty.extend(r)
        assert isinstance(empty.strategy, SimpleRangeListStrategy)
        assert space.is_true(space.eq(empty.getitem(1), w(1)))

        empty = W_ListObject(space, [])
        assert isinstance(empty.strategy, EmptyListStrategy)
        empty.extend(W_ListObject(space, [w(1), w(2), w(3)]))
        assert isinstance(empty.strategy, IntegerListStrategy)

        empty = W_ListObject(space, [])
        assert isinstance(empty.strategy, EmptyListStrategy)
        empty.extend(W_ListObject(space, [w(1.1), w(2.2), w(3.3)]))
        assert isinstance(empty.strategy, FloatListStrategy)

        empty = W_ListObject(space, [])
        assert isinstance(empty.strategy, EmptyListStrategy)
        empty.extend(W_ListObject(space, []))
        assert isinstance(empty.strategy, EmptyListStrategy)
Esempio n. 10
0
    def test_getitems_fixedsize(self):
        w = self.space.wrap
        from pypy.objspace.std.listobject import make_range_list
        rangelist = make_range_list(self.space, 1, 1, 7)
        emptylist = W_ListObject(self.space, [])
        intlist = W_ListObject(
            self.space,
            [w(1), w(2), w(3), w(4), w(5),
             w(6), w(7)])
        strlist = W_ListObject(
            self.space,
            [w('1'), w('2'),
             w('3'), w('4'),
             w('5'), w('6'),
             w('7')])
        floatlist = W_ListObject(
            self.space,
            [w(1.0), w(2.0),
             w(3.0), w(4.0),
             w(5.0), w(6.0),
             w(7.0)])
        objlist = W_ListObject(
            self.space,
            [w(1), w('2'), w(3.0),
             w(4), w(5), w(6), w(7)])

        emptylist_copy = emptylist.getitems_fixedsize()
        assert emptylist_copy == []

        rangelist_copy = rangelist.getitems_fixedsize()
        intlist_copy = intlist.getitems_fixedsize()
        strlist_copy = strlist.getitems_fixedsize()
        floatlist_copy = floatlist.getitems_fixedsize()
        objlist_copy = objlist.getitems_fixedsize()
        for i in range(7):
            assert self.space.eq_w(rangelist_copy[i], rangelist.getitem(i))
            assert self.space.eq_w(intlist_copy[i], intlist.getitem(i))
            assert self.space.eq_w(strlist_copy[i], strlist.getitem(i))
            assert self.space.eq_w(floatlist_copy[i], floatlist.getitem(i))
            assert self.space.eq_w(objlist_copy[i], objlist.getitem(i))

        emptylist_copy = emptylist.getitems_unroll()
        assert emptylist_copy == []

        rangelist_copy = rangelist.getitems_unroll()
        intlist_copy = intlist.getitems_unroll()
        strlist_copy = strlist.getitems_unroll()
        floatlist_copy = floatlist.getitems_unroll()
        objlist_copy = objlist.getitems_unroll()
        for i in range(7):
            assert self.space.eq_w(rangelist_copy[i], rangelist.getitem(i))
            assert self.space.eq_w(intlist_copy[i], intlist.getitem(i))
            assert self.space.eq_w(strlist_copy[i], strlist.getitem(i))
            assert self.space.eq_w(floatlist_copy[i], floatlist.getitem(i))
            assert self.space.eq_w(objlist_copy[i], objlist.getitem(i))
Esempio n. 11
0
    def test_setitem(self):
        # This should work if test_listobject.py passes
        l = W_ListObject(
            self.space,
            [self.space.wrap('a'),
             self.space.wrap('b'),
             self.space.wrap('c')])
        assert self.space.eq_w(l.getitem(0), self.space.wrap('a'))
        l.setitem(0, self.space.wrap('d'))
        assert self.space.eq_w(l.getitem(0), self.space.wrap('d'))

        assert isinstance(l.strategy, StringListStrategy)

        # IntStrategy to ObjectStrategy
        l = W_ListObject(
            self.space,
            [self.space.wrap(1),
             self.space.wrap(2),
             self.space.wrap(3)])
        assert isinstance(l.strategy, IntegerListStrategy)
        l.setitem(0, self.space.wrap('d'))
        assert isinstance(l.strategy, ObjectListStrategy)

        # StringStrategy to ObjectStrategy
        l = W_ListObject(
            self.space,
            [self.space.wrap('a'),
             self.space.wrap('b'),
             self.space.wrap('c')])
        assert isinstance(l.strategy, StringListStrategy)
        l.setitem(0, self.space.wrap(2))
        assert isinstance(l.strategy, ObjectListStrategy)

        # FloatStrategy to ObjectStrategy
        l = W_ListObject(
            self.space,
            [self.space.wrap(1.2),
             self.space.wrap(2.3),
             self.space.wrap(3.4)])
        assert isinstance(l.strategy, FloatListStrategy)
        l.setitem(0, self.space.wrap("a"))
        assert isinstance(l.strategy, ObjectListStrategy)
Esempio n. 12
0
 def test_int_or_float_base(self):
     from rpython.rlib.rfloat import INFINITY, NAN
     space = self.space
     w = space.wrap
     w_l = W_ListObject(space, [space.wrap(1), space.wrap(2.3)])
     assert isinstance(w_l.strategy, IntOrFloatListStrategy)
     w_l.append(w(int(2**31-1)))
     assert isinstance(w_l.strategy, IntOrFloatListStrategy)
     w_l.append(w(-5.1))
     assert isinstance(w_l.strategy, IntOrFloatListStrategy)
     assert space.int_w(w_l.getitem(2)) == 2**31-1
     assert space.float_w(w_l.getitem(3)) == -5.1
     w_l.append(w(INFINITY))
     assert isinstance(w_l.strategy, IntOrFloatListStrategy)
     w_l.append(w(NAN))
     assert isinstance(w_l.strategy, IntOrFloatListStrategy)
     w_l.append(w(-NAN))
     assert isinstance(w_l.strategy, IntOrFloatListStrategy)
     w_l.append(space.newlist([]))
     assert isinstance(w_l.strategy, ObjectListStrategy)
Esempio n. 13
0
 def test_int_or_float_from_float_special_nan(self):
     from rpython.rlib import longlong2float, rarithmetic
     space = self.space
     w = space.wrap
     ll = rarithmetic.r_longlong(0xfffffffe12345678 - 2**64)
     specialnan = longlong2float.longlong2float(ll)
     w_l = W_ListObject(space, [space.wrap(specialnan)])
     assert isinstance(w_l.strategy, FloatListStrategy)
     w_l.append(w(42))
     assert isinstance(w_l.strategy, ObjectListStrategy)
     assert space.int_w(w_l.getitem(1)) == 42
     assert space.len_w(w_l) == 2
Esempio n. 14
0
    def test_getitems_fixedsize(self):
        w = self.space.wrap
        from pypy.objspace.std.listobject import make_range_list

        rangelist = make_range_list(self.space, 1, 1, 7)
        emptylist = W_ListObject(self.space, [])
        intlist = W_ListObject(self.space, [w(1), w(2), w(3), w(4), w(5), w(6), w(7)])
        strlist = W_ListObject(self.space, [w("1"), w("2"), w("3"), w("4"), w("5"), w("6"), w("7")])
        floatlist = W_ListObject(self.space, [w(1.0), w(2.0), w(3.0), w(4.0), w(5.0), w(6.0), w(7.0)])
        objlist = W_ListObject(self.space, [w(1), w("2"), w(3.0), w(4), w(5), w(6), w(7)])

        emptylist_copy = emptylist.getitems_fixedsize()
        assert emptylist_copy == []

        rangelist_copy = rangelist.getitems_fixedsize()
        intlist_copy = intlist.getitems_fixedsize()
        strlist_copy = strlist.getitems_fixedsize()
        floatlist_copy = floatlist.getitems_fixedsize()
        objlist_copy = objlist.getitems_fixedsize()
        for i in range(7):
            assert self.space.eq_w(rangelist_copy[i], rangelist.getitem(i))
            assert self.space.eq_w(intlist_copy[i], intlist.getitem(i))
            assert self.space.eq_w(strlist_copy[i], strlist.getitem(i))
            assert self.space.eq_w(floatlist_copy[i], floatlist.getitem(i))
            assert self.space.eq_w(objlist_copy[i], objlist.getitem(i))

        emptylist_copy = emptylist.getitems_unroll()
        assert emptylist_copy == []

        rangelist_copy = rangelist.getitems_unroll()
        intlist_copy = intlist.getitems_unroll()
        strlist_copy = strlist.getitems_unroll()
        floatlist_copy = floatlist.getitems_unroll()
        objlist_copy = objlist.getitems_unroll()
        for i in range(7):
            assert self.space.eq_w(rangelist_copy[i], rangelist.getitem(i))
            assert self.space.eq_w(intlist_copy[i], intlist.getitem(i))
            assert self.space.eq_w(strlist_copy[i], strlist.getitem(i))
            assert self.space.eq_w(floatlist_copy[i], floatlist.getitem(i))
            assert self.space.eq_w(objlist_copy[i], objlist.getitem(i))
Esempio n. 15
0
 def test_stringstrategy_wraps_bytes(self):
     space = self.space
     wb = space.wrapbytes
     l = W_ListObject(space, [wb('a'), wb('b')])
     w_item = l.getitem(0)
     assert isinstance(w_item, space.StringObjectCls)