def intersection(self, a: DRS, b: DRS) -> DRS: """ Returns elements that are both in a and b :param a: an iterable object :param b: another iterable object :return: the intersection of the two provided iterable objects """ assert a.mode == b.mode, "Input parameters are not in the same mode (fields, table)" o_drs = a.intersection(b) return o_drs
def intersection(self, a: DRS, b: DRS) -> DRS: """ Returns elements that are both in a and b :param a: an iterable object :param b: another iterable object :return: the intersection of the two provided iterable objects """ a = self._general_to_drs(a) b = self._general_to_drs(b) self._assert_same_mode(a, b) o_drs = a.intersection(b) return o_drs
def test_intersection(self): print(self._testMethodName) # DRS 1 h0 = Hit(10, "dba", "table_c", "v", -1) h1 = Hit(0, "dba", "table_a", "a", -1) h2 = Hit(1, "dba", "table_a", "b", -1) h3 = Hit(2, "dba", "table_b", "c", -1) h4 = Hit(3, "dba", "table_b", "d", -1) drs1 = DRS([h0, h1, h2, h3, h4], Operation(OP.ORIGIN)) # DRS 2 h5 = Hit(1, "dba", "table_a", "b", -1) h6 = Hit(16, "dba", "table_d", "a", -1) h7 = Hit(17, "dba", "table_d", "b", -1) drs2 = DRS([h5, h6, h7], Operation(OP.ORIGIN)) drs = drs1.intersection(drs2) prov_graph = drs.get_provenance().prov_graph() nodes = prov_graph.nodes() print("NODES") for n in nodes: print(str(n)) print(" ") edges = prov_graph.edges(keys=True) print("EDGES") for e in edges: print(str(e)) print(" ") data = [x for x in drs] ld = len(data) print("Len must be 1: " + str(ld)) self.assertTrue(ld == 1)