| # Copyright 2023 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| """Tests for capture_request_utils.""" |
| |
| |
| import math |
| import unittest |
| |
| import capture_request_utils |
| |
| |
| class CaptureRequestUtilsTest(unittest.TestCase): |
| """Unit tests for this module. |
| |
| Ensures rational number conversion dicts are created properly. |
| """ |
| _FLOAT_HALF = 0.5 |
| # No immutable container: frozendict requires package install on partner host |
| _RATIONAL_HALF = {'numerator': 32, 'denominator': 64} |
| |
| def test_float_to_rational(self): |
| """Unit test for float_to_rational.""" |
| self.assertEqual( |
| capture_request_utils.float_to_rational(self._FLOAT_HALF, 64), |
| self._RATIONAL_HALF) |
| |
| def test_rational_to_float(self): |
| """Unit test for rational_to_float.""" |
| self.assertTrue( |
| math.isclose(capture_request_utils.rational_to_float( |
| self._RATIONAL_HALF), self._FLOAT_HALF, abs_tol=0.0001)) |
| |
| def test_int_to_rational(self): |
| """Unit test for int_to_rational.""" |
| rational_10 = {'numerator': 10, 'denominator': 1} |
| rational_1 = {'numerator': 1, 'denominator': 1} |
| rational_2 = {'numerator': 2, 'denominator': 1} |
| # Simple test |
| self.assertEqual(capture_request_utils.int_to_rational(10), rational_10) |
| # Handle list entries |
| self.assertEqual( |
| capture_request_utils.int_to_rational([1, 2]), |
| [rational_1, rational_2]) |
| |
| if __name__ == '__main__': |
| unittest.main() |