public void GetWsForInputLanguage_GetsMatchingWsByCulture() { var wsEn = new WritingSystemDefinition("en"); RepositoryUnderTest.Set(wsEn); var wsFr = new WritingSystemDefinition("fr"); RepositoryUnderTest.Set(wsFr); var kbdEn = new DefaultKeyboardDefinition() { Layout = "English", Locale = "en-US" }; wsEn.LocalKeyboard = kbdEn; var kbdFr = new DefaultKeyboardDefinition() { Layout = "French", Locale = "fr-FR" }; wsFr.LocalKeyboard = kbdFr; Assert.That(RepositoryUnderTest.GetWsForInputLanguage("", new CultureInfo("en-US"), wsEn, new[] { wsEn, wsFr }), Is.EqualTo(wsEn)); Assert.That(RepositoryUnderTest.GetWsForInputLanguage("", new CultureInfo("en-US"), wsFr, new[] { wsEn, wsFr }), Is.EqualTo(wsEn)); Assert.That(RepositoryUnderTest.GetWsForInputLanguage("", new CultureInfo("en-US"), wsEn, new[] { wsFr, wsEn }), Is.EqualTo(wsEn)); Assert.That(RepositoryUnderTest.GetWsForInputLanguage("", new CultureInfo("en-US"), wsFr, new[] { wsFr, wsEn }), Is.EqualTo(wsEn)); Assert.That(RepositoryUnderTest.GetWsForInputLanguage("", new CultureInfo("fr-FR"), wsEn, new[] { wsFr, wsEn }), Is.EqualTo(wsFr)); Assert.That(RepositoryUnderTest.GetWsForInputLanguage("", new CultureInfo("fr-FR"), wsEn, new[] { wsEn, wsFr }), Is.EqualTo(wsFr)); Assert.That(RepositoryUnderTest.GetWsForInputLanguage("", new CultureInfo("fr-FR"), null, new[] { wsEn, wsFr }), Is.EqualTo(wsFr)); }
public void GetWsForInputLanguage_PrefersCurrentLayoutIfTwoMatch() { var wsEn = new WritingSystemDefinition("en"); RepositoryUnderTest.Set(wsEn); var wsFr = new WritingSystemDefinition("fr"); RepositoryUnderTest.Set(wsFr); var kbdEn = new DefaultKeyboardDefinition() { Layout = "English", Locale = "en-US" }; wsEn.LocalKeyboard = kbdEn; var kbdFr = new DefaultKeyboardDefinition() { Layout = "English", Locale = "fr-US" }; wsFr.LocalKeyboard = kbdFr; Assert.That(RepositoryUnderTest.GetWsForInputLanguage("English", new CultureInfo("de-DE"), wsEn, new[] { wsEn, wsFr }), Is.EqualTo(wsEn)); Assert.That(RepositoryUnderTest.GetWsForInputLanguage("English", new CultureInfo("de-DE"), wsFr, new[] { wsEn, wsFr }), Is.EqualTo(wsFr)); Assert.That(RepositoryUnderTest.GetWsForInputLanguage("English", new CultureInfo("de-DE"), wsEn, new[] { wsFr, wsEn }), Is.EqualTo(wsEn)); Assert.That(RepositoryUnderTest.GetWsForInputLanguage("English", new CultureInfo("de-DE"), wsFr, new[] { wsFr, wsEn }), Is.EqualTo(wsFr)); }
public void GetWsForInputLanguage_CorrectlyPrioritizesLayoutAndCulture() { var wsEn = new WritingSystemDefinition("en"); RepositoryUnderTest.Set(wsEn); var wsEnIpa = new WritingSystemDefinition("en-fonipa"); RepositoryUnderTest.Set(wsEnIpa); var wsFr = new WritingSystemDefinition("fr"); RepositoryUnderTest.Set(wsFr); var wsDe = new WritingSystemDefinition("de"); RepositoryUnderTest.Set(wsDe); var kbdEn = new DefaultKeyboardDefinition() { Layout = "English", Locale = "en-US" }; wsEn.LocalKeyboard = kbdEn; var kbdEnIpa = new DefaultKeyboardDefinition() { Layout = "English-IPA", Locale = "en-US" }; wsEnIpa.LocalKeyboard = kbdEnIpa; var kbdFr = new DefaultKeyboardDefinition() { Layout = "French", Locale = "fr-FR" }; wsFr.LocalKeyboard = kbdFr; var kbdDe = new DefaultKeyboardDefinition() { Layout = "English", Locale = "de-DE" }; wsDe.LocalKeyboard = kbdDe; var wss = new IWritingSystemDefinition[] { wsEn, wsFr, wsDe, wsEnIpa }; // Exact match selects correct one, even though there are other matches for layout and/or culture Assert.That(RepositoryUnderTest.GetWsForInputLanguage("English", new CultureInfo("en-US"), wsFr, wss), Is.EqualTo(wsEn)); Assert.That(RepositoryUnderTest.GetWsForInputLanguage("English-IPA", new CultureInfo("en-US"), wsEn, wss), Is.EqualTo(wsEnIpa)); Assert.That(RepositoryUnderTest.GetWsForInputLanguage("French", new CultureInfo("fr-FR"), wsDe, wss), Is.EqualTo(wsFr)); Assert.That(RepositoryUnderTest.GetWsForInputLanguage("English", new CultureInfo("de-DE"), wsEn, wss), Is.EqualTo(wsDe)); // If there is no exact match, but there are matches by both layout and culture, we prefer layout (even though there is a // culture match for the default WS) Assert.That(RepositoryUnderTest.GetWsForInputLanguage("English", new CultureInfo("fr-FR"), wsFr, wss), Is.EqualTo(wsEn)); // first of two equally good matches }
public void GetWsForInputLanguage_PrefersWsCurrentIfEqualMatches() { var wsEn = new WritingSystemDefinition("en"); RepositoryUnderTest.Set(wsEn); var wsEnUS = new WritingSystemDefinition("en-US"); RepositoryUnderTest.Set(wsEnUS); var wsEnIpa = new WritingSystemDefinition("en-fonipa"); RepositoryUnderTest.Set(wsEnIpa); var wsFr = new WritingSystemDefinition("fr"); RepositoryUnderTest.Set(wsFr); var wsDe = new WritingSystemDefinition("de"); RepositoryUnderTest.Set(wsDe); var kbdEn = new DefaultKeyboardDefinition() { Layout = "English", Locale = "en-US" }; wsEn.LocalKeyboard = kbdEn; var kbdEnIpa = new DefaultKeyboardDefinition() { Layout = "English-IPA", Locale = "en-US" }; wsEnIpa.LocalKeyboard = kbdEnIpa; wsEnUS.LocalKeyboard = kbdEn; // exact same keyboard used! var kbdFr = new DefaultKeyboardDefinition() { Layout = "French", Locale = "fr-FR" }; wsFr.LocalKeyboard = kbdFr; var kbdDe = new DefaultKeyboardDefinition() { Layout = "English", Locale = "de-DE" }; wsDe.LocalKeyboard = kbdDe; var wss = new IWritingSystemDefinition[] { wsEn, wsFr, wsDe, wsEnIpa, wsEnUS }; // Exact matches Assert.That(RepositoryUnderTest.GetWsForInputLanguage("English", new CultureInfo("en-US"), wsFr, wss), Is.EqualTo(wsEn)); // first of 2 Assert.That(RepositoryUnderTest.GetWsForInputLanguage("English", new CultureInfo("en-US"), wsEn, wss), Is.EqualTo(wsEn)); // prefer default Assert.That(RepositoryUnderTest.GetWsForInputLanguage("English", new CultureInfo("en-US"), wsEnUS, wss), Is.EqualTo(wsEnUS)); // prefer default // Match on Layout only Assert.That(RepositoryUnderTest.GetWsForInputLanguage("English", new CultureInfo("fr-FR"), wsFr, wss), Is.EqualTo(wsEn)); // first of 3 Assert.That(RepositoryUnderTest.GetWsForInputLanguage("English", new CultureInfo("fr-FR"), wsEn, wss), Is.EqualTo(wsEn)); // prefer default Assert.That(RepositoryUnderTest.GetWsForInputLanguage("English", new CultureInfo("fr-FR"), wsEnUS, wss), Is.EqualTo(wsEnUS)); // prefer default Assert.That(RepositoryUnderTest.GetWsForInputLanguage("English", new CultureInfo("fr-FR"), wsDe, wss), Is.EqualTo(wsDe)); // prefer default // Match on culture only Assert.That(RepositoryUnderTest.GetWsForInputLanguage("Nonsence", new CultureInfo("en-US"), wsDe, wss), Is.EqualTo(wsEn)); // first of 3 Assert.That(RepositoryUnderTest.GetWsForInputLanguage("Nonsence", new CultureInfo("en-US"), wsEn, wss), Is.EqualTo(wsEn)); // prefer default Assert.That(RepositoryUnderTest.GetWsForInputLanguage("Nonsence", new CultureInfo("en-US"), wsEnUS, wss), Is.EqualTo(wsEnUS)); // prefer default Assert.That(RepositoryUnderTest.GetWsForInputLanguage("Nonsence", new CultureInfo("en-US"), wsEnIpa, wss), Is.EqualTo(wsEnIpa)); // prefer default }