• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
17import unittest
18
19from acts import records
20from acts import signals
21
22class 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
150if __name__ == "__main__":
151   unittest.main()