Exemplo n.º 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
Exemplo n.º 2
0
 def test_binary_last(self):
     self.assertequals(binary_search(10, 20, self.condition, last), 14)
     self.assertequals(binary_search(0, 14, self.condition, last), 14)
     self.assertequals(binary_search(14, 14, self.condition, last), 14)
     self.assertequals(binary_search(14, 15, self.condition, last), 14)
     self.assertequals(binary_search(13, 15, self.condition, last), 14)
Exemplo n.º 3
0
 def test_binary_first(self):
     self.assertequals(binary_search(0, 14, self.condition, first), 10)
     self.assertequals(binary_search(10, 19, self.condition, first), 10)
     self.assertequals(binary_search(14, 14, self.condition, first), 14)
     self.assertequals(binary_search(14, 15, self.condition, first), 14)
     self.assertequals(binary_search(13, 15, self.condition, first), 13)