示例#1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="T:System.Object"/> class.
        /// </summary>
        public AssertExtensionsTests()
        {
            var document =
                CQ.Create(@"<html><head></head><body><div id='testId' class='myClass'>Test</div><div class='anotherClass'>Tes</div><span class='class'>some contents</span><span class='class'>This has contents</span></body></html>");

            this.query =
                new QueryWrapper(document);
        }
示例#2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="T:System.Object"/> class.
        /// </summary>
        public AssertExtensionsTests()
        {
            var parser = new HtmlParser();

            var document =
                parser.Parse(@"<html><head></head><body><div id='testId' class='myClass' attribute1 attribute2='value2'>Test</div><div class='anotherClass'>Tes</div><span class='class'>some contents</span><span class='class'>This has contents</span></body></html>");

            this.query =
                new QueryWrapper(new[] { document.DocumentElement });
        }
示例#3
0
        public void Should_filter_selection_when_second_indexer_invoked()
        {
            // Given
            var document =
                this.parser.Parse(@"<html><head></head><body><table><tr><td></td><td></td></tr><tr><td></td><td></td></tr></table></body></html>");

            var wrapper = new QueryWrapper(new[] { document.DocumentElement });

            var row = wrapper["tr:first-child"];

            // When
            var cells = row["td"];

            // Then
            Assert.NotNull(cells);
            Assert.Equal(2, cells.Count());
        }
示例#4
0
        public void Should_filter_selection_when_second_indexer_invoked()
        {
            // Given
            var document =
                CQ.Create(
                    @"<html><head></head><body><table><tr><td></td><td></td></tr><tr><td></td><td></td></tr></body></html>");

            var wrapper = new QueryWrapper(document);

            var row = wrapper["tr:first"];

            // When
            var cells = row["td"];

            // Then
            Assert.NotNull(cells);
            Assert.Equal(2, cells.Count());
        }
示例#5
0
        public void Should_use_cq_find_when_indexer_invoked()
        {
            // Given
            var document =
                CQ.Create(@"<html><head></head><body><div id='testId' class='myClass'>Test</div></body></html>");

            var queryResult =
                document.Find("#testId").FirstOrDefault();

            var wrapper =
                new QueryWrapper(document);

            // When
            var result = (DomElement)wrapper["#testId"].FirstOrDefault();

            // Then
            Assert.NotNull(result);
            Assert.Same(queryResult, result);
        }
示例#6
0
        public void Should_use_cq_find_when_indexer_invoked()
        {
            // Given
            var document =
                this.parser.Parse(@"<html><head></head><body><div id='testId' class='myClass'>Test</div></body></html>");

            var queryResult =
                document.QuerySelectorAll("#testId").FirstOrDefault();

            var wrapper =
                new QueryWrapper(new[] { document.DocumentElement });

            // When
            var result = wrapper["#testId"].FirstOrDefault();

            // Then
            Assert.NotNull(result);
            Assert.Equal(queryResult.InnerHtml, result.InnerText);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="T:System.Object"/> class.
 /// </summary>
 public AssertExtensionsTests()
 {
     this.query =
         new SharpQuery(@"<html><head></head><body><div id='testId' class='myClass'>Test</div><div class='anotherClass'>Tes</div><span class='class'>some contents</span><span class='class'>This has contents</span></body></html>");
 }
示例#8
0
        public string GetUrl(int page)
        {
            QueryWrapper query = new QueryWrapper(this.HttpContext);

            return(query.SetValue("page", page.ToString()));
        }
示例#9
0
 /// <summary>
 /// Nested equivalent of <see cref="MultiQuery{T}"/>.
 /// </summary>
 public static QueryWrapper <T> Nested <T>(this QueryWrapper <T> wrapper, Func <QueryWrapper <T>, QueryWrapper <T> > query) where T : class
 => wrapper.AddQuery(q => query(new QueryWrapper <T>(q)).Container);
示例#10
0
        /// <summary>
        /// Adds <see cref="RangeQuery{T}"/> to query.
        /// Only <see cref="int"/>, <see cref="double"/> and <see cref="DateTime"/> are supported.
        /// </summary>
        /// <param name="wrapper">Query wrapper.</param>
        /// <param name="query">Query object.</param>
        /// <param name="path">Expression path to querying field.</param>
        public static QueryWrapper <T> Range <T, TField>(this QueryWrapper <T> wrapper, RangeQuery <TField> query, Expression <Func <T, object> > path) where T : class where TField : struct
        {
            if (query == null || !query.IsSpecified)
            {
                return(wrapper);
            }

            return(wrapper.AddQuery(descriptor => query switch
            {
                RangeQuery <DateTime> r => descriptor.DateRange(q =>
                {
                    q = q.Field(path);

                    if (r.Minimum != null)
                    {
                        q = r.Exclusive ? q.GreaterThan(r.Minimum.Value) : q.GreaterThanOrEquals(r.Minimum.Value);
                    }

                    if (r.Maximum != null)
                    {
                        q = r.Exclusive ? q.LessThan(r.Maximum.Value) : q.LessThanOrEquals(r.Maximum.Value);
                    }

                    return q;
                }),

                RangeQuery <int> r => descriptor.Range(q =>
                {
                    q = q.Field(path);

                    if (r.Minimum != null)
                    {
                        q = r.Exclusive ? q.GreaterThan(r.Minimum.Value) : q.GreaterThanOrEquals(r.Minimum.Value);
                    }

                    if (r.Maximum != null)
                    {
                        q = r.Exclusive ? q.LessThan(r.Maximum.Value) : q.LessThanOrEquals(r.Maximum.Value);
                    }

                    return q;
                }),

                RangeQuery <double> r => descriptor.Range(q =>
                {
                    q = q.Field(path);

                    if (r.Minimum != null)
                    {
                        q = r.Exclusive ? q.GreaterThan(r.Minimum.Value) : q.GreaterThanOrEquals(r.Minimum.Value);
                    }

                    if (r.Maximum != null)
                    {
                        q = r.Exclusive ? q.LessThan(r.Maximum.Value) : q.LessThanOrEquals(r.Maximum.Value);
                    }

                    return q;
                }),

                _ => throw new NotSupportedException($"Unsupported range query type {typeof(T)}.")
            }));
示例#11
0
 /// <summary>
 /// Returns a new query operation representing the concatenation of the current query sequence to
 /// the argument query sequence.
 ///
 /// For example
 ///   (A, B, C, D).Query().Concat((E, F, G, H))
 ///  would result in
 ///   (A, B, C, D, E, F, G, H)
 /// </summary>
 public QueryWrapper <QueryType, ConcatOp <QueryType, QueryOp, SourceBOp> > Concat <SourceBOp>(QueryWrapper <QueryType, SourceBOp> sourceB)
     where SourceBOp : IQueryOp <QueryType>
 {
     return(new QueryWrapper <QueryType, ConcatOp <QueryType, QueryOp, SourceBOp> >(new ConcatOp <QueryType, QueryOp, SourceBOp>(_op, sourceB._op)));
 }