예제 #1
0
        public void All_Supplemental_Plural_Rules()
        {
            var rules = Cldr.Instance
                        .GetDocuments("common/supplemental/plurals.xml")
                        .Elements($"supplementalData/plurals[@type='cardinal']/pluralRules/pluralRule")
                        .Select(e => Rule.Parse(e))
                        .Where(r => r.Category != "other")
                        .OrderBy(r => r.Text)
                        .ToList();

            var context = RuleContext.Create(1m);

            foreach (var rule in rules)
            {
                try
                {
                    rule.Matches(context);
                }
                catch (Exception e)
                {
                    throw new Exception($"{rule.Text} => {Rule.ConvertExpression(rule.Text)}", e);
                }
            }
        }
예제 #2
0
 public void Conversion_Mod_List_To_InFunction()
 {
     Assert.AreEqual("n % 10 = 1 or n % 10 = 2", Rule.ConvertExpression("n % 10 = 1..2"));
 }
예제 #3
0
 public void Relations()
 {
     Assert.AreEqual("x = 2 or x = 3 or x = 4 or x = 15", Rule.ConvertExpression("x = 2..4, 15"));
     Assert.AreEqual("not (x = 2 or x = 3 or x = 4 or x = 15)", Rule.ConvertExpression("x != 2..4, 15"));
 }
예제 #4
0
 public void Conversion_Range_To_List()
 {
     Assert.AreEqual("0, 1,14, 15, 16", Rule.ConvertExpression("0..1,14..16"));
     Assert.AreEqual("0, 1, 14, 15, 16", Rule.ConvertExpression("0..1, 14..16"));
     Assert.AreEqual("0, 1, 14, 15, 16", Rule.ConvertExpression("0 .. 1, 14 .. 16"));
 }