public void ParseLinguisticVariable_ReturnsCorrectLinguisticVariableString_WithTwoVariables() { // Arrange var membershipFunction = "Cold:Trapezoidal:(0,20,20,30)|Hot:Trapezoidal(50,60,60,80)"; var linguisticVariable = $"[Water,NotWater]:Initial:[{membershipFunction}]"; var expectedMembershipFunctionStringsList = new List <MembershipFunctionStrings> { new MembershipFunctionStrings("Cold", "Trapezoidal", new List <double> { 0, 20, 20, 30 }), new MembershipFunctionStrings("Hot", "Trapezoidal", new List <double> { 50, 60, 60, 80 }) }; var firstExpectedLinguisticVariableStrings = new LinguisticVariableStrings("Water", "Initial", expectedMembershipFunctionStringsList); var secondExpectedLinguisticVariableStrings = new LinguisticVariableStrings("NotWater", "Initial", expectedMembershipFunctionStringsList); _membershipFunctionParserMock.Stub(x => x.ParseMembershipFunctions(membershipFunction)).Return(expectedMembershipFunctionStringsList); // Act var actualLinguisticVariableStringsList = _linguisticVariableParser.ParseLinguisticVariable(linguisticVariable); // Assert Assert.AreEqual(2, actualLinguisticVariableStringsList.Count); Assert.IsTrue(ObjectComparer.LinguisticVariableStringsAreEqual(firstExpectedLinguisticVariableStrings, actualLinguisticVariableStringsList[0])); Assert.IsTrue(ObjectComparer.LinguisticVariableStringsAreEqual(secondExpectedLinguisticVariableStrings, actualLinguisticVariableStringsList[1])); }
private LinguisticVariable CreateLinguisticVariableEntity(LinguisticVariableStrings linguisticVariableStrings) { var isInitial = linguisticVariableStrings.DataOrigin.ToEnum <DataOriginType>() == DataOriginType.Initial; var membershipFunctions = new MembershipFunctionList(); foreach (var membershipFunctionStrings in linguisticVariableStrings.MembershipFunctions) { var functionType = membershipFunctionStrings.MembershipFunctionType.ToEnum <MembershipFunctionType>(); var membershipFunction = _membershipFunctionCreator.CreateMembershipFunctionEntity( functionType, membershipFunctionStrings.MembershipFunctionName, membershipFunctionStrings.MembershipFunctionValues); membershipFunctions.Add(membershipFunction); } return(new LinguisticVariable(linguisticVariableStrings.VariableName, membershipFunctions, isInitial)); }
public void CreateLinguisticVariableEntity_ReturnsCorrectLinguisticVariable() { // Arrange List <double> firstFunctionValues = new List <double> { 0, 20, 20, 30 }; List <double> secondFunctionValues = new List <double> { 50, 60, 60, 80 }; List <MembershipFunctionStrings> membershipFunctionStringsList = new List <MembershipFunctionStrings> { new MembershipFunctionStrings("Cold", "Trapezoidal", firstFunctionValues), new MembershipFunctionStrings("Hot", "Trapezoidal", secondFunctionValues) }; string linguisticVariable = "Water:Initial:[Cold:Trapezoidal:(0,20,20,30)|Hot:Trapezoidal:(50,60,60,80)]"; var linguisticVariableStrings = new LinguisticVariableStrings("Water", "Initial", membershipFunctionStringsList); var linguisticVariableStringsList = new List <LinguisticVariableStrings> { linguisticVariableStrings }; _linguisticVariableParserMock.Expect(x => x.ParseLinguisticVariable(linguisticVariable)).Return(linguisticVariableStringsList); var firstMembershipFunction = new TrapezoidalMembershipFunction("Cold", 0, 20, 20, 30); var secondMembershipFunction = new TrapezoidalMembershipFunction("Hot", 50, 60, 60, 80); _membershipFunctionCreatorMock.Expect(x => x.CreateMembershipFunctionEntity(MembershipFunctionType.Trapezoidal, "Cold", firstFunctionValues)) .Return(firstMembershipFunction); _membershipFunctionCreatorMock.Expect(x => x.CreateMembershipFunctionEntity(MembershipFunctionType.Trapezoidal, "Hot", secondFunctionValues)) .Return(secondMembershipFunction); var expectedLinguisticVariable = new LinguisticVariable( "Water", new MembershipFunctionList { firstMembershipFunction, secondMembershipFunction }, true); // Act var actualLinguisticVariables = _linguisticVariableCreator.CreateLinguisticVariableEntities(linguisticVariable); // Assert Assert.AreEqual(1, actualLinguisticVariables.Count); Assert.IsTrue(ObjectComparer.LinguisticVariablesAreEqual(expectedLinguisticVariable, actualLinguisticVariables[0])); }
public static bool LinguisticVariableStringsAreEqual( LinguisticVariableStrings linguisticVariableStringsToCompare, LinguisticVariableStrings linguisticVariableStringsToCompareWith) { if (linguisticVariableStringsToCompare.MembershipFunctions.Count != linguisticVariableStringsToCompareWith.MembershipFunctions.Count) { return(false); } for (int i = 0; i < linguisticVariableStringsToCompare.MembershipFunctions.Count; i++) { if (!MembershipFunctionStringsAreEqual( linguisticVariableStringsToCompare.MembershipFunctions[i], linguisticVariableStringsToCompareWith.MembershipFunctions[i])) { return(false); } } return(linguisticVariableStringsToCompare.VariableName == linguisticVariableStringsToCompareWith.VariableName && linguisticVariableStringsToCompare.DataOrigin == linguisticVariableStringsToCompareWith.DataOrigin); }
public void SetUp() { _linguisticVariableStrings = new LinguisticVariableStrings(VariableName, DataOrigin, _membershipFunctions); }