def test_order_by_nulls(self): rows = ((1, 2, None), (2, None, None), (1, 1, 'c'), (1, None, 'a')) table = Table(rows, self.column_types, self.column_names) new_table = table.order_by('two') self.assertSequenceEqual(new_table.columns['two'], (1, 2, None, None)) new_table = table.order_by('three') self.assertSequenceEqual(new_table.columns['three'], ('a', 'c', None, None))
def test_order_by_preserves_rows(self): table = Table(self.rows, self.column_types, self.column_names) table2 = table.order_by(lambda r: r['one']) table3 = table2.order_by(lambda r: r['one']) self.assertIsNot(table._data[0], table2._data[0]) self.assertIs(table2._data[0], table3._data[0])
def test_order_by_nulls(self): rows = ( (1, 2, None), (2, None, None), (1, 1, 'c'), (1, None, 'a') ) table = Table(rows, self.column_types, self.column_names) new_table = table.order_by('two') self.assertSequenceEqual(new_table.columns['two'], (1, 2, None, None)) new_table = table.order_by('three') self.assertSequenceEqual(new_table.columns['three'], ('a', 'c', None, None))
def test_order_by_reverse(self): table = Table(self.rows, self.column_types, self.column_names) new_table = table.order_by(lambda r: r['two'], reverse=True) self.assertEqual(len(new_table.rows), 3) self.assertSequenceEqual(new_table.rows[0], (1, 4, 'a')) self.assertSequenceEqual(new_table.rows[1], (2, 3, 'b')) self.assertSequenceEqual(new_table.rows[2], (None, 2, 'c'))
def test_order_by_func(self): rows = ((1, 2, 'a'), (2, 1, 'b'), (1, 1, 'c')) table = Table(rows, self.column_types, self.column_names) new_table = table.order_by(lambda r: (r['one'], r['two'])) self.assertIsNot(new_table, table) self.assertEqual(len(new_table.rows), 3) self.assertSequenceEqual(new_table.rows[0], (1, 1, 'c')) self.assertSequenceEqual(new_table.rows[1], (1, 2, 'a')) self.assertSequenceEqual(new_table.rows[2], (2, 1, 'b'))
def test_order_by(self): table = Table(self.rows, self.column_types, self.column_names) new_table = table.order_by('two') self.assertIsNot(new_table, table) self.assertEqual(len(new_table.rows), 3) self.assertSequenceEqual(new_table.rows[0], (None, 2, 'c')) self.assertSequenceEqual(new_table.rows[1], (2, 3, 'b')) self.assertSequenceEqual(new_table.rows[2], (1, 4, 'a')) # Verify old table not changed self.assertSequenceEqual(table.rows[0], (1, 4, 'a')) self.assertSequenceEqual(table.rows[1], (2, 3, 'b')) self.assertSequenceEqual(table.rows[2], (None, 2, 'c'))
def test_order_by_func(self): rows = ( (1, 2, 'a'), (2, 1, 'b'), (1, 1, 'c') ) table = Table(rows, self.column_types, self.column_names) new_table = table.order_by(lambda r: (r['one'], r['two'])) self.assertIsNot(new_table, table) self.assertEqual(len(new_table.rows), 3) self.assertSequenceEqual(new_table.rows[0], (1, 1, 'c')) self.assertSequenceEqual(new_table.rows[1], (1, 2, 'a')) self.assertSequenceEqual(new_table.rows[2], (2, 1, 'b'))