def test_parameter_frozen(): p = Parameter('foo', 'x1', 1.2) p.freeze() r = p._repr_html_() assert r is not None assert '<summary>Parameter</summary>' in r assert '<table class="model">' in r assert '<tr><th class="model-odd">foo</th><td>x1</td><td><input disabled type="checkbox"></input></td><td>1.2</td><td>-MAX</td><td>MAX</td><td></td></tr>' in r
class test_parameter(SherpaTestCase): def setUp(self): self.p = Parameter('model', 'name', 0, -10, 10, -100, 100, 'units') self.afp = Parameter('model', 'name', 0, alwaysfrozen=True) def test_name(self): self.assertEqual(self.p.modelname, 'model') self.assertEqual(self.p.name, 'name') self.assertEqual(self.p.fullname, 'model.name') def test_alwaysfrozen(self): self.assertTrue(self.afp.frozen) self.afp.frozen = True self.assertTrue(self.afp.frozen) self.afp.freeze() self.assertTrue(self.afp.frozen) self.assertRaises(ParameterErr, self.afp.thaw) self.assertRaises(ParameterErr, setattr, self.afp, 'frozen', 0) def test_readonly_attributes(self): self.assertEqual(self.p.alwaysfrozen, False) self.assertRaises(AttributeError, setattr, self.p, 'alwaysfrozen', 1) self.assertEqual(self.p.hard_min, -100.0) self.assertRaises(AttributeError, setattr, self.p, 'hard_min', -1000) self.assertEqual(self.p.hard_max, 100.0) self.assertRaises(AttributeError, setattr, self.p, 'hard_max', 1000) def test_val(self): self.p.val = -7 self.assertEqual(self.p.val, -7) self.assertTrue(type(self.p.val) is SherpaFloat) self.assertRaises(ValueError, setattr, self.p, 'val', 'ham') self.assertRaises(ParameterErr, setattr, self.p, 'val', -101) self.assertRaises(ParameterErr, setattr, self.p, 'val', 101) def test_min_max(self): for attr, sign in (('min', -1), ('max', 1)): setattr(self.p, attr, sign * 99) val = getattr(self.p, attr) self.assertEqual(val, sign * 99) self.assertTrue(type(val) is SherpaFloat) self.assertRaises(ValueError, setattr, self.p, attr, 'ham') self.assertRaises(ParameterErr, setattr, self.p, attr, -101) self.assertRaises(ParameterErr, setattr, self.p, attr, 101) def test_frozen(self): self.p.frozen = 1.0 self.assertTrue(self.p.frozen is True) self.p.frozen = [] self.assertTrue(self.p.frozen is False) self.assertRaises(TypeError, setattr, self.p.frozen, arange(10)) self.p.link = self.afp self.assertTrue(self.p.frozen is True) self.p.link = None self.p.freeze() self.assertTrue(self.p.frozen is True) self.p.thaw() self.assertTrue(self.p.frozen is False) def test_link(self): self.p.link = None self.assertTrue(self.p.link is None) self.assertNotEqual(self.p.val, 17.3) self.afp.val = 17.3 self.p.link = self.afp self.assertEqual(self.p.val, 17.3) self.p.unlink() self.assertTrue(self.p.link is None) self.assertRaises(ParameterErr, setattr, self.afp, 'link', self.p) self.assertRaises(ParameterErr, setattr, self.p, 'link', 3) self.assertRaises(ParameterErr, setattr, self.p, 'link', 3 * self.p + 2) def test_iter(self): for part in self.p: self.assertTrue(part is self.p)
class test_parameter(SherpaTestCase): class TestParBase: def __init__(self, pos1, pos2): self.src1 = Gauss1D() self.src1.pos = pos1 self.src1_pos = pos1 self.src2 = Gauss1D() self.src2.pos = pos2 self.src2_pos = pos2 self.tst_pos(self.src1.pos, self.src1_pos) self.tst_pos(self.src2.pos, self.src2_pos) return def tst_unlink(self): self.src1.pos.unlink() self.tst_pos(self.src1.pos, self.src1.pos.default_val, min=self.src1.pos.min, max=self.src1.pos.max) self.src2.pos.unlink() self.tst_pos(self.src2.pos, self.src2_pos, min=self.src2.pos.min, max=self.src2.pos.max) return def tst_pos(self, gauss, pos, min=-hugeval, max=hugeval, frozen=False, link=None, link_min=None, link_max=None): assert gauss.val == pos assert gauss.min == min assert gauss.max == max assert gauss.frozen == frozen if gauss.link is None or link is None: assert gauss.link == link else: self.tst_pos(gauss.link, pos) assert gauss.default_val == pos assert gauss.default_min == min assert gauss.default_max == max class TestParVal(TestParBase): def __init__(self, pos1, pos2): test_parameter.TestParBase.__init__(self, pos1, pos2) return def tst(self): self.tst_pos(self.src1.pos, self.src2_pos, frozen=True, link=self.src1.pos) self.tst_pos(self.src2.pos, self.src2_pos) def tst_low_level_val_link(self): self.src1.pos.val = self.src2.pos.val self.src1.pos.link = self.src2.pos self.tst() self.tst_unlink() def tst_ui_val_link(self): ui.link(self.src1.pos, self.src2.pos) self.tst() self.tst_unlink() def setUp(self): self.p = Parameter('model', 'name', 0, -10, 10, -100, 100, 'units') self.afp = Parameter('model', 'name', 0, alwaysfrozen=True) def test_name(self): self.assertEqual(self.p.modelname, 'model') self.assertEqual(self.p.name, 'name') self.assertEqual(self.p.fullname, 'model.name') def test_alwaysfrozen(self): self.assertTrue(self.afp.frozen) self.afp.frozen = True self.assertTrue(self.afp.frozen) self.afp.freeze() self.assertTrue(self.afp.frozen) self.assertRaises(ParameterErr, self.afp.thaw) self.assertRaises(ParameterErr, setattr, self.afp, 'frozen', 0) def test_readonly_attributes(self): self.assertEqual(self.p.alwaysfrozen, False) self.assertRaises(AttributeError, setattr, self.p, 'alwaysfrozen', 1) self.assertEqual(self.p.hard_min, -100.0) self.assertRaises(AttributeError, setattr, self.p, 'hard_min', -1000) self.assertEqual(self.p.hard_max, 100.0) self.assertRaises(AttributeError, setattr, self.p, 'hard_max', 1000) def test_val(self): self.p.val = -7 self.assertEqual(self.p.val, -7) self.assertTrue(type(self.p.val) is SherpaFloat) self.assertRaises(ValueError, setattr, self.p, 'val', 'ham') self.assertRaises(ParameterErr, setattr, self.p, 'val', -101) self.assertRaises(ParameterErr, setattr, self.p, 'val', 101) def test_min_max(self): for attr, sign in (('min', -1), ('max', 1)): setattr(self.p, attr, sign * 99) val = getattr(self.p, attr) self.assertEqual(val, sign * 99) self.assertTrue(type(val) is SherpaFloat) self.assertRaises(ValueError, setattr, self.p, attr, 'ham') self.assertRaises(ParameterErr, setattr, self.p, attr, -101) self.assertRaises(ParameterErr, setattr, self.p, attr, 101) def test_frozen(self): self.p.frozen = 1.0 self.assertTrue(self.p.frozen is True) self.p.frozen = [] self.assertTrue(self.p.frozen is False) self.assertRaises(TypeError, setattr, self.p.frozen, arange(10)) self.p.link = self.afp self.assertTrue(self.p.frozen is True) self.p.link = None self.p.freeze() self.assertTrue(self.p.frozen is True) self.p.thaw() self.assertTrue(self.p.frozen is False) def test_link(self): self.p.link = None self.assertTrue(self.p.link is None) self.assertNotEqual(self.p.val, 7.3) self.afp.val = 7.3 self.p.link = self.afp self.assertEqual(self.p.val, 7.3) self.p.unlink() self.assertTrue(self.p.link is None) self.assertRaises(ParameterErr, setattr, self.afp, 'link', self.p) self.assertRaises(ParameterErr, setattr, self.p, 'link', 3) self.assertRaises(ParameterErr, setattr, self.p, 'link', 3 * self.p + 2) def test_iter(self): for part in self.p: self.assertTrue(part is self.p)