def test_diff_cfg_with_new_allowed(self): """diff config with new keys and new_allowed set to True""" # create base config cfg1 = CfgNode() cfg1.A = CfgNode() cfg1.A.set_new_allowed(True) cfg1.A.Y = 2 # case 3: new allowed set, new config has new keys cfg2 = cfg1.clone() cfg2.A.X = 2 gt = CfgNode() gt.A = CfgNode() gt.A.X = 2 self.assertEqual(gt, get_diff_cfg(cfg1, cfg2))
def test_get_diff_cfg(self): """check config that is diff from default config, no new keys""" # create base config cfg1 = CfgNode() cfg1.A = CfgNode() cfg1.A.Y = 2 # case 1: new allowed not set, new config has only old keys cfg2 = cfg1.clone() cfg2.set_new_allowed(False) cfg2.A.Y = 3 gt = CfgNode() gt.A = CfgNode() gt.A.Y = 3 self.assertEqual(gt, get_diff_cfg(cfg1, cfg2))
def test_merge_from_list_with_new_allowed(self): """ YACS's merge_from_list doesn't take new_allowed into account, D2Go override its behavior, and this test covers it. """ # new_allowed is not set cfg = CfgNode() cfg.A = CfgNode() cfg.A.X = 1 self.assertRaises(Exception, cfg.merge_from_list, ["A.Y", "2"]) # new_allowed is set for sub key cfg = CfgNode() cfg.A = CfgNode(new_allowed=True) cfg.A.X = 1 cfg.merge_from_list(["A.Y", "2"]) self.assertEqual(cfg.A.Y, 2) # note that the string will be converted to number # however new_allowed is not set for root key self.assertRaises(Exception, cfg.merge_from_list, ["B", "3"])
def test_diff_cfg_no_new_allowed(self): """check that if new_allowed is False, new keys cause key error""" # create base config cfg1 = CfgNode() cfg1.A = CfgNode() cfg1.A.set_new_allowed(False) cfg1.A.Y = 2 # case 2: new allowed not set, new config has new keys cfg2 = cfg1.clone() cfg2.A.X = 2 self.assertRaises(KeyError, get_diff_cfg, cfg1, cfg2)