public static IList <IName> GetUniqueNamesFromEventArchive(string path)
 {
     return(new EventStreamFilter(e => e is CompletionEvent)
            .Filter(path)
            .Cast <CompletionEvent>()
            .Select(e => e.Context2.SST)
            .SelectMany(
                ctx =>
     {
         var nameSet = new KaVEHashSet <IName>();
         var scraper = new NameScrapingVisitor();
         scraper.Visit(ctx, nameSet);
         return nameSet;
     })
            .Distinct()
            .ToList());
 }
        public void GeneratesConcurrentEventForConcurrentEvents()
        {
            var concurrentEventList =
                GenerateEvents(ConcurrentEventHeuristic.EventTimeDifference.Ticks);

            var expectedEventSet = Sets.NewHashSet(
                new ConcurrentEvent
            {
                ConcurrentEventList = concurrentEventList.GetRange(0, concurrentEventList.Count - 1),
                Duration            = concurrentEventList.Last().TerminatedAt - concurrentEventList.First().TriggeredAt,
                TriggeredAt         = concurrentEventList.First().TriggeredAt
            }
                );

            IKaVESet <IDEEvent> resultEventSet = new KaVEHashSet <IDEEvent>();

            concurrentEventList.ForEach(ideEvent => resultEventSet = _uut.Map(ideEvent));

            CollectionAssert.AreEquivalent(expectedEventSet, resultEventSet);
        }
        private void MapEvent(IDEEvent originalEvent)
        {
            var resultingEventSet = new KaVEHashSet <IDEEvent>();
            var dropOriginalEvent = false;

            foreach (var intermediateEventSet in _mappers.Select(mapper => mapper.Map(originalEvent)))
            {
                if (IsDropOriginalEventSignal(intermediateEventSet, originalEvent))
                {
                    dropOriginalEvent = true;
                }
                resultingEventSet.UnionWith(intermediateEventSet);
            }

            if (dropOriginalEvent)
            {
                resultingEventSet.Remove(originalEvent);
            }

            InsertEventsToTargetEventCollection(resultingEventSet);
        }