blob: 06ba5c5d3d7453d1deb4378636dedf4564dce26d [file]
# 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()