public void TestInsertingAtANegativeIndexThrows()
        {
            var builder = new ColoredMultistringBuilder();

            builder.Invoking(b => b.Insert(Any.NegativeInt(), 'x'))
            .Should().Throw <ArgumentOutOfRangeException>();
        }
        public void TestAppendingBareStringYieldsColorlessMultistring()
        {
            var builder = new ColoredMultistringBuilder();

            builder.Append(anyString);

            builder.ShouldProduce(new ColoredString(anyString, null, null));
        }
        public void TestEmptyBuilderYieldsEmptyMultistring()
        {
            var builder = new ColoredMultistringBuilder();
            var ms      = builder.ToMultistring();

            ms.Should().NotBeNull();
            ms.IsEmpty().Should().BeTrue();
        }
Example #4
0
        public void AppendingMultipleStrings()
        {
            var builder = new ColoredMultistringBuilder();

            builder.Append(new ColoredString[] { "Hello, ", "world" });

            builder.ToString().Should().Be("Hello, world");
        }
        public void TestClearingEmptyBuilderHasNoEffect()
        {
            var builder = new ColoredMultistringBuilder();

            builder.Clear();

            builder.ShouldBeEmpty();
        }
        public void TestThatAppendingLineInsertsNewLine()
        {
            var builder = new ColoredMultistringBuilder();

            builder.AppendLine(Enumerable.Empty <ColoredMultistring>());

            builder.ShouldProduce(new ColoredString(Environment.NewLine));
        }
Example #7
0
        public void AppendingMultipleStringsWithLines()
        {
            var builder = new ColoredMultistringBuilder();

            builder.AppendLine(new ColoredString[] { "Hello, ", "world" });

            builder.ToString().Should().Be("Hello, world" + Environment.NewLine);
        }
        public void TestAppendingZeroCharsHasNoEffect()
        {
            var builder = new ColoredMultistringBuilder();

            builder.Append(anyChar, 0);

            builder.ShouldBeEmpty();
        }
        public void TestAppendingNegativeNumberOfCharsThrows()
        {
            const int anyNegativeCount = -1;

            var builder = new ColoredMultistringBuilder();

            builder.Invoking(b => b.Append(anyChar, anyNegativeCount))
            .Should().Throw <ArgumentOutOfRangeException>();
        }
        public void TestInsertingAfterEndOfStringThrows()
        {
            var builder = new ColoredMultistringBuilder();

            builder.Append(anyArrayOfMultipleColoredStrings);

            builder.Invoking(b => b.Insert(builder.Length + 1, anyChar))
            .Should().Throw <ArgumentOutOfRangeException>();
        }
Example #11
0
        public void AppendingMultipleMultistringsWithLines()
        {
            var builder = new ColoredMultistringBuilder();

            builder.AppendLine("Foo");
            builder.AppendLine(CreateCMS(", bar", ", baz!"));

            builder.ToString().Should().Be("Foo" + Environment.NewLine + ", bar, baz!" + Environment.NewLine);
        }
Example #12
0
        public void SimpleUsage()
        {
            var builder = new ColoredMultistringBuilder();

            builder.Append("Hello");
            builder.Append(", world");

            builder.ToString().Should().Be("Hello, world");
        }
Example #13
0
        public void AppendingMultipleMultistrings()
        {
            var builder = new ColoredMultistringBuilder();

            builder.Append("Foo");
            builder.Append(CreateCMS(", bar", ", baz!"));

            builder.ToString().Should().Be("Foo, bar, baz!");
        }
        public void TestRemovingAllCharsLeavesEmptyBuilder()
        {
            var builder = new ColoredMultistringBuilder();

            builder.Append(anyArrayOfMultipleColoredStrings);

            builder.Remove(0, builder.Length);
            builder.ShouldBeEmpty();
        }
        public void TestTruncationToZeroLengthDropsContent()
        {
            var builder = new ColoredMultistringBuilder();

            builder.Append(anyArrayOfMultipleColoredStrings);

            builder.Truncate(0);

            builder.ShouldBeEmpty();
        }
        public void TestTruncationToTooLongLengthThrows()
        {
            var builder = new ColoredMultistringBuilder();

            builder.Append(anyArrayOfMultipleColoredStrings);

            Action truncate = () => builder.Truncate(builder.Length + 1);

            truncate.Should().Throw <ArgumentOutOfRangeException>();
        }
        public void TestIndexSetOperationThrowsOnNegativeIndex()
        {
            const int anyNegativeIndex = -1;

            var builder = new ColoredMultistringBuilder();

            Action indexOp = () => { builder[anyNegativeIndex] = anyChar; };

            indexOp.Should().Throw <ArgumentOutOfRangeException>();
        }
        public void TestClearingNonEmptyBuilderDropsAllContent()
        {
            var builder = new ColoredMultistringBuilder();

            builder.Append(anyArrayOfMultipleColoredStrings);

            builder.Clear();

            builder.ShouldBeEmpty();
        }
        public void TestAppendingMultipleCharsAppendsSingleColorlessString()
        {
            const int anyCharCount = 3;

            var builder = new ColoredMultistringBuilder();

            builder.Append(anyChar, anyCharCount);

            builder.ShouldProduce(new ColoredString(new string(anyChar, anyCharCount)));
        }
        public void TestRemovingZeroLengthPreservesBuilderContent()
        {
            var builder = new ColoredMultistringBuilder();

            builder.Append(anyArrayOfMultipleColoredStrings);

            builder.Remove(0, 0);

            builder.ShouldProduce(anyArrayOfMultipleColoredStrings);
        }
        public void TestAppendingMultistringAddsItsPieces()
        {
            var anyColoredStrings = anyArrayOfMultipleColoredStrings;
            var anyMultistring    = new ColoredMultistring(anyColoredStrings);

            var builder = new ColoredMultistringBuilder();

            builder.Append(anyMultistring);

            builder.ShouldProduce(anyMultistring.Content);
        }
        public void TestCopyToThrowsWhenOutputBufferTooSmall()
        {
            var builder = new ColoredMultistringBuilder();

            builder.Append(anyArrayOfMultipleColoredStrings);

            char[] buffer = new char[1];

            builder.Invoking(b => b.CopyTo(0, buffer, 0, builder.Length))
            .Should().Throw <ArgumentOutOfRangeException>();
        }
        public void TestStringInsertionAtStartOfBuilder()
        {
            var builder = new ColoredMultistringBuilder();

            builder.Append(anyArrayOfMultipleColoredStrings);

            builder.Insert(0, anyString);

            builder.ShouldProduce(
                new ColoredString[] { anyString }.Concat(anyArrayOfMultipleColoredStrings));
        }
Example #24
0
        private ColoredMultistring Format(IEnumerable <Section> sections)
        {
            // Start composing the content.
            var builder = new ColoredMultistringBuilder();

            // Generate and sequence sections.
            var firstSection = true;

            foreach (var section in sections)
            {
                if (!firstSection)
                {
                    for (var i = 0; i < _options.BlankLinesBetweenSections; ++i)
                    {
                        builder.AppendLine();
                    }
                }

                // Add header.
                if ((_options.SectionHeaders?.Include ?? false) && !string.IsNullOrEmpty(section.Name))
                {
                    if (_options.UseColor)
                    {
                        builder.AppendLine(new ColoredString(section.Name, _options.SectionHeaders.Color));
                    }
                    else
                    {
                        builder.AppendLine(section.Name);
                    }
                }

                // Add content.
                foreach (var entry in section.Entries)
                {
                    var text = (ColoredMultistring)entry.Wrap(
                        _options.MaxWidth.GetValueOrDefault(ArgumentSetHelpOptions.DefaultMaxWidth),
                        blockIndent: section.BodyIndentWidth,
                        hangingIndent: section.HangingIndentWidth);

                    if (_options.UseColor)
                    {
                        builder.AppendLine(text);
                    }
                    else
                    {
                        builder.AppendLine(text.ToString());
                    }
                }

                firstSection = false;
            }

            return(builder.ToMultistring());
        }
        public void TestRemovingAcrossPieces()
        {
            var builder = new ColoredMultistringBuilder();

            builder.Append(anyArrayOfMultipleColoredStrings);

            builder.Remove(1, builder.Length - 2);
            builder.ShouldProduce(
                anyArrayOfMultipleColoredStrings[0].Substring(0, 1),
                anyArrayOfMultipleColoredStrings.Last().Substring(anyArrayOfMultipleColoredStrings.Last().Length - 1));
        }
        public void TestRemoveThrowsOnTooLargeCount()
        {
            const int anyValidStartIndex = 0;

            var builder = new ColoredMultistringBuilder();

            builder.Append(anyArrayOfMultipleColoredStrings);

            builder.Invoking(b => b.Remove(anyValidStartIndex, builder.Length + 1))
            .Should().Throw <ArgumentOutOfRangeException>();
        }
        public void TestStringInsertionAtEndOfBuilder()
        {
            var builder = new ColoredMultistringBuilder();

            builder.Append(anyArrayOfMultipleColoredStrings);

            builder.Insert(builder.Length, anyString);

            builder.ShouldProduce(
                anyArrayOfMultipleColoredStrings.Concat(new ColoredString[] { anyString }));
        }
        public void TestTruncationThrowsOnNegativeLength()
        {
            const int anyNegativeLength = -1;

            var builder = new ColoredMultistringBuilder();

            builder.Append(anyArrayOfMultipleColoredStrings);

            Action truncate = () => builder.Truncate(anyNegativeLength);

            truncate.Should().Throw <ArgumentOutOfRangeException>();
        }
        public void TestIndexSetOperationThrowsOnTooLargeIndex()
        {
            var anyColoredString = AnyColoredString();

            var builder = new ColoredMultistringBuilder();

            builder.Append(anyColoredString);

            Action readOp = () => { builder[anyColoredString.Length] = anyChar; };

            readOp.Should().Throw <ArgumentOutOfRangeException>();
        }
        public void TestStringInsertionInMiddleOfPieceWithSameColor()
        {
            var cs = new ColoredString("abc");

            var builder = new ColoredMultistringBuilder();

            builder.Append(cs);

            builder.Insert(1, "de");

            builder.ShouldProduce("adebc");
        }