def test_common(self):
        try:
            from collections import Counter
        except ImportError:
            # Python 2.6
            from python_toolbox.third_party.collections import Counter
        bag = self.bag_type('abracadabra')
        if not issubclass(self.bag_type, nifty_collections.Ordered):
            assert bag == Counter('abracadabra') == Counter(bag) == \
                   self.bag_type(Counter('abracadabra'))

        assert len(bag) == 5
        assert set(bag) == set(bag.keys()) == set('abracadabra')
        assert set(bag.values()) == set((1, 2, 5))
        assert set(bag.items()) == \
                        set((('a', 5), ('r', 2), ('b', 2), ('c', 1), ('d', 1)))
        assert bag['a'] == 5
        assert bag['missing value'] == 0
        assert len(bag) == 5
        assert 'a' in bag
        assert 'r' in bag
        assert 'R' not in bag
        assert 'x' not in self.bag_type({
            'x': 0,
        })

        assert bag != 7

        assert set(bag.most_common()) == set(bag.most_common(len(bag))) == \
                                           set(Counter(bag).most_common()) == \
                                       set(Counter(bag.elements).most_common())

        assert bag.most_common(1) == (('a', 5), )
        assert set(bag.most_common(3)) == set((('a', 5), ('b', 2), ('r', 2)))

        assert bag + bag == self.bag_type('abracadabra' * 2)
        assert bag - bag == self.bag_type()
        assert bag - self.bag_type('a') == self.bag_type('abracadabr')
        assert bag - self.bag_type('a') == self.bag_type('abracadabr')
        assert bag | self.bag_type('a') == bag
        assert bag | bag == bag | bag | bag == bag
        assert bag & self.bag_type('a') == self.bag_type('a')
        assert bag & bag == \
               bag & bag & bag == bag

        assert self.bag_type(bag.elements) == bag

        with cute_testing.RaiseAssertor(TypeError):
            +bag
        with cute_testing.RaiseAssertor(TypeError):
            -bag

        assert re.match('^(Frozen)?(Ordered)?Bag\(.*$', repr(bag))

        assert bag.copy() == bag

        assert pickle.loads(pickle.dumps(bag)) == bag

        assert self.bag_type({'a': 0, 'b': 1,}) == \
                                             self.bag_type({'c': 0, 'b': 1,})
def test_directly_on_object():
    
    class A(EqualByIdentity):
        def woof(self):
            return (self, 'woof')

    a0 = A()
    a1 = A()

    @monkeypatching_tools.monkeypatch(a0)
    def meow(a):
        return 'not meow'
    
    @monkeypatching_tools.monkeypatch(a0)
    def woof(a):
        return 'not woof'
    
    assert a0.meow() == 'not meow'
    assert a0.woof() == 'not woof'
    
    assert a1.woof() == (a1, 'woof')
    
    with cute_testing.RaiseAssertor(AttributeError):
        A.meow()
    with cute_testing.RaiseAssertor(AttributeError):
        a1.meow()
        
    assert A.woof(a0) == (a0, 'woof')
Exemple #3
0
def test_chain_spaces():
    chain_space = ChainSpace((range(3), 'meow', range(22, 19, -1)))
    assert tuple(chain_space) == (0, 1, 2, 'm', 'e', 'o', 'w', 22, 21, 20)
    assert len(chain_space) == chain_space.length == 10
    assert bool(chain_space) is True
    for i, item in enumerate(chain_space):
        assert chain_space[i] == item
        assert chain_space.index(item) == i

    assert chain_space == chain_space

    assert 0 in chain_space
    assert 'm' in chain_space
    assert [] not in chain_space

    with cute_testing.RaiseAssertor(ValueError):
        chain_space.index('nope')
    with cute_testing.RaiseAssertor(IndexError):
        chain_space[-11]
    with cute_testing.RaiseAssertor(IndexError):
        chain_space[-110]
    with cute_testing.RaiseAssertor(IndexError):
        chain_space[11]
    with cute_testing.RaiseAssertor(IndexError):
        chain_space[1100]

    assert chain_space[-1] == 20
    assert chain_space[-2] == 21
    assert chain_space[-10] == 0

    assert not ChainSpace(())
Exemple #4
0
 def test_move_to_end(self):
     # Overridden in test cases for bag types where it's implemented.
     bag = self.bag_type('aaabbc')
     with cute_testing.RaiseAssertor(AttributeError):
         bag.move_to_end('c')
     with cute_testing.RaiseAssertor(AttributeError):
         bag.move_to_end('x', last=False)
Exemple #5
0
def test_negative():
    with cute_testing.RaiseAssertor(NotImplementedError):
        convert_to_base_in_tuple(-1, 7)
    with cute_testing.RaiseAssertor(NotImplementedError):
        convert_to_base_in_tuple(-13462, 4)
    with cute_testing.RaiseAssertor(NotImplementedError):
        convert_to_base_in_tuple(-23451759010224, 11)
Exemple #6
0
def test_dapplied_perm_space():
    dapplied_perm_space = PermSpace(5, domain='growl')
    assert dapplied_perm_space.is_dapplied
    assert not dapplied_perm_space.is_rapplied
    assert not dapplied_perm_space.is_fixed
    assert not dapplied_perm_space.is_sliced
    
    assert (0, 4, 2, 3, 1) in dapplied_perm_space
    assert (0, 4, 'ooga booga', 2, 3, 1) not in dapplied_perm_space
    assert dapplied_perm_space.get_partialled(3)[2] not in dapplied_perm_space
    
    assert dapplied_perm_space.undapplied[7] not in dapplied_perm_space
    
    dapplied_perm = dapplied_perm_space[-1]
    assert dapplied_perm in dapplied_perm_space
    assert isinstance(reversed(dapplied_perm), Perm)
    assert reversed(dapplied_perm) in dapplied_perm_space
    assert tuple(reversed(dapplied_perm)) == \
                                          tuple(reversed(tuple(dapplied_perm)))
    assert reversed(reversed(dapplied_perm)) == dapplied_perm
    
    assert dapplied_perm['l'] == 0
    assert dapplied_perm['w'] == 1
    assert dapplied_perm['o'] == 2
    assert dapplied_perm['r'] == 3
    assert dapplied_perm['g'] == 4
    assert repr(dapplied_perm) == \
                     '''<Perm: ('g', 'r', 'o', 'w', 'l') => (4, 3, 2, 1, 0)>'''
    
    assert dapplied_perm.index(4) == 'g'
        
    assert dapplied_perm.as_dictoid['g'] == 4
    assert dapplied_perm.items[0] == ('g', 4)
    
    with cute_testing.RaiseAssertor(IndexError):
        dapplied_perm[2]
    with cute_testing.RaiseAssertor(IndexError):
        dapplied_perm.as_dictoid[2]
    with cute_testing.RaiseAssertor(ValueError):
        dapplied_perm.index('x')
    
    # `__contains__` works on the values, not the keys:
    for char in 'growl':
        assert char not in dapplied_perm
    for number in range(5):
        assert number in dapplied_perm
        
    assert not dapplied_perm_space._just_fixed.is_fixed
    assert not dapplied_perm_space._just_fixed.is_dapplied
    assert not dapplied_perm_space._just_fixed.is_rapplied
    assert not dapplied_perm_space._just_fixed.is_partial
    assert not dapplied_perm_space._just_fixed.is_combination
    assert not dapplied_perm_space._just_fixed.is_degreed
    
    assert repr(dapplied_perm_space) == "<PermSpace: 'growl' => 0..4>"
    
    # Testing `repr` shortening: 
    assert repr(PermSpace(20, domain=tuple(range(19, -1, -1)))) == (
        '<PermSpace: (19, 18, 17, 16, 15, 14, 13, 12, 11 ... ) => 0..19>'
    )
Exemple #7
0
def test():
    assert dict_tools.reverse({'one': 1, 'two': 2, 'three': 3}) == \
                                               {1: 'one', 2: 'two', 3: 'three'}
    assert dict_tools.reverse({}) == {}
    with cute_testing.RaiseAssertor():
        dict_tools.reverse({1: 0, 2: 0})
    with cute_testing.RaiseAssertor():
        dict_tools.reverse({1: []})
Exemple #8
0
 def test_index(self):
     bag = self.bag_type('aaabbc')
     if not isinstance(bag, collections.Hashable):
         bag['d'] = 0
     with cute_testing.RaiseAssertor(AttributeError):
         bag.index('a')
     with cute_testing.RaiseAssertor(AttributeError):
         bag.index('x')
Exemple #9
0
def test():
    
    class A(object):
        y = 'y'
        def __init__(self):
            self.x = 'x'
            self.obj = Object()
            self.obj.z = 'z'
            self.uuid = uuid.uuid4()
            
        x_proxy = ProxyProperty('.x')
        y_proxy = ProxyProperty(
            '.y',
            doc='Proxy for `y`.'
        )
        z_proxy = ProxyProperty('.obj.z', doc='aye, this my favorite z.')
        uuid_proxy = ProxyProperty(
            '.uuid',
            'Object-specific UUID.'
        )
        nonexistant_proxy = ProxyProperty('.whatevs')
        
    assert isinstance(A.x_proxy, ProxyProperty)
    assert isinstance(A.y_proxy, ProxyProperty)
    assert isinstance(A.z_proxy, ProxyProperty)
    assert isinstance(A.uuid_proxy, ProxyProperty)
    assert isinstance(A.nonexistant_proxy, ProxyProperty)
    
    a0 = A()
    a1 = A()
    
    assert a0.x_proxy == a1.x_proxy == 'x'
    assert a0.y_proxy == a1.y_proxy == 'y'
    assert a0.z_proxy == a1.z_proxy == 'z'
    assert isinstance(a0.uuid_proxy, uuid.UUID)
    assert isinstance(a1.uuid_proxy, uuid.UUID)
    assert a0.uuid == a0.uuid_proxy != a1.uuid_proxy == a1.uuid
    with cute_testing.RaiseAssertor(AttributeError):
        a0.nonexistant_proxy
    with cute_testing.RaiseAssertor(AttributeError):
        a1.nonexistant_proxy
        
    ### Setting proxy-properties to different values: #########################
    #                                                                         #
    a0.x_proxy = 7
    assert a0.x_proxy == 7 != a1.x_proxy == 'x'
        
    a0.y_proxy = 'meow'
    assert a0.y_proxy == 'meow' != a1.y_proxy == 'y'
        
    a0.z_proxy = [1, 2, 3]
    assert a0.z_proxy == [1, 2, 3] != a1.z_proxy == 'z'
    #                                                                         #
    ### Finished setting proxy-properties to different values. ################

    assert repr(A.x_proxy) == '''<ProxyProperty: '.x'>'''
    assert repr(A.z_proxy) == ('''<ProxyProperty: '.obj.z', doc='aye, this '''
                               '''my favorite z.'>''')
def test():
    assert decimal_number_from_string('7') == 7
    assert type(decimal_number_from_string('7')) == int
    assert decimal_number_from_string('-12.34') == -12.34
    assert type(decimal_number_from_string('-12.34')) == float
    with cute_testing.RaiseAssertor():
        decimal_number_from_string(31412)
    with cute_testing.RaiseAssertor():
        decimal_number_from_string('JJfa')
 def test_hash(self):
     bag = self.bag_type('abracadabra')
     assert not isinstance(bag, collections.Hashable)
     assert not issubclass(self.bag_type, collections.Hashable)
     with cute_testing.RaiseAssertor(TypeError):
         {bag}
     with cute_testing.RaiseAssertor(TypeError):
         {bag: None,}
     with cute_testing.RaiseAssertor(TypeError):
         hash(bag)
Exemple #12
0
 def test_index(self):
     bag = self.bag_type('aaabbc')
     if not isinstance(bag, collections.Hashable):
         bag['d'] = 0
     assert bag.index('a') == 0
     assert bag.index('b') == 1
     assert bag.index('c') == 2
     with cute_testing.RaiseAssertor(ValueError):
         bag.index('d')
     with cute_testing.RaiseAssertor(ValueError):
         bag.index('x')
     with cute_testing.RaiseAssertor(ValueError):
         bag.index(('meow', ))
Exemple #13
0
    def test_move_to_end(self):
        bag = self.bag_type('aaabbc')
        bag.move_to_end('c')
        assert FrozenOrderedBag(bag) == FrozenOrderedBag('aaabbc')
        bag.move_to_end('a')
        assert FrozenOrderedBag(bag) == FrozenOrderedBag('bbcaaa')
        bag.move_to_end('c', last=False)
        assert FrozenOrderedBag(bag) == FrozenOrderedBag('cbbaaa')

        with cute_testing.RaiseAssertor(KeyError):
            bag.move_to_end('x')
        with cute_testing.RaiseAssertor(KeyError):
            bag.move_to_end('x', last=False)
Exemple #14
0
def test_illegal_cases():
    illegal_cases = ((4, 0), (infinity, 0), (-infinity, 0))
    for illegal_case in illegal_cases:
        with cute_testing.RaiseAssertor() as raise_assertor_0:
            cute_divmod(*illegal_case)
        with cute_testing.RaiseAssertor() as raise_assertor_1:
            divmod(*illegal_case)
        with cute_testing.RaiseAssertor() as raise_assertor_2:
            cute_floor_div(*illegal_case)
        assert logic_tools.all_equivalent((
            type(raise_assertor_0.exception),
            type(raise_assertor_1.exception),
            type(raise_assertor_2.exception),
        ))
Exemple #15
0
def test():
    huge_perm_space = PermSpace(range(100))
    big_perm_space = PermSpace(range(150),
                               fixed_map={
                                   1: 5,
                                   70: 3,
                               },
                               degrees=(3, 5))
    product_space = ProductSpace((huge_perm_space, big_perm_space))
    assert product_space.length == \
                                 huge_perm_space.length * big_perm_space.length
    (perm_0, perm_1) = product_space[10**10]
    assert perm_0 in huge_perm_space
    assert perm_1 in big_perm_space
    assert (perm_0, perm_1) in product_space
    assert product_space.index((perm_0, perm_1)) == 10**10
    repr(~perm_0)
    repr(~perm_1)
    assert (~perm_0, ~perm_1) in product_space
    assert repr(product_space) == (
        '<ProductSpace: 933262154439441526816992388562667004907159682643816214'
        '685929638952175999932299156089414639761565182862536979208272237582511'
        '85210916864000000000000000000000000 * 208755412068>')

    assert product_space
    assert not ProductSpace(((), ))
    assert not ProductSpace(((), {}))
    with cute_testing.RaiseAssertor(IndexError):
        product_space[product_space.length]
    with cute_testing.RaiseAssertor(IndexError):
        product_space[product_space.length + 7]
    with cute_testing.RaiseAssertor(IndexError):
        product_space[-product_space.length - 1]
    with cute_testing.RaiseAssertor(IndexError):
        product_space[-product_space.length - 100]

    assert {
        ProductSpace((range(4), range(3))),
        ProductSpace((range(4), range(3))),
        ProductSpace((range(3), range(4)))
    } == {
        ProductSpace((range(4), range(3))),
        ProductSpace((range(3), range(4)))
    }

    assert ProductSpace((range(4), range(3))) == \
                                             ProductSpace((range(4), range(3)))
    assert ProductSpace((range(4), range(3))) != \
                                             ProductSpace((range(3), range(4)))
Exemple #16
0
def test():
    frozen_ordered_dict = \
                        FrozenOrderedDict((('1', 'a'), ('2', 'b'), ('3', 'c')))
    assert len(frozen_ordered_dict) == 3
    assert set(frozen_ordered_dict) == set(frozen_ordered_dict.keys()) == \
                                                                     set('123')
    assert set(frozen_ordered_dict.values()) == set('abc')
    assert set(frozen_ordered_dict.items()) == \
                                     set((('1', 'a'), ('2', 'b'), ('3', 'c'),))
    assert frozen_ordered_dict['1'] == 'a'
    with cute_testing.RaiseAssertor(exception_type=LookupError):
        frozen_ordered_dict['missing value']
    assert set((frozen_ordered_dict, frozen_ordered_dict)) == \
                                                    set((frozen_ordered_dict,))
    assert {frozen_ordered_dict: frozen_ordered_dict} == \
                                     {frozen_ordered_dict: frozen_ordered_dict}
    assert isinstance(hash(frozen_ordered_dict), int)

    assert frozen_ordered_dict.copy({'meow': 'frrr'}) == \
           frozen_ordered_dict.copy(meow='frrr') == \
           FrozenOrderedDict((('1', 'a'), ('2', 'b'), ('3', 'c'),
                              ('meow', 'frrr')))

    assert repr(frozen_ordered_dict).startswith('FrozenOrderedDict(')

    assert pickle.loads(pickle.dumps(frozen_ordered_dict)) == \
                                                            frozen_ordered_dict
Exemple #17
0
def test():
    def f1(alpha, beta, gamma=10, delta=20, *args, **kwargs):
        return (alpha, beta, args, gamma, delta, kwargs)
    assert f1(1, 2) == (1, 2, (), 10, 20, {})
    
    monkeypatching_tools.change_defaults(f1, {'delta': 200,})
    assert f1(1, 2) == (1, 2, (), 10, 200, {})
    
    @monkeypatching_tools.change_defaults({'gamma': 100})
    def f2(alpha, beta, gamma=10, delta=20, *args, **kwargs):
        return (alpha, beta, args, gamma, delta, kwargs)
    assert f2(1, 2) == (1, 2, (), 100, 20, {})
        
    @monkeypatching_tools.change_defaults(new_defaults={'gamma': 1000})
    def f3(alpha, beta, gamma=10, delta=20, *args, **kwargs):
        return (alpha, beta, args, gamma, delta, kwargs)
    assert f3(1, 2) == (1, 2, (), 1000, 20, {})
    
    @monkeypatching_tools.change_defaults(new_defaults={'x': 'A', 'z': 'C'})
    def f4(x='a', y='b', z='c'):
        return (x, y, z)
    assert f4() == ('A', 'b', 'C')
    
    with cute_testing.RaiseAssertor(Exception):
        @monkeypatching_tools.change_defaults(new_defaults={'x': 'A', 'z': 'C',
                                                            'nonexistant': 7,})
        def f5(x='a', y='b', z='c'):
            return (x, y, z)
Exemple #18
0
def test():
    frozen_dict = FrozenDict({
        '1': 'a',
        '2': 'b',
        '3': 'c',
    })
    assert len(frozen_dict) == 3
    assert set(frozen_dict) == set(frozen_dict.keys()) == \
                                set(frozen_dict.iterkeys()) == set('123')
    assert set(frozen_dict.values()) == \
                                    set(frozen_dict.itervalues()) == set('abc')
    assert set(frozen_dict.items()) == \
          set(frozen_dict.iteritems()) == {('1', 'a'), ('2', 'b'), ('3', 'c'),}
    assert frozen_dict['1'] == 'a'
    with cute_testing.RaiseAssertor(exception_type=LookupError):
        frozen_dict['missing value']
    assert {frozen_dict, frozen_dict} == {frozen_dict}
    assert {frozen_dict: frozen_dict} == {frozen_dict: frozen_dict}
    assert isinstance(hash(frozen_dict), int)

    assert frozen_dict.copy({'meow': 'frrr'}) == \
           frozen_dict.copy(meow='frrr') == \
           FrozenDict({'1': 'a', '2': 'b', '3': 'c', 'meow': 'frrr',})

    assert repr(frozen_dict).startswith('FrozenDict(')
Exemple #19
0
    def test_mutable(self):

        ordered_set = self.ordered_set_type(range(4))

        assert list(ordered_set) == list(range(4))
        assert len(ordered_set) == 4
        assert 1 in ordered_set
        assert 3 in ordered_set
        assert 7 not in ordered_set
        ordered_set.add(8)
        assert list(ordered_set)[-1] == 8
        ordered_set.discard(2)
        assert 2 not in ordered_set
        assert list(reversed(ordered_set)) == [8, 3, 1, 0]
        assert ordered_set.pop() == 8
        assert ordered_set.pop(last=False) == 0
        ordered_set.add(7, last=False)
        assert tuple(ordered_set) == (7, 1, 3)
        with cute_testing.RaiseAssertor(KeyError):
            ordered_set.remove('meow')
        ordered_set.discard('meow')
        ordered_set.discard('meow')
        ordered_set.discard('meow')
        assert ordered_set | ordered_set == ordered_set
        assert ordered_set & ordered_set == ordered_set
def test_larger_on_remainder():
    r = list(range(9))

    assert partitions(r, 1, larger_on_remainder=True) == \
           partitions(r, n_partitions=9, larger_on_remainder=True) == \
           [[0], [1], [2], [3], [4], [5], [6], [7], [8]]
    assert partitions(r, 2, larger_on_remainder=True) == \
           partitions(r, n_partitions=4, larger_on_remainder=True) == \
           partitions(r, n_partitions=4, larger_on_remainder=True,
                      fill_value='gurr') == \
           [[0, 1], [2, 3], [4, 5], [6, 7, 8]]
    assert partitions(r, 3, larger_on_remainder=True) == \
           partitions(r, n_partitions=3, larger_on_remainder=True,
                      fill_value='gurr') == \
           [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
    assert partitions(tuple(r), 4, larger_on_remainder=True) == \
           [(0, 1, 2, 3), (4, 5, 6, 7, 8)]
    assert partitions(tuple(r), n_partitions=3, larger_on_remainder=True) == \
           [(0, 1, 2), (3, 4, 5), (6, 7, 8)]
    
    assert partitions([1], 1, larger_on_remainder=True) == \
           partitions([1], 2, larger_on_remainder=True) == \
           partitions([1], n_partitions=1, larger_on_remainder=True) == \
           partitions([1], 3, larger_on_remainder=True) == \
           partitions([1], 4, larger_on_remainder=True) == \
           partitions([1], 1000, larger_on_remainder=True) == \
           partitions([1], 1000, larger_on_remainder=True, fill_value='meow') == \
           [[1]]
    
    with cute_testing.RaiseAssertor(text='remainder of 1'):
        partitions([1], 1000, larger_on_remainder=True, allow_remainder=False,
                   fill_value='meow')
Exemple #21
0
def test_garbage_collection():

    garbage_collected = set()

    class GarbageNoter(object):
        def __init__(self, n):
            assert isinstance(n, int)
            self.n = n

        def __del__(self):
            garbage_collected.add(self.n)

    iterable = (GarbageNoter(i) for i in xrange(7))

    consecutive_subsequences_iterator = \
                           iterate_overlapping_subsequences(iterable, length=3)

    def assert_garbage_collected(indexes):
        gc_tools.collect()
        assert set(indexes) == garbage_collected

    assert_garbage_collected(())
    next(consecutive_subsequences_iterator)
    assert_garbage_collected(())
    next(consecutive_subsequences_iterator)
    assert_garbage_collected((0, ))
    next(consecutive_subsequences_iterator)
    assert_garbage_collected((0, 1))
    next(consecutive_subsequences_iterator)
    assert_garbage_collected((0, 1, 2))
    next(consecutive_subsequences_iterator)
    assert_garbage_collected((0, 1, 2, 3))
    with cute_testing.RaiseAssertor(StopIteration):
        next(consecutive_subsequences_iterator)
    assert_garbage_collected((0, 1, 2, 3, 4, 5, 6))
def test():
    comb_space = CombSpace('dumber', 2)
    assert isinstance(comb_space, CombSpace)
    assert isinstance(comb_space, PermSpace)
    assert comb_space.length == 1 + 2 + 3 + 4 + 5
    things_in_comb_space = ('du', 'db', 'br', ('d', 'u'),
                            Comb('du', comb_space))
    things_not_in_comb_space = ('dx', 'dub', ('d', 'x'), set(
        ('d', 'u', 'b')), Comb('dux',
                               comb_space), Comb('du', CombSpace('other', 2)),
                                set(('d', 'u')), 'ud', 'rb',
                                Comb('bu', comb_space))

    for thing in things_in_comb_space:
        assert thing in comb_space
    for thing in things_not_in_comb_space:
        assert thing not in comb_space

    assert comb_space.n_unused_elements == 4
    assert comb_space.index('du') == 0
    assert comb_space.index('er') == comb_space.length - 1
    assert comb_space.undapplied == comb_space
    assert comb_space.unrapplied == CombSpace(6, 2)
    assert comb_space.unpartialled == CombSpace('dumber', 6)
    assert comb_space.unpartialled.get_partialled(5) == CombSpace('dumber', 5)
    assert comb_space.uncombinationed == PermSpace('dumber', n_elements=2)
    assert comb_space.undegreed == comb_space
    assert comb_space.unrapplied.get_rapplied(range(10, 70, 10)) == \
                                                CombSpace(range(10, 70, 10), 2)
    with cute_testing.RaiseAssertor():
        comb_space.undapplied.get_dapplied(range(10, 70, 10))
    with cute_testing.RaiseAssertor():
        comb_space.get_degreed(3)
    assert comb_space.unfixed == comb_space
    assert not comb_space.fixed_indices
    assert comb_space.free_indices == comb_space.free_keys == \
                                                    sequence_tools.CuteRange(2)
    assert comb_space.free_values == 'dumber'

    comb = comb_space[7]
    assert type(comb.uncombinationed) is Perm
    assert tuple(comb) == tuple(comb.uncombinationed)
    assert comb.is_combination
    assert not comb.uncombinationed.is_combination
    assert repr(comb_space) == '''<CombSpace: 'dumber', n_elements=2>'''
    assert repr(CombSpace(tuple(range(50, 0, -1)), 3)) == \
     '''<CombSpace: (50, 49, 48, 47, 46, 45, 44, 43, 42 ... ), n_elements=3>'''
Exemple #23
0
def test_get_single_if_any():
    
    assert get_single_if_any(()) is get_single_if_any([]) is \
           get_single_if_any({}) is get_single_if_any(iter({})) is \
           get_single_if_any('') is None
    
    assert get_single_if_any(('g',)) == get_single_if_any(['g']) == \
           get_single_if_any({'g'}) == get_single_if_any(iter({'g'})) == \
           get_single_if_any('g') == 'g'

    with cute_testing.RaiseAssertor():
        get_single_if_any(('g', 'e', 'e'))

    with cute_testing.RaiseAssertor():
        get_single_if_any('gee')
        
    assert get_single_if_any('gee', exception_on_multiple=None) == 'g'
Exemple #24
0
def test_illegal():
    illegal_range_arguments_tuples = (
        (infinity, 10, -7), 
    )
    
    for illegal_range_arguments_tuple in illegal_range_arguments_tuples:
        with cute_testing.RaiseAssertor(TypeError):
            CuteRange(*illegal_range_arguments_tuple)
def test_pushback_iterator():

    pushback_iterator = PushbackIterator(iter([1, 2, 3]))
    assert next(pushback_iterator) == 1
    assert next(pushback_iterator) == 2
    pushback_iterator.push_back()
    assert next(pushback_iterator) == 2
    assert next(pushback_iterator) == 3
    pushback_iterator.push_back()
    assert next(pushback_iterator) == 3
    with cute_testing.RaiseAssertor(StopIteration):
        next(pushback_iterator)
    pushback_iterator.push_back()
    assert next(pushback_iterator) == 3

    with cute_testing.RaiseAssertor(StopIteration):
        next(pushback_iterator)
def test_exception():
    my_freezer = MyFreezer()
    with cute_testing.RaiseAssertor(MyException):
        assert not my_freezer.frozen
        assert my_freezer.freeze_counter == my_freezer.thaw_counter == 0
        with my_freezer:
            raise MyException
    assert my_freezer.freeze_counter == my_freezer.thaw_counter == 1
def test_too_many_arguments():
    '''Test helpful error when giving both `item_type` and `item_test`.'''
    with cute_testing.RaiseAssertor(text='either'):
        to_tuple(
            (1, 2, 3),
            item_type=int,
            item_test=lambda item: isinstance(item, int)
        )
        
Exemple #28
0
def _check_helpful_warnings_for_old_protocols(pickle_module,
                                              cross_process_persistent,
                                              old_protocol):
    '''
    Test that helpful errors are given when trying to pickle with old protocol.
    '''
    assert old_protocol < 2
    with cute_testing.RaiseAssertor(text=('protocol %s' % old_protocol)):
        pickle_module.dumps(cross_process_persistent, protocol=old_protocol)
Exemple #29
0
def test_fill_value():
    '''Test `fill_value` keyword arguemnt for `partitions`.'''
    r = range(5)

    assert partitions(r, 3) == [[0, 1, 2], [3, 4]]
    assert partitions(r, 3, fill_value=None) == [[0, 1, 2], [3, 4, None]]
    with cute_testing.RaiseAssertor(text='fill_value'):
        partitions(r, 2, fill_value=None, allow_remainder=False)
    assert partitions([], 3, fill_value=None) == []
Exemple #30
0
    def test_comparison(self):
        bag_0 = self.bag_type('c')
        bag_1 = self.bag_type('abc')
        bag_2 = self.bag_type('aabc')
        bag_3 = self.bag_type('abbc')
        bag_4 = self.bag_type('aabbcc')
        not_a_bag = {}

        hierarchy = (
            (bag_4, [bag_3, bag_2, bag_1, bag_0]),
            (bag_3, [bag_1, bag_0]),
            (bag_2, [bag_1, bag_0]),
            (bag_1, [bag_0]),
            (bag_0, []),
        )

        for item, smaller_items in hierarchy:
            if not isinstance(item, self.bag_type):
                continue
            for smaller_item in smaller_items:
                assert not item <= smaller_item
                assert not item < smaller_item
                assert item >= smaller_item
                assert item > smaller_item
                assert item != smaller_item
                assert smaller_item <= item
                assert smaller_item < item
                assert not smaller_item >= item
                assert not smaller_item > item
                assert smaller_item != item
            not_smaller_items = [
                item for item in next(zip(*hierarchy))
                if item not in smaller_items
            ]
            for not_smaller_item in not_smaller_items:
                assert not item < smaller_item

            with cute_testing.RaiseAssertor(TypeError):
                item <= not_a_bag
            with cute_testing.RaiseAssertor(TypeError):
                item < not_a_bag
            with cute_testing.RaiseAssertor(TypeError):
                item > not_a_bag
            with cute_testing.RaiseAssertor(TypeError):
                item >= not_a_bag
            with cute_testing.RaiseAssertor(TypeError):
                not_a_bag <= item
            with cute_testing.RaiseAssertor(TypeError):
                not_a_bag < item
            with cute_testing.RaiseAssertor(TypeError):
                not_a_bag > item
            with cute_testing.RaiseAssertor(TypeError):
                not_a_bag >= item