private void CoG_Defuzzify(IMembershipFunction memFunc, Double expectedResult)
        {
            //Arrange
            LinguisticVariable temp = new LinguisticVariable("v");

            temp.MembershipFunctions.Add(memFunc);
            memFunc.PremiseModifier = 1;

            var defuzz = new CoGDefuzzification();

            //Act
            var result = defuzz._Defuzzify(temp.MembershipFunctions.ToList());

            //Assert
            Assert.That(Math.Floor(result), Is.EqualTo(expectedResult));
        }
        public void CoG_Defuzzify()
        {
            //Arrange
            LinguisticVariable temp = new LinguisticVariable("Tempurature");
            var cold = temp.MembershipFunctions.AddTrapezoid("Cold", 0, 0, 30, 50);
            var warm = temp.MembershipFunctions.AddTriangle("Warm", 30, 50, 70);
            var hot  = temp.MembershipFunctions.AddTrapezoid("Hot", 70, 80, 90, 90);

            cold.PremiseModifier = 0.5;
            warm.PremiseModifier = 0.5;
            hot.PremiseModifier  = 0.5;
            var defuzz     = new CoGDefuzzification();
            var defuzzTrap = new TrapezoidCoGDefuzzification();

            //Act
            var resultIntg = defuzz._Defuzzify(temp.MembershipFunctions.ToList());
            var resultTrap = defuzz.Defuzzify(temp.MembershipFunctions.ToList());

            //Assert
            var expectedResult = 40;

            Assert.That(Math.Floor(resultIntg), Is.EqualTo(expectedResult));
            Assert.That(Math.Floor(resultTrap), Is.EqualTo(expectedResult));
        }