def __init__(self, base, extend, max_leaves): self.max_leaves = max_leaves self.base = LimitedStrategy(base) self.extend = extend strategies = [self.base, self.extend(self.base)] while 2**len(strategies) <= max_leaves: strategies.append( extend(OneOfStrategy(tuple(strategies), bias=0.8))) self.strategy = OneOfStrategy(strategies)
def __init__(self, base, extend, max_leaves): self.max_leaves = max_leaves self.base = TemplateLimitedStrategy(base) self.extend = extend strategies = [self.base, self.extend(self.base)] while 2**len(strategies) <= max_leaves: strategies.append(extend(OneOfStrategy(tuple(strategies)))) super(RecursiveStrategy, self).__init__(OneOfStrategy(tuple(strategies)))
def one_of(*args): """Return a strategy which generates values from any of the argument strategies. This may be called with one iterable argument instead of multiple strategy arguments. In which case one_of(x) and one_of(\*x) are equivalent. """ if len(args) == 1 and not isinstance(args[0], SearchStrategy): try: args = tuple(args[0]) except TypeError: pass strategies = [] for arg in args: check_strategy(arg) if not arg.is_empty: strategies.extend([s for s in arg.branches if not s.is_empty]) if not strategies: return nothing() if len(strategies) == 1: return strategies[0] from hypothesis.searchstrategy.strategies import OneOfStrategy return OneOfStrategy(strategies)
def one_of(arg, *args): """Return a strategy which generates values from any of the argument strategies.""" if not args: check_strategy(arg) return arg from hypothesis.searchstrategy.strategies import OneOfStrategy args = (arg,) + args for arg in args: check_strategy(arg) return OneOfStrategy(args)
def test_directly_joining_one_strategy_also_fails(): with pytest.raises(ValueError): OneOfStrategy([RandomGeometricIntStrategy()])