public void Tokenize_InputWithArraySliceDefaultValues_ReturnsValidToken(string input, int?start, int?end, int?step) { ArrayElementsToken token = Tokenizer.Tokenize(input).Single().CastToArrayElementsToken(); Assert.Null(token.ExactElementsAccess); if (!start.HasValue) { Assert.False(token.SliceStart.HasValue); } else { Assert.Equal(start.Value, token.SliceStart); } if (!end.HasValue) { Assert.False(token.SliceEnd.HasValue); } else { Assert.Equal(end.Value, token.SliceEnd); } if (!step.HasValue) { Assert.False(token.SliceStep.HasValue); } else { Assert.Equal(step.Value, token.SliceStep); } }
#pragma warning restore IDE0060 // Remove unused parameter #pragma warning restore RCS1163 // Unused parameter. internal ArrayElementsExpression(ArrayElementsToken token) { SliceStart = token.SliceStart; SliceEnd = token.SliceEnd; SliceStep = token.SliceStep; Indexes = token.ExactElementsAccess; }
public void Tokenize_InputWithArrayAccessNegative_ReturnsValidToken() { string input = "$[-4]"; ArrayElementsToken token = Tokenizer.Tokenize(input).Last().CastToArrayElementsToken(); Assert.Single(token.ExactElementsAccess); Assert.Equal(-4, token.ExactElementsAccess.Single()); }
public ArrayAccessExpressionToken(FilterExpressionToken executedOn, ArrayElementsToken token) : this(executedOn, token as MultiCharToken) { if (token == null) { throw new ArgumentNullException(nameof(token)); } SliceStart = token.SliceStart; SliceEnd = token.SliceEnd; SliceStep = token.SliceStep; ExactElementsAccess = token.ExactElementsAccess; StartIndex = token.StartIndex; }
public void Tokenize_InputWithArrayAccess_ReturnsValidTokens() { string input = "$[4]"; IReadOnlyList <Token> tokens = Tokenizer.Tokenize(input); Assert.Equal(1, tokens.Count); Assert.IsType <ArrayElementsToken>(tokens[0]); ArrayElementsToken t = tokens.Last().CastToArrayElementsToken(); Assert.NotNull(t.ExactElementsAccess); Assert.Single(t.ExactElementsAccess); Assert.Equal(4, t.ExactElementsAccess[0]); }
public void Tokenize_InputWithArrayAccessMultipleExact_ReturnsValidTokens() { string input = "$[4,1,2]"; IReadOnlyList <Token> tokens = Tokenizer.Tokenize(input); Assert.Equal(1, tokens.Count); Assert.IsType <ArrayElementsToken>(tokens[0]); ArrayElementsToken t = tokens[0].CastToArrayElementsToken(); Assert.NotNull(t.ExactElementsAccess); Assert.Equal(3, t.ExactElementsAccess.Length); Assert.Equal(4, t.ExactElementsAccess[0]); Assert.Equal(1, t.ExactElementsAccess[1]); Assert.Equal(2, t.ExactElementsAccess[2]); }
public void Tokenize_InputWithArrayAccessSlice_ReturnsValidTokens() { string input = "$[-4:-2:9]"; IReadOnlyList <Token> tokens = Tokenizer.Tokenize(input); Assert.Equal(1, tokens.Count); Assert.IsType <ArrayElementsToken>(tokens[0]); ArrayElementsToken t = tokens[0].CastToArrayElementsToken(); Assert.Null(t.ExactElementsAccess); Assert.Equal(-4, t.SliceStart); Assert.Equal(-2, t.SliceEnd); Assert.Equal(9, t.SliceStep); input = "$[4:2:9]"; tokens = Tokenizer.Tokenize(input); Assert.Equal(1, tokens.Count); Assert.IsType <ArrayElementsToken>(tokens[0]); t = tokens[0].CastToArrayElementsToken(); Assert.Null(t.ExactElementsAccess); Assert.Equal(4, t.SliceStart); Assert.Equal(2, t.SliceEnd); Assert.Equal(9, t.SliceStep); input = "$[+4:+2:+9]"; tokens = Tokenizer.Tokenize(input); Assert.Equal(1, tokens.Count); Assert.IsType <ArrayElementsToken>(tokens[0]); t = tokens[0].CastToArrayElementsToken(); Assert.Null(t.ExactElementsAccess); Assert.Equal(4, t.SliceStart); Assert.Equal(2, t.SliceEnd); Assert.Equal(9, t.SliceStep); }