コード例 #1
0
        public void When_no_parameters_should_evaluate(string math, decimal result)
        {
            var language = new ArithmeticLanguage();
            var function = language.Parse(math).Compile();

            Assert.Equal(result, function(), 3);
        }
コード例 #2
0
        public void TestToDFA()
        {
            ArithmeticLanguage lang = ArithmeticLanguage.FromTextDescriptions("a b", "a^n b^k", "n == 3 && k == 2");
            var dfa      = new StringDFA(lang.ToDFA());
            var alphabet = new HashSet <string>(new string[] { "a", "b" });

            Assert.IsTrue(dfa.Accepts("aaabb"));
            Assert.IsFalse(dfa.Accepts("aaabbbb"));
            Assert.IsFalse(dfa.Accepts("aabbb"));
            Assert.IsFalse(dfa.Accepts("bb"));
            XElement el = dfa.ToXML(new string[] { "a", "b" });

            lang = ArithmeticLanguage.FromTextDescriptions("a b", "a^n b^j", "n < 3 && j > 0");
            dfa  = new StringDFA(lang.ToDFA());
            Assert.IsTrue(dfa.Accepts("ab"));
            Assert.IsTrue(dfa.Accepts("aabb"));
            Assert.IsFalse(dfa.Accepts("aa"));
            Assert.IsFalse(dfa.Accepts("aaab"));
            Assert.IsTrue(dfa.Accepts("b"));


            lang = ArithmeticLanguage.FromTextDescriptions("a b", "a^n b^j", "n < 3 && n > 0 && j == 1");
            dfa  = new StringDFA(lang.ToDFA());
            Assert.IsTrue(dfa.Accepts("ab"));
            Assert.IsTrue(dfa.Accepts("aab"));
            Assert.IsFalse(dfa.Accepts("aa"));
            Assert.IsFalse(dfa.Accepts("aaab"));
            Assert.IsFalse(dfa.Accepts("b"));
        }
コード例 #3
0
 void BuildAndExpectSuccess(string alphabetText, string languageText, string constraintText)
 {
     try
     {
         ArithmeticLanguage.FromTextDescriptions(alphabetText, languageText, constraintText);
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
         Console.WriteLine(e);
         Assert.Fail();
     }
 }
コード例 #4
0
        public void When_parameters_should_evaluate(string math, decimal result)
        {
            var language  = new ArithmeticLanguage();
            var function  = language.Parse <Parameter>(math).Compile();
            var parameter = new Parameter()
            {
                FavouriteNumber = 7,
                Limits          = new Limit()
                {
                    Min = -1.0,
                    Max = 1.5
                }
            };

            Assert.Equal(result, function(parameter), 3);
        }
コード例 #5
0
 void BuildAndExpectFailure(string alphabetText, string languageText, string constraintText)
 {
     try
     {
         Console.WriteLine("Building for (" + alphabetText + "), (" + languageText + "), (" + constraintText + ")");
         ArithmeticLanguage.FromTextDescriptions(alphabetText, languageText, constraintText);
         Assert.Fail();
     }
     catch (PumpingLemmaException e)
     {
         Console.WriteLine(e.Message);
     }
     catch (Exception e)
     {
         Console.WriteLine("Unexpected exception: " + e.ToString());
         Assert.Fail();
     }
 }