def test_copy(self): C = self.make_class() class D(C, CopyMixin): copy_specs = ["name", "id", "context"] a = D("foo", 1) self.assertEqual(D._instances.len(all), 1) a.copy("bar", 2) a.copy(context="other") self.assertEqual(D._instances.len(all), 3) with self.assertRaises(DuplicateIdException): a.copy("baz") with self.assertRaises(DuplicateNameException): a.copy(id=3) with uniqueness_context("other2"): a.copy() self.assertEqual(D._instances.len(all), 4) with self.assertRaises(DuplicateObjectException): with uniqueness_context("other"): a.copy()
def test_copy(self): with uniqueness_context("category_test_copy"): SL = Channel("SL", 1) c = Category("eq4j", channel=SL) c.add_category("eq4j_eq2b") with uniqueness_context("other_context"): c2 = c.copy(name="SL2", id="+") self.assertEqual(len(c.categories), 1) self.assertEqual(len(c2.categories), 0) self.assertEqual(c2.channel, c.channel)
def test_datasets(self): with uniqueness_context("campaign_test_datasets"): a = Campaign("2017A", 1) b = Campaign("2017B", 2) d = Dataset("ttH", 1, campaign=a) self.assertEqual(d.campaign, "2017A") self.assertIn(d, a.datasets) self.assertEqual(len(a.datasets), 1) d.campaign = None self.assertIsNone(d.campaign) self.assertNotIn(d, a.datasets) self.assertEqual(len(a.datasets), 0) b.add_dataset(d) self.assertEqual(d.campaign, "2017B") self.assertIn(d, b.datasets) self.assertEqual(len(b.datasets), 1) d.campaign = a self.assertEqual(d.campaign, "2017A") self.assertIn(d, a.datasets) d.campaign = None self.assertIsNone(d.campaign) self.assertEqual(len(a.datasets), 0) self.assertEqual(len(b.datasets), 0)
def test_configs(self): with uniqueness_context("analysis_test_configs"): ca = Campaign("2017A", 1) cf = Config(ca) p = cf.add_process("ttH_bb", 1) an = Analysis("ttH_cbb", 1, configs=[cf]) self.assertEqual(an.get_config("2017A"), cf) self.assertEqual(len(an.get_processes(1)), 1) self.assertEqual(an.get_processes(1).get(1), p) self.assertEqual(an.remove_config(cf), cf) self.assertEqual(len(an.configs), 0) cf.analysis = an self.assertEqual(len(an.configs), 1) self.assertEqual(an.get_config("2017A"), cf)
def test_contexts(self): C = self.make_class() self.assertEqual(C.default_context, "c") c = C("foo", 1) self.assertEqual(c.context, "c") c = C("foo", 1, context="test_context") self.assertEqual(c.context, "test_context") with uniqueness_context("x"): c = C("foo", 1) self.assertEqual(c.context, "x") c = C("foo", 1, context="y") self.assertEqual(c.context, "y") c = C("bar", 2) self.assertEqual(c.context, "c") self.assertEqual(set(C._instances.contexts()), {"y", "x", "c", "test_context"})