public IEnumerator TestDestroy()
        {
            AssembleInteractableButton(
                out Interactable interactable,
                out Transform translateTargetObject);

            // Put GGV focus on the Interactable button
            CameraCache.Main.transform.LookAt(interactable.transform.position);

            yield return(new WaitForSeconds(EaseDelay));

            var propBlock = InteractableThemeShaderUtils.GetPropertyBlock(translateTargetObject.gameObject);

            Assert.AreEqual(propBlock.GetColor("_Color"), FocusColor);

            // Destroy the interactable component
            GameObject.Destroy(interactable);

            // Remove focus
            CameraCache.Main.transform.LookAt(Vector3.zero);

            yield return(null);

            propBlock = InteractableThemeShaderUtils.GetPropertyBlock(translateTargetObject.gameObject);
            Assert.AreEqual(propBlock.GetColor("_Color"), FocusColor);
        }
        public IEnumerator TestDisabledStateThemes()
        {
            AssembleInteractableButton(
                out Interactable interactable,
                out Transform translateTargetObject);

            CameraCache.Main.transform.LookAt(interactable.transform.position);

            yield return(new WaitForSeconds(EaseDelay));

            var propBlock = InteractableThemeShaderUtils.GetPropertyBlock(translateTargetObject.gameObject);

            Assert.AreEqual(propBlock.GetColor("_Color"), FocusColor);

            interactable.IsEnabled = false;

            yield return(new WaitForSeconds(EaseDelay));

            propBlock = InteractableThemeShaderUtils.GetPropertyBlock(translateTargetObject.gameObject);
            Assert.AreEqual(propBlock.GetColor("_Color"), DisabledColor);
            Assert.False(interactable.IsEnabled);
            Assert.False(interactable.HasFocus);

            GameObject.Destroy(interactable.gameObject);
        }