public void Segments_MissingMiddleSourceSegment_ReturnsSegments()
        {
            var sourceText = new MemoryText("text1", new[]
            {
                new TextSegment(new TextSegmentRef(1, 1), "source segment 1 1 .".Split()),
                new TextSegment(new TextSegmentRef(1, 3), "source segment 1 3 .".Split())
            });
            var targetText = new MemoryText("text1", new[]
            {
                new TextSegment(new TextSegmentRef(1, 1), "target segment 1 1 .".Split()),
                new TextSegment(new TextSegmentRef(1, 2), "target segment 1 2 .".Split()),
                new TextSegment(new TextSegmentRef(1, 3), "target segment 1 3 .".Split())
            });
            var alignments = new MemoryTextAlignmentCollection("text1", new[]
            {
                new TextAlignment(new TextSegmentRef(1, 1), new[] { new AlignedWordPair(0, 0) }),
                new TextAlignment(new TextSegmentRef(1, 3), new[] { new AlignedWordPair(2, 2) })
            });

            var parallelText = new ParallelText(sourceText, targetText, alignments);

            ParallelTextSegment[] segments = parallelText.Segments.ToArray();
            Assert.That(segments.Length, Is.EqualTo(2));
            Assert.That(segments[0].SourceSegment, Is.EqualTo("source segment 1 1 .".Split()));
            Assert.That(segments[0].TargetSegment, Is.EqualTo("target segment 1 1 .".Split()));
            Assert.That(segments[0].AlignedWordPairs, Is.EquivalentTo(new[] { new AlignedWordPair(0, 0) }));
            Assert.That(segments[1].SourceSegment, Is.EqualTo("source segment 1 3 .".Split()));
            Assert.That(segments[1].TargetSegment, Is.EqualTo("target segment 1 3 .".Split()));
            Assert.That(segments[1].AlignedWordPairs, Is.EquivalentTo(new[] { new AlignedWordPair(2, 2) }));
        }
        public void Segments_NoSegments_ReturnsEmpty()
        {
            var sourceText   = new MemoryText("text1", Enumerable.Empty <TextSegment>());
            var targetText   = new MemoryText("text1", Enumerable.Empty <TextSegment>());
            var parallelText = new ParallelText(sourceText, targetText);

            Assert.That(parallelText.Segments, Is.Empty);
        }
 public ParallelTextSegment(ParallelText text, object segRef, IReadOnlyList <string> sourceSegment,
                            IReadOnlyList <string> targetSegment, IEnumerable <AlignedWordPair> alignedWordPairs = null)
 {
     Text             = text;
     SegmentRef       = segRef;
     SourceSegment    = sourceSegment;
     TargetSegment    = targetSegment;
     AlignedWordPairs = alignedWordPairs?.ToArray();
 }