コード例 #1
0
        public void ParseRulesTest()
        {
            var parser = new AstTokenParser();

            foreach (object[] mapping in GetParseRulesTestData())
            {
                var astRoot = parser.Parse((string)mapping[1]);
                var rule    = new AstPluralRule(100, astRoot);
                Assert.Equal((int)mapping[2], rule.Evaluate(0));
            }
        }
コード例 #2
0
        public void CompileRulesTest()
        {
            var parser   = new AstTokenParser();
            var compiler = new PluralRuleCompiler();

            foreach (object[] mapping in GetParseRulesTestData())
            {
                var astRoot       = parser.Parse((string)mapping[1]);
                var dynamicMethod = (PluralRuleEvaluatorDelegate)compiler.CompileToDynamicMethod(astRoot, typeof(PluralRuleEvaluatorDelegate));

                Assert.Equal((int)mapping[2], dynamicMethod(0));
            }
        }
コード例 #3
0
        public void ParseCompleteRulesTest()
        {
            var parser = new AstTokenParser();

            foreach (object[] mapping in GetParseCompleteRulesTestData())
            {
                var astRoot     = parser.Parse((string)mapping[0]);
                var rule        = new AstPluralRule(100, astRoot);
                var expectedSeq = (string)mapping[1];

                for (int i = 0; i < 200; i++)
                {
                    var expected = int.Parse(expectedSeq[i].ToString());
                    Assert.Equal(expected, rule.Evaluate(i));
                }
            }
        }
コード例 #4
0
        public void CompileCompleteRulesTest()
        {
            var parser   = new AstTokenParser();
            var compiler = new PluralRuleCompiler();

            foreach (object[] mapping in GetParseCompleteRulesTestData())
            {
                var astRoot       = parser.Parse((string)mapping[0]);
                var expectedSeq   = (string)mapping[1];
                var dynamicMethod = (PluralRuleEvaluatorDelegate)compiler.CompileToDynamicMethod(astRoot, typeof(PluralRuleEvaluatorDelegate));

                for (int i = 0; i < 200; i++)
                {
                    var expected = int.Parse(expectedSeq[i].ToString());
                    Assert.Equal(expected, dynamicMethod(i));
                }
            }
        }
コード例 #5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CompiledPluralRuleGenerator"/> class using
 /// the default plural rule compiler and given AST token parser.
 /// </summary>
 /// <param name="pluralRuleText"></param>
 /// <param name="parser"></param>
 public CompiledPluralRuleGenerator(string pluralRuleText, AstTokenParser parser)
     : this(pluralRuleText, parser, new PluralRuleCompiler())
 {
 }
コード例 #6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CompiledPluralRuleGenerator"/> class using
 /// given plural rule compiler and given AST token parser.
 /// </summary>
 /// <param name="parser"></param>
 /// <param name="compiler"></param>
 public CompiledPluralRuleGenerator(AstTokenParser parser, PluralRuleCompiler compiler)
     : base(parser)
 {
     this.Compiler = compiler;
 }
コード例 #7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CompiledPluralRuleGenerator"/> class using
 /// the default plural rule compiler and given AST token parser.
 /// </summary>
 /// <param name="parser"></param>
 public CompiledPluralRuleGenerator(AstTokenParser parser)
     : this(parser, new PluralRuleCompiler())
 {
 }
コード例 #8
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CompiledPluralRuleGenerator"/> class using
 /// given plural rule compiler and given AST token parser.
 /// </summary>
 /// <param name="pluralRuleText"></param>
 /// <param name="parser"></param>
 /// <param name="compiler"></param>
 public CompiledPluralRuleGenerator(string pluralRuleText, AstTokenParser parser, PluralRuleCompiler compiler)
     : base(pluralRuleText, parser)
 {
     this.Compiler = compiler;
 }