예제 #1
0
        public void AvailabilityWithNoProductionStops()
        {
            FactorCalculator calculator = new FactorCalculator(new LocalProduction(new TimeSpan(5, 30, 0), new ProductionStopRegistration[] {}));

            Assert.AreEqual<double>(1.0, calculator.Availability);
            Assert.AreEqual<TimeSpan>(new TimeSpan(5, 30, 0), calculator.Duration);
        }
예제 #2
0
        public void AllFailed()
        {
            FactorCalculator calculator = new FactorCalculator(new LocalProduction(100, 100));

            Assert.AreEqual<double>(0, calculator.Quality);
            Assert.AreEqual<TimeSpan>(new TimeSpan(0, 0, 0), calculator.Duration);
        }
예제 #3
0
        internal void IncreaseDynamicStatValue(EntityStatKind sk, EntityStat percIncrease, bool useCurrentValue = true)
        {
            var inc = FactorCalculator.CalcPercentageValue(Stats[sk].GetValueToCalcPercentage(useCurrentValue), percIncrease.Factor);

            //if (inc < 1)
            //  inc = 1;
            ChangeStatDynamicValue(sk, inc);
        }
예제 #4
0
        public float SumPercentageFactorAndValue(float value)
        {
            if (Unit != EntityStatUnit.Percentage)
            {
                throw new Exception("Unit != EntityStatUnit.Percentage " + this);
            }

            //float val = GetValueToCalcPercentage(useCurrentValue);
            return(FactorCalculator.AddFactor(value, this.Factor));
        }
예제 #5
0
        public float SumValueAndPercentageFactor(float factorPercentage, bool useCurrentValue)
        {
            if (Unit != EntityStatUnit.Absolute)
            {
                throw new Exception("Unit != EntityStatUnit.Absolute " + this);
            }

            float val = GetValueToCalcPercentage(useCurrentValue);

            return(FactorCalculator.AddFactor(val, factorPercentage));
        }
예제 #6
0
        public void AvailabilityWithMultiplePlannedAndUnplannedProductionStop()
        {
            FactorCalculator calculator = new FactorCalculator(new LocalProduction(new TimeSpan(10, 0, 0), new ProductionStopRegistration[]
            {
                new ProductionStopRegistration(new ProductionStop("Test 1"), new TimeSpan(0, 40, 0)),
                new ProductionStopRegistration(new ProductionStop("Test 2", true), new TimeSpan(0, 55, 0)),
                new ProductionStopRegistration(new ProductionStop("Test 3", false), new TimeSpan(1, 0, 0)),
                new ProductionStopRegistration(new ProductionStop("Test 4", true), new TimeSpan(0, 45, 0))
            }));

            Assert.AreEqual<double>(0.8, calculator.Availability);
            Assert.AreEqual<TimeSpan>(new TimeSpan(10, 0, 0), calculator.Duration);
        }
예제 #7
0
        protected static float CalcFightItemFactor(int level)
        {
            var fac = FactorCalculator.CalcFromLevel2(level + 1, 4) * 2.3f;

            return(fac);
        }
예제 #8
0
        public void AvailabilityWithProductionStopsTakingAllTheTime()
        {
            FactorCalculator calculator = new FactorCalculator(new LocalProduction(new TimeSpan(10, 0, 0), new ProductionStopRegistration[]
            {
                new ProductionStopRegistration(new ProductionStop("Test 1"), new TimeSpan(4, 30, 0)),
                new ProductionStopRegistration(new ProductionStop("Test 2", false), new TimeSpan(1, 0, 0)),
                new ProductionStopRegistration(new ProductionStop("Test 3", false), new TimeSpan(0, 30, 0)),
                new ProductionStopRegistration(new ProductionStop("Test 4", false), new TimeSpan(4, 0, 0))
            }));

            Assert.AreEqual<double>(0, calculator.Availability);
            Assert.AreEqual<TimeSpan>(new TimeSpan(10, 0, 0), calculator.Duration);
        }
예제 #9
0
        public void PerformanceWithSomeProducedAndAllStops()
        {
            FactorCalculator calculator = new FactorCalculator(new LocalProduction(new TimeSpan(5, 30, 0), new ProductionStopRegistration[]
            {
                new ProductionStopRegistration(new ProductionStop("Test 1"), new TimeSpan(1, 25, 0)),
                new ProductionStopRegistration(new ProductionStop("Test 2", true), new TimeSpan(1, 25, 0)),
                new ProductionStopRegistration(new ProductionStop("Test 3", false), new TimeSpan(1, 20, 0)),
                new ProductionStopRegistration(new ProductionStop("Test 4", true), new TimeSpan(1, 20, 0))
            }, 10, 10));

            Assert.AreEqual<double>(0, calculator.Performance);
            Assert.AreEqual<TimeSpan>(new TimeSpan(5, 30, 0), calculator.Duration);
        }
예제 #10
0
        public void PerformanceWithFullRateAndNoStops()
        {
            FactorCalculator calculator = new FactorCalculator(new LocalProduction(new TimeSpan(5, 30, 0), new ProductionStopRegistration[] { }, 3300, 10));

            Assert.AreEqual<double>(1.0, calculator.Performance);
            Assert.AreEqual<TimeSpan>(new TimeSpan(5, 30, 0), calculator.Duration);
        }
예제 #11
0
        public void OrdinaryQuaility()
        {
            FactorCalculator calculator = new FactorCalculator(new LocalProduction(100, 25));

            Assert.AreEqual<double>(0.75, calculator.Quality);
            Assert.AreEqual<TimeSpan>(new TimeSpan(0, 0, 0), calculator.Duration);
        }
예제 #12
0
        public void ComputeWeightedAverageOverFactorCalculators()
        {
            FactorCalculator calculator1 = new FactorCalculator(new LocalProduction(new TimeSpan(5, 0, 0), new ProductionStopRegistration[] { }));
            FactorCalculator calculator2 = new FactorCalculator(new LocalProduction(new TimeSpan(5, 0, 0), new ProductionStopRegistration[] { }));
            FactorCalculator calculator3 = new FactorCalculator(new LocalProduction(new TimeSpan(5, 0, 0), new ProductionStopRegistration[] { }));
            FactorCalculator calculator4 = new FactorCalculator(new LocalProduction(new TimeSpan(5, 0, 0), new ProductionStopRegistration[] { }));
            FactorCalculator calculator5 = new FactorCalculator(new LocalProduction(new TimeSpan(10, 0, 0), new ProductionStopRegistration[]
            {
                new ProductionStopRegistration(new ProductionStop("Test 1"), new TimeSpan(4, 30, 0)),
                new ProductionStopRegistration(new ProductionStop("Test 2", false), new TimeSpan(1, 0, 0)),
                new ProductionStopRegistration(new ProductionStop("Test 3", false), new TimeSpan(0, 30, 0)),
                new ProductionStopRegistration(new ProductionStop("Test 4", false), new TimeSpan(4, 0, 0))
            }));

            List<FactorCalculator> calculators = new List<FactorCalculator>(new []{ calculator1, calculator2, calculator3, calculator4});

            Assert.AreEqual<double>(1,
                                    FactorCalculator.ComputedWeightedAverage(calculators,
                                                                             p => p.Availability));

            calculators.Add(calculator5);
            Assert.AreEqual<double>(2.0/3.0,
                                    FactorCalculator.ComputedWeightedAverage(calculators,
                                                                             p => p.Availability));
        }
예제 #13
0
        public void AvailabilityWithSingleProductionStop()
        {
            FactorCalculator calculator = new FactorCalculator(new LocalProduction(new TimeSpan(5, 0, 0), new ProductionStopRegistration[]
            {
                new ProductionStopRegistration(new ProductionStop("Test"), new TimeSpan(1, 0, 0))
            }));

            Assert.AreEqual<double>(0.8, calculator.Availability);
            Assert.AreEqual<TimeSpan>(new TimeSpan(5, 0, 0), calculator.Duration);
        }
예제 #14
0
 private void DisplayFactors(FactorCalculator calculator1, FactorCalculator calculator2)
 {
     lblAvailabilityValue.Text = string.Format("{0} / {1}", Format(calculator1.Availability), Format(calculator2.Availability));
     lblPerformanceValue.Text = string.Format("{0} / {1}", Format(calculator1.Performance), Format(calculator2.Performance));
     lblQualityValue.Text = string.Format("{0} / {1}", Format(calculator1.Quality), Format(calculator2.Quality));
     lblOEEValue.Text = string.Format("{0} / {1}", Format(calculator1.OEE), Format(calculator2.OEE));
 }
예제 #15
0
 private float GetLevelValue(int level)
 {
     return(level == 0 ? 0 : FactorCalculator.CalcFromLevel2(level + 1) + 1);
 }
예제 #16
0
 public void Setup()
 {
     _calculator = new FactorCalculator();
 }
예제 #17
0
 public static int CalcHealthFromLevel(int lvl)
 {
     return(FactorCalculator.CalcFromLevel(lvl, baseHealth));
 }
예제 #18
0
        public void PerformanceWithFullRateAndSomeStops()
        {
            FactorCalculator calculator = new FactorCalculator(new LocalProduction(new TimeSpan(5, 30, 0), new ProductionStopRegistration[]
            {
                new ProductionStopRegistration(new ProductionStop("Test 1"), new TimeSpan(0, 30, 0)),
                new ProductionStopRegistration(new ProductionStop("Test 2", true), new TimeSpan(1, 0, 0)),
                new ProductionStopRegistration(new ProductionStop("Test 3", false), new TimeSpan(0, 15, 0)),
                new ProductionStopRegistration(new ProductionStop("Test 4", true), new TimeSpan(0, 5, 0))
            }, 2200, 10));

            Assert.AreEqual<double>(1, calculator.Performance);
            Assert.AreEqual<TimeSpan>(new TimeSpan(5, 30, 0), calculator.Duration);
        }