@@ -137,12 +137,27 @@ OCIO_ADD_TEST(ColorSpaceTransform, build_colorspace_ops)
137137 *cst, OCIO::TRANSFORM_DIR_FORWARD));
138138 OCIO_CHECK_NO_THROW (ops.validate ());
139139 OCIO_CHECK_EQUAL (ops.size (), 0 );
140+ ops.clear ();
141+
142+ OCIO::ConstProcessorRcPtr proc;
143+ config->setProcessorCacheFlags (OCIO::PROCESSOR_CACHE_OFF); // Cache disabled
144+ OCIO_CHECK_NO_THROW (proc = config->getProcessor (cst));
145+ OCIO_CHECK_EQUAL (proc->getNumTransforms (), 0 );
140146
141147 cst->setDataBypass (false );
142148 OCIO_CHECK_NO_THROW (OCIO::BuildColorSpaceOps (ops, *config, config->getCurrentContext (),
143149 *cst, OCIO::TRANSFORM_DIR_FORWARD));
144150 OCIO_CHECK_NO_THROW (ops.validate ());
145151 OCIO_CHECK_EQUAL (ops.size (), 4 );
152+ ops.clear ();
153+
154+ // Some of the ops are no-ops, processor has 2 transforms.
155+ OCIO_CHECK_NO_THROW (proc = config->getProcessor (cst));
156+ OCIO_CHECK_EQUAL (proc->getNumTransforms (), 2 );
157+
158+ // Similar test with color space, data by-pass can't be controlled.
159+ OCIO_CHECK_NO_THROW (proc = config->getProcessor (src.c_str (), dst.c_str ()));
160+ OCIO_CHECK_EQUAL (proc->getNumTransforms (), 0 );
146161
147162 // Restore default data flags.
148163 csSceneToRef->setIsData (false );
@@ -153,17 +168,28 @@ OCIO_ADD_TEST(ColorSpaceTransform, build_colorspace_ops)
153168 csSceneFromRef->setIsData (true );
154169 config->addColorSpace (csSceneFromRef);
155170
156- ops.clear ();
157171 OCIO_CHECK_NO_THROW (OCIO::BuildColorSpaceOps (ops, *config, config->getCurrentContext (),
158172 *cst, OCIO::TRANSFORM_DIR_FORWARD));
159173 OCIO_CHECK_NO_THROW (ops.validate ());
160174 OCIO_CHECK_EQUAL (ops.size (), 0 );
175+ ops.clear ();
176+
177+ OCIO_CHECK_NO_THROW (proc = config->getProcessor (cst));
178+ OCIO_CHECK_EQUAL (proc->getNumTransforms (), 0 );
161179
162180 cst->setDataBypass (false );
163181 OCIO_CHECK_NO_THROW (OCIO::BuildColorSpaceOps (ops, *config, config->getCurrentContext (),
164182 *cst, OCIO::TRANSFORM_DIR_FORWARD));
165183 OCIO_CHECK_NO_THROW (ops.validate ());
166184 OCIO_CHECK_EQUAL (ops.size (), 4 );
185+ ops.clear ();
186+
187+ OCIO_CHECK_NO_THROW (proc = config->getProcessor (cst));
188+ OCIO_CHECK_EQUAL (proc->getNumTransforms (), 2 );
189+
190+ // Similar test with color space, data bypass can't be controlled.
191+ OCIO_CHECK_NO_THROW (proc = config->getProcessor (src.c_str (), dst.c_str ()));
192+ OCIO_CHECK_EQUAL (proc->getNumTransforms (), 0 );
167193
168194 // Restore default data flags.
169195 csSceneFromRef->setIsData (false );
0 commit comments