diff options
Diffstat (limited to 'cros_utils/tabulator_test.py')
-rw-r--r-- | cros_utils/tabulator_test.py | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/cros_utils/tabulator_test.py b/cros_utils/tabulator_test.py new file mode 100644 index 00000000..21cd1e73 --- /dev/null +++ b/cros_utils/tabulator_test.py @@ -0,0 +1,141 @@ +# Copyright 2012 Google Inc. All Rights Reserved. +"""Tests for the tabulator module.""" + +from __future__ import print_function + +__author__ = 'asharif@google.com (Ahmad Sharif)' + +# System modules +import unittest + +# Local modules +import tabulator + + +class TabulatorTest(unittest.TestCase): + """Tests for the Tabulator class.""" + + def testResult(self): + table = ['k1', ['1', '3'], ['55']] + result = tabulator.Result() + cell = tabulator.Cell() + result.Compute(cell, table[2], table[1]) + expected = ' '.join([str(float(v)) for v in table[2]]) + self.assertTrue(cell.value == expected) + + result = tabulator.AmeanResult() + cell = tabulator.Cell() + result.Compute(cell, table[2], table[1]) + self.assertTrue(cell.value == float(table[2][0])) + + def testStringMean(self): + smr = tabulator.StringMeanResult() + cell = tabulator.Cell() + value = 'PASS' + values = [value for _ in range(3)] + smr.Compute(cell, values, None) + self.assertTrue(cell.value == value) + values.append('FAIL') + smr.Compute(cell, values, None) + self.assertTrue(cell.value == '?') + + def testStorageFormat(self): + sf = tabulator.StorageFormat() + cell = tabulator.Cell() + base = 1024.0 + cell.value = base + sf.Compute(cell) + self.assertTrue(cell.string_value == '1.0K') + cell.value = base**2 + sf.Compute(cell) + self.assertTrue(cell.string_value == '1.0M') + cell.value = base**3 + sf.Compute(cell) + self.assertTrue(cell.string_value == '1.0G') + + def testLerp(self): + c1 = tabulator.Color(0, 0, 0, 0) + c2 = tabulator.Color(255, 0, 0, 0) + c3 = tabulator.Color.Lerp(0.5, c1, c2) + self.assertTrue(c3.r == 127.5) + self.assertTrue(c3.g == 0) + self.assertTrue(c3.b == 0) + self.assertTrue(c3.a == 0) + c3.Round() + self.assertTrue(c3.r == 127) + + def testGmean(self): + a = [1.0e+308] * 3 + # pylint: disable=protected-access + b = tabulator.Result()._GetGmean(a) + self.assertTrue(b >= 0.99e+308 and b <= 1.01e+308) + + def testTableGenerator(self): + runs = [[{'k1': '10', + 'k2': '12'}, {'k1': '13', + 'k2': '14', + 'k3': '15'}], [{'k1': '50', + 'k2': '51', + 'k3': '52', + 'k4': '53'}]] + labels = ['vanilla', 'modified'] + tg = tabulator.TableGenerator(runs, labels) + table = tg.GetTable() + header = table.pop(0) + + self.assertTrue(header == ['keys', 'vanilla', 'modified']) + row = table.pop(0) + self.assertTrue(row == ['k1', ['10', '13'], ['50']]) + row = table.pop(0) + self.assertTrue(row == ['k2', ['12', '14'], ['51']]) + row = table.pop(0) + self.assertTrue(row == ['k3', [None, '15'], ['52']]) + row = table.pop(0) + self.assertTrue(row == ['k4', [None, None], ['53']]) + + table = tg.GetTable() + columns = [ + tabulator.Column(tabulator.AmeanResult(), tabulator.Format()), + tabulator.Column(tabulator.AmeanRatioResult(), + tabulator.PercentFormat()), + ] + tf = tabulator.TableFormatter(table, columns) + table = tf.GetCellTable() + self.assertTrue(table) + + def testColspan(self): + simple_table = [ + ['binary', 'b1', 'b2', 'b3'], + ['size', 100, 105, 108], + ['rodata', 100, 80, 70], + ['data', 100, 100, 100], + ['debug', 100, 140, 60], + ] + columns = [ + tabulator.Column(tabulator.AmeanResult(), tabulator.Format()), + tabulator.Column(tabulator.MinResult(), tabulator.Format()), + tabulator.Column(tabulator.AmeanRatioResult(), + tabulator.PercentFormat()), + tabulator.Column(tabulator.AmeanRatioResult(), + tabulator.ColorBoxFormat()), + ] + our_table = [simple_table[0]] + for row in simple_table[1:]: + our_row = [row[0]] + for v in row[1:]: + our_row.append([v]) + our_table.append(our_row) + + tf = tabulator.TableFormatter(our_table, columns) + cell_table = tf.GetCellTable() + self.assertTrue(cell_table[0][0].colspan == 1) + self.assertTrue(cell_table[0][1].colspan == 2) + self.assertTrue(cell_table[0][2].colspan == 4) + self.assertTrue(cell_table[0][3].colspan == 4) + for row in cell_table[1:]: + for cell in row: + self.assertTrue(cell.colspan == 1) + + +if __name__ == '__main__': + unittest.main() |