public void ThreeFormsEvalTest() { string expr = "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)"; PluralFormsCalculator pfc = PluralFormsCalculator.Make(expr); Assert.IsNotNull(pfc, "Parse failed"); Assert.AreEqual(3, pfc.NPlurals, "Plurals count"); //pfc.DumpNodes("./EvalNodes.txt"); Assert.AreEqual(0, pfc.Evaluate(1 /*, true*/), "Case 1"); Assert.AreEqual(1, pfc.Evaluate(3), "Case 2"); Assert.AreEqual(2, pfc.Evaluate(7), "Case 3"); Assert.AreEqual(2, pfc.Evaluate(11), "Case 4"); }
public void CatalogParseTest() { Catalog cat = new Catalog(); cat.Load("./Data/Test01.po"); PluralFormsCalculator pfc = PluralFormsCalculator.Make(cat.GetPluralFormsHeader()); Assert.IsNotNull(pfc, "Parse failed"); Assert.AreEqual(3, pfc.NPlurals, "Plurals count"); Assert.AreEqual(0, pfc.Evaluate(1), "Case 1"); Assert.AreEqual(1, pfc.Evaluate(3), "Case 2"); Assert.AreEqual(2, pfc.Evaluate(7), "Case 3"); }
public void TwoFormsEvalTest() { string expr = "nplurals=2; plural=(n != 1)"; Assert.IsNotNull(PluralFormsCalculator.Make(expr + "\\n")); Assert.IsNotNull(PluralFormsCalculator.Make(expr + "\n")); Assert.IsNotNull(PluralFormsCalculator.Make(expr + ";")); PluralFormsCalculator pfc = PluralFormsCalculator.Make(expr); Assert.IsNotNull(pfc, "Parse failed"); Assert.AreEqual(2, pfc.NPlurals, "Plurals count"); Assert.AreEqual(1, pfc.Evaluate(0), "Case 1"); Assert.AreEqual(0, pfc.Evaluate(1), "Case 2"); Assert.AreEqual(1, pfc.Evaluate(5), "Case 3"); Assert.AreEqual(1, pfc.Evaluate(23), "Case 4"); }
void OnHeaderChanged (object sender, System.EventArgs e) { if (inUpdate) return; headers.CommentForGui = textviewComments.Buffer.Text; headers.Project = (entryProjectName.Text + ' ' + entryProjectVersion.Text).Trim (); headers.SetHeader ("Report-Msgid-Bugs-To", entryBugzilla.Text); headers.Translator = entryTranslatorName.Text; headers.TranslatorEmail = entryTranslatorEmail.Text; headers.Team = entryLanguageGroupName.Text; headers.TeamEmail = entryLanguageGroupEmail.Text; if (!String.IsNullOrEmpty (entryPluralsForms.Text)) { PluralFormsCalculator calc = new PluralFormsCalculator (); PluralFormsScanner scanner = new PluralFormsScanner (entryPluralsForms.Text); PluralFormsParser parser = new PluralFormsParser (scanner); bool wellFormed = parser.Parse (calc); if (wellFormed) { for (int i = 0; i < headers.PluralFormsCount; i++) { int example = 0; for (example = 1; example < 1000; example++) { if (calc.Evaluate (example) == i) break; } if (example == 1000 && calc.Evaluate (0) == i) example = 0; if (i > 0 && (example == 0 || example == 1000)) { wellFormed = false; break; } } } Gdk.Color background = wellFormed ? new Gdk.Color (138, 226,52) : new Gdk.Color (204, 0, 0); entryPluralsForms.ModifyBase (StateType.Normal, background); //from tango palete - 8ae234 green, cc0000 red if (wellFormed) { headers.SetHeaderNotEmpty ("Plural-Forms", entryPluralsForms.Text); OnPluralDefinitionChanged (); } } else { entryPluralsForms.ModifyBase (StateType.Normal); headers.SetHeaderNotEmpty ("Plural-Forms", entryPluralsForms.Text); OnPluralDefinitionChanged (); } headers.UpdateHeaderDict (); headers.IsDirty = true; }
void OnHeaderChanged(object sender, System.EventArgs e) { if (inUpdate) { return; } headers.CommentForGui = textviewComments.Buffer.Text; headers.Project = (entryProjectName.Text + ' ' + entryProjectVersion.Text).Trim(); headers.SetHeader("Report-Msgid-Bugs-To", entryBugzilla.Text); headers.Translator = entryTranslatorName.Text; headers.TranslatorEmail = entryTranslatorEmail.Text; headers.Team = entryLanguageGroupName.Text; headers.TeamEmail = entryLanguageGroupEmail.Text; if (!String.IsNullOrEmpty(entryPluralsForms.Text)) { PluralFormsCalculator calc = new PluralFormsCalculator(); PluralFormsScanner scanner = new PluralFormsScanner(entryPluralsForms.Text); PluralFormsParser parser = new PluralFormsParser(scanner); bool wellFormed = parser.Parse(calc); if (wellFormed) { for (int i = 0; i < headers.PluralFormsCount; i++) { int example = 0; for (example = 1; example < 1000; example++) { if (calc.Evaluate(example) == i) { break; } } if (example == 1000 && calc.Evaluate(0) == i) { example = 0; } if (i > 0 && (example == 0 || example == 1000)) { wellFormed = false; break; } } } Gdk.Color background = wellFormed ? new Gdk.Color(138, 226, 52) : new Gdk.Color(204, 0, 0); entryPluralsForms.ModifyBase(StateType.Normal, background); //from tango palete - 8ae234 green, cc0000 red if (wellFormed) { headers.SetHeaderNotEmpty("Plural-Forms", entryPluralsForms.Text); OnPluralDefinitionChanged(); } } else { entryPluralsForms.ModifyBase(StateType.Normal); headers.SetHeaderNotEmpty("Plural-Forms", entryPluralsForms.Text); OnPluralDefinitionChanged(); } headers.UpdateHeaderDict(); headers.IsDirty = true; }