public void ParseRuleWithString() { Parser parser = new Parser("rule\r\nwhen\r\nTemperatureLevel is \"High\"\r\nthen\r\nHasFever is true\r\nend\r\n"); Rule rule = parser.ParseRule(); Assert.IsNotNull(rule); Assert.IsTrue(rule.Conditions.Contains(new IsFact("TemperatureLevel", "High"))); Assert.IsTrue(rule.Assertions.Contains(new IsFact("HasFever", true))); }
public void ParseSimpleRule() { Parser parser = new Parser("rule\r\nwhen\r\nTemperature is 39\r\nthen\r\nHasFever is true\r\nend"); Rule rule = parser.ParseRule(); Assert.IsNotNull(rule); Assert.IsTrue(rule.Conditions.Contains(new IsFact("Temperature", 39))); Assert.IsTrue(rule.Assertions.Contains(new IsFact("HasFever", true))); }
public void ParseRuleWithComparisonFact() { Parser parser = new Parser("rule\r\nwhen\r\nTemperatureLevel >= 38\r\nthen\r\nHasFever is true\r\nend\r\n"); Rule rule = parser.ParseRule(); Assert.IsNotNull(rule); Assert.IsTrue(rule.Conditions.Contains(new ComparisonFact("TemperatureLevel", Comparison.GreaterEqual, 38))); Assert.IsTrue(rule.Assertions.Contains(new IsFact("HasFever", true))); }
public void ParseSimpleRuleFile() { Parser parser = new Parser(new StreamReader("SimpleRule.txt")); Rule rule = parser.ParseRule(); Assert.IsNotNull(rule); Assert.IsTrue(rule.Conditions.Contains(new IsFact("Temperature", 39))); Assert.IsTrue(rule.Assertions.Contains(new IsFact("HasFever", true))); Assert.IsNull(parser.ParseRule()); }
public void RaiseWhenVerbIsANumber() { Parser parser = new Parser("rule\r\nwhen\r\na 1 b\r\nthen\r\na\r\nend"); MyAssert.Throws<LexerException>(() => parser.ParseRule(), "Unexpected '1'"); }
public void RaiseWhenUnknownVerb() { Parser parser = new Parser("rule\r\nwhen\r\na foo b"); MyAssert.Throws<LexerException>(() => parser.ParseRule(), "Unexpected 'foo'"); }
public void RaiseWhenUnexpectedValueInCondition() { Parser parser = new Parser("rule\r\nwhen\r\na is <="); MyAssert.Throws<LexerException>(() => parser.ParseRule(), "Unexpected '<='"); }
public void RaiseWhenNoWhenInRule() { Parser parser = new Parser("rule\r\n1 is a"); MyAssert.Throws<LexerException>(() => parser.ParseRule(), "Expected 'when'"); }
public void RaiseWhenTwoManyWordsInCondition() { Parser parser = new Parser("rule\r\nwhen\r\na is 48 c"); MyAssert.Throws<LexerException>(() => parser.ParseRule(), "Expected End of Line/Input"); }
public void RaiseWhenNoRule() { Parser parser = new Parser(new StringReader("foo")); MyAssert.Throws<LexerException>(() => parser.ParseRule(), "Expected 'rule'"); }
public void RaiseWhenNoValueInCondition() { Parser parser = new Parser("rule\r\nwhen\r\na is"); MyAssert.Throws<LexerException>(() => parser.ParseRule(), "Unexpected End of Input"); }
public void RaiseWhenNoNameAtStartOfCondition() { Parser parser = new Parser("rule\r\nwhen\r\n1 is a"); MyAssert.Throws<LexerException>(() => parser.ParseRule(), "Expected Name"); }
public void ParseTwoRulesFile() { Parser parser = new Parser(new StreamReader("TwoRules.txt")); IList<Rule> rules = parser.ParseRules(); Assert.IsNotNull(rules); Assert.AreEqual(2, rules.Count); Assert.IsNull(parser.ParseRules()); }
public void ParseSimpleRuleWithObjectVariable() { Parser parser = new Parser(new StreamReader("SimpleRuleWithObjectVariable.txt")); Rule rule = parser.ParseRule(); Assert.AreEqual(2, rule.Conditions.Count()); Assert.AreEqual(1, rule.Assertions.Count()); }
public void Setup() { this.world = new World(); this.hasfever = new IsFact("HasFever", true); Parser parser = new Parser(new StreamReader("TwoRules.txt")); foreach (var rule in parser.ParseRules()) this.world.AddRule(rule); }
private void AddRule(string filename) { Parser parser = new Parser(new StreamReader(filename)); Rule rule = parser.ParseRule(); this.world.AddRule(rule); }