public void ResetTest()
        {
            var parentObject = new GameObject("TestTransformMemory-ParentObject");
            var gameObject   = new GameObject("TestTransformMemory-GameObject");
            var transform    = gameObject.transform;

            transform.SetParent(parentObject.transform);
            transform.position   = new Vector3(1, 2, 3);
            transform.rotation   = Quaternion.Euler(1f, 2f, 3f);
            transform.localScale = new Vector3(4, 5, 6);

            var memory = TransformMemory.SaveAndReset(gameObject.transform);

            Assert.IsNull(transform.parent);
            Assert.AreEqual(Vector3.zero, gameObject.transform.position);
            Assert.AreEqual(Quaternion.identity, gameObject.transform.rotation);
            Assert.AreEqual(Vector3.one, gameObject.transform.localScale);
        }
        public void MemoryTest()
        {
            var       parentObject = new GameObject("TestTransformMemory-ParentObject");
            var       gameObject0  = new GameObject("TestTransformMemory-GameObject0");
            var       gameObject1  = new GameObject("TestTransformMemory-GameObject1");
            Transform transform0   = gameObject0.transform;
            Transform transform1   = gameObject1.transform;

            transform0.SetParent(parentObject.transform);
            transform0.position   = new Vector3(1, 2, 3);
            transform0.rotation   = Quaternion.Euler(1f, 2f, 3f);
            transform0.localScale = new Vector3(4, 5, 6);
            var memory = new TransformMemory(transform0);

            memory.Apply(transform1);

            Assert.AreEqual(transform0.parent, transform1.parent);
            Assert.AreEqual(transform0.position, transform1.position);
            Assert.AreEqual(transform0.rotation, transform1.rotation);
            Assert.AreEqual(transform0.localScale, transform1.localScale);
        }