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);
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }