* Created a TransformsBaseTest module. Moving some unit testing of Transforms module to a base class. Signed-off-by: Mei Chu <meimchu@gmail.com> * Updated four transforms tests to use TransformsBaseTest. - AllocationTransformTest - BuiltinTranformTest - CDLTransformTest - ColorSpaceTransformTest Updated to add a space at the end of TransformBaseTest per feedback. Signed-off-by: Mei Chu <meimchu@gmail.com> * Updated four transforms tests to use TransformsBaseTest. - DisplayViewTransformTest - ExponentTransformTest - ExponentWithLinearTransformTest - ExposureContrastTransformTest - FileTransformTest - FixedFunctionTransformTest - LogTransformTest - LookTransformTest Signed-off-by: Mei Chu <meimchu@gmail.com> * Address feedback https://github.com/AcademySoftwareFoundation/OpenColorIO/pull/1288#discussion_r565265034 Signed-off-by: Mei Chu <meimchu@gmail.com> * Updated a few transforms unit tests with TransformsBaseTest. Signed-off-by: Mei Chu <meimchu@gmail.com> * Updated to prioritize setUp methods first in individual python unit tests. Signed-off-by: Mei Chu <meimchu@gmail.com> Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
89 lines
3.3 KiB
Python
89 lines
3.3 KiB
Python
# SPDX-License-Identifier: BSD-3-Clause
|
|
# Copyright Contributors to the OpenColorIO Project.
|
|
|
|
import unittest
|
|
|
|
import PyOpenColorIO as OCIO
|
|
from TransformsBaseTest import TransformsBaseTest
|
|
|
|
|
|
class BuiltinTransformTest(unittest.TestCase, TransformsBaseTest):
|
|
# BuiltinTransformRegistry singleton
|
|
REGISTRY = None
|
|
|
|
# Default values
|
|
DEFAULT_STYLE = 'IDENTITY'
|
|
DEFAULT_DESC = ''
|
|
DEFAULT_STR = '<BuiltinTransform direction = forward, style = IDENTITY>'
|
|
|
|
# One reference style
|
|
EXAMPLE_STYLE = 'UTILITY - ACES-AP0_to_CIE-XYZ-D65_BFD'
|
|
EXAMPLE_DESC = (
|
|
'Convert ACES AP0 primaries to CIE XYZ with a D65 white point with '
|
|
'Bradford adaptation')
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
cls.REGISTRY = OCIO.BuiltinTransformRegistry()
|
|
|
|
def setUp(self):
|
|
self.tr = OCIO.BuiltinTransform()
|
|
|
|
def test_transform_type(self):
|
|
# TransformType is correct
|
|
self.assertEqual(self.tr.getTransformType(), OCIO.TRANSFORM_TYPE_BUILTIN)
|
|
|
|
def test_style(self):
|
|
# Default style is identity
|
|
self.assertEqual(self.tr.getStyle(), self.DEFAULT_STYLE)
|
|
self.assertEqual(self.tr.getDescription(), self.DEFAULT_DESC)
|
|
|
|
# Set/get all styles from registry
|
|
for style, desc in self.REGISTRY.getBuiltins():
|
|
self.tr.setStyle(style)
|
|
self.assertEqual(self.tr.getStyle(), style)
|
|
self.assertEqual(self.tr.getDescription(), desc)
|
|
self.assertIsNone(self.tr.validate()) # Does not raise
|
|
|
|
# Invalid style raises OCIO Exception
|
|
with self.assertRaises(OCIO.Exception):
|
|
self.tr.setStyle("invalid")
|
|
|
|
# Safe invalid type handling
|
|
for invalid in (None, 1, True):
|
|
with self.assertRaises(TypeError):
|
|
self.tr.setStyle(invalid)
|
|
|
|
def test_constructor_keyword(self):
|
|
# Keyword args in order
|
|
builtin_tr1 = OCIO.BuiltinTransform(style=self.EXAMPLE_STYLE,
|
|
direction=OCIO.TRANSFORM_DIR_FORWARD)
|
|
|
|
self.assertEqual(builtin_tr1.getStyle(), self.EXAMPLE_STYLE)
|
|
self.assertEqual(builtin_tr1.getDescription(), self.EXAMPLE_DESC)
|
|
self.assertEqual(builtin_tr1.getDirection(),
|
|
OCIO.TRANSFORM_DIR_FORWARD)
|
|
|
|
# Keyword args out of order
|
|
builtin_tr2 = OCIO.BuiltinTransform(direction=OCIO.TRANSFORM_DIR_FORWARD,
|
|
style=self.EXAMPLE_STYLE)
|
|
|
|
self.assertEqual(builtin_tr2.getStyle(), self.EXAMPLE_STYLE)
|
|
self.assertEqual(builtin_tr2.getDescription(), self.EXAMPLE_DESC)
|
|
self.assertEqual(builtin_tr2.getDirection(),
|
|
OCIO.TRANSFORM_DIR_FORWARD)
|
|
|
|
def test_constructor_positional(self):
|
|
# Positional args
|
|
builtin_tr = OCIO.BuiltinTransform(self.EXAMPLE_STYLE,
|
|
OCIO.TRANSFORM_DIR_FORWARD)
|
|
|
|
self.assertEqual(builtin_tr.getStyle(), self.EXAMPLE_STYLE)
|
|
self.assertEqual(builtin_tr.getDescription(), self.EXAMPLE_DESC)
|
|
self.assertEqual(builtin_tr.getDirection(),
|
|
OCIO.TRANSFORM_DIR_FORWARD)
|
|
|
|
def test_str(self):
|
|
# str() and print() result matches C++ << operator
|
|
self.assertEqual(str(self.tr), self.DEFAULT_STR)
|