public void FactoryBotDefineBuildItemTest()
        {
            DefinedFactory <Item> definedItem = Factory.Define <Item>(new Dictionary <string, object>()
            {
                { "name", "test" },
                { "posX", 0.3f },
                { "posY", 0.1f },
                { "posZ", 0.2f },
                { "amount", 3 }
            });
            Item item = definedItem.Build();

            Assert.AreEqual(item.name, "test");
            Assert.AreEqual(item.posX, 0.3f);
            Assert.AreEqual(item.posY, 0.1f);
            Assert.AreEqual(item.posZ, 0.2f);
            Assert.AreEqual(item.amount, 3);

            Item overrideItem = definedItem.Build(new Dictionary <string, object>()
            {
                { "name", "testtest" },
                { "amount", 6 }
            });

            Assert.AreEqual(overrideItem.name, "testtest");
            Assert.AreEqual(overrideItem.posX, 0.3f);
            Assert.AreEqual(overrideItem.posY, 0.1f);
            Assert.AreEqual(overrideItem.posZ, 0.2f);
            Assert.AreEqual(overrideItem.amount, 6);
        }
        public void FactoryBotDefineBuildItemListTest()
        {
            DefinedFactory <Item> definedItem = Factory.Define <Item>(new Dictionary <string, object>()
            {
                { "name", "test" },
                { "posX", 0.3f },
                { "posY", 0.1f },
                { "posZ", 0.2f },
                { "amount", 3 }
            });
            List <Item> itemList = definedItem.BuildList();

            Assert.AreEqual(itemList.Count, 1);
            foreach (Item item in itemList)
            {
                Assert.AreEqual(item.name, "test");
                Assert.AreEqual(item.posX, 0.3f);
                Assert.AreEqual(item.posY, 0.1f);
                Assert.AreEqual(item.posZ, 0.2f);
                Assert.AreEqual(item.amount, 3);
            }

            List <Item> overrideOneItemList = definedItem.BuildList(new Dictionary <string, object>()
            {
                { "posX", 0.6f },
                { "posY", 0.6f },
                { "posZ", 0.6f },
            });

            Assert.AreEqual(overrideOneItemList.Count, 1);
            foreach (Item item in overrideOneItemList)
            {
                Assert.AreEqual(item.name, "test");
                Assert.AreEqual(item.posX, 0.6f);
                Assert.AreEqual(item.posY, 0.6f);
                Assert.AreEqual(item.posZ, 0.6f);
                Assert.AreEqual(item.amount, 3);
            }

            List <Item> overrideItemList = definedItem.BuildList(new Dictionary <string, object>()
            {
                { "name", "testtest" },
                { "amount", 6 }
            }, 5);

            Assert.AreEqual(overrideItemList.Count, 5);
            foreach (Item item in overrideItemList)
            {
                Assert.AreEqual(item.name, "testtest");
                Assert.AreEqual(item.posX, 0.3f);
                Assert.AreEqual(item.posY, 0.1f);
                Assert.AreEqual(item.posZ, 0.2f);
                Assert.AreEqual(item.amount, 6);
            }
        }