def test_next_channel_number_returns_lowest_unused(self): """_next_channel_number must return lowest available channel number""" for channel_num in xrange(1, 50): self.connection._channels[channel_num] = True expectation = random.randint(5, 49) del self.connection._channels[expectation] self.assertEqual(self.connection._next_channel_number(), expectation)
def remove(self, prefix, key, callback_value=None, arguments=None): """Remove a callback from the stack by prefix, key and optionally the callback itself. If you only pass in prefix and key, all callbacks for that prefix and key will be removed. :param str or int prefix: The prefix for keeping track of callbacks with :param str key: The callback key :param method callback_value: The method defined to call on callback :param dict arguments: Optional arguments to check :rtype: bool """ if callback_value: offsets_to_remove = list() for offset in xrange(len(self._stack[prefix][key]), 0, -1): callback_dict = self._stack[prefix][key][offset - 1] if (callback_dict[self.CALLBACK] == callback_value and self._arguments_match(callback_dict, [arguments])): offsets_to_remove.append(offset - 1) for offset in offsets_to_remove: try: LOGGER.debug('Removing callback #%i: %r', offset, self._stack[prefix][key][offset]) del self._stack[prefix][key][offset] except KeyError: pass self._cleanup_callback_dict(prefix, key) return True
def remove(self, prefix, key, callback_value=None, arguments=None): """Remove a callback from the stack by prefix, key and optionally the callback itself. If you only pass in prefix and key, all callbacks for that prefix and key will be removed. :param str or int prefix: The prefix for keeping track of callbacks with :param str key: The callback key :param callable callback_value: The method defined to call on callback :param dict arguments: Optional arguments to check :rtype: bool """ if callback_value: offsets_to_remove = list() for offset in xrange(len(self._stack[prefix][key]), 0, -1): callback_dict = self._stack[prefix][key][offset - 1] if (callback_dict[self.CALLBACK] == callback_value and self._arguments_match(callback_dict, [arguments])): offsets_to_remove.append(offset - 1) for offset in offsets_to_remove: try: LOGGER.debug('Removing callback #%i: %r', offset, self._stack[prefix][key][offset]) del self._stack[prefix][key][offset] except KeyError: pass self._cleanup_callback_dict(prefix, key) return True