Пример #1
0
        static TextWriter Wrap(TextWriter w, int indent = 2, int pageWidth = 80)
        {
            var wrap = new ActionTextWriter(line =>
            {
                var words  = Regex.Split(line, @"\s+");
                int pos    = 0;
                bool first = true;
                foreach (var word in words)
                {
                    if (first)
                    {
                        first = false;
                    }
                    else if (pos == 0)
                    {
                        w.Write(new string(' ', indent));
                        pos = indent;
                    }
                    w.Write(word); w.Write(' ');
                    pos += word.Length + 1;
                    if (pos > pageWidth)
                    {
                        w.WriteLine();
                        pos = 0;
                    }
                }
                if (pos != 0)
                {
                    w.WriteLine();
                }
            });

            return(wrap);
        }
Пример #2
0
        public void WriteGivenStringPerformsActionManyTimes()
        {
            string[] originals        = { "First", "Second", "Third" };
            var      expected         = string.Join(Environment.NewLine, originals);
            var      actual           = string.Empty;
            var      actionTextWriter = new ActionTextWriter(value => actual += value);

            foreach (var original in originals)
            {
                actionTextWriter.WriteLine(original);
            }

            Assert.AreEqual(expected + Environment.NewLine, actual);
        }