Home | History | Annotate | Download | only in tests
      1 #!/usr/bin/env python3.4
      2 #
      3 #   Copyright 2016 - The Android Open Source Project
      4 #
      5 #   Licensed under the Apache License, Version 2.0 (the "License");
      6 #   you may not use this file except in compliance with the License.
      7 #   You may obtain a copy of the License at
      8 #
      9 #       http://www.apache.org/licenses/LICENSE-2.0
     10 #
     11 #   Unless required by applicable law or agreed to in writing, software
     12 #   distributed under the License is distributed on an "AS IS" BASIS,
     13 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14 #   See the License for the specific language governing permissions and
     15 #   limitations under the License.
     16 
     17 import unittest
     18 
     19 from acts import records
     20 from acts import signals
     21 
     22 class ActsRecordsTest(unittest.TestCase):
     23     """This test class tests the implementation of classes in acts.records.
     24     """
     25 
     26     def setUp(self):
     27         self.tn = "test_name"
     28         self.details = "Some details about the test execution."
     29         self.float_extra = 12345.56789
     30         self.json_extra = {"ha": "whatever"}
     31 
     32     def verify_record(self, record, result, details, extras):
     33         # Verify each field.
     34         self.assertEqual(record.test_name, self.tn)
     35         self.assertEqual(record.result, result)
     36         self.assertEqual(record.details, details)
     37         self.assertEqual(record.extras, extras)
     38         self.assertTrue(record.begin_time, "begin time should not be empty.")
     39         self.assertTrue(record.end_time, "end time should not be empty.")
     40         # UID is not used at the moment, should always be None.
     41         self.assertIsNone(record.uid)
     42         # Verify to_dict.
     43         d = {}
     44         d[records.TestResultEnums.RECORD_NAME] = self.tn
     45         d[records.TestResultEnums.RECORD_RESULT] = result
     46         d[records.TestResultEnums.RECORD_DETAILS] = details
     47         d[records.TestResultEnums.RECORD_EXTRAS] = extras
     48         d[records.TestResultEnums.RECORD_BEGIN_TIME] = record.begin_time
     49         d[records.TestResultEnums.RECORD_END_TIME] = record.end_time
     50         d[records.TestResultEnums.RECORD_UID] = None
     51         d[records.TestResultEnums.RECORD_CLASS] = None
     52         d[records.TestResultEnums.RECORD_EXTRA_ERRORS] = {}
     53         actual_d = record.to_dict()
     54         self.assertDictEqual(actual_d, d)
     55         # Verify that these code paths do not cause crashes and yield non-empty
     56         # results.
     57         self.assertTrue(str(record), "str of the record should not be empty.")
     58         self.assertTrue(repr(record), "the record's repr shouldn't be empty.")
     59         self.assertTrue(record.json_str(), ("json str of the record should "
     60                          "not be empty."))
     61 
     62     """ Begin of Tests """
     63     def test_result_record_pass_none(self):
     64         record = records.TestResultRecord(self.tn)
     65         record.test_begin()
     66         record.test_pass()
     67         self.verify_record(record=record,
     68                            result=records.TestResultEnums.TEST_RESULT_PASS,
     69                            details=None,
     70                            extras=None)
     71 
     72     def test_result_record_pass_with_float_extra(self):
     73         record = records.TestResultRecord(self.tn)
     74         record.test_begin()
     75         s = signals.TestPass(self.details, self.float_extra)
     76         record.test_pass(s)
     77         self.verify_record(record=record,
     78                            result=records.TestResultEnums.TEST_RESULT_PASS,
     79                            details=self.details,
     80                            extras=self.float_extra)
     81 
     82     def test_result_record_pass_with_json_extra(self):
     83         record = records.TestResultRecord(self.tn)
     84         record.test_begin()
     85         s = signals.TestPass(self.details, self.json_extra)
     86         record.test_pass(s)
     87         self.verify_record(record=record,
     88                            result=records.TestResultEnums.TEST_RESULT_PASS,
     89                            details=self.details,
     90                            extras=self.json_extra)
     91 
     92     def test_result_record_fail_none(self):
     93         record = records.TestResultRecord(self.tn)
     94         record.test_begin()
     95         record.test_fail()
     96         self.verify_record(record=record,
     97                            result=records.TestResultEnums.TEST_RESULT_FAIL,
     98                            details=None,
     99                            extras=None)
    100 
    101     def test_result_record_fail_with_float_extra(self):
    102         record = records.TestResultRecord(self.tn)
    103         record.test_begin()
    104         s = signals.TestFailure(self.details, self.float_extra)
    105         record.test_fail(s)
    106         self.verify_record(record=record,
    107                            result=records.TestResultEnums.TEST_RESULT_FAIL,
    108                            details=self.details,
    109                            extras=self.float_extra)
    110 
    111     def test_result_record_fail_with_json_extra(self):
    112         record = records.TestResultRecord(self.tn)
    113         record.test_begin()
    114         s = signals.TestFailure(self.details, self.json_extra)
    115         record.test_fail(s)
    116         self.verify_record(record=record,
    117                            result=records.TestResultEnums.TEST_RESULT_FAIL,
    118                            details=self.details,
    119                            extras=self.json_extra)
    120 
    121     def test_result_record_skip_none(self):
    122         record = records.TestResultRecord(self.tn)
    123         record.test_begin()
    124         record.test_skip()
    125         self.verify_record(record=record,
    126                            result=records.TestResultEnums.TEST_RESULT_SKIP,
    127                            details=None,
    128                            extras=None)
    129 
    130     def test_result_record_skip_with_float_extra(self):
    131         record = records.TestResultRecord(self.tn)
    132         record.test_begin()
    133         s = signals.TestSkip(self.details, self.float_extra)
    134         record.test_skip(s)
    135         self.verify_record(record=record,
    136                            result=records.TestResultEnums.TEST_RESULT_SKIP,
    137                            details=self.details,
    138                            extras=self.float_extra)
    139 
    140     def test_result_record_skip_with_json_extra(self):
    141         record = records.TestResultRecord(self.tn)
    142         record.test_begin()
    143         s = signals.TestSkip(self.details, self.json_extra)
    144         record.test_skip(s)
    145         self.verify_record(record=record,
    146                            result=records.TestResultEnums.TEST_RESULT_SKIP,
    147                            details=self.details,
    148                            extras=self.json_extra)
    149 
    150 if __name__ == "__main__":
    151    unittest.main()