/// <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); }
/// <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 }); }
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()); }
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()); }
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); }
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>"); }
public string GetUrl(int page) { QueryWrapper query = new QueryWrapper(this.HttpContext); return(query.SetValue("page", page.ToString())); }
/// <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);
/// <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)}.") }));
/// <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))); }