public void TestPrefabGameObjectFactoryRegisterAndCreate()
        {
            // Create factory.
            var factory = new PrefabGameObjectFactory();

            // Generate keys.
            var key1 = Guid.NewGuid();
            var key2 = Guid.NewGuid();

            {
                // Create prefabs.
                var prefab1 = new GameObject("One");
                var prefab2 = new GameObject("Two");

                // Register prefabs.
                factory.Register(key1, prefab1);
                factory.Register(key2, prefab2);
            }

            var product1 = factory.Create(key1, Vector3.zero, Quaternion.identity);

            Assert.AreEqual("One(Clone)", product1.name);

            var product2 = factory.Create(key2, Vector3.zero, Quaternion.identity);

            Assert.AreEqual("Two(Clone)", product2.name);
        }
        public void TestPrefabGameObjectFactoryTryRegisterKeyEmpty()
        {
            // Create factory.
            var factory = new PrefabGameObjectFactory();

            try
            {
                factory.Register(Guid.Empty, new GameObject());

                Assert.IsFalse(true); // We should not reach this!
            }
            catch (Exception e)
            {
                Assert.AreEqual(e.Message, "Key cannot be Guid.Empty.");
            }
        }
        public void TestPrefabGameObjectFactoryTryRegisterNull()
        {
            // Create factory.
            var factory = new PrefabGameObjectFactory();

            try
            {
                factory.Register(Guid.NewGuid(), null);

                Assert.IsFalse(true); // We should not reach this!
            }
            catch (Exception e)
            {
                Assert.AreEqual(e.Message, "GameObject cannot be null.");
            }
        }
        public void TestPrefabGameObjectFactoryTryCreateNonRegistered()
        {
            // Create factory.
            var factory = new PrefabGameObjectFactory();

            var nonRegisteredKey = Guid.NewGuid();

            try
            {
                var product1 = factory.Create(nonRegisteredKey, Vector3.zero, Quaternion.identity);

                Assert.IsFalse(true); // We should not reach this!
            }
            catch (Exception e)
            {
                Assert.AreEqual(e.Message, "No prefab registered for key (" + nonRegisteredKey.ToString() + ").");
            }
        }