Files
OpenColorIO/tests/python/BuiltinTransformTest.py
Mei ChuandPatrick Hodoul 99c5f40af4 Created a TransformsBaseTest module. (#1288)
* 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>
2021-02-17 14:50:47 -05:00

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)