public void FindAllWritingSystemsWithData_FindsHiddenWritingSystems() { var wsMgr = Cache.ServiceLocator.WritingSystemManager; wsMgr.GetOrSet("en", out var en); wsMgr.GetOrSet("fr", out var fr); wsMgr.GetOrSet("fr-x-has-no-strings", out _); wsMgr.GetOrSet("fr-x-zero-length", out var zeroLength); wsMgr.GetOrSet("blz", out var blz); wsMgr.GetOrSet("hid", out var hid); wsMgr.GetOrSet("hid-x-embedded", out var hidEmbedded); wsMgr.GetOrSet("hid-x-edgeCase", out var hidEdgeCase); wsMgr.GetOrSet("hid-x-baselineText", out var hidBaseline); var entry = SenseOrEntryTests.CreateInterestingLexEntry(Cache); entry.CitationForm.set_String(hid.Handle, "Headword"); entry.CitationForm.set_String(zeroLength.Handle, string.Empty); var exampleBldr = new TsStrBldr().Append("Example ", blz.Handle).Append("with embedded WS", hidEmbedded.Handle).Append("!", blz.Handle); var example = Cache.ServiceLocator.GetInstance <ILexExampleSentenceFactory>().Create(); entry.SensesOS.First().ExamplesOS.Add(example); // The Example MultiString has an Edge Case alternative, but no Edge Case text. example.Example.set_String(hidEdgeCase.Handle, exampleBldr.GetString()); // Interlinear texts are monolingual strings. AddInterlinearTextToLangProj("Title").ContentsOA.AddNewTextPara(null).Contents = TsStringUtils.MakeString("Content", hidBaseline.Handle); // SUT var result = WritingSystemServices.FindAllWritingSystemsWithText(Cache); Assert.That(new SortedSet <int>(result), Is.EquivalentTo(new[] { en.Handle, fr.Handle, blz.Handle, hid.Handle, hidEmbedded.Handle, hidEdgeCase.Handle, hidBaseline.Handle })); }
/// <summary> /// Helper method that returns a TsString with properties read from Selection. /// TODO: typing next to verse numbers shouldn't preserve selection. /// </summary> ITsString CreateTsStringUsingSelectionProps(string text, SelectionHelper selectionHelper) { IVwSelection selection = selectionHelper.Selection; TsStrBldr bld = TsStrBldrClass.Create(); ITsTextProps[] vttp; IVwPropertyStore[] vvps; int cttp; SelectionHelper.GetSelectionProps(selection, out vttp, out vvps, out cttp); // handle the unlikely event of no selection props. if (cttp == 0) { return(TsStringUtils.MakeTss(text, AssociatedSimpleRootSite.WritingSystemFactory.UserWs)); } bld.ReplaceRgch(0, bld.Length, text, text.Length, vttp[0]); return(bld.GetString().get_NormalizedForm(FwNormalizationMode.knmNFD)); }
public void DeleteWritingSystem() { Cache.ServiceLocator.WritingSystemManager.GetOrSet("fr", out var wsFr); Cache.ServiceLocator.WritingSystemManager.GetOrSet("blz", out var wsBlz); var revIndex = Cache.ServiceLocator.GetInstance <IReversalIndexRepository>().FindOrCreateIndexForWs(wsBlz.Handle); Cache.LangProject.LexDbOA.ReversalIndexesOC.Add(revIndex); var lexEntry = SenseOrEntryTests.CreateInterestingLexEntry(Cache); lexEntry.CitationForm.set_String(wsBlz.Handle, "Citation"); var example = Cache.ServiceLocator.GetInstance <ILexExampleSentenceFactory>().Create(); lexEntry.SensesOS.First().ExamplesOS.Add(example); var exampleBldr = new TsStrBldr().Append("Example embedding", wsFr.Handle).Append("Balantak!", wsBlz.Handle); example.Example.set_String(wsFr.Handle, exampleBldr.GetString()); var revEntry = revIndex.FindOrCreateReversalEntry("first"); revEntry.SensesRS.Add(lexEntry.SensesOS.First()); revEntry.ReversalIndex.WritingSystem = "blz"; revEntry.ReversalForm.set_String(wsBlz.Handle, "blz"); Assert.That(revEntry.ReversalIndex.WritingSystem, Is.EqualTo("blz")); // SUT WritingSystemServices.DeleteWritingSystem(Cache, wsBlz); TsStringUtilsTests.AssertIsNullOrEmpty(lexEntry.CitationForm.get_String(wsBlz.Handle)); var exampleAfter = example.Example; TsStringUtilsTests.AssertIsNullOrEmpty(exampleAfter.get_String(wsBlz.Handle)); var exampleAfterFr = exampleAfter.get_String(wsFr.Handle); Assert.AreEqual("Example embedding", exampleAfterFr.Text); Assert.AreEqual(1, exampleAfterFr.RunCount); Assert.AreEqual(wsFr.Handle, exampleAfterFr.get_WritingSystemAt(0)); Assert.IsFalse(revEntry.IsValidObject); Assert.IsFalse(Cache.LangProject.LexDbOA.ReversalIndexesOC.Contains(revIndex)); }