Changeset 1603

Show
Ignore:
Timestamp:
06/15/09 07:07:02 (9 months ago)
Author:
eriol
Message:

Added free_nodes_list test

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • netsukuku/trunk/pyntk/ntk/core/map.py

    r1576 r1603  
    44# 
    55# This source code is free software; you can redistribute it and/or 
    6 # modify it under the terms of the GNU General Public License as published  
     6# modify it under the terms of the GNU General Public License as published 
    77# by the Free Software Foundation; either version 2 of the License, 
    88# or (at your option) any later version. 
     
    1919# 
    2020# Implementation of the map. See {-topodoc-} 
    21 #  
     21# 
    2222 
    2323from random import randint 
     
    6868        # Number of nodes of each level, that is: 
    6969        #   self.node_nb[i] = number of (g)nodes inside the gnode self.me[i+1] 
    70         self.node_nb = [0] * self.levels  
     70        self.node_nb = [0] * self.levels 
    7171 
    7272        self.events = Event(['NODE_NEW', 'NODE_DELETED', 'ME_CHANGED']) 
     
    103103    def free_nodes_list(self, lvl): 
    104104        """Returns the list of free nodes of level `lvl'""" 
    105         return [nid for nid in xrange(self.gsize) if self.node[lvl][nid].is_free()] 
     105        return [nid for nid in xrange(self.gsize) 
     106                        if self.node_get(lvl, nid).is_free()] 
    106107 
    107108    def is_in_level(self, nip, lvl): 
     
    110111 
    111112    def lvlid_to_nip(self, lvl, id): 
    112         """Converts a (lvl, id) pair, referring to this map, to  
     113        """Converts a (lvl, id) pair, referring to this map, to 
    113114           its equivalent netsukuku ip""" 
    114         nip=self.me[:] 
    115         nip[lvl]=id 
    116         for l in reversed(xrange(lvl)): nip[l]=0 
     115        nip = self.me[:] 
     116        nip[lvl] = id 
     117        for l in reversed(xrange(lvl)): 
     118            nip[l] = 0 
    117119        return nip 
    118120 
     
    121123 
    122124        A nip is a list [a_0, a_1, ..., a_{n-1}], where n = self.levels 
    123         and such that a_{n-1}*g^{n-1}+a_{n-2}*g^(n-2)+...+a_0 = ip,  
     125        and such that a_{n-1}*g^{n-1}+a_{n-2}*g^(n-2)+...+a_0 = ip, 
    124126        where g = self.gsize""" 
    125127 
    126         g=self.gsize 
     128        g = self.gsize 
    127129        return [(ip % g**(l+1)) / g**l for l in xrange(self.levels)] 
    128130 
     
    149151    def level_reset(self, level): 
    150152        """Resets the specified level, without raising any event""" 
    151         self.node[level]    = [None]*self.gsize 
     153        self.node[level] = [None] * self.gsize 
    152154        self.node_nb[level] = 0 
    153155 
     
    155157        """Silently resets the whole map""" 
    156158        for l in xrange(self.levels): 
    157                 self.level_reset(l) 
     159            self.level_reset(l) 
    158160 
    159161    def me_change(self, new_me): 
    160162        """Changes self.me""" 
    161         old_me=self.me[:] 
    162         self.me=new_me 
     163        old_me = self.me[:] 
     164        self.me = new_me 
    163165        self.events.send('ME_CHANGED', (old_me, new_me)) 
    164166 
    165167 
    166168    def map_data_pack(self): 
    167         return (self.me, [ [self.node[lvl][id] for id in xrange(self.gsize)] 
    168                              for lvl in xrange(self.levels) ], 
     169        '''Pack the data map''' 
     170        return (self.me, 
     171                [[self.node[lvl][id] for id in xrange(self.gsize)] 
     172                                     for lvl in xrange(self.levels)], 
    169173                [self.node_nb[lvl] for lvl in xrange(self.levels)]) 
    170174 
    171175    def map_data_merge(self, (nip, plist, nblist)): 
    172         lvl=self.nip_cmp(nip, self.me) 
     176        lvl = self.nip_cmp(nip, self.me) 
    173177        for l in xrange(lvl, self.levels): 
    174                 self.node_nb[l]=nblist[l] 
    175                 for id in xrange(self.gsize): 
    176                         self.node[l][id]=plist[l][id] 
     178            self.node_nb[l] = nblist[l] 
     179            for id in xrange(self.gsize): 
     180                self.node[l][id] = plist[l][id] 
    177181        for l in xrange(0, lvl): 
    178                 self.level_reset(l) 
     182            self.level_reset(l) 
    179183 
  • netsukuku/trunk/pyntk/test/test_map.py

    r1602 r1603  
    6565        self.assertEqual(self.map.free_nodes_nb(lvl=0), self.gsize - 1) 
    6666 
     67    def test_free_nodes_list(self): 
     68        '''Free nodes of specified level''' 
     69        self.assertEqual(self.map.free_nodes_list(lvl=0), range(self.gsize)) 
     70 
    6771    def test_is_in_level(self): 
    6872        '''Node nip belongs to our gnode of level'''