コード例 #1
0
ファイル: test_identifier.py プロジェクト: pedromj/pymdht
    def test_log_distance(self):
        id0 = Id(BIN_ID0)
        id1 = Id(BIN_ID1)
        id2 = Id(BIN_ID2)
        eq_(id0.log_distance(id0), -1)
        eq_(id0.log_distance(id1), ID_SIZE_BITS - 8)
        eq_(id0.log_distance(id2), ID_SIZE_BITS - 7)

        id_log = (
            (Id('\x00' + '\xff' * (ID_SIZE_BYTES - 1)),
             BITS_PER_BYTE * (ID_SIZE_BYTES - 1) - 1),
            
            (Id('\x53' * ID_SIZE_BYTES),
            BITS_PER_BYTE * ID_SIZE_BYTES - 2),
            
            (Id(BIN_ID0[:7] + '\xff' * (ID_SIZE_BYTES - 7)),
             (ID_SIZE_BYTES - 7) * BITS_PER_BYTE - 1),
            
            (Id(BIN_ID0[:9] + '\x01' * (ID_SIZE_BYTES - 9)),
             (ID_SIZE_BYTES - 10) * BITS_PER_BYTE),
            
            (Id(BIN_ID0[:-1] + '\x06'),
             2),
            )
        id2_log = (
            (Id('\x41' * ID_SIZE_BYTES),
             Id('\x41' * ID_SIZE_BYTES),
             -1),

            (Id('\x41' * ID_SIZE_BYTES),
             Id('\x01' * ID_SIZE_BYTES),
             158),

            (Id('\x41' * ID_SIZE_BYTES),
             Id('\x43' * ID_SIZE_BYTES),
             153),
            )

        for (id_, log_) in id_log:
            logger.debug('log_distance: %d' % id0.log_distance(id_))
            logger.debug('expected: %d' % log_)
            eq_(id0.log_distance(id_), log_)
        for id1, id2, expected in id2_log:
            eq_(id1.log_distance(id2), expected)

            z = Id('\0'*20)
            eq_(z.log_distance(Id('\x00'*19+'\x00')), -1)
            eq_(z.log_distance(Id('\x00'*19+'\x00')), -1)
            eq_(z.log_distance(Id('\x00'*19+'\x00')), -1)
            eq_(z.log_distance(Id('\x00'*19+'\x00')), -1)
            eq_(z.log_distance(Id('\x00'*19+'\x00')), -1)
コード例 #2
0
ファイル: test_identifier.py プロジェクト: justinzane/pymdht
    def test_log_distance(self):
        id0 = Id(BIN_ID0)
        id1 = Id(BIN_ID1)
        id2 = Id(BIN_ID2)
        eq_(id0.log_distance(id0), -1)
        eq_(id0.log_distance(id1), ID_SIZE_BITS - 8)
        eq_(id0.log_distance(id2), ID_SIZE_BITS - 7)

        id_log = (
            (Id('\x00' + '\xff' * (ID_SIZE_BYTES - 1)),
             BITS_PER_BYTE * (ID_SIZE_BYTES - 1) - 1),
            
            (Id('\x53' * ID_SIZE_BYTES),
            BITS_PER_BYTE * ID_SIZE_BYTES - 2),
            
            (Id(BIN_ID0[:7] + '\xff' * (ID_SIZE_BYTES - 7)),
             (ID_SIZE_BYTES - 7) * BITS_PER_BYTE - 1),
            
            (Id(BIN_ID0[:9] + '\x01' * (ID_SIZE_BYTES - 9)),
             (ID_SIZE_BYTES - 10) * BITS_PER_BYTE),
            
            (Id(BIN_ID0[:-1] + '\x06'),
             2),
            )
        id2_log = (
            (Id('\x41' * ID_SIZE_BYTES),
             Id('\x41' * ID_SIZE_BYTES),
             -1),

            (Id('\x41' * ID_SIZE_BYTES),
             Id('\x01' * ID_SIZE_BYTES),
             158),

            (Id('\x41' * ID_SIZE_BYTES),
             Id('\x43' * ID_SIZE_BYTES),
             153),
            )

        for (id_, log_) in id_log:
            logger.debug('log_distance: %d' % id0.log_distance(id_))
            logger.debug('expected: %d' % log_)
            eq_(id0.log_distance(id_), log_)
        for id1, id2, expected in id2_log:
            eq_(id1.log_distance(id2), expected)

            z = Id('\0'*20)
            eq_(z.log_distance(Id('\x00'*19+'\x00')), -1)
            eq_(z.log_distance(Id('\x00'*19+'\x00')), -1)
            eq_(z.log_distance(Id('\x00'*19+'\x00')), -1)
            eq_(z.log_distance(Id('\x00'*19+'\x00')), -1)
            eq_(z.log_distance(Id('\x00'*19+'\x00')), -1)