public void TestLoadStartingRule() { IProjectNode p = ProjectSerializer.LoadString("StartingRule root 200\r\nStartingRule root2\r\nStartingRule root3", null, null); Assert.AreEqual(3, p.Children.Count); IProjectNode sr = p.Children[0]; Assert.AreEqual(ProjectNodeType.StartingRuleDeclaration, sr.NodeType); StartingRuleNode srn = sr as StartingRuleNode; Assert.AreEqual("root", srn.Name); Assert.AreEqual(200, srn.Amount); sr = p.Children[1]; Assert.AreEqual(ProjectNodeType.StartingRuleDeclaration, sr.NodeType); srn = sr as StartingRuleNode; Assert.AreEqual("root2", srn.Name); Assert.AreEqual(100, srn.Amount); sr = p.Children[2]; Assert.AreEqual(ProjectNodeType.StartingRuleDeclaration, sr.NodeType); srn = sr as StartingRuleNode; Assert.AreEqual("root3", srn.Name); Assert.AreEqual(100, srn.Amount); }
public Project(ProjectNode root) { m_Random = root.Serializer.Random; m_Rules = new RuleCollection(m_Random); foreach (IProjectNode node in root.Children) { switch (node.NodeType) { case ProjectNodeType.TokenSetDeclaration: this.TokenSets.Add(new TokenSet(node, m_Random)); break; case ProjectNodeType.RuleDeclaration: this.Rules.Add(new Rule(node as RuleNode)); break; case ProjectNodeType.StartingRuleDeclaration: StartingRuleNode srn = node as StartingRuleNode; this.StartRules.Add(srn.Name, srn.Amount); break; case ProjectNodeType.ColumnDeclaration: ColumnNode cn = node as ColumnNode; this.Columns.Add(cn.Title, cn.Expression); break; default: break; } } foreach (Rule r in this.Rules) { foreach (Whee.WordBuilder.Model.Commands.CommandBase c in r.Commands) { c.CheckSanity(this, root.Serializer); } } }