Create() public method

Creates a new writing system.
public Create ( LanguageSubtag languageSubtag, ScriptSubtag scriptSubtag, RegionSubtag regionSubtag, VariantSubtag variantSubtag ) : IWritingSystem
languageSubtag LanguageSubtag The language subtag.
scriptSubtag ScriptSubtag The script subtag.
regionSubtag RegionSubtag The region subtag.
variantSubtag VariantSubtag The variant subtag.
return IWritingSystem
        public void GetValidLangCodeForNewLang()
        {
            string storePath       = PrepareTempStore("Store");
            string globalStorePath = PrepareTempStore("GlobalStore");

            EnsureDirectoryIsEmpty(storePath);
            EnsureDirectoryIsEmpty(globalStorePath);

            var globalStore = new GlobalFileWritingSystemStore(globalStorePath);
            var wsManager   = new PalasoWritingSystemManager(
                new LocalFileWritingSystemStore(storePath, globalStore), globalStore);

            Assert.AreEqual("qip", wsManager.GetValidLangTagForNewLang("Qipkey"));
            Assert.AreEqual("sn", wsManager.GetValidLangTagForNewLang("Sn"));
            Assert.AreEqual("eba", wsManager.GetValidLangTagForNewLang("\u00CBbashlish"));             // \u00CB == E with diacritic
            Assert.AreEqual("eee", wsManager.GetValidLangTagForNewLang("\u00CB\u00CB\u00CBlish"));
            // \u00CB == E with diacritic
            Assert.AreEqual("aaa", wsManager.GetValidLangTagForNewLang("U"));

            LanguageSubtag subtag = new LanguageSubtag("qip", "Qipkey", true, null);
            IWritingSystem newWs  = wsManager.Create(subtag, null, null, null);

            wsManager.Set(newWs);
            Assert.AreEqual("aaa", wsManager.GetValidLangTagForNewLang("Qipsing"), "code for 'qip' should already be taken");

            subtag = new LanguageSubtag("aaa", "Qipsing", true, null);
            newWs  = wsManager.Create(subtag, null, null, null);
            wsManager.Set(newWs);
            Assert.AreEqual("aab", wsManager.GetValidLangTagForNewLang("Qipwest"),
                            "code for 'qip' should already be taken twice");

            // ENHANCE: Ideally, we would want to test incrementing the middle and first character,
            // but that would require at least 677 (26^2 + 1) writing systems be created.
        }
        public void InterpretChrp()
        {
            var            wsManager = new PalasoWritingSystemManager();
            IWritingSystem ws        = wsManager.Create("en-US");
            var            chrp      = new LgCharRenderProps
            {
                ws         = ws.Handle,
                szFaceName = new ushort[32],
                dympHeight = 10000,
                ssv        = (int)FwSuperscriptVal.kssvSuper
            };

            MarshalEx.StringToUShort("<default font>", chrp.szFaceName);
            ws.InterpretChrp(ref chrp);

            Assert.AreEqual(ws.DefaultFontName, MarshalEx.UShortToString(chrp.szFaceName));
            Assert.AreEqual(10000 / 3, chrp.dympOffset);
            Assert.AreEqual((10000 * 2) / 3, chrp.dympHeight);
            Assert.AreEqual((int)FwSuperscriptVal.kssvOff, chrp.ssv);

            chrp.ssv        = (int)FwSuperscriptVal.kssvSub;
            chrp.dympHeight = 10000;
            chrp.dympOffset = 0;
            ws.InterpretChrp(ref chrp);

            Assert.AreEqual(-(10000 / 5), chrp.dympOffset);
            Assert.AreEqual((10000 * 2) / 3, chrp.dympHeight);
            Assert.AreEqual((int)FwSuperscriptVal.kssvOff, chrp.ssv);
            wsManager.Save();
        }
Esempio n. 3
0
        public void Create()
        {
            var            wsManager = new PalasoWritingSystemManager();
            IWritingSystem enWs      = wsManager.Create("en-Latn-US-fonipa");

            Assert.AreEqual("Eng", enWs.Abbreviation);
            Assert.AreEqual("English", enWs.LanguageSubtag.Name);
            Assert.AreEqual("Latin", enWs.ScriptSubtag.Name);
            Assert.AreEqual("United States", enWs.RegionSubtag.Name);
            Assert.AreEqual("International Phonetic Alphabet", enWs.VariantSubtag.Name);
            Assert.AreEqual(null, ((ILegacyWritingSystemDefinition)enWs).WindowsLcid);

            IWritingSystem chWs = wsManager.Create("zh-CN");

            Assert.AreEqual("Man", chWs.Abbreviation);
            Assert.AreEqual("Mandarin Chinese", chWs.LanguageSubtag.Name);
            Assert.AreEqual("China", chWs.RegionSubtag.Name);
            Assert.AreEqual("Charis SIL", chWs.DefaultFontName);
            Assert.AreEqual(WritingSystemDefinition.SortRulesType.OtherLanguage, chWs.SortUsing);
            Assert.AreEqual("zh-CN", chWs.SortRules);
            wsManager.Save();
        }
        public void Create()
        {
            var            wsManager = new PalasoWritingSystemManager();
            IWritingSystem enWs      = wsManager.Create("en-Latn-US-fonipa");

            Assert.AreEqual("Eng", enWs.Abbreviation);
            Assert.AreEqual("English", enWs.LanguageSubtag.Name);
            Assert.AreEqual("Latin", enWs.ScriptSubtag.Name);
            Assert.AreEqual("United States", enWs.RegionSubtag.Name);
            Assert.AreEqual("International Phonetic Alphabet", enWs.VariantSubtag.Name);
            // On Linux InstalledInputLanguages or DefaultInputLanguage doesn't do anything sensible.
            // see: https://bugzilla.novell.com/show_bug.cgi?id=613014
            Assert.AreEqual(MiscUtils.IsUnix ? 0x409 : InputLanguage.DefaultInputLanguage.Culture.LCID, enWs.LCID);

            IWritingSystem chWs = wsManager.Create("zh-CN");

            Assert.AreEqual("Man", chWs.Abbreviation);
            Assert.AreEqual("Mandarin Chinese", chWs.LanguageSubtag.Name);
            Assert.AreEqual("China", chWs.RegionSubtag.Name);
            Assert.AreEqual("Charis SIL", chWs.DefaultFontName);
            Assert.AreEqual(WritingSystemDefinition.SortRulesType.OtherLanguage, chWs.SortUsing);
            Assert.AreEqual("zh-CN", chWs.SortRules);
            wsManager.Save();
        }
Esempio n. 5
0
		public void LanguageSubtag_newWS()
		{
			var wsManager = new PalasoWritingSystemManager();
			using (var langSetup = new LanguageSetup())
			{
				langSetup.WritingSystemManager = wsManager;
				langSetup.StartedInModifyState = false;
				langSetup.LanguageName = "Monkey";
				LanguageSubtag subtag = langSetup.LanguageSubtag;
				Assert.AreEqual("mon", subtag.Code);

				LanguageSubtag newSubtag = new LanguageSubtag("mon", "Moniker", true, null);
				IWritingSystem newWs = wsManager.Create(newSubtag, null, null, null);
				wsManager.Set(newWs);
				subtag = langSetup.LanguageSubtag;
				Assert.AreEqual("aaa", subtag.Code, "Language code 'mon' should already be in use");
			}
		}
        public void CreateAudioWritingSystemVariantFirst()
        {
            string storePath       = PrepareTempStore("Store");
            string globalStorePath = PrepareTempStore("GlobalStore");

            EnsureDirectoryIsEmpty(storePath);
            EnsureDirectoryIsEmpty(globalStorePath);

            var globalStore = new GlobalFileWritingSystemStore(globalStorePath);
            var wsManager   = new PalasoWritingSystemManager(
                new LocalFileWritingSystemStore(storePath, globalStore), globalStore);

            IWritingSystem newWs = wsManager.Create(new LanguageSubtag("qaa", "Unknown", true, null), null, null, null);

            Assert.DoesNotThrow(() =>
            {
                newWs.VariantSubtag = new VariantSubtag("x-audio", "Audio", false, null);
                newWs.ScriptSubtag  = new ScriptSubtag("Zxxx", "Audio", false);
            });
        }
		public void CreateAudioWritingSystemVariantFirst()
		{

			string storePath = PrepareTempStore("Store");
			string globalStorePath = PrepareTempStore("GlobalStore");

			EnsureDirectoryIsEmpty(storePath);
			EnsureDirectoryIsEmpty(globalStorePath);

			var globalStore = new GlobalFileWritingSystemStore(globalStorePath);
			var wsManager = new PalasoWritingSystemManager(
				new LocalFileWritingSystemStore(storePath, globalStore), globalStore);

			IWritingSystem newWs = wsManager.Create(new LanguageSubtag("qaa", "Unknown", true, null), null, null, null);

			Assert.DoesNotThrow(() =>
			{
				newWs.VariantSubtag = new VariantSubtag("x-audio", "Audio", false, null);
				newWs.ScriptSubtag = new ScriptSubtag("Zxxx", "Audio", false);
			});
		}
		public void GetValidLangCodeForNewLang()
		{
			string storePath = PrepareTempStore("Store");
			string globalStorePath = PrepareTempStore("GlobalStore");

			EnsureDirectoryIsEmpty(storePath);
			EnsureDirectoryIsEmpty(globalStorePath);

			var globalStore = new GlobalFileWritingSystemStore(globalStorePath);
			var wsManager = new PalasoWritingSystemManager(
				new LocalFileWritingSystemStore(storePath, globalStore), globalStore);

			Assert.AreEqual("qip", wsManager.GetValidLangTagForNewLang("Qipkey"));
			Assert.AreEqual("sn", wsManager.GetValidLangTagForNewLang("Sn"));
			Assert.AreEqual("eba", wsManager.GetValidLangTagForNewLang("\u00CBbashlish")); // \u00CB == E with diacritic
			Assert.AreEqual("eee", wsManager.GetValidLangTagForNewLang("\u00CB\u00CB\u00CBlish"));
			// \u00CB == E with diacritic
			Assert.AreEqual("aaa", wsManager.GetValidLangTagForNewLang("U"));

			LanguageSubtag subtag = new LanguageSubtag("qip", "Qipkey", true, null);
			IWritingSystem newWs = wsManager.Create(subtag, null, null, null);
			wsManager.Set(newWs);
			Assert.AreEqual("aaa", wsManager.GetValidLangTagForNewLang("Qipsing"), "code for 'qip' should already be taken");

			subtag = new LanguageSubtag("aaa", "Qipsing", true, null);
			newWs = wsManager.Create(subtag, null, null, null);
			wsManager.Set(newWs);
			Assert.AreEqual("aab", wsManager.GetValidLangTagForNewLang("Qipwest"),
				"code for 'qip' should already be taken twice");

			// ENHANCE: Ideally, we would want to test incrementing the middle and first character,
			// but that would require at least 677 (26^2 + 1) writing systems be created.
		}
		public void InterpretChrp()
		{
			var wsManager = new PalasoWritingSystemManager();
			IWritingSystem ws = wsManager.Create("en-US");
			var chrp = new LgCharRenderProps
				{
					ws = ws.Handle,
					szFaceName = new ushort[32],
					dympHeight = 10000,
					ssv = (int) FwSuperscriptVal.kssvSuper
				};
			MarshalEx.StringToUShort("<default font>", chrp.szFaceName);
			ws.InterpretChrp(ref chrp);

			Assert.AreEqual(ws.DefaultFontName, MarshalEx.UShortToString(chrp.szFaceName));
			Assert.AreEqual(10000 / 3, chrp.dympOffset);
			Assert.AreEqual((10000 * 2) / 3, chrp.dympHeight);
			Assert.AreEqual((int) FwSuperscriptVal.kssvOff, chrp.ssv);

			chrp.ssv = (int) FwSuperscriptVal.kssvSub;
			chrp.dympHeight = 10000;
			chrp.dympOffset = 0;
			ws.InterpretChrp(ref chrp);

			Assert.AreEqual(-(10000 / 5), chrp.dympOffset);
			Assert.AreEqual((10000 * 2) / 3, chrp.dympHeight);
			Assert.AreEqual((int)FwSuperscriptVal.kssvOff, chrp.ssv);
			wsManager.Save();
		}
		public void Create()
		{
			var wsManager = new PalasoWritingSystemManager();
			IWritingSystem enWs = wsManager.Create("en-Latn-US-fonipa");
			Assert.AreEqual("Eng", enWs.Abbreviation);
			Assert.AreEqual("English", enWs.LanguageSubtag.Name);
			Assert.AreEqual("Latin", enWs.ScriptSubtag.Name);
			Assert.AreEqual("United States", enWs.RegionSubtag.Name);
			Assert.AreEqual("International Phonetic Alphabet", enWs.VariantSubtag.Name);
			Assert.AreEqual(null, ((ILegacyWritingSystemDefinition)enWs).WindowsLcid);

			IWritingSystem chWs = wsManager.Create("zh-CN");
			Assert.AreEqual("Man", chWs.Abbreviation);
			Assert.AreEqual("Mandarin Chinese", chWs.LanguageSubtag.Name);
			Assert.AreEqual("China", chWs.RegionSubtag.Name);
			Assert.AreEqual("Charis SIL", chWs.DefaultFontName);
			Assert.AreEqual(WritingSystemDefinition.SortRulesType.OtherLanguage, chWs.SortUsing);
			Assert.AreEqual("zh-CN", chWs.SortRules);
			wsManager.Save();
		}