@@ -567,6 +567,38 @@ public void Reference()
567
567
// segments in the previous section.
568
568
Assert . That ( para3 . Reference ( v2seg4 , v2seg4 . BeginOffset + 1 ) . Text , Is . EqualTo ( "MAT 1:2" ) ) ;
569
569
}
570
+
571
+ /// <summary>
572
+ /// Test the ReferenceForSorting method for Scripture paragraphs.
573
+ /// </summary>
574
+ [ Test ]
575
+ public void ReferenceForSorting ( )
576
+ {
577
+ AddDataToMatthew ( ) ;
578
+ var para1 = ( IStTxtPara ) m_book . SectionsOS [ 1 ] . ContentOA . ParagraphsOS [ 0 ] ; // Actually ScrTxtPara
579
+ var seg = para1 . SegmentsOS [ 1 ] ; // first content ref, after the chapter and verse number stuff.
580
+ Assert . That ( para1 . ReferenceForSorting ( seg , seg . BeginOffset + 1 ) . Text , Is . EqualTo ( "41_MAT 0000000001:0000000001" ) ) ;
581
+ AddRunToMockedPara ( para1 , "Verse two second sentence." , null ) ;
582
+ var v2seg1 = para1 . SegmentsOS [ 3 ] ; // first segment of two-sentence verse
583
+ Assert . That ( para1 . ReferenceForSorting ( v2seg1 , v2seg1 . BeginOffset + 1 ) . Text , Is . EqualTo ( "41_MAT 0000000001:0000000002a" ) ) ;
584
+ var v2seg2 = para1 . SegmentsOS [ 4 ] ; // first segment of two-sentence verse
585
+ Assert . That ( para1 . ReferenceForSorting ( v2seg2 , v2seg2 . BeginOffset + 1 ) . Text , Is . EqualTo ( "41_MAT 0000000001:0000000002b" ) ) ;
586
+ IStTxtPara para2 = AddParaToMockedSectionContent ( ( IScrSection ) para1 . Owner . Owner , ScrStyleNames . NormalParagraph ) ;
587
+ AddRunToMockedPara ( para2 , "Verse 2 seg 3" , null ) ;
588
+ var v2seg3 = para2 . SegmentsOS [ 0 ] ; // third segment of three-sentence verse split over two paragraphs.
589
+ Assert . That ( para2 . ReferenceForSorting ( v2seg3 , v2seg3 . BeginOffset + 1 ) . Text , Is . EqualTo ( "41_MAT 0000000001:0000000002c" ) ) ;
590
+ var newSection = AddSectionToMockedBook ( m_book ) ;
591
+ IStTxtPara para3 = AddParaToMockedSectionContent ( newSection , ScrStyleNames . NormalParagraph ) ;
592
+ AddRunToMockedPara ( para3 , "Verse 2 seg 4" , null ) ;
593
+ var v2seg4 = para3 . SegmentsOS [ 0 ] ; // fourth segment of four-sentence verse split over two sections(!).
594
+ // JohnT: arguably this should give 41_MAT 0000000001:0000000002d. The current implementation does not detect the
595
+ // segments in the previous section.
596
+ Assert . That ( para3 . ReferenceForSorting ( v2seg4 , v2seg4 . BeginOffset + 1 ) . Text , Is . EqualTo ( "41_MAT 0000000001:0000000002" ) ) ;
597
+
598
+ var scrBook1Samuel = CreateBookData ( 9 , "1 Samuel" ) ;
599
+ var scrBookSusanna = CreateBookData ( 76 , "Susanna" ) ;
600
+ // TODO (Hasso) 2022.03: Enoch or some other >100 book
601
+ }
570
602
#endregion
571
603
572
604
#region Moving paragraphs between books tests
0 commit comments