def test_key(self): """Test using a custom `key` function.""" iterables = [xrange(5, 0, -1), xrange(4, 0, -1)] eq_(list(sorted(reduce(list.__add__, [list(it) for it in iterables]), reverse=True)), list(merge(*iterables, key=lambda x: -x)))
def test_key(self): """Test using a custom `key` function.""" iterables = [xrange(5, 0, -1), xrange(4, 0, -1)] eq_( list( sorted(reduce(list.__add__, [list(it) for it in iterables]), reverse=True)), list(merge(*iterables, key=lambda x: -x)))
def _users_watching(self, **kwargs): # Get a sorted iterable of user-watch pairs: users_and_watches = merge( *[e._users_watching(**kwargs) for e in self.events], key=lambda (user, watch): user.email.lower(), reverse=True) # Pick the best User out of each cluster of identical email addresses: return _unique_by_email(users_and_watches)
def _users_watching(self, **kwargs): # Get a sorted iterable of user-watch pairs: users_and_watches = merge(*[e._users_watching(**kwargs) for e in self.events], key=lambda (user, watch): user.email.lower(), reverse=True) # Pick the best User out of each cluster of identical email addresses: return _unique_by_email(users_and_watches)
def test_reverse(self): """Test the `reverse` kwarg.""" iterables = [xrange(4, 0, -1), xrange(7, 0, -1), xrange(3, 6, -1)] eq_( sorted(reduce(list.__add__, [list(it) for it in iterables]), reverse=True), list(merge(*iterables, reverse=True)))
def test_one(self): """Work when only 1 iterable is passed.""" eq_([0, 1], list(merge(xrange(2))))
def test_empty(self): """Be nice if passed an empty list of iterables.""" eq_([], list(merge()))
def test_default(self): """Test with the default `key` function.""" iterables = [xrange(4), xrange(7), xrange(3, 6)] eq_(sorted(reduce(list.__add__, [list(it) for it in iterables])), list(merge(*iterables)))
def test_reverse(self): """Test the `reverse` kwarg.""" iterables = [xrange(4, 0, -1), xrange(7, 0, -1), xrange(3, 6, -1)] eq_(sorted(reduce(list.__add__, [list(it) for it in iterables]), reverse=True), list(merge(*iterables, reverse=True)))