def test_add_val_at_root(self): """Test to add a leaf to a tree of depth 0""" tree = Tree() tree.add(['A'], 1) assert tree.get([]) == [1] assert tree.get(['A']) == [1]
class DispatcherState(State): """ DispatcherState class herited from State. State that encapsulate formula's dicionary and tree :attr:`formula_dict <powerapi.dispatcher.dispatcher_actor.DispatcherState.formula_dict>` :attr:`formula_tree <powerapi.dispatcher.dispatcher_actor.DispatcherState.formula_tree>` :attr:`formula_factory <powerapi.dispatcher.dispatcher_actor.DispatcherState.formula_factory>` """ def __init__(self, initial_behaviour, socket_interface, logger, formula_factory, route_table): """ :param func initial_behaviour: Function that define the initial_behaviour :param socket_interface: Communication interface of the actor :type socket_interface: powerapi.SocketInterface :param formula_factory: Factory for Formula creation. :type formula_factory: func((formula_id) -> powerapi.Formula) :param route_table: initialized route table :type route_table: powerapi.dispatcher.state.RouteTable """ State.__init__(self, initial_behaviour, socket_interface, logger) #: (dict): Store the formula by id self.formula_dict = {} #: (utils.Tree): Tree store of the formula for faster #: DispatchRule self.formula_tree = Tree() #: (func): Factory for formula creation self.formula_factory = formula_factory self.route_table = route_table def add_formula(self, formula_id): """ Create a formula corresponding to the given formula id and add it in memory :param tuple formula_id: Define the key corresponding to a specific Formula """ formula = self.formula_factory(formula_id) self.formula_dict[formula_id] = formula self.formula_tree.add(list(formula_id), formula) def get_direct_formula(self, formula_id): """ Get the formula corresponding to the given formula id or create and return it if its didn't exist :param tuple formula_id: Key corresponding to a Formula :return: a Formula :rtype: Formula or None """ if formula_id not in self.formula_dict: self.add_formula(formula_id) return self.formula_dict[formula_id] def get_corresponding_formula(self, formula_id): """ Get the Formulas which have id match with the given formula_id :param tuple formula_id: Key corresponding to a Formula :return: All Formulas that match with the key :rtype: list(Formula) """ return self.formula_tree.get(formula_id) def get_all_formula(self): """ Get all the Formula created by the Dispatcher :return: List of the Formula :rtype: list((formula_id, Formula), ...) """ return self.formula_dict.items()
def test_get_from_root(self): tree = Tree() tree.add(['A', 'B'], 1) assert tree.get([]) == [1] assert tree.get(['A']) == [1]
def get_child_to_emtpy_tree(self): tree = Tree() assert tree.get(['A', 'B']) == []