コード例 #1
0
def search(server):
    """yields a stream of ledger numbers that match the given condition."""
    condition = lambda number: args.condition(server, number)
    ledgers = server.ledgers
    if args.binary:
        try:
            position = search.first if args.position == 'first' else search.last
            yield search.binary_search(
                ledgers[0], ledgers[-1], condition, position)
        except:
            log.fatal('no ledgers matching condition "%s".' % condition,
                      file=sys.stderr)
    else:
        for x in search.linear_search(ledgers, condition):
            yield x
コード例 #2
0
 def test_linear_empty(self):
     self.assertequals(list(linear_search(range(1, 4), self.condition)), [])
コード例 #3
0
 def test_linear_partial(self):
     self.assertequals(list(linear_search(range(8, 14), self.condition)), [10, 11, 12, 13])
     self.assertequals(list(linear_search(range(11, 14), self.condition)), [11, 12, 13])
     self.assertequals(list(linear_search(range(12, 18), self.condition)), [12, 13, 14])
コード例 #4
0
 def test_linear_full(self):
     self.assertequals(list(linear_search(range(21), self.condition)), [10, 11, 12, 13, 14])