public void Accumulate_WithTwoEnumerations_AccumulatesOneIntoTheOther() { // arrange var containers = new[] { new KeyValuePair<int, List<string>>(0, new List<string>()), new KeyValuePair<int, List<string>>(1, new List<string>()), new KeyValuePair<int, List<string>>(2, new List<string>()), new KeyValuePair<int, List<string>>(3, new List<string>()) }; var items = new[] {new KeyValuePair<int, string>(1, "A"), new KeyValuePair<int, string>(1, "B"), new KeyValuePair<int, string>(3, "C")}; // act containers.Accumulate(items, container => container.Key, item => item.Key, (container, item) => container.Value.Add(item.Value)); // assert Assert.AreEqual(0, containers.First().Value.Count); var secondContainer = containers.ElementAt(1); Assert.AreEqual(2, secondContainer.Value.Count); Assert.AreEqual("A", secondContainer.Value[0]); Assert.AreEqual("B", secondContainer.Value[1]); Assert.AreEqual(0, containers.ElementAt(2).Value.Count); var fourthContainer = containers.ElementAt(3); Assert.AreEqual(1, fourthContainer.Value.Count); Assert.AreEqual("C", fourthContainer.Value[0]); }
public static Node BuildParametizedQuantifierNode(Token startToken, TreeBuilderState state) { var acceptedQuantifierTokenTypes = new[] { TokenType.Number, TokenType.ParametizedQuantifierRangeSeparator, TokenType.ParametizedQuantifierEnd }; var remainingQuantifierTokens = state.ProcessingState.Tokens .DequeueWhile(t => acceptedQuantifierTokenTypes.Contains(t.Type)); var quantifierTokens = new[] { startToken }.Concat(remainingQuantifierTokens); int? min; int? max; var quantifierTokenTypes = quantifierTokens.Select(t => t.Type); if (quantifierTokenTypes.SequenceEqual(new[] { TokenType.ParametizedQuantifierStart, TokenType.Number, TokenType.ParametizedQuantifierRangeSeparator, TokenType.Number, TokenType.ParametizedQuantifierEnd })) { min = int.Parse(quantifierTokens.ElementAt(1).Data); max = int.Parse(quantifierTokens.ElementAt(3).Data); } else if (quantifierTokenTypes.SequenceEqual(new[] { TokenType.ParametizedQuantifierStart, TokenType.ParametizedQuantifierRangeSeparator, TokenType.Number, TokenType.ParametizedQuantifierEnd })) { min = null; max = int.Parse(quantifierTokens.ElementAt(2).Data); } else if (quantifierTokenTypes.SequenceEqual(new[] { TokenType.ParametizedQuantifierStart, TokenType.Number, TokenType.ParametizedQuantifierRangeSeparator, TokenType.ParametizedQuantifierEnd })) { min = int.Parse(quantifierTokens.ElementAt(1).Data); max = null; } else if (quantifierTokenTypes.SequenceEqual(new[] { TokenType.ParametizedQuantifierStart, TokenType.Number, TokenType.ParametizedQuantifierEnd })) { min = int.Parse(quantifierTokens.ElementAt(1).Data); max = min; } else { return new LiteralNode( Token.GetData(quantifierTokens), startToken.StartIndex ); } return BuildQuantifierNode(quantifierTokens, state, min, max); }
public void should_get_nth_element_using_element_at() { var sequence = new[] { 1, 2, 3, 4, 5 }; int thirdElement = sequence.ElementAt(2); // please update variable value to fix the test. const int expectedThirdElement = 0; Assert.Equal(expectedThirdElement, thirdElement); }