# 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 its_session_utils.""" import unittest import unittest.mock import numpy import image_processing_utils import its_session_utils # intensity values of Y-plane array from ITS testing _EMPIRICAL_TABLET_OFF_BRIGHTNESS = 0.11 _PLACEHOLDER_SCENE = 'its_session_utils_unittest_scene' _TEST_IMG_W = 640 _TEST_IMG_H = 480 def _generate_test_image(brightness): """Creates a Y plane array with pixel values of brightness. Args: brightness: float between [0.0, 1.0] Returns: test_image: Y plane array with elements of value brightness. """ test_image = numpy.zeros((_TEST_IMG_W, _TEST_IMG_H, 1), dtype=float) test_image.fill(brightness) return test_image class ItsSessionUtilsTests(unittest.TestCase): """Run a suite of unit tests on this module.""" def setUp(self): super().setUp() self.test_image_zero = _generate_test_image(0.0) self.test_image_half = _generate_test_image(0.5) self.test_image_one = _generate_test_image(1.0) self.addCleanup(unittest.mock.patch.stopall) unittest.mock.patch.object( image_processing_utils, 'write_image', autospec=True).start() def test_validate_lighting_state_on_at_zero(self): with self.assertRaises(AssertionError): its_session_utils.validate_lighting( self.test_image_zero, _PLACEHOLDER_SCENE) def test_validate_lighting_state_on_at_half(self): its_session_utils.validate_lighting( self.test_image_half, _PLACEHOLDER_SCENE) def test_validate_lighting_state_on_at_one(self): its_session_utils.validate_lighting( self.test_image_one, _PLACEHOLDER_SCENE) def test_validate_lighting_state_off_at_zero(self): its_session_utils.validate_lighting( self.test_image_zero, _PLACEHOLDER_SCENE, state='OFF') def test_validate_lighting_state_off_at_half(self): with self.assertRaises(AssertionError): its_session_utils.validate_lighting( self.test_image_half, _PLACEHOLDER_SCENE, state='OFF') def test_validate_lighting_state_off_at_one(self): with self.assertRaises(AssertionError): its_session_utils.validate_lighting( self.test_image_one, _PLACEHOLDER_SCENE, state='OFF') def test_validate_lighting_state_off_tablet_off_handles_noise(self): test_image_tablet_off = _generate_test_image( _EMPIRICAL_TABLET_OFF_BRIGHTNESS) its_session_utils.validate_lighting(test_image_tablet_off, _PLACEHOLDER_SCENE, state='OFF', tablet_state='OFF') if __name__ == '__main__': unittest.main()