private bool ValidateSortRules() { CollationDefinition cd; switch (_model.CurrentCollationRulesType) { case "CustomIcu": { cd = new IcuRulesCollationDefinition((IcuRulesCollationDefinition)_model.CurrentDefinition.DefaultCollation) { IcuRules = _sortRulesTextBox.Text }; break; } case "CustomSimple": { cd = new SimpleRulesCollationDefinition((SimpleRulesCollationDefinition)_model.CurrentDefinition.DefaultCollation) { SimpleRules = _sortRulesTextBox.Text }; break; } default: { return(false); } } string message; const string prefixToMessage = "SORT RULES WILL NOT BE SAVED\r\n"; if (!cd.Validate(out message)) { _testSortResult.Text = prefixToMessage + (message ?? String.Empty); _testSortResult.ForeColor = Color.Red; return(false); } if (_testSortResult.Text.StartsWith(prefixToMessage)) { _testSortResult.Text = String.Empty; _testSortResult.ForeColor = Color.Black; } return(true); }
public void Roundtrip_LdmlSimpleCollationNeedsCompiling() { using (var environment = new TestEnvironment()) { const string simpleRules = "\r\n\t\t\t\t\t\\!/A\r\n\t\t\t\t\tb/B\r\n\t\t\t\t\tt/T\r\n\t\t\t\t\ts/S\r\n\t\t\t\t\tc/C\r\n\t\t\t\t\tk/K\r\n\t\t\t\t\tx/X\r\n\t\t\t\t\ti/I\r\n\t\t\t\t\td/D\r\n\t\t\t\t\tq/Q\r\n\t\t\t\t\tr/R\r\n\t\t\t\t\te/E\r\n\t\t\t\t\tf/F\r\n\t\t\t\t\tg/G\r\n\t\t\t\t\to/O\r\n\t\t\t\t\tj/J\r\n\t\t\t\t\tl/L\r\n\t\t\t\t\tm/M\r\n\t\t\t\t\tn/N\r\n\t\t\t\t\tp/P\r\n\t\t\t\t\tu/U\r\n\t\t\t\t\tv/V\r\n\t\t\t\t\tw/W\r\n\t\t\t\t\th/H\r\n\t\t\t\t\ty/Y\r\n\t\t\t\t\tz/Z\r\n\t\t\t\t"; var cd = new SimpleRulesCollationDefinition("standard") { SimpleRules = simpleRules, }; var wsToLdml = new WritingSystemDefinition("aa", "Latn", "", ""); wsToLdml.Collations.Add(cd); var ldmlAdaptor = new LdmlDataMapper(new TestWritingSystemFactory()); ldmlAdaptor.Write(environment.FilePath("test.ldml"), wsToLdml, null); XElement ldmlElem = XElement.Load(environment.FilePath("test.ldml")); XElement collationsElem = ldmlElem.Element("collations"); XElement defaultCollationElem = collationsElem.Element("defaultCollation"); XElement collationElem = collationsElem.Element("collation"); XElement specialElem = collationElem.Element("special"); XElement simpleElem = specialElem.Element(Sil + "simple"); Assert.That((string)defaultCollationElem, Is.EqualTo("standard")); Assert.That((string)collationElem.Attribute("type"), Is.EqualTo("standard")); Assert.That((string)specialElem.Attribute(Sil + "needsCompiling"), Is.EqualTo("true")); Assert.That((string)simpleElem, Is.EqualTo(simpleRules.Replace("\r\n", "\n"))); var validatedCd = new SimpleRulesCollationDefinition("standard") { SimpleRules = simpleRules }; // When the LDML reader parses the invalid rules, it will validate and regenerate icu rules var wsFromLdml = new WritingSystemDefinition(); ldmlAdaptor.Read(environment.FilePath("test.ldml"), wsFromLdml); Assert.That(wsFromLdml.Collations.First().ValueEquals(validatedCd)); Assert.That(wsFromLdml.DefaultCollation.ValueEquals(validatedCd)); } }
public void Roundtrip_LdmlSimpleCollation() { using (var environment = new TestEnvironment()) { const string simpleRules = "\r\n\t\t\t\t\ta/A\r\n\t\t\t\t\tb/B\r\n\t\t\t\t\tt/T\r\n\t\t\t\t\ts/S\r\n\t\t\t\t\tc/C\r\n\t\t\t\t\tk/K\r\n\t\t\t\t\tx/X\r\n\t\t\t\t\ti/I\r\n\t\t\t\t\td/D\r\n\t\t\t\t\tq/Q\r\n\t\t\t\t\tr/R\r\n\t\t\t\t\te/E\r\n\t\t\t\t\tf/F\r\n\t\t\t\t\tg/G\r\n\t\t\t\t\to/O\r\n\t\t\t\t\tj/J\r\n\t\t\t\t\tl/L\r\n\t\t\t\t\tm/M\r\n\t\t\t\t\tn/N\r\n\t\t\t\t\tp/P\r\n\t\t\t\t\tu/U\r\n\t\t\t\t\tv/V\r\n\t\t\t\t\tw/W\r\n\t\t\t\t\th/H\r\n\t\t\t\t\ty/Y\r\n\t\t\t\t\tz/Z\r\n\t\t\t\t"; const string icuRules = "&[before 1] [first regular] < a\\/A < b\\/B < t\\/T < s\\/S < c\\/C < k\\/K < x\\/X < i\\/I < d\\/D < q\\/Q < r\\/R < e\\/E < f\\/F < g\\/G < o\\/O < j\\/J < l\\/L < m\\/M < n\\/N < p\\/P < u\\/U < v\\/V < w\\/W < h\\/H < y\\/Y < z\\/Z"; var cd = new SimpleRulesCollationDefinition("standard") { SimpleRules = simpleRules, CollationRules = icuRules, IsValid = true }; var wsToLdml = new WritingSystemDefinition("aa", "Latn", "", ""); wsToLdml.Collations.Add(cd); var ldmlAdaptor = new LdmlDataMapper(new TestWritingSystemFactory()); ldmlAdaptor.Write(environment.FilePath("test.ldml"), wsToLdml, null); XElement ldmlElem = XElement.Load(environment.FilePath("test.ldml")); XElement collationsElem = ldmlElem.Element("collations"); XElement defaultCollationElem = collationsElem.Element("defaultCollation"); XElement collationElem = collationsElem.Element("collation"); XElement crElem = collationElem.Element("cr"); XElement simpleElem = collationElem.Element("special").Element(Sil + "simple"); Assert.That((string)defaultCollationElem, Is.EqualTo("standard")); Assert.That((string)collationElem.Attribute("type"), Is.EqualTo("standard")); Assert.That((string)crElem, Is.EqualTo(icuRules.Replace("\r\n", "\n"))); Assert.That((string)simpleElem, Is.EqualTo(simpleRules.Replace("\r\n", "\n"))); var wsFromLdml = new WritingSystemDefinition(); ldmlAdaptor.Read(environment.FilePath("test.ldml"), wsFromLdml); Assert.That(wsFromLdml.Collations.First().ValueEquals(cd)); Assert.That(wsFromLdml.DefaultCollation.ValueEquals(cd)); } }
public void RoundtripSimpleCustomSortRules_WS33715() { var ldmlAdaptor = new LdmlDataMapper(new TestWritingSystemFactory()); const string sortRules = "(A̍ a̍)"; var cd = new SimpleRulesCollationDefinition("standard") {SimpleRules = sortRules}; var wsWithSimpleCustomSortRules = new WritingSystemDefinition(); wsWithSimpleCustomSortRules.Collations.Add(cd); var wsFromLdml = new WritingSystemDefinition(); using (var tempFile = new TempFile()) { ldmlAdaptor.Write(tempFile.Path, wsWithSimpleCustomSortRules, null); ldmlAdaptor.Read(tempFile.Path, wsFromLdml); } var cdFromLdml = (SimpleRulesCollationDefinition) wsFromLdml.Collations.First(); Assert.AreEqual(sortRules, cdFromLdml.SimpleRules); }
public SimpleRulesCollationDefinition(SimpleRulesCollationDefinition srcd) : base(srcd) { _simpleRules = srcd._simpleRules; }
public SimpleRulesCollationDefinition(SimpleRulesCollationDefinition srcd) : base(srcd) { _simpleRules = srcd._simpleRules; }