def test_read(self): concrete_anns = self.get_anns() ctx = SolverContext.create_context(concrete_anns) sym_anns = read_announcements(concrete_anns, ctx) self.assertEqual(len(sym_anns), len(concrete_anns)) for sym_ann, con_ann in zip(sym_anns, concrete_anns): for attr in Announcement.attributes: if attr == 'communities': for community in con_ann.communities: con_val = con_ann.communities[community] sym_val = sym_ann.communities[community] if is_empty(con_val): self.assertFalse(sym_val.is_concrete) else: self.assertTrue(sym_val.is_concrete) self.assertEquals(sym_val.get_value(), con_val) continue con_val = getattr(con_ann, attr) sym_val = getattr(sym_ann, attr) if is_empty(con_val): self.assertFalse(sym_val.is_concrete) else: self.assertTrue(sym_val.is_concrete) if attr == 'as_path': con_val = get_as_path_key(con_val) sym_val_concrete = sym_val.get_value() if attr == 'origin': sym_val_concrete = BGP_ATTRS_ORIGIN.__members__[ sym_val_concrete] self.assertEquals(sym_val_concrete, con_val)
def test_create(self): # Arrange concrete_anns = self.get_anns() ctx = SolverContext.create_context(concrete_anns) # Act sym_anns = read_announcements(concrete_anns, ctx) # Assert self.assertEquals(len(sym_anns), 2)
def test_sub(self): # Arrange concrete_anns = self.get_anns() ctx = SolverContext.create_context(concrete_anns) sym_anns = read_announcements(concrete_anns, ctx) mutator = self # Act new_anns = sym_anns.create_new([sym_anns[0]], mutator) new_anns2 = new_anns.create_new([new_anns[0]], mutator) self.assertEquals(len(sym_anns), 2) self.assertEquals(len(new_anns), 1) self.assertEquals(len(new_anns2), 1) self.assertEquals(sym_anns.mutators, []) self.assertEquals(new_anns.mutators, [mutator]) self.assertEquals(new_anns2.mutators, [mutator, mutator])
def get_sym(concrete_anns, ctx): return read_announcements(concrete_anns, ctx)