public void Should_filter_events_by_exclude_tag_with_or() { var eventsInQueue = new Queue<GherkinEvent>(); eventsInQueue.Enqueue(new FeatureEvent(new Feature("title"), e => { })); eventsInQueue.Enqueue(new TagEvent("@tag1", e => { })); eventsInQueue.Enqueue(new ScenarioEvent(new Scenario("title", ""), e => { })); eventsInQueue.Enqueue(new StepEvent("step", e => { })); eventsInQueue.Enqueue(new TagEvent("@tag2", e => { })); eventsInQueue.Enqueue(new ScenarioEvent(new Scenario("title", ""), e => { })); eventsInQueue.Enqueue(new StepEvent("step", e => { })); eventsInQueue.Enqueue(new EofEvent(e => { })); var events = GroupEventsByTag.GroupByTag(eventsInQueue); var filter = new OrFilter(new[] { "~@tag1" }); var filteredEvents = filter.Filter(events).ToList(); Assert.AreEqual(4, filteredEvents.Count); Assert.IsFalse(filteredEvents.Any(_ => _.Tags.Any(t => t == "@tag1"))); }
public void Should_be_able_to_AND_two_filters() { var eventsInQueue = new Queue<GherkinEvent>(); eventsInQueue.Enqueue(new FeatureEvent(new Feature("feature title"), e => { })); eventsInQueue.Enqueue(new TagEvent("@tag1", e => { })); eventsInQueue.Enqueue(new ScenarioEvent(new Scenario("title t1", ""), e => { })); eventsInQueue.Enqueue(new StepEvent("step", e => { })); eventsInQueue.Enqueue(new StepEvent("step", e => { })); eventsInQueue.Enqueue(new TagEvent("@tag1", e => { })); eventsInQueue.Enqueue(new TagEvent("@tag2", e => { })); eventsInQueue.Enqueue(new ScenarioEvent(new Scenario("title t2", ""), e => { })); eventsInQueue.Enqueue(new StepEvent("step", e => { })); eventsInQueue.Enqueue(new EofEvent(e => { })); var events = GroupEventsByTag.GroupByTag(eventsInQueue); var filter1 = new OrFilter(new[] { "@tag1" }); var filter2 = new OrFilter(new[] { "@tag2" }); var filter = new AndFilter(filter1, filter2); var filteredEvents = filter.Filter(events).ToList(); Assert.AreEqual(4, filteredEvents.Count); var scenarioEvents = filteredEvents.Where(_ => _ is ScenarioEvent).ToList(); Assert.AreEqual(1, scenarioEvents.Count()); CollectionAssert.AreEqual(new[] { "@tag1", "@tag2" }, scenarioEvents[0].Tags); }
public void Should_or_multiple_tags() { var eventsInQueue = new Queue<GherkinEvent>(); eventsInQueue.Enqueue(new FeatureEvent(new Feature("title"), e => { })); eventsInQueue.Enqueue(new TagEvent("@tag1", e => { })); eventsInQueue.Enqueue(new ScenarioEvent(new Scenario("title", ""), e => { })); eventsInQueue.Enqueue(new StepEvent("step", e => { })); eventsInQueue.Enqueue(new TagEvent("@tag2", e => { })); eventsInQueue.Enqueue(new ScenarioEvent(new Scenario("title", ""), e => { })); eventsInQueue.Enqueue(new StepEvent("step", e => { })); eventsInQueue.Enqueue(new EofEvent(e => { })); var events = GroupEventsByTag.GroupByTag(eventsInQueue); var filter = new OrFilter(new[] { "@tag1", "@tag2" }); var filteredEvents = filter.Filter(events).ToList(); CollectionAssert.AreEqual(events, filteredEvents); }