1414using Newtonsoft . Json ;
1515using NUnit . Framework ;
1616using SIL . LCModel ;
17+ using SIL . LCModel . Core . KernelInterfaces ;
1718using SIL . LCModel . Core . Text ;
1819using SIL . LCModel . Core . WritingSystems ;
1920using SIL . FieldWorks . Common . RenderVerification ;
@@ -35,9 +36,23 @@ namespace SIL.FieldWorks.Common.Framework.DetailControls
3536 [ TestFixture ]
3637 public class DataTreeRenderTests : MemoryOnlyBackendProviderRestoredForEachTestTestBase
3738 {
39+ private const string DeterministicRenderFontFamily = "Segoe UI" ;
3840 private const int MaxAllowedPixelDifferences = 4 ;
3941 private ILexEntry m_entry ;
4042
43+ private static ITsString MakeRenderString ( string value , int writingSystemHandle )
44+ {
45+ var propsBuilder = TsStringUtils . MakePropsBldr ( ) ;
46+ propsBuilder . SetIntPropValues ( ( int ) FwTextPropType . ktptWs ,
47+ ( int ) FwTextPropVar . ktpvDefault , writingSystemHandle ) ;
48+ propsBuilder . SetStrPropValue ( ( int ) FwTextPropType . ktptFontFamily ,
49+ DeterministicRenderFontFamily ) ;
50+
51+ var stringBuilder = TsStringUtils . MakeStrBldr ( ) ;
52+ stringBuilder . Replace ( 0 , 0 , value , propsBuilder . GetTextProps ( ) ) ;
53+ return stringBuilder . GetString ( ) ;
54+ }
55+
4156 #region Scenario Data Creation
4257
4358 /// <summary>
@@ -52,10 +67,10 @@ private void CreateSimpleEntry()
5267 var morphFactory = Cache . ServiceLocator . GetInstance < IMoStemAllomorphFactory > ( ) ;
5368 var morph = morphFactory . Create ( ) ;
5469 m_entry . LexemeFormOA = morph ;
55- morph . Form . VernacularDefaultWritingSystem = TsStringUtils . MakeString (
70+ morph . Form . VernacularDefaultWritingSystem = MakeRenderString (
5671 $ "LexemeForm - { testName } ", Cache . DefaultVernWs ) ;
5772
58- m_entry . CitationForm . VernacularDefaultWritingSystem = TsStringUtils . MakeString (
73+ m_entry . CitationForm . VernacularDefaultWritingSystem = MakeRenderString (
5974 $ "CitationForm - { testName } ", Cache . DefaultVernWs ) ;
6075
6176 // Add 3 senses with predictable text
@@ -83,10 +98,10 @@ private void CreateDeepEntry()
8398 var morphFactory = Cache . ServiceLocator . GetInstance < IMoStemAllomorphFactory > ( ) ;
8499 var morph = morphFactory . Create ( ) ;
85100 m_entry . LexemeFormOA = morph ;
86- morph . Form . VernacularDefaultWritingSystem = TsStringUtils . MakeString (
101+ morph . Form . VernacularDefaultWritingSystem = MakeRenderString (
87102 $ "LexemeForm - { testName } ", Cache . DefaultVernWs ) ;
88103
89- m_entry . CitationForm . VernacularDefaultWritingSystem = TsStringUtils . MakeString (
104+ m_entry . CitationForm . VernacularDefaultWritingSystem = MakeRenderString (
90105 $ "CitationForm - { testName } ", Cache . DefaultVernWs ) ;
91106
92107 var senseFactory = Cache . ServiceLocator . GetInstance < ILexSenseFactory > ( ) ;
@@ -108,10 +123,10 @@ private void CreateSubSubSubEntry()
108123 var morphFactory = Cache . ServiceLocator . GetInstance < IMoStemAllomorphFactory > ( ) ;
109124 var morph = morphFactory . Create ( ) ;
110125 m_entry . LexemeFormOA = morph ;
111- morph . Form . VernacularDefaultWritingSystem = TsStringUtils . MakeString (
126+ morph . Form . VernacularDefaultWritingSystem = MakeRenderString (
112127 $ "LexemeForm - { testName } ", Cache . DefaultVernWs ) ;
113128
114- m_entry . CitationForm . VernacularDefaultWritingSystem = TsStringUtils . MakeString (
129+ m_entry . CitationForm . VernacularDefaultWritingSystem = MakeRenderString (
115130 $ "CitationForm - { testName } ", Cache . DefaultVernWs ) ;
116131
117132 var senseFactory = Cache . ServiceLocator . GetInstance < ILexSenseFactory > ( ) ;
@@ -132,10 +147,10 @@ private void CreateExtremeEntry()
132147 var morphFactory = Cache . ServiceLocator . GetInstance < IMoStemAllomorphFactory > ( ) ;
133148 var morph = morphFactory . Create ( ) ;
134149 m_entry . LexemeFormOA = morph ;
135- morph . Form . VernacularDefaultWritingSystem = TsStringUtils . MakeString (
150+ morph . Form . VernacularDefaultWritingSystem = MakeRenderString (
136151 $ "LexemeForm - { testName } ", Cache . DefaultVernWs ) ;
137152
138- m_entry . CitationForm . VernacularDefaultWritingSystem = TsStringUtils . MakeString (
153+ m_entry . CitationForm . VernacularDefaultWritingSystem = MakeRenderString (
139154 $ "CitationForm - { testName } ", Cache . DefaultVernWs ) ;
140155
141156 var senseFactory = Cache . ServiceLocator . GetInstance < ILexSenseFactory > ( ) ;
@@ -173,11 +188,11 @@ private void CreateNestedSenses(ICmObject owner, ILexSenseFactory senseFactory,
173188 /// </summary>
174189 private void FillSenseFields ( ILexSense sense , string senseNum , string testName )
175190 {
176- sense . Gloss . AnalysisDefaultWritingSystem = TsStringUtils . MakeString (
191+ sense . Gloss . AnalysisDefaultWritingSystem = MakeRenderString (
177192 $ "Gloss - { testName } sense { senseNum } ", Cache . DefaultAnalWs ) ;
178- sense . Definition . AnalysisDefaultWritingSystem = TsStringUtils . MakeString (
193+ sense . Definition . AnalysisDefaultWritingSystem = MakeRenderString (
179194 $ "Definition - { testName } sense { senseNum } ", Cache . DefaultAnalWs ) ;
180- sense . ScientificName = TsStringUtils . MakeString (
195+ sense . ScientificName = MakeRenderString (
181196 $ "ScientificName - { testName } sense { senseNum } ", Cache . DefaultAnalWs ) ;
182197 }
183198
@@ -195,19 +210,19 @@ private void EnrichEntry(ILexEntry entry, string testName)
195210 var pronFactory = Cache . ServiceLocator . GetInstance < ILexPronunciationFactory > ( ) ;
196211 var pronunciation = pronFactory . Create ( ) ;
197212 entry . PronunciationsOS . Add ( pronunciation ) ;
198- pronunciation . Form . VernacularDefaultWritingSystem = TsStringUtils . MakeString (
213+ pronunciation . Form . VernacularDefaultWritingSystem = MakeRenderString (
199214 $ "Pronunciation - { testName } ", Cache . DefaultVernWs ) ;
200215
201216 // MultiString ifdata fields
202- entry . LiteralMeaning . AnalysisDefaultWritingSystem = TsStringUtils . MakeString (
217+ entry . LiteralMeaning . AnalysisDefaultWritingSystem = MakeRenderString (
203218 $ "LiteralMeaning - { testName } ", Cache . DefaultAnalWs ) ;
204- entry . Bibliography . AnalysisDefaultWritingSystem = TsStringUtils . MakeString (
219+ entry . Bibliography . AnalysisDefaultWritingSystem = MakeRenderString (
205220 $ "Bibliography - { testName } ", Cache . DefaultAnalWs ) ;
206- entry . Restrictions . AnalysisDefaultWritingSystem = TsStringUtils . MakeString (
221+ entry . Restrictions . AnalysisDefaultWritingSystem = MakeRenderString (
207222 $ "Restrictions - { testName } ", Cache . DefaultAnalWs ) ;
208- entry . SummaryDefinition . AnalysisDefaultWritingSystem = TsStringUtils . MakeString (
223+ entry . SummaryDefinition . AnalysisDefaultWritingSystem = MakeRenderString (
209224 $ "SummaryDefinition - { testName } ", Cache . DefaultAnalWs ) ;
210- entry . Comment . AnalysisDefaultWritingSystem = TsStringUtils . MakeString (
225+ entry . Comment . AnalysisDefaultWritingSystem = MakeRenderString (
211226 $ "Comment - { testName } ", Cache . DefaultAnalWs ) ;
212227 }
213228
@@ -223,10 +238,10 @@ private void CreateCollapsedEntry()
223238 var morphFactory = Cache . ServiceLocator . GetInstance < IMoStemAllomorphFactory > ( ) ;
224239 var morph = morphFactory . Create ( ) ;
225240 m_entry . LexemeFormOA = morph ;
226- morph . Form . VernacularDefaultWritingSystem = TsStringUtils . MakeString (
241+ morph . Form . VernacularDefaultWritingSystem = MakeRenderString (
227242 $ "LexemeForm - { testName } ", Cache . DefaultVernWs ) ;
228243
229- m_entry . CitationForm . VernacularDefaultWritingSystem = TsStringUtils . MakeString (
244+ m_entry . CitationForm . VernacularDefaultWritingSystem = MakeRenderString (
230245 $ "CitationForm - { testName } ", Cache . DefaultVernWs ) ;
231246
232247 // Single sense — minimal entry, no enrichment
@@ -249,10 +264,10 @@ private void CreateExpandedEntry()
249264 var morphFactory = Cache . ServiceLocator . GetInstance < IMoStemAllomorphFactory > ( ) ;
250265 var morph = morphFactory . Create ( ) ;
251266 m_entry . LexemeFormOA = morph ;
252- morph . Form . VernacularDefaultWritingSystem = TsStringUtils . MakeString (
267+ morph . Form . VernacularDefaultWritingSystem = MakeRenderString (
253268 $ "LexemeForm - { testName } ", Cache . DefaultVernWs ) ;
254269
255- m_entry . CitationForm . VernacularDefaultWritingSystem = TsStringUtils . MakeString (
270+ m_entry . CitationForm . VernacularDefaultWritingSystem = MakeRenderString (
256271 $ "CitationForm - { testName } ", Cache . DefaultVernWs ) ;
257272
258273 // Multiple senses with all fields
@@ -271,7 +286,7 @@ private void CreateExpandedEntry()
271286 var pronFactory = Cache . ServiceLocator . GetInstance < ILexPronunciationFactory > ( ) ;
272287 var pron2 = pronFactory . Create ( ) ;
273288 m_entry . PronunciationsOS . Add ( pron2 ) ;
274- pron2 . Form . VernacularDefaultWritingSystem = TsStringUtils . MakeString (
289+ pron2 . Form . VernacularDefaultWritingSystem = MakeRenderString (
275290 $ "Pronunciation2 - { testName } ", Cache . DefaultVernWs ) ;
276291 }
277292
@@ -289,10 +304,10 @@ private void CreateMultiWsEntry()
289304 var morph = morphFactory . Create ( ) ;
290305 m_entry . LexemeFormOA = morph ;
291306
292- morph . Form . VernacularDefaultWritingSystem = TsStringUtils . MakeString (
307+ morph . Form . VernacularDefaultWritingSystem = MakeRenderString (
293308 $ "LexemeForm - { testName } ", Cache . DefaultVernWs ) ;
294309
295- m_entry . CitationForm . VernacularDefaultWritingSystem = TsStringUtils . MakeString (
310+ m_entry . CitationForm . VernacularDefaultWritingSystem = MakeRenderString (
296311 $ "CitationForm - { testName } ", Cache . DefaultVernWs ) ;
297312
298313 int analWs = Cache . DefaultAnalWs ;
@@ -318,44 +333,44 @@ private void CreateMultiWsEntry()
318333 {
319334 var sense = senseFactory . Create ( ) ;
320335 m_entry . SensesOS . Add ( sense ) ;
321- sense . Gloss . set_String ( analWs , TsStringUtils . MakeString (
336+ sense . Gloss . set_String ( analWs , MakeRenderString (
322337 $ "Gloss - { testName } sense { i } (en)", analWs ) ) ;
323338 if ( frWs != analWs )
324339 {
325- sense . Gloss . set_String ( frWs , TsStringUtils . MakeString (
340+ sense . Gloss . set_String ( frWs , MakeRenderString (
326341 $ "Gloss - { testName } sens { i } (fr)", frWs ) ) ;
327342 }
328- sense . Definition . set_String ( analWs , TsStringUtils . MakeString (
343+ sense . Definition . set_String ( analWs , MakeRenderString (
329344 $ "Definition - { testName } sense { i } (en)", analWs ) ) ;
330345 if ( frWs != analWs )
331346 {
332- sense . Definition . set_String ( frWs , TsStringUtils . MakeString (
347+ sense . Definition . set_String ( frWs , MakeRenderString (
333348 $ "Definition - { testName } sens { i } (fr)", frWs ) ) ;
334349 }
335350 }
336351
337352 // Multi-WS entry-level fields
338- m_entry . LiteralMeaning . set_String ( analWs , TsStringUtils . MakeString (
353+ m_entry . LiteralMeaning . set_String ( analWs , MakeRenderString (
339354 $ "LiteralMeaning - { testName } (en)", analWs ) ) ;
340355 if ( frWs != analWs )
341356 {
342- m_entry . LiteralMeaning . set_String ( frWs , TsStringUtils . MakeString (
357+ m_entry . LiteralMeaning . set_String ( frWs , MakeRenderString (
343358 $ "LiteralMeaning - { testName } (fr)", frWs ) ) ;
344359 }
345360
346- m_entry . SummaryDefinition . set_String ( analWs , TsStringUtils . MakeString (
361+ m_entry . SummaryDefinition . set_String ( analWs , MakeRenderString (
347362 $ "SummaryDefinition - { testName } (en)", analWs ) ) ;
348363 if ( frWs != analWs )
349364 {
350- m_entry . SummaryDefinition . set_String ( frWs , TsStringUtils . MakeString (
365+ m_entry . SummaryDefinition . set_String ( frWs , MakeRenderString (
351366 $ "SummaryDefinition - { testName } (fr)", frWs ) ) ;
352367 }
353368
354369 // Pronunciation
355370 var pronFactory = Cache . ServiceLocator . GetInstance < ILexPronunciationFactory > ( ) ;
356371 var pronunciation = pronFactory . Create ( ) ;
357372 m_entry . PronunciationsOS . Add ( pronunciation ) ;
358- pronunciation . Form . VernacularDefaultWritingSystem = TsStringUtils . MakeString (
373+ pronunciation . Form . VernacularDefaultWritingSystem = MakeRenderString (
359374 $ "Pronunciation - { testName } ", Cache . DefaultVernWs ) ;
360375 }
361376
@@ -797,7 +812,7 @@ public void DataTreeTiming(int depth, int breadth, string label)
797812 var morphFactory = Cache . ServiceLocator . GetInstance < IMoStemAllomorphFactory > ( ) ;
798813 var morph = morphFactory . Create ( ) ;
799814 m_entry . LexemeFormOA = morph ;
800- morph . Form . VernacularDefaultWritingSystem = TsStringUtils . MakeString (
815+ morph . Form . VernacularDefaultWritingSystem = MakeRenderString (
801816 $ "LexemeForm - timing-{ label } ", Cache . DefaultVernWs ) ;
802817
803818 var senseFactory = Cache . ServiceLocator . GetInstance < ILexSenseFactory > ( ) ;
@@ -1591,7 +1606,7 @@ private int RunTimingScenarioAndGetSliceCount(int depth, int breadth, string lab
15911606 var morphFactory = Cache . ServiceLocator . GetInstance < IMoStemAllomorphFactory > ( ) ;
15921607 var morph = morphFactory . Create ( ) ;
15931608 m_entry . LexemeFormOA = morph ;
1594- morph . Form . VernacularDefaultWritingSystem = TsStringUtils . MakeString (
1609+ morph . Form . VernacularDefaultWritingSystem = MakeRenderString (
15951610 $ "LexemeForm - timing-{ label } ", Cache . DefaultVernWs ) ;
15961611
15971612 var senseFactory = Cache . ServiceLocator . GetInstance < ILexSenseFactory > ( ) ;
0 commit comments