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])); }