Home | History | Annotate | Download | only in base
      1 # Copyright (c) 2013 The Chromium Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 """Unittests for TestRunResults."""
      6 
      7 import unittest
      8 
      9 from pylib.base.base_test_result import BaseTestResult
     10 from pylib.base.base_test_result import TestRunResults
     11 from pylib.base.base_test_result import ResultType
     12 
     13 
     14 class TestTestRunResults(unittest.TestCase):
     15   def setUp(self):
     16     self.p1 = BaseTestResult('p1', ResultType.PASS, log='pass1')
     17     other_p1 = BaseTestResult('p1', ResultType.PASS)
     18     self.p2 = BaseTestResult('p2', ResultType.PASS)
     19     self.f1 = BaseTestResult('f1', ResultType.FAIL, log='failure1')
     20     self.c1 = BaseTestResult('c1', ResultType.CRASH, log='crash1')
     21     self.u1 = BaseTestResult('u1', ResultType.UNKNOWN)
     22     self.tr = TestRunResults()
     23     self.tr.AddResult(self.p1)
     24     self.tr.AddResult(other_p1)
     25     self.tr.AddResult(self.p2)
     26     self.tr.AddResults(set([self.f1, self.c1, self.u1]))
     27 
     28   def testGetAll(self):
     29     self.assertFalse(
     30         self.tr.GetAll().symmetric_difference(
     31             [self.p1, self.p2, self.f1, self.c1, self.u1]))
     32 
     33   def testGetPass(self):
     34     self.assertFalse(self.tr.GetPass().symmetric_difference(
     35         [self.p1, self.p2]))
     36 
     37   def testGetNotPass(self):
     38     self.assertFalse(self.tr.GetNotPass().symmetric_difference(
     39         [self.f1, self.c1, self.u1]))
     40 
     41   def testGetAddTestRunResults(self):
     42     tr2 = TestRunResults()
     43     other_p1 = BaseTestResult('p1', ResultType.PASS)
     44     f2 = BaseTestResult('f2', ResultType.FAIL)
     45     tr2.AddResult(other_p1)
     46     tr2.AddResult(f2)
     47     tr2.AddTestRunResults(self.tr)
     48     self.assertFalse(
     49         tr2.GetAll().symmetric_difference(
     50             [self.p1, self.p2, self.f1, self.c1, self.u1, f2]))
     51 
     52   def testGetLogs(self):
     53     log_print = ('[FAIL] f1:\n'
     54                  'failure1\n'
     55                  '[CRASH] c1:\n'
     56                  'crash1')
     57     self.assertEqual(self.tr.GetLogs(), log_print)
     58 
     59   def testGetShortForm(self):
     60     short_print = ('ALL: 5         PASS: 2        FAIL: 1        '
     61                    'CRASH: 1       TIMEOUT: 0     UNKNOWN: 1     ')
     62     self.assertEqual(self.tr.GetShortForm(), short_print)
     63 
     64   def testGetGtestForm(self):
     65     gtest_print = ('[==========] 5 tests ran.\n'
     66                    '[  PASSED  ] 2 tests.\n'
     67                    '[  FAILED  ] 3 tests, listed below:\n'
     68                    '[  FAILED  ] f1\n'
     69                    '[  FAILED  ] c1 (CRASHED)\n'
     70                    '[  FAILED  ] u1 (UNKNOWN)\n'
     71                    '\n'
     72                    '3 FAILED TESTS')
     73     self.assertEqual(gtest_print, self.tr.GetGtestForm())
     74 
     75   def testRunPassed(self):
     76     self.assertFalse(self.tr.DidRunPass())
     77     tr2 = TestRunResults()
     78     self.assertTrue(tr2.DidRunPass())
     79 
     80 
     81 if __name__ == '__main__':
     82   unittest.main()
     83