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