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); }
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")); }
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(); } }
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); }
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(); } }