Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
#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;
        }
Esempio n. 3
0
        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());
        }
Esempio n. 4
0
        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;
        }
Esempio n. 5
0
        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]);
        }
Esempio n. 6
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]);
        }
Esempio n. 7
0
        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);
        }