* Adding CG and Studio config 2.3 Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com> * Changing the configs for the 2.1.0 ones. Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com> * Adding OCIO_DEPRECATED for getDefaultBuiltinConfigName Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com> --------- Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com> Co-authored-by: Doug Walker <doug.walker@autodesk.com>
180 lines
6.2 KiB
Python
180 lines
6.2 KiB
Python
# SPDX-License-Identifier: BSD-3-Clause
|
|
# Copyright Contributors to the OpenColorIO Project.
|
|
|
|
try:
|
|
from collections.abc import Iterable
|
|
except ImportError:
|
|
# Python 2
|
|
from collections import Iterable
|
|
|
|
from re import S
|
|
import unittest
|
|
from UnitTestUtils import STRING_TYPES
|
|
|
|
import PyOpenColorIO as OCIO
|
|
|
|
class BuiltinConfigRegistryTest(unittest.TestCase):
|
|
# BuiltinRegistry singleton.
|
|
REGISTRY = None
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
cls.REGISTRY = OCIO.BuiltinConfigRegistry()
|
|
|
|
def test_builtin_config_iterable(self):
|
|
all_names = []
|
|
for name in self.REGISTRY:
|
|
self.assertIsInstance(name, STRING_TYPES)
|
|
self.assertIsInstance(self.REGISTRY[name], STRING_TYPES)
|
|
all_names.append(name)
|
|
|
|
# All names were iterated over, and __len__ and list() behave.
|
|
self.assertEqual(len(all_names), len(self.REGISTRY))
|
|
self.assertListEqual(all_names, list(self.REGISTRY))
|
|
|
|
# Test iterator instance.
|
|
iterator = iter(self.REGISTRY)
|
|
self.assertIsInstance(iterator, Iterable)
|
|
|
|
# Iterator size is available.
|
|
self.assertEqual(len(iterator), len(self.REGISTRY))
|
|
|
|
# Iterator supports range-based loop and indexing.
|
|
values = list(iterator)
|
|
for i in range(len(iterator)):
|
|
# Item at index matches list result
|
|
self.assertEqual(iterator[i], values[i])
|
|
self.assertIsInstance(iterator[i], STRING_TYPES)
|
|
|
|
def test_contains(self):
|
|
# Valid __contains__ for all names.
|
|
for name in self.REGISTRY:
|
|
self.assertTrue(name in self.REGISTRY)
|
|
self.assertFalse(name not in self.REGISTRY)
|
|
|
|
# Invalid __contains__ for non-name.
|
|
self.assertTrue("I do not exist" not in self.REGISTRY)
|
|
|
|
def test_get_builtin_configs(self):
|
|
# tuple iterator (like dict.items())
|
|
for item in self.REGISTRY.getBuiltinConfigs():
|
|
self.assertIsInstance(item, tuple)
|
|
# check if there are three items per tuple.
|
|
self.assertEqual(len(item), 4)
|
|
# name
|
|
self.assertIsInstance(item[0], STRING_TYPES)
|
|
# uiname
|
|
self.assertIsInstance(item[1], STRING_TYPES)
|
|
# isRecommended
|
|
self.assertIsInstance(item[2], bool)
|
|
# isDefault
|
|
self.assertIsInstance(item[3], bool)
|
|
|
|
# tuple unpacking support.
|
|
for name, uiname, isRecommended, isDefault in self.REGISTRY.getBuiltinConfigs():
|
|
self.assertIsInstance(name, STRING_TYPES)
|
|
self.assertIsInstance(uiname, STRING_TYPES)
|
|
self.assertIsInstance(isRecommended, bool)
|
|
self.assertIsInstance(isDefault, bool)
|
|
|
|
# Test iterator instance.
|
|
iterator = self.REGISTRY.getBuiltinConfigs()
|
|
self.assertIsInstance(iterator, Iterable)
|
|
|
|
# Iterator size is available.
|
|
self.assertEqual(len(iterator), len(self.REGISTRY))
|
|
|
|
# Iterator supports range-based loop and indexing.
|
|
values = list(iterator)
|
|
for i in range(len(iterator)):
|
|
# Item at index matches list result
|
|
self.assertEqual(iterator[i], values[i])
|
|
self.assertIsInstance(iterator[i], tuple)
|
|
self.assertEqual(len(iterator[i]), 4)
|
|
# name
|
|
self.assertIsInstance(iterator[i][0], STRING_TYPES)
|
|
# uiname
|
|
self.assertIsInstance(iterator[i][1], STRING_TYPES)
|
|
# isRecommended
|
|
self.assertIsInstance(iterator[i][2], bool)
|
|
# isDefault
|
|
self.assertIsInstance(iterator[i][3], bool)
|
|
|
|
|
|
# Config specific tests
|
|
|
|
# Test number of configs.
|
|
self.assertEqual(len(self.REGISTRY), 4)
|
|
|
|
# Test for the default built-in config.
|
|
self.assertEqual(
|
|
self.REGISTRY.getDefaultBuiltinConfigName(),
|
|
"cg-config-v2.1.0_aces-v1.3_ocio-v2.3"
|
|
)
|
|
|
|
# Test the CG configs.
|
|
# Name
|
|
self.assertEqual(values[0][0], "cg-config-v1.0.0_aces-v1.3_ocio-v2.1")
|
|
# UI name
|
|
self.assertEqual(
|
|
values[0][1],
|
|
("Academy Color Encoding System - CG Config [COLORSPACES v1.0.0] [ACES v1.3] "
|
|
"[OCIO v2.1]"))
|
|
# isRecommended
|
|
self.assertEqual(values[0][2], False)
|
|
|
|
# Name
|
|
self.assertEqual(values[1][0], "cg-config-v2.1.0_aces-v1.3_ocio-v2.3")
|
|
# UI name
|
|
self.assertEqual(
|
|
values[1][1],
|
|
("Academy Color Encoding System - CG Config [COLORSPACES v2.0.0] [ACES v1.3] "
|
|
"[OCIO v2.3]"))
|
|
# isRecommended
|
|
self.assertEqual(values[1][2], True)
|
|
|
|
# Test the Studio configs
|
|
# Name
|
|
self.assertEqual(values[2][0], "studio-config-v1.0.0_aces-v1.3_ocio-v2.1")
|
|
# UI name
|
|
self.assertEqual(
|
|
values[2][1],
|
|
("Academy Color Encoding System - Studio Config [COLORSPACES v1.0.0] [ACES v1.3] "
|
|
"[OCIO v2.1]"))
|
|
# isRecommended
|
|
self.assertEqual(values[2][2], False)
|
|
|
|
# Name
|
|
self.assertEqual(values[3][0], "studio-config-v2.1.0_aces-v1.3_ocio-v2.3")
|
|
# UI name
|
|
self.assertEqual(
|
|
values[3][1],
|
|
("Academy Color Encoding System - Studio Config [COLORSPACES v2.0.0] [ACES v1.3] "
|
|
"[OCIO v2.3]"))
|
|
# isRecommended
|
|
self.assertEqual(values[1][2], True)
|
|
|
|
|
|
def test_multi_reference(self):
|
|
# Registry is a singleton. Make sure multiple Python
|
|
# instances can be held.
|
|
instances = []
|
|
for i in range(10):
|
|
instances.append(OCIO.BuiltinConfigRegistry())
|
|
|
|
# Other instances should still function after deleting one. The
|
|
# underlying C++ object is not deleted.
|
|
instance_0 = instances.pop(0)
|
|
self.assertEqual(len(instances), 9)
|
|
del instance_0
|
|
|
|
# Variable is no longer defined
|
|
with self.assertRaises(NameError):
|
|
len(instance_0)
|
|
|
|
# Test underlying C++ reference validity by accessing registry
|
|
# data for each instance.
|
|
for instance in instances:
|
|
self.assertGreaterEqual(len(instance), 1)
|
|
self.assertEqual(len(instance), len(self.REGISTRY))
|