Exemple #1
0
class TestCalculatedOutput(unittest.TestCase):

    # Grid fixture
    grid = None

    def setUp(self):
        """Setup for all tests in class"""
        self.grid = DataGrid(testData, testCols)
        self.grid.calculatedcolumns = {"four": "{two}+{three}"}

    def testBasicRender(self):
        # Output of test run should look like this
        expected = ("[t][h/]"
                "[r][c]1[/c][c]2[/c][c]3[/c][c]5.0[/c][/r]"
                "[r][c]4[/c][c]5[/c][c]6[/c][c]11.0[/c][/r]"
                "[f][c][/c][c][/c][c][/c][c]--[/c][/f]"
                "[/t]")
        self.assertEquals(expected, self.grid.render(EchoRenderer()))

    def testFormattedRender(self):
       # Output of test run should look like this
        expected = ("[t][h/]"
                "[r][c]1[/c][c]2[/c][c]3[/c][c]5[/c][/r]"
                "[r][c]4[/c][c]5[/c][c]6[/c][c]11[/c][/r]"
                "[f][c][/c][c][/c][c][/c][c]--[/c][/f]"
                "[/t]")
        self.grid.formatters = {'four': format.number}
        self.assertEquals(expected, self.grid.render(EchoRenderer()))

    def testSortByRender(self):
        # Output of test run should look like this
        expected = ("[t][h/]"
                "[r][c]4[/c][c]5[/c][c]6[/c][c]11.0[/c][/r]"
                "[r][c]1[/c][c]2[/c][c]3[/c][c]5.0[/c][/r]"
                "[f][c][/c][c][/c][c][/c][c]--[/c][/f]"
                "[/t]")
        self.grid.sortby = [('four', 'desc')]
        self.assertEquals(expected, self.grid.render(EchoRenderer()))

    def testPostAggregateFilter(self):
        self.grid.data = [[1,2,3],[2,2,5],[4,5,2]]
        self.grid.aggregate['one'] = vars(__builtin__)['sum']
        self.grid.post_aggregate_filters = ['{four} == 7']
        expected = ("[t][h/]"
                "[r][c]2[/c][c]2[/c][c]5[/c][c]7.0[/c][/r]"
                "[r][c]4[/c][c]5[/c][c]2[/c][c]7.0[/c][/r]"
                "[f][c]7[/c][c][/c][c][/c][c]--[/c][/f]"
                "[/t]")
        actual = self.grid.render(EchoRenderer())
        self.assertEquals(expected, actual)
Exemple #2
0
def output_results(stats, labels, display_options):
    """Output results table."""

    # Columns are all averages, reflect in labels
    labels[1:] = ["%s (avg)" % label for label in labels[1:]]

    # Aggregate Methods
    time_sum = partial(reduce, lambda x, y: x+y)
    average = lambda vals: time_sum(vals) / len(vals)

    # Setup DataGrid
    grid = DataGrid(stats, labels, 
        aggregate=dict((label, average) for label in labels[1:]),
        groupby=['command'], suppressdetail=True)
    print "\n", grid.render(ascii.Renderer())
Exemple #3
0
class TestRenderInteract(unittest.TestCase):
    """DataGrid core unit-test"""

    # Grid fixture
    grid = None

    def setUp(self):
        """Setup fixtures"""
        self.grid = DataGrid(testData, testCols)

    def tearDown(self):
        """Cleanup and prep for next run"""
        StackTestRenderer.callLog = []

    def testRender(self):
        # Evaluation order or render methods for given test table
        testLog = ['setup', 'head',             # Setup table and header
                'cell', 'cell', 'cell', 'row',  # Rendering Row 1 
                'cell', 'cell', 'cell', 'row',  # Rendering Row 2
                'cell', 'cell', 'cell', 'tail', # Rendering Footer
                'table']                        # Wrap up table render

        # Test simple render
        self.grid.render(StackTestRenderer())
        self.assertEquals(testLog, self.grid.renderer.callLog)

    def testRenderAggregate(self):
        # Aggregation eval order
        testLog = ['setup', 'head',             # Setup table and header
                'cell', 'cell', 'cell', 'row',  # Rendering Agg Row 1 
                'cell', 'cell', 'cell', 'row',  # Rendering Row 1 
                'cell', 'cell', 'cell', 'row',  # Rendering Agg Row 2
                'cell', 'cell', 'cell', 'row',  # Rendering Row 2 
                'cell', 'cell', 'cell', 'tail', # Rendering Footer
                'table']                        # Wrap up table render

        # Test simple render
        self.grid.groupby = ['one']
        self.grid.render(StackTestRenderer())
        self.assertEquals(testLog, self.grid.renderer.callLog)
Exemple #4
0
 def setUp(self):
     """Setup fixtures"""
     self.grid = DataGrid(testData, testCols)
Exemple #5
0
 def setUp(self):
     """Setup for all tests in class"""
     self.grid = DataGrid(testData, testCols)
     self.grid.calculatedcolumns = {"four": "{two}+{three}"}
Exemple #6
0
 def setUp(self):
     """Setup for all tests in class"""
     self.grid = DataGrid(testData, testCols)
Exemple #7
0
class TestOutput(unittest.TestCase):

    # Grid fixture
    grid = None

    def setUp(self):
        """Setup for all tests in class"""
        self.grid = DataGrid(testData, testCols)

    def testBasicRender(self):
        # Output of test run should look like this
        expected = "[t][h/][r][c]1[/c][c]2[/c][c]3[/c][/r]" \
                "[r][c]4[/c][c]5[/c][c]6[/c][/r][f][c][/c][c][/c][c][/c][/f][/t]"
        self.assertEquals(expected, self.grid.render(EchoRenderer()))

    def testHideColumn(self):
        # Output of test run should look like this
        expected = "[t][h/][r][c]1[/c][c]2[/c][/r]" \
                "[r][c]4[/c][c]5[/c][/r][f][c][/c][c][/c][/f][/t]"

        # Only show first two columns
        self.grid.columns = ('one', 'two')
        self.assertEquals(expected, self.grid.render(EchoRenderer()))

    def testFormattedRender(self):
        # Output of test run should look like this
        expected = "[t][h/][r][c]01[/c][c]2[/c][c]3[/c][/r]" \
                "[r][c]04[/c][c]5[/c][c]6[/c][/r][f][c][/c][c][/c][c][/c][/f][/t]"
        self.grid.formatters = {'one': lambda x: x.zfill(2)}
        self.assertEquals(expected, self.grid.render(EchoRenderer()))

    def testSortByRender(self):
        # Output of test run should look like this
        expected = ("[t][h/]"
                "[r][c]4[/c][c]5[/c][c]6[/c][/r]"
                "[r][c]1[/c][c]2[/c][c]3[/c][/r]"
                "[f][c][/c][c][/c][c][/c][/f]"
                "[/t]")
        self.grid.sortby = [('one', 'desc')]
        self.assertEquals(expected, self.grid.render(EchoRenderer()))

    def testGroup(self):
        self.grid.groupby = ['one']
        expected = ("[t][h/]"
                "[r][c]1[/c][c][/c][c][/c][/r]"
                "[r][c]1[/c][c]2[/c][c]3[/c][/r]"
                "[r][c]4[/c][c][/c][c][/c][/r]"
                "[r][c]4[/c][c]5[/c][c]6[/c][/r]"
                "[f][c][/c][c][/c][c][/c][/f]"
                "[/t]")
        actual = self.grid.render(EchoRenderer())
        self.assertEquals(expected, actual)

    def testGroupAggrigate(self):
        self.grid.data = [[1, 2, 3], [4, 5, 6]]
        self.grid.groupby = ['one']
        self.grid.aggregate['two'] = vars(__builtin__)['sum']
        self.grid.aggregate['three'] = vars(__builtin__)['sum']
        expected = ("[t][h/]"
                "[r][c]1[/c][c]2[/c][c]3[/c][/r]"
                "[r][c]1[/c][c]2[/c][c]3[/c][/r]"
                "[r][c]4[/c][c]5[/c][c]6[/c][/r]"
                "[r][c]4[/c][c]5[/c][c]6[/c][/r]"
                "[f][c][/c][c]7[/c][c]9[/c][/f]"
                "[/t]")
        actual = self.grid.render(EchoRenderer())
        self.assertEquals(expected, actual)

    def testGroupAggrigateSort(self):
        self.grid.data = [[1, 2, 3], [4, 5, 6]]
        self.grid.groupby = ['one']
        self.grid.aggregate['two'] = vars(__builtin__)['sum']
        self.grid.aggregate['three'] = vars(__builtin__)['sum']
        self.grid.sortby = [('two', 'desc')]
        expected = ("[t][h/]"
                "[r][c]4[/c][c]5[/c][c]6[/c][/r]"
                "[r][c]4[/c][c]5[/c][c]6[/c][/r]"
                "[r][c]1[/c][c]2[/c][c]3[/c][/r]"
                "[r][c]1[/c][c]2[/c][c]3[/c][/r]"
                "[f][c][/c][c]7[/c][c]9[/c][/f]"
                "[/t]")
        actual = self.grid.render(EchoRenderer())
        self.assertEquals(expected, actual)

    def testGroupAggrigateSortDesc(self):
        self.grid.data = [[1, 2, 3], [1, 2, 3], [1, 2, 3],  [4, 5, 6]]
        self.grid.groupby = ['one']
        self.grid.aggregate['two'] = vars(__builtin__)['sum']
        self.grid.aggregate['three'] = vars(__builtin__)['sum']
        self.grid.sortby = [('two', 'desc')]
        expected = ("[t][h/]"
                "[r][c]1[/c][c]6[/c][c]9[/c][/r]"
                "[r][c]1[/c][c]2[/c][c]3[/c][/r]"
                "[r][c]1[/c][c]2[/c][c]3[/c][/r]"
                "[r][c]1[/c][c]2[/c][c]3[/c][/r]"
                "[r][c]4[/c][c]5[/c][c]6[/c][/r]"
                "[r][c]4[/c][c]5[/c][c]6[/c][/r]"
                "[f][c][/c][c]11[/c][c]15[/c][/f]"
                "[/t]")
        actual = self.grid.render(EchoRenderer())
        self.assertEquals(expected, actual)

    def testGroupAggrigateSortAsc(self):
        self.grid.data = [[1, 2, 3], [1, 2, 3], [1, 2, 3],  [4, 5, 6]]
        self.grid.groupby = ['one']
        self.grid.aggregate['two'] = vars(__builtin__)['sum']
        self.grid.aggregate['three'] = vars(__builtin__)['sum']
        self.grid.sortby = [('two', 'asc')]
        expected = ("[t][h/]"
                "[r][c]4[/c][c]5[/c][c]6[/c][/r]"
                "[r][c]4[/c][c]5[/c][c]6[/c][/r]"
                "[r][c]1[/c][c]6[/c][c]9[/c][/r]"
                "[r][c]1[/c][c]2[/c][c]3[/c][/r]"
                "[r][c]1[/c][c]2[/c][c]3[/c][/r]"
                "[r][c]1[/c][c]2[/c][c]3[/c][/r]"
                "[f][c][/c][c]11[/c][c]15[/c][/f]"
                "[/t]")
        actual = self.grid.render(EchoRenderer())
        self.assertEquals(expected, actual)

    def testGroupAggrigateSortAscComplex(self):
        self.grid.data = [[4, 2, 3], [4, 2, 3], [4, 2, 3],  [1, 5, 6]]
        self.grid.groupby = ['one']
        self.grid.aggregate['two'] = vars(__builtin__)['sum']
        self.grid.aggregate['three'] = vars(__builtin__)['sum']
        self.grid.sortby = [('two', 'asc')]
        expected = ("[t][h/]"
                "[r][c]1[/c][c]5[/c][c]6[/c][/r]"
                "[r][c]1[/c][c]5[/c][c]6[/c][/r]"
                "[r][c]4[/c][c]6[/c][c]9[/c][/r]"
                "[r][c]4[/c][c]2[/c][c]3[/c][/r]"
                "[r][c]4[/c][c]2[/c][c]3[/c][/r]"
                "[r][c]4[/c][c]2[/c][c]3[/c][/r]"
                "[f][c][/c][c]11[/c][c]15[/c][/f]"
                "[/t]")
        actual = self.grid.render(EchoRenderer())
        self.assertEquals(expected, actual)

    def testGroupAggrigateSortDescComplex(self):
        self.grid.data = [[4, 2, 3], [4, 2, 3], [4, 2, 3],  [1, 5, 6]]
        self.grid.groupby = ['one']
        self.grid.aggregate['two'] = vars(__builtin__)['sum']
        self.grid.aggregate['three'] = vars(__builtin__)['sum']
        self.grid.sortby = [('two', 'desc')]
        expected = ("[t][h/]"
                "[r][c]4[/c][c]6[/c][c]9[/c][/r]"
                "[r][c]4[/c][c]2[/c][c]3[/c][/r]"
                "[r][c]4[/c][c]2[/c][c]3[/c][/r]"
                "[r][c]4[/c][c]2[/c][c]3[/c][/r]"
                "[r][c]1[/c][c]5[/c][c]6[/c][/r]"
                "[r][c]1[/c][c]5[/c][c]6[/c][/r]"
                "[f][c][/c][c]11[/c][c]15[/c][/f]"
                "[/t]")
        actual = self.grid.render(EchoRenderer())
        self.assertEquals(expected, actual)

    def testMultiGroupAggrigate(self):
        self.grid.data = [[4, 2, 3], [4, 2, 3], [4, 2, 3],  [1, 5, 6]]
        self.grid.groupby = ['one','two']
        self.grid.aggregate['two'] = vars(__builtin__)['sum']
        self.grid.aggregate['three'] = vars(__builtin__)['sum']
        expected = ("[t][h/]"
                "[r][c]1[/c][c]5[/c][c]6[/c][/r]"
                "[r][c]1[/c][c]5[/c][c]6[/c][/r]"
                "[r][c]1[/c][c]5[/c][c]6[/c][/r]"
                "[r][c]4[/c][c]6[/c][c]9[/c][/r]"
                "[r][c]4[/c][c]2[/c][c]9[/c][/r]"
                "[r][c]4[/c][c]2[/c][c]3[/c][/r]"
                "[r][c]4[/c][c]2[/c][c]3[/c][/r]"
                "[r][c]4[/c][c]2[/c][c]3[/c][/r]"
                "[f][c][/c][c]11[/c][c]15[/c][/f]"
                "[/t]")
        actual = self.grid.render(EchoRenderer())
        self.assertEquals(expected, actual)

    def testMultiGroupAggrigateSort(self):
        self.grid.data = [[4, 2, 3], [4, 2, 3], [4, 2, 3],  [1, 5, 6]]
        self.grid.groupby = ['one','two']
        self.grid.aggregate['two'] = vars(__builtin__)['sum']
        self.grid.aggregate['three'] = vars(__builtin__)['sum']
        self.grid.sortby = [('three', 'asc')]
        expected = ("[t][h/]"
                "[r][c]1[/c][c]5[/c][c]6[/c][/r]"
                "[r][c]1[/c][c]5[/c][c]6[/c][/r]"
                "[r][c]1[/c][c]5[/c][c]6[/c][/r]"
                "[r][c]4[/c][c]6[/c][c]9[/c][/r]"
                "[r][c]4[/c][c]2[/c][c]9[/c][/r]"
                "[r][c]4[/c][c]2[/c][c]3[/c][/r]"
                "[r][c]4[/c][c]2[/c][c]3[/c][/r]"
                "[r][c]4[/c][c]2[/c][c]3[/c][/r]"
                "[f][c][/c][c]11[/c][c]15[/c][/f]"
                "[/t]")
        actual = self.grid.render(EchoRenderer())
        self.assertEquals(expected, actual)

    def testFilter(self):
        self.grid.data = [[1,2,3],[4,5,6]]
        self.grid.filters = ["{one} == 1"]
        expected = ("[t][h/]"
                "[r][c]1[/c][c]2[/c][c]3[/c][/r]"
                "[f][c][/c][c][/c][c][/c][/f]"
                "[/t]")
        actual = self.grid.render(EchoRenderer())
        self.assertEquals(expected, actual)


    def testPostAggregateFilter(self):
        self.grid.data = [[1,2,3],[2,2,5], [4,5,6]]
        self.grid.aggregate['one'] = vars(__builtin__)['sum']
        self.grid.post_aggregate_filters = ['{two} == 2']
        expected = ("[t][h/]"
                "[r][c]1[/c][c]2[/c][c]3[/c][/r]"
                "[r][c]2[/c][c]2[/c][c]5[/c][/r]"
                "[f][c]7[/c][c][/c][c][/c][/f]"
                "[/t]")
        actual = self.grid.render(EchoRenderer())
        self.assertEquals(expected, actual)


    def testMultiPostAggregateFilter(self):
        self.grid.data = [[1,2,3],[2,2,5], [4,5,6]]
        self.grid.aggregate['one'] = vars(__builtin__)['sum']
        self.grid.post_aggregate_filters = ['{two} == 2', '{three} == 3']
        expected = ("[t][h/]"
                "[r][c]1[/c][c]2[/c][c]3[/c][/r]"
                "[f][c]7[/c][c][/c][c][/c][/f]"
                "[/t]")
        actual = self.grid.render(EchoRenderer())
        self.assertEquals(expected, actual)