def test_generate(): names = ['foo', 'bar', 'baz', 'qux', 'meep', 'moop'] domains = [1.0, 1, True, False, None, 'foo'] for name, domain in zip(names, domains): d = ConstantDomain(name, domain) assert d.generate() == domain
def test_complexity(): d = ConstantDomain('foo', 1.0) assert d.complexity == 1 assert d._complexity == 1 assert d.complexity == 1 d = ConstantDomain('bar', 1.0) assert d.complexity == 1 assert d._complexity == 1 assert d.complexity == 1
def test_to_json(): names = ['foo', 'bar', 'baz', 'qux', 'meep', 'moop'] domains = [1.0, 1, True, False, None, 'foo'] for name, domain in zip(names, domains): d = ConstantDomain(name, domain) assert d.to_json() == { 'name': name, 'type': 'pyrameter.domains.constant.ConstantDomain', 'domain': domain }
def test_init(): names = ['foo', 'bar', 'baz', 'qux', 'meep', 'moop'] domains = [1.0, 1, True, False, None, 'foo'] for i, name, domain in zip(range(len(domains)), names, domains): d = ConstantDomain(name, domain) assert d.name == name assert d.domain == domain assert isinstance(d.domain, type(domain)) assert d._current is None assert d._complexity is None
def __init__(self, *args, **kwargs): if len(args) < 2: raise ValueError('No domain or number of repetitions provided') if len(args) == 2: super(RepeatedDomain, self).__init__() domain = args[0] repetitions = args[1] else: super(RepeatedDomain, self).__init__(args[0]) domain = args[1] repetitions = args[2] if isinstance(domain, dict): domain = JointDomain(**domain) elif isinstance(domain, list): domain = DiscreteDomain(domain) elif isinstance(domain, tuple): domain = SequenceDomain(domain) elif isinstance(domain, Domain): domain = domain elif hasattr(domain, '__class__') and 'Specification' in str( domain.__class__): domain = domain else: domain = ConstantDomain(domain) self.domain = [copy.deepcopy(domain) for _ in range(repetitions)] for i, d in enumerate(self.domain): d.name = f'{self.name}___{i}' self.repetitions = repetitions split = kwargs.pop('split', True) callback = kwargs.pop('callback', None) self.should_split = split self.callback = callback if callback is not None else lambda x: x
def test_to_index(): inputs = [None, 'foo', 1, 1.0, True, False] d = ConstantDomain('foo', 1.0) for i in inputs: assert d.to_index(i) == i
def test_map_to_domain(): inputs = [None, 'foo', 1, 1.0, True, False] d = ConstantDomain('foo', 1.0) for i in inputs: assert d.map_to_domain(i) == i