Пример #1
0
 protected void TestRule(IRule rule, RuleContextTest ruleTest)
 {
     foreach (var sample in ruleTest.Samples)
     {
         TestSample(rule, ruleTest, sample);
     }
 }
Пример #2
0
        protected void TestRules(IRule[] rules, RuleContextTest ruleTest)
        {
            var dict = rules.ToDictionary(r => r.Id, r => r);

            Assert.True(dict.TryGetValue(ruleTest.Id, out var rule),
                        $"Rule not found [{ruleTest.Id}].");
            TestRule(rule, ruleTest);
        }
Пример #3
0
        protected void TestSample(IRule rule, RuleContextTest ruleTest, RuleTestSample sample)
        {
            var word = sample.Input;
            var initialDerivation = WordDerivation.Origin(word);
            var derivation        = rule.Derive(ExecutionContext, initialDerivation);
            var derived           = derivation.Select(d => d.Derived).ToArray();

            int expectedNb = sample.Outputs.Length;

            Assert.True(expectedNb == derived.Length,
                        $"Expect [{string.Join("", word.Phonemes)}] to have [{expectedNb}] derivations ({string.Join(", ", sample.Outputs.Select(o => "[" + string.Join("", o.Word.Phonemes) + "]"))}) but only have [{derived.Length}].");

            for (int i = 0; i < sample.Outputs.Length; i++)
            {
                TestSampleOutput(sample.Outputs, derived, i);
            }
        }
Пример #4
0
 public void Test(RuleContextTest ruleTest)
 {
     TestRules(Part1Chapter10.RuleComponents(), ruleTest);
 }
Пример #5
0
 public void Test(RuleContextTest ruleTest)
 {
     TestRules(Part1Chapter08.Rules(), ruleTest);
 }