Exemple #1
0
def test_equility():
    for args in _get_lranges_args():
        a, b = lrange(*args), lrange(*args)
        yield nose.tools.ok_, a is not b
        yield nose.tools.assert_not_equals, a, b
        yield nose.tools.eq_, a.length, b.length
        if a.length < LENGTH_CUTOFF: # skip long
            yield nose.tools.eq_, list(a), list(b), (a, b)
        yield eq_lrange, a, b
Exemple #2
0
def test_contains():
    class IntSubclass(int):
        pass

    for r in [lrange(10), lrange(9,-1,-1)]:
        for i in range(10):
            yield nose.tools.ok_, i in r
            yield nose.tools.ok_, IntSubclass(i) in r

        yield nose.tools.ok_, 10 not in r
        yield nose.tools.ok_, -1 not in r
        yield nose.tools.ok_, IntSubclass(10) not in r
        yield nose.tools.ok_, IntSubclass(-1) not in r
Exemple #3
0
    def __getitem__(self, slices):
        # make sure slices is iterable
        try: slices = list(iter(slices))
        except TypeError:
            slices = [slices]
        # behaviour for short and long integers must be the same
        for N in (None, 2**101):
            for s in slices:
                if type(s) == slice:
                    start, stop, step = s.start, s.stop, s.step
                    if N is not None:
                        start = start and start+N
                        stop = stop and stop+N
                        step = step
                    # try from 0 to 3 arguments
                    for args in [(), (stop,), (start, stop),
                                 (start, stop, step)]:
                        try:
                            lr = lrange(*args)
                            if len(args) == 1:
                                nstart, nstep, nstop = 0, 1, stop
                                assert stop is not None
                            if len(args) == 2:
                                nstart, nstop, nstep = start, stop, 1
                                assert start is not None
                                assert stop is not None
                            if len(args) == 3:
                                nstart, nstop, nstep = start, stop, step
                                assert start is not None
                                assert stop is not None
                                assert step is not None
                            assert 0 <= len(args) < 4

                            nose.tools.eq_(lr._start, nstart)
                            nose.tools.eq_(lr._stop, nstop)
                            nose.tools.eq_(lr._step, nstep)
                            if lr.length < LENGTH_CUTOFF:
                                nose.tools.eq_(list(lr),
                                               list(range(nstart, nstop, nstep)))
                        except TypeError:
                            # expected if any of the arguments is None
                            if len(args) > 0:
                                assert start is None or stop is None or \
                                       step is None
                else: # s is not slice
                    assert s is not None
                    if N is not None:
                        s = s + N
                    lr = lrange(s)
                    nose.tools.eq_(lr.length, s)
Exemple #4
0
def test_len_overflow24():
    # __len__() should return 0 <= outcome < 2**31 on py2.4
    try: len(lrange(MAXINT))
    except OverflowError:
        if sys.version_info[:2] == (2,4):
            pass
        else:
            raise
Exemple #5
0
def test_getitem():
    r = lrange(MAXINT-2, MAXINT+3)
    for i in range(5):
        yield nose.tools.eq_, r[i], MAXINT-2+i
    for i in range(-1, -5, -1):
        yield nose.tools.eq_, r[i], MAXINT+3+i

    L = []
    L[:] = r
    yield nose.tools.eq_, len(L), len(r)
    yield nose.tools.eq_, L, list(r)
Exemple #6
0
    def problem_3(self, num):
        """
        The prime factors of 13195 are 5, 7, 13 and 29.

        What is the largest prime factor of the number 600851475143
        """
        result = []
        for n in lrange(2, num):
            while(num%n==0):
                if(num%n==0):
                    num = num/n
                    result.append(n)
        return result
Exemple #7
0
def test_empty_range():
    for args in (
        "-3",
        "1 3 -1",
        "1 1",
        "1 1 1",
        "-3 -4",
        "-3 -2 -1",
        "-3 -3 -1",
        "-3 -3",
        ):
        r = lrange(*[int(a) for a in args.split()])
        yield nose.tools.eq_, len(r), 0
        L = list(r)
        yield nose.tools.eq_, len(L), 0
Exemple #8
0
def test_big_ints():
    N = 10**100
    for args, len_ in [
        [(N,), N],
        [(N, N+10), 10],
        [(N, N-10, -2), 5],
        ]:
        ir = lrange(*args)
        #
        ir[ir.length-1]
        #
        if len(args) >= 2:
            r = range(*args)
            yield nose.tools.eq_, list(ir), list(r)
            yield nose.tools.eq_, ir[ir.length-1], r[-1]
            yield nose.tools.eq_, list(reversed(ir)), list(reversed(r))
Exemple #9
0
def invmodp(a, p):
    '''
    The multiplicitive inverse of a in the integers modulo p.
    Return b s.t.
    a * b == 1 mod p

    From: http://code.activestate.com/recipes/576737-inverse-modulo-p/
    '''

    r = a
    d = 1L
    for count in lrange.lrange(p):
        d = ((p // r + 1L) * d) % p
        r = (d * a) % p
        if r == 1L:
            break
    else:
        raise ValueError('%d has no inverse mod %d' % (a, p))
    return d
Exemple #10
0
def invmodp(a, p):
    '''
    The multiplicitive inverse of a in the integers modulo p.
    Return b s.t.
    a * b == 1 mod p

    From: http://code.activestate.com/recipes/576737-inverse-modulo-p/
    '''

    r = a
    d = 1L
    for count in lrange.lrange(p):
        d = ((p // r + 1L) * d) % p
        r = (d * a) % p
        if r == 1L:
            break
    else:
        raise ValueError('%d has no inverse mod %d' % (a, p))
    return d
Exemple #11
0
def test_new_none():
    lrange(None)
Exemple #12
0
def _get_lranges():
    return (_get_short_lranges() +
            [lrange(*args) for args in _get_lranges_args()])
Exemple #13
0
def test_repr():
    yield nose.tools.eq_, repr(lrange(True)), repr(lrange(1))
    for r in _get_lranges():
        yield eq_lrange, eval(repr(r)), r
Exemple #14
0
def test_kwarg():
    lrange(stop=10)
Exemple #15
0
def test_len_overflow():
    len(lrange(MAXINT+1))
Exemple #16
0
def test_negative_index():
    yield nose.tools.eq_, lrange(10)[-1], 9
    yield nose.tools.eq_, lrange(2**100+1)[-1], 2**100
Exemple #17
0
 def _test(args):
     lrange(*map(int, args)) # args work as ints
     # args raise TypeError as floats
     nose.tools.assert_raises(TypeError, lrange, *args)
Exemple #18
0
def test_overflow():
    lo, hi, step = MAXINT-2, 4*MAXINT+3, MAXINT // 10
    lr = lrange(lo, hi, step)
    xr = lrange(MAXINT//4, MAXINT//2, MAXINT // 10)
    nose.tools.eq_(list(lr), list(range(lo, hi, step)))
Exemple #19
0
def test_empty_args():
    lrange()
Exemple #20
0
def test_index_error():
    r = lrange(10)
    for i in [-11, 10, 11]:
        yield nose.tools.assert_raises, IndexError, r.__getitem__, i
Exemple #21
0
def test_small_ints():
    for args in _get_short_lranges_args():
        ir, r = lrange(*args), xrange(*args)
        yield nose.tools.eq_, len(ir), len(r)
        yield nose.tools.eq_, list(ir), list(r)
Exemple #22
0
 def setUp(self):
     self.lr = lrange(BIGINT)
Exemple #23
0
def test_len_type():
    ir = lrange(10)
    yield nose.tools.eq_, type(len(ir)), int
    yield nose.tools.eq_, type(len(xrange(10))), int
    yield nose.tools.eq_, type(len(range(10))), int
Exemple #24
0
def interval_iter(self):
    for n in lrange(self.begin, self.end):
        yield n
from lrange import lrange

print(lrange(11))
print(lrange(5, 11))
print(lrange(5, 11, 2))
print(lrange(0, 10, 0.5))
# Errors:
# print(lrange())
# print(lrange(0, 10, -1))
# print(lrange("2"))