@@ -553,8 +553,55 @@ public void GlossOfNonInflVariantOfSense_SingleType()
553553 Assert . That ( variantGloss , Is . Not . Null ) ;
554554 Assert . That ( variantGloss . Text , Is . EqualTo ( "mainEntrySense2+dial. var. of" ) ) ;
555555 }
556- }
556+ }
557+
558+ /// <summary>
559+ /// Get sense/gloss for a variant of a variant (see LT-22315).
560+ /// </summary>
561+ [ Test ]
562+ public void GlossOfVariantOfVariant ( )
563+ {
564+ NonUndoableUnitOfWorkHelper . Do ( Cache . ActionHandlerAccessor , ( ) =>
565+ {
566+ ILexEntry newMainEntry = GetNewMainEntry ( ) ;
567+ newMainEntry . SensesOS . Add ( Cache . ServiceLocator . GetInstance < ILexSenseFactory > ( ) . Create ( ) ) ;
568+ newMainEntry . SensesOS [ 0 ] . Gloss . set_String ( Cache . DefaultAnalWs , "gloss" ) ;
569+
570+ ILexEntryType letDialectalVariantType = Cache . ServiceLocator . GetInstance < ILexEntryTypeRepository > ( ) . GetObject ( LexEntryTypeTags . kguidLexTypDialectalVar ) ;
571+ ILexEntryRef newLerDial ;
572+ SetupLexEntryVariant ( Cache , "vaDialVar" , newMainEntry , letDialectalVariantType , out newLerDial ) ;
573+ AddVariantOf ( newLerDial , newMainEntry , letDialectalVariantType ) ;
574+
575+ // Now create a contraction variant of the dialectal variant
576+ ILexEntryType letContractionVariantType = Cache . ServiceLocator . GetInstance < ILexEntryTypeRepository > ( ) . GetObject ( LexEntryTypeTags . kguidLexTypContraction ) ;
577+ ILexEntryRef newLerCont ;
578+ SetupLexEntryVariant ( Cache , "vaContractionVar" , newMainEntry , letContractionVariantType , out newLerCont ) ;
579+ ILexEntry varEntry = Cache . ServiceLocator . GetInstance < ILexEntryFactory > ( ) . Create ( ) ;
580+ AddVariantOf ( newLerCont , varEntry , letContractionVariantType ) ;
581+ } ) ;
582+
583+ var variant = Cache . ServiceLocator . GetInstance < ILexEntryRepository > ( ) . GetHomographs ( "vaDialVar" ) . FirstOrDefault ( ) ;
584+ var variantRefs = DomainObjectServices . GetVariantRefs ( variant ) ;
585+ Assert . That ( variantRefs . Count ( ) , Is . EqualTo ( 2 ) ) ;
586+ var variant2 = Cache . ServiceLocator . GetInstance < ILexEntryRepository > ( ) . GetHomographs ( "vaContractionVar" ) . FirstOrDefault ( ) ;
587+ var variant2Refs = DomainObjectServices . GetVariantRefs ( variant2 ) ;
588+ Assert . That ( variant2Refs . Count ( ) , Is . EqualTo ( 2 ) ) ;
589+ var analWs = Cache . ServiceLocator . WritingSystemManager . Get ( Cache . DefaultAnalWs ) ;
590+ {
591+ IMultiUnicode gloss1 ;
592+ GetMainVariantGloss ( variantRefs . ElementAt ( 0 ) , out gloss1 ) ;
557593
594+ var variantGloss = MorphServices . MakeGlossWithReverseAbbrs ( gloss1 , analWs , variantRefs . ElementAt ( 0 ) . VariantEntryTypesRS ) ;
595+ Assert . That ( variantGloss , Is . Not . Null ) ;
596+ Assert . That ( variantGloss . Text , Is . EqualTo ( "gloss+***" ) ) ;
597+
598+ GetMainVariantGloss ( variant2Refs . ElementAt ( 0 ) , out gloss1 ) ;
599+ variantGloss = MorphServices . MakeGlossWithReverseAbbrs ( gloss1 , analWs , variant2Refs . ElementAt ( 0 ) . VariantEntryTypesRS ) ;
600+ Assert . That ( variantGloss , Is . Not . Null ) ;
601+ Assert . That ( variantGloss . Text , Is . EqualTo ( "gloss+***" ) ) ;
602+ }
603+ }
604+
558605 /// <summary>
559606 /// TODO: If the variant itself has a glosss use it? (Ask Beth Bryson)
560607 /// TODO: What do we do if there is no sense, or no gloss? Use lexEntry form instead? (or just put the info on the LexEntry line?)
0 commit comments