示例#1
0
        public void NoSpansOverlap()
        {
            var        result   = ParseSampleLesson();
            var        spans    = result.FlattenSpans();
            LessonSpan lastSpan = null;

            foreach (var span in spans)
            {
                if (lastSpan != null)
                {
                    var iAfterLast = lastSpan.Content.GetIndexAfter();

                    if (iAfterLast > span.Content.Index)
                    {
                        Assert.Fail("Spans overlap");
                    }
                }

                lastSpan = span;
            }
        }
示例#2
0
        private static void DecorateSpansWithSkippedText(LessonDocument document)
        {
            // Decorate the LessonSpans with skipped parts
            var spans = document.FlattenSpans();

            // Find gaps between the spans
            LessonSpan lastSpan = null;

            foreach (var span in spans)
            {
                var nextExpectedIndex = lastSpan != null?lastSpan.Content.GetIndexAfter() : 0;

                if (span.Content.Index > nextExpectedIndex)
                {
                    // Get skipped content
                    var skipLength  = span.Content.Index - nextExpectedIndex;
                    var skipContent = new StringWithIndex(document.Content.Source, nextExpectedIndex, skipLength);
                    span.SkippedPreText = skipContent;
                }
                else if (span.Content.Index == nextExpectedIndex)
                {
                    // Blank Skipped
                    span.SkippedPreText = new StringWithIndex(document.Content.Source, nextExpectedIndex, 0);
                }
                // TODO: move to testing
                else
                {
                    var lastSpanContent = lastSpan.Content;
                    var skipped         = span.SkippedPreText;
                    var spanContent     = span.Content;

                    throw new ArgumentException("The document is malformed and has overlapping spans");
                }


                lastSpan = span;
            }
        }