def test_one_surplus_row(self): computed = [['anna', 'lotr'], ['luke', 'lotr']] expected = [['anna', 'shrek']] differ = Differ(compare, [str,str]) differ.match(expected, computed, 0) self.assertEqual(differ.missing, []) self.assertEqual(differ.surplus, [['luke', 'lotr']])
def test_two_rows_with_difference(self): '''See fitbook Figure 5.3''' computed = [['anna', 'lotr'], ['luke', 'lotr']] expected = [[Cell('anna'), Cell('shrek')], [Cell('luke'), Cell('lotr')]] cell = expected[0][1] desc = [str ,str] #differ = Differ(compare, desc) differ = Differ(compare, desc) differ.match(expected, computed, 0) cell = expected[0][1] #print 'missing : %s' % differ.missing #print 'surplus : %s' % differ.surplus #print expected self.assertEqual(cell.expected, 'shrek')
class RowFixture(object): def collect(self): result = self.query() out_result = [] for row in result: if type(row) == dict: x = [row.get(attr) for attr in self.column_names] else: for attr in self.column_names: pass #print string.replace(attr, ' ', '_') x = [getattr(row, string.replace(attr, ' ', '_')) for attr in self.column_names] out_result.append(x) return out_result def process(self, table): self.column_names = [str(x) for x in table.rows[1]] computed = self.collect() expected_values = table.rows[2:] def compare_row2(expected_values,calculated): print 'compare_row' for expected_value, calculated_value in zip(expected_values, calculated): self.engine.compare(expected_value, calculated_value) if len(computed): desc = [] for cell in computed[0]: desc.append(type(cell)) else: desc = [] for cell in table.rows[1]: desc.append(str) self.differ = Differ(compare_row2, desc) self.differ.match(expected_values, computed, 0) for row in self.differ.missing: row[0].missing() for row in self.differ.surplus: table.append_row(row)