public void CreateFirstChild(string s, string expected)
        {
            HierarchicalNumber parsed = new HierarchicalNumber(s);

            HierarchicalNumber fistChild = parsed.CreateFirstChild();

            Assert.Equal(expected, fistChild.ToString());
        }
        public void AddNextSibling(string s, string expected)
        {
            var parsed = new HierarchicalNumber(s);

            var nextSibling = parsed.CreateNextSibling();

            Assert.Equal(expected, nextSibling.ToString());
        }
        public void ParseNegativeTests(string s)
        {
            HierarchicalNumber result;

            bool didParse = HierarchicalNumber.TryParse(s, out result);

            Assert.False(didParse);
        }
        private static void NumberStatements(HierarchicalNumber startingNumber, IEnumerable <IStatement> statements)
        {
            HierarchicalNumber currentNumber = startingNumber;

            foreach (IStatement statement in statements)
            {
                statement.Number = currentNumber.ToString();

                HierarchicalNumber currentBlockNumber = currentNumber.CreateFirstChild();

                foreach (IBlock block in statement.Blocks)
                {
                    block.Number = currentBlockNumber.ToString();

                    NumberStatements(currentBlockNumber.CreateFirstChild(), block.Elements.OfType <IStatement>());

                    currentBlockNumber = currentBlockNumber.CreateNextSibling();
                }

                currentNumber = currentNumber.CreateNextSibling();
            }
        }
        public void TestEmptyConstructor()
        {
            HierarchicalNumber created = new HierarchicalNumber();

            Assert.Equal("1", created.ToString());
        }
        public void ParseTests(string s, int[] components)
        {
            HierarchicalNumber parsed = new HierarchicalNumber(s);

            Assert.Equal(components, parsed.ToArray());
        }