Example #1
0
class TestTableColumnMethod:
    '''Test column()'''
    def setUp(self):
        self.headers = ['x', 'y', 'z']
        self.t = Table(self.headers)
        self.t.append((1,2,3))
        self.t.append((4,5,6))
        self.t.append((7,8,9))
    
    def test_column_by_index(self):
        assert list(self.t.column(0)) == [1,4,7]
        assert list(self.t.column(1)) == [2,5,8]
        assert list(self.t.column(2)) == [3,6,9]
    
    def test_column_by_reverse_index(self):
        assert list(self.t.column(-1)) == [3,6,9]
        assert list(self.t.column(-2)) == [2,5,8]
        assert list(self.t.column(-3)) == [1,4,7]
    
    def test_column_by_name(self):
        assert list(self.t.column('x')) == [1,4,7]
        assert list(self.t.column('y')) == [2,5,8]
        assert list(self.t.column('z')) == [3,6,9]
    
    @raises(IndexError)
    def test_column_by_bad_index(self):
        self.t.column(15)
    
    @raises(IndexError)
    def test_column_by_bad_reverse_index(self):
        self.t.column(-15)
    
    @raises(KeyError)
    def test_column_by_bad_name(self):
        self.t.column('unknown')
Example #2
0
class TestTableColumnMethod:
    '''Test column()'''
    def setUp(self):
        self.headers = ['x', 'y', 'z']
        self.t = Table(self.headers)
        self.t.append((1, 2, 3))
        self.t.append((4, 5, 6))
        self.t.append((7, 8, 9))

    def test_column_by_index(self):
        assert list(self.t.column(0)) == [1, 4, 7]
        assert list(self.t.column(1)) == [2, 5, 8]
        assert list(self.t.column(2)) == [3, 6, 9]

    def test_column_by_reverse_index(self):
        assert list(self.t.column(-1)) == [3, 6, 9]
        assert list(self.t.column(-2)) == [2, 5, 8]
        assert list(self.t.column(-3)) == [1, 4, 7]

    def test_column_by_name(self):
        assert list(self.t.column('x')) == [1, 4, 7]
        assert list(self.t.column('y')) == [2, 5, 8]
        assert list(self.t.column('z')) == [3, 6, 9]

    @raises(IndexError)
    def test_column_by_bad_index(self):
        self.t.column(15)

    @raises(IndexError)
    def test_column_by_bad_reverse_index(self):
        self.t.column(-15)

    @raises(KeyError)
    def test_column_by_bad_name(self):
        self.t.column('unknown')
Example #3
0
class TestTableSorting:
    '''Test sort, sort_by_col, reverse'''
    def setUp(self):
        self.headers = ['x', 'y', 'z']
        self.t = Table(self.headers)
        self.t.append((1,2,9))
        self.t.append((1,-5,6))
        self.t.append((-1,8,9))
        self.t.append((10,11,-12))
        self.t.append((-13,11,15))
        self.t.append((16,0,1))
    
    def test_sort_by_single_col(self):
        self.t.sort('y')
        assert list(self.t.column('y')) == [-5, 0, 2, 8, 11, 11]
        assert self.t[0] == (1,-5,6)
        assert self.t[-2] == (10,11,-12)
        assert self.t[-1] == (-13,11,15)
    
    def test_sort_by_single_col_numeric(self):
        self.t.sort(1)
        assert list(self.t.column('y')) == [-5, 0, 2, 8, 11, 11]
        assert self.t[0] == (1,-5,6)
        assert self.t[-2] == (10,11,-12)
        assert self.t[-1] == (-13,11,15)
    
    def test_sort_by_multiple_col(self):
        self.t.sort(['x', 'z'])
        assert list(self.t.column('x')) == [-13, -1, 1, 1, 10, 16]
        assert list(self.t.column('z')) == [15, 9, 6, 9, -12, 1]
    
    def test_sort_by_multiple_col_numeric(self):
        self.t.sort([0, 2])
        assert list(self.t.column('x')) == [-13, -1, 1, 1, 10, 16]
        assert list(self.t.column('z')) == [15, 9, 6, 9, -12, 1]
    
    def test_sort_by_single_col_reverse(self):
        self.t.sort('y', reverse=True)
        assert list(self.t.column('y')) == [11, 11, 8, 2, 0, -5]
        # Even though the sort order is reversed, in the case of equal numbers
        # the original row ordering remains
        assert list(self.t.column('z')) == [-12, 15, 9, 9, 1, 6]
    
    def test_sort_by_multiple_col_reverse(self):
        self.t.sort(['z', 'y', 'x'], reverse=True)
        assert self.t[0] == (-13,11,15)
        assert self.t[1] == (-1,8,9)
        assert self.t[2] == (1,2,9)
        assert self.t[3] == (1,-5,6)
        assert self.t[4] == (16,0,1)
        assert self.t[5] == (10,11,-12)
    
    def test_sort_by_func(self):
        func = lambda row: sum(map(abs, row))
        self.t.sort(func)
        assert self.t[0] == (1,2,9)
        assert self.t[1] == (1,-5,6)
        assert self.t[2] == (16,0,1)
        assert self.t[3] == (-1,8,9)
        assert self.t[4] == (10,11,-12)
        assert self.t[5] == (-13,11,15)
    
    def test_sort_by_func_reverse(self):
        func = lambda row: sum(map(abs, row))
        self.t.sort(key=func, reverse=True)
        assert self.t[0] == (-13,11,15)
        assert self.t[1] == (10,11,-12)
        assert self.t[2] == (-1,8,9)
        assert self.t[3] == (16,0,1)
        # Equal sort items retain original ordering, even with reverse flag
        assert self.t[4] == (1,2,9)
        assert self.t[5] == (1,-5,6)
    
    def test_reverse(self):
        self.t.reverse()
        assert self.t[0] == (16,0,1)
        assert self.t[1] == (-13,11,15)
        assert self.t[2] == (10,11,-12)
        assert self.t[3] == (-1,8,9)
        assert self.t[4] == (1,-5,6)
        assert self.t[5] == (1,2,9)
Example #4
0
class TestTableSorting:
    '''Test sort, sort_by_col, reverse'''
    def setUp(self):
        self.headers = ['x', 'y', 'z']
        self.t = Table(self.headers)
        self.t.append((1, 2, 9))
        self.t.append((1, -5, 6))
        self.t.append((-1, 8, 9))
        self.t.append((10, 11, -12))
        self.t.append((-13, 11, 15))
        self.t.append((16, 0, 1))

    def test_sort_by_single_col(self):
        self.t.sort('y')
        assert list(self.t.column('y')) == [-5, 0, 2, 8, 11, 11]
        assert self.t[0] == (1, -5, 6)
        assert self.t[-2] == (10, 11, -12)
        assert self.t[-1] == (-13, 11, 15)

    def test_sort_by_single_col_numeric(self):
        self.t.sort(1)
        assert list(self.t.column('y')) == [-5, 0, 2, 8, 11, 11]
        assert self.t[0] == (1, -5, 6)
        assert self.t[-2] == (10, 11, -12)
        assert self.t[-1] == (-13, 11, 15)

    def test_sort_by_multiple_col(self):
        self.t.sort(['x', 'z'])
        assert list(self.t.column('x')) == [-13, -1, 1, 1, 10, 16]
        assert list(self.t.column('z')) == [15, 9, 6, 9, -12, 1]

    def test_sort_by_multiple_col_numeric(self):
        self.t.sort([0, 2])
        assert list(self.t.column('x')) == [-13, -1, 1, 1, 10, 16]
        assert list(self.t.column('z')) == [15, 9, 6, 9, -12, 1]

    def test_sort_by_single_col_reverse(self):
        self.t.sort('y', reverse=True)
        assert list(self.t.column('y')) == [11, 11, 8, 2, 0, -5]
        # Even though the sort order is reversed, in the case of equal numbers
        # the original row ordering remains
        assert list(self.t.column('z')) == [-12, 15, 9, 9, 1, 6]

    def test_sort_by_multiple_col_reverse(self):
        self.t.sort(['z', 'y', 'x'], reverse=True)
        assert self.t[0] == (-13, 11, 15)
        assert self.t[1] == (-1, 8, 9)
        assert self.t[2] == (1, 2, 9)
        assert self.t[3] == (1, -5, 6)
        assert self.t[4] == (16, 0, 1)
        assert self.t[5] == (10, 11, -12)

    def test_sort_by_func(self):
        func = lambda row: sum(map(abs, row))
        self.t.sort(func)
        assert self.t[0] == (1, 2, 9)
        assert self.t[1] == (1, -5, 6)
        assert self.t[2] == (16, 0, 1)
        assert self.t[3] == (-1, 8, 9)
        assert self.t[4] == (10, 11, -12)
        assert self.t[5] == (-13, 11, 15)

    def test_sort_by_func_reverse(self):
        func = lambda row: sum(map(abs, row))
        self.t.sort(key=func, reverse=True)
        assert self.t[0] == (-13, 11, 15)
        assert self.t[1] == (10, 11, -12)
        assert self.t[2] == (-1, 8, 9)
        assert self.t[3] == (16, 0, 1)
        # Equal sort items retain original ordering, even with reverse flag
        assert self.t[4] == (1, 2, 9)
        assert self.t[5] == (1, -5, 6)

    def test_reverse(self):
        self.t.reverse()
        assert self.t[0] == (16, 0, 1)
        assert self.t[1] == (-13, 11, 15)
        assert self.t[2] == (10, 11, -12)
        assert self.t[3] == (-1, 8, 9)
        assert self.t[4] == (1, -5, 6)
        assert self.t[5] == (1, 2, 9)