aboutsummaryrefslogtreecommitdiff
path: root/utils/tabulator_test.py
blob: e1892b07ea4dae122cd2289890f494f91b764e49 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# Copyright 2012 Google Inc. All Rights Reserved.

"""Tests for misc."""

__author__ = 'asharif@google.com (Ahmad Sharif)'

# System modules
import unittest

# Local modules
import tabulator


class TabulatorTest(unittest.TestCase):
  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 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)


if __name__ == '__main__':
  unittest.main()