public IEnumerator Working_TickUnit([Random(0.05f, 0.2f, 2)] float fTickUnit, [Random(1f, 3f, 2)] float fTotalDuration)
        {
            CBuffManager_Test pObjectTester = new GameObject(nameof(Working_TickUnit)).AddComponent <CBuffManager_Test>();
            CBuffManager <ETestBuffType, TestBuffBase> pBuffManager = new CBuffManager <ETestBuffType, TestBuffBase>();

            AddTickUnitCount pAddUnitCount = new AddTickUnitCount(fTickUnit);

            pBuffManager.DoAwake(pObjectTester, pAddUnitCount);
            Time.timeScale = 3f;

            pBuffManager.DoAddBuff(ETestBuffType.AddTickUnitCount, fTotalDuration, 1);
            AddTickUnitCount.ExecuteCount = 0;
            Assert.AreEqual(AddTickUnitCount.ExecuteCount, 0);

            float fElapseTime = 0f;

            while (fElapseTime < fTotalDuration)
            {
                pBuffManager.OnUpdate(1f);

                fElapseTime += Time.deltaTime;
                yield return(null);
            }

            int iCalculatedExecuteCount = Mathf.FloorToInt(fTotalDuration / fTickUnit);

            Debug.Log("ExecuteCount : " + AddTickUnitCount.ExecuteCount + " iCalculatedExecuteCount : " + iCalculatedExecuteCount);

            Assert.IsTrue(AddTickUnitCount.ExecuteCount == iCalculatedExecuteCount || AddTickUnitCount.ExecuteCount == iCalculatedExecuteCount + 1);
            Time.timeScale = 1f;
            yield break;
        }
        public IEnumerator HP_Buff_And_Debuff()
        {
            CBuffManager_Test pObjectTester = new GameObject(nameof(HP_Buff_And_Debuff)).AddComponent <CBuffManager_Test>();
            CBuffManager <ETestBuffType, TestBuffBase> pBuffManager = new CBuffManager <ETestBuffType, TestBuffBase>();

            HPContainer pHPContainer = new HPContainer(const_iInitHP);

            pBuffManager.DoAwake(pObjectTester, new Buff_AddHP(pHPContainer), new Debuff_DecreaseHP(pHPContainer));
            Time.timeScale = 3f;

            int iDecreasePower = Random.Range(1, 5);

            pBuffManager.DoAddBuff(ETestBuffType.Debuff_DecreaseHP, const_iInitHP, iDecreasePower);

            Assert.AreEqual(pHPContainer.iHP, const_iInitHP);

            float fElapseTime = 0f;

            while (pHPContainer.p_bIsAlive)
            {
                pBuffManager.OnUpdate(1f);

                fElapseTime += Time.deltaTime;
                yield return(null);
            }

            Assert.AreEqual(pHPContainer.iHP, 0);
            Assert.IsFalse(pBuffManager.p_mapBuffWorking.ContainsKey(ETestBuffType.Debuff_DecreaseHP));

            fElapseTime = 0f;
            int iRecoveryPower = Random.Range(1, 5);

            pBuffManager.DoAddBuff(ETestBuffType.Buff_AddHP, const_iInitHP, iRecoveryPower);
            while (pHPContainer.iHP != pHPContainer.iHP_MAX)
            {
                pBuffManager.OnUpdate(1f);

                fElapseTime += Time.deltaTime;
                yield return(null);
            }

            Assert.AreEqual(pHPContainer.iHP, pHPContainer.iHP_MAX);
            Assert.IsFalse(pBuffManager.p_mapBuffWorking.ContainsKey(ETestBuffType.Buff_AddHP));

            Time.timeScale = 1f;
            yield break;
        }