Exemplo n.º 1
0
        public void CompositionOfRules_And_Neg()
        {
            IRule <BigInteger> rule = MaskRule.Is(EnglishAttributes.O) & !MaskRule.Is(EnglishAttributes.O.NonLexeme);

            Assert.IsTrue(rule.Evaluate(EnglishAttributes.O.Lexeme));
            Assert.IsTrue(rule.Evaluate(EnglishAttributes.O));
            Assert.IsFalse(rule.Evaluate(EnglishAttributes.O.NonLexeme));
        }
Exemplo n.º 2
0
        public void IsSubruleOf()
        {
            IRule <BigInteger> rule1 = MaskRule.Is(EnglishAttributes.I.Lexeme.Verb);
            IRule <BigInteger> rule2 = MaskRule.Is(EnglishAttributes.I.Lexeme);

            Assert.IsTrue(rule1.IsSubruleOf(rule2));
            Assert.IsTrue(rule1.IsSubruleOf(rule1));
            Assert.IsTrue(rule2.IsSubruleOf(rule2));
            Assert.IsFalse(rule2.IsSubruleOf(rule1));
        }
Exemplo n.º 3
0
 public static MorphemeRule Is(IRule <string> morphRule, BigInteger attributes, BigInteger notAttributes) =>
 notAttributes != 0 ?
 new MorphemeRule(myAttributesModel.GetGrammarCharacter(attributes), morphRule, MaskRule.Is(attributes) & !MaskRule.Is(notAttributes)) :
 new MorphemeRule(myAttributesModel.GetGrammarCharacter(attributes), morphRule, MaskRule.Is(attributes));
Exemplo n.º 4
0
        public void IsMatch()
        {
            IAttributesModel attributesModel = new EnglishAttributesModel();

            // Or
            MorphemeRule morphemeRule = new MorphemeRule(GrammarCharacter.I, RuleMaker.Anything <string>(), MaskRule.Is(EnglishAttributes.I.Lexeme.Interjection).Or(MaskRule.Is(EnglishAttributes.I.Lexeme.Verb)));

            Assert.IsTrue(morphemeRule.Evaluate(new Morpheme(attributesModel, "", EnglishAttributes.I.Lexeme.Verb)));
            Assert.IsTrue(morphemeRule.Evaluate(new Morpheme(attributesModel, "", EnglishAttributes.I.Lexeme.Interjection)));
            Assert.IsTrue(morphemeRule.Evaluate(new Morpheme(attributesModel, "", EnglishAttributes.I.Lexeme.Verb | EnglishAttributes.I.Lexeme.Interjection)));
            Assert.IsFalse(morphemeRule.Evaluate(new Morpheme(attributesModel, "", EnglishAttributes.O)));

            // And
            morphemeRule = new MorphemeRule(GrammarCharacter.I, RuleMaker.Anything <string>(), MaskRule.Is(EnglishAttributes.I.Lexeme.Interjection).And(MaskRule.Is(EnglishAttributes.I.Lexeme.Verb)));
            Assert.IsFalse(morphemeRule.Evaluate(new Morpheme(attributesModel, "", EnglishAttributes.I.Lexeme.Verb)));
            Assert.IsFalse(morphemeRule.Evaluate(new Morpheme(attributesModel, "", EnglishAttributes.I.Lexeme.Interjection)));
            Assert.IsTrue(morphemeRule.Evaluate(new Morpheme(attributesModel, "", EnglishAttributes.I.Lexeme.Verb | EnglishAttributes.I.Lexeme.Interjection)));
            Assert.IsFalse(morphemeRule.Evaluate(new Morpheme(attributesModel, "", EnglishAttributes.O)));
        }
Exemplo n.º 5
0
        public void CopyConstructor()
        {
            var morphemeRule = new MorphemeRule(GrammarCharacter.I, RuleMaker.Anything <string>(), MaskRule.Is(EnglishAttributes.I.Lexeme.Interjection));

            morphemeRule.SetSubstitution(SubstitutionRules.Epsilon_U_E);

            var copy = new MorphemeRule(morphemeRule);

            Assert.AreEqual(morphemeRule.GrammarCharacter, copy.GrammarCharacter);
            Assert.IsTrue(morphemeRule.MorphRule.Equals(copy.MorphRule));
            Assert.IsTrue(morphemeRule.AttributesRule.Equals(copy.AttributesRule));
            Assert.IsTrue(morphemeRule.SubstitutionRule.Equals(copy.SubstitutionRule));

            Assert.IsTrue(morphemeRule.Equals(copy));
        }