def join(res1, res2): conn = joins.pop(0) tb1 = res1[0] col_order_1 = res1[1] tb2 = res2[0] col_order_2 = res2[1] if conn == ' UNETELO CN ': return man.unite_tables(tb1, tb2, col_order_1, col_order_2, False) elif conn == ' UNETELO TODO CN ': return man.unite_tables(tb1, tb2, col_order_1, col_order_2, True) elif conn == ' COMUN CN ': return man.intersect_tables(tb1, tb2, col_order_1, col_order_2) elif conn == ' SACALE ': return man.left_outer_intersect(tb1, tb2, col_order_1, col_order_2) else: raise ValueError('Do not recognize connective')
def test_intersect_tables(self): test = man.intersect_tables(self.tb51, self.tb52, self.tb51_order, self.tb52_order) test_tb = test[0] # Check column entries, row order may be different, but change is # uniform across all columns str_col = test_tb['str'] int_col = test_tb['int'] float_col = test_tb['float'] i = str_col.index('a') j = str_col.index('b') k = str_col.index('c') # Same row as a self.assertEqual(int_col[i], 1) self.assertEqual(float_col[i], 0.1) # Same row as b self.assertEqual(int_col[j], 2) self.assertEqual(float_col[j], 0.2) # Same row as c self.assertEqual(int_col[k], 3) self.assertEqual(float_col[k], 0.3)
def test_intersect_tables_no_intersect(self): no_intersect = {'str': ['z'], 'int': [100], 'float': [0.05]} test = man.intersect_tables(self.tb51, no_intersect, self.tb51_order, self.tb52_order) self.assertEqual(set(test[0]), set())