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(); }
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)); }
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>(); }
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); }
public void SimpleUsage() { var builder = new ColoredMultistringBuilder(); builder.Append("Hello"); builder.Append(", world"); builder.ToString().Should().Be("Hello, world"); }
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)); }
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"); }