def test_ior(self): # concatenation of Parameters # Parameters with Parameter c = Parameters(name='c') c |= self.b assert_equal(len(c), 1) assert_equal(len(c.flattened()), 1) assert_(c.flattened()[0] is self.b) # Parameters with Parameters c = Parameters(name='c') c |= self.m assert_(c.name == 'c') assert_equal(len(c), 1) assert_equal(len(c.flattened()), 2) assert_(c.flattened()[1] is self.b)
class TestParameters(object): def setup_method(self): self.a = Parameter(1, name='a') self.b = Parameter(2, name='b') self.m = Parameters() self.m.append(self.a) self.m.append(self.b) def test_retrieve_by_name(self): p = self.m['a'] assert_(p is self.a) # or by index p = self.m[0] assert_(p is self.a) def test_repr(self): p = Parameter(value=5, vary=False, name='test') g = Parameters(name='name') f = Parameters() f.append(p) f.append(g) q = eval(repr(f)) assert (q.name is None) assert_equal(q[0].value, 5) assert (q[0].vary is False) assert (isinstance(q[1], Parameters)) def test_set_by_name(self): c = Parameter(3.) self.m['a'] = c assert_(self.m[0] is c) # can't set an entry by name, if there isn't an existing name in this # Parameters instance. from pytest import raises with raises(ValueError): self.m['abc'] = c def test_parameters(self): # we've added two parameters self.a.vary = True self.b.vary = True assert_equal(len(self.m.flattened()), 2) # the two entries should just be the objects assert_(self.m.varying_parameters()[0] is self.a) assert_(self.m.varying_parameters()[1] is self.b) def test_varying_parameters(self): # even though we've added a twice we should still only see 2 # varying parameters self.a.vary = True self.b.vary = True p = self.a | self.b | self.a assert_equal(len(p.varying_parameters()), 2) def test_pickle_parameters(self): # need to check that Parameters can be pickled/unpickle pkl = pickle.dumps(self.m) pickle.loads(pkl) def test_or(self): # concatenation of Parameters # Parameters with Parameter c = self.m | self.b assert_equal(len(c), 3) assert_equal(len(c.flattened()), 3) assert_(c.flattened()[1] is self.b) assert_(c.flattened()[2] is self.b) # Parameters with Parameters c = Parameters(name='c') d = c | self.m assert_(d.name == 'c') def test_ior(self): # concatenation of Parameters # Parameters with Parameter c = Parameters(name='c') c |= self.b assert_equal(len(c), 1) assert_equal(len(c.flattened()), 1) assert_(c.flattened()[0] is self.b) # Parameters with Parameters c = Parameters(name='c') c |= self.m assert_(c.name == 'c') assert_equal(len(c), 1) assert_equal(len(c.flattened()), 2) assert_(c.flattened()[1] is self.b)