public void ParseVariablesWithRepeatlyVariables() { var input = "x*x*y"; var result = new KeyCountCollection<string>(); var parser = new VariablesParser(); var multipliers = parser.GetVariables(input); result.AddRange(multipliers); Assert.IsTrue(result.Count() == 2); Assert.AreEqual(result.First(x => x.Key == "x").Value, 2); }
/// <summary> /// Обработка слогаемых /// </summary> /// <param name="summands">Слогаемые</param> /// <param name="result">Выходная коллекция</param> /// <param name="inverse">Инвертировать ли слогаемые?</param> private void ParseSummand(IEnumerable<string> summands, KeyCountCollection<KeyCountCollection<string>> result, bool inverse) { foreach (var summand in summands) { var coefficient = _coefficientParser.GetСoefficient(summand); if (inverse) { coefficient *= -1; } var variableCollection = new KeyCountCollection<string>(); variableCollection.AddRange(_variablesParser.GetVariables(summand)); result.Add(variableCollection, coefficient); } }