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 AppendingMultipleStrings() { var builder = new ColoredMultistringBuilder(); builder.Append(new ColoredString[] { "Hello, ", "world" }); builder.ToString().Should().Be("Hello, world"); }
public void TestAppendingZeroCharsHasNoEffect() { var builder = new ColoredMultistringBuilder(); builder.Append(anyChar, 0); builder.ShouldBeEmpty(); }
public void TestAppendingBareStringYieldsColorlessMultistring() { var builder = new ColoredMultistringBuilder(); builder.Append(anyString); builder.ShouldProduce(new ColoredString(anyString, null, null)); }
public void TestRemovingAllCharsLeavesEmptyBuilder() { var builder = new ColoredMultistringBuilder(); builder.Append(anyArrayOfMultipleColoredStrings); builder.Remove(0, builder.Length); builder.ShouldBeEmpty(); }
public void TestInsertingAfterEndOfStringThrows() { var builder = new ColoredMultistringBuilder(); builder.Append(anyArrayOfMultipleColoredStrings); builder.Invoking(b => b.Insert(builder.Length + 1, anyChar)) .Should().Throw <ArgumentOutOfRangeException>(); }
public void TestRemovingZeroLengthPreservesBuilderContent() { var builder = new ColoredMultistringBuilder(); builder.Append(anyArrayOfMultipleColoredStrings); builder.Remove(0, 0); builder.ShouldProduce(anyArrayOfMultipleColoredStrings); }
public void TestTruncationToTooLongLengthThrows() { var builder = new ColoredMultistringBuilder(); builder.Append(anyArrayOfMultipleColoredStrings); Action truncate = () => builder.Truncate(builder.Length + 1); truncate.Should().Throw <ArgumentOutOfRangeException>(); }
public void TestTruncationToZeroLengthDropsContent() { var builder = new ColoredMultistringBuilder(); builder.Append(anyArrayOfMultipleColoredStrings); builder.Truncate(0); builder.ShouldBeEmpty(); }
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 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)); }
public void TestStringInsertionAtEndOfBuilder() { var builder = new ColoredMultistringBuilder(); builder.Append(anyArrayOfMultipleColoredStrings); builder.Insert(builder.Length, anyString); builder.ShouldProduce( anyArrayOfMultipleColoredStrings.Concat(new ColoredString[] { anyString })); }
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 TestAppendingMultistringAddsItsPieces() { var anyColoredStrings = anyArrayOfMultipleColoredStrings; var anyMultistring = new ColoredMultistring(anyColoredStrings); var builder = new ColoredMultistringBuilder(); builder.Append(anyMultistring); builder.ShouldProduce(anyMultistring.Content); }
public void TestAppendingMultiplePiecesInOneOperationYieldsSameAsMultipleAppends() { var anyStrings = anyArrayOfMultipleStrings; var mergedString = string.Join(string.Empty, anyStrings); var anyColoredStrings = anyArrayOfMultipleColoredStrings; var builder = new ColoredMultistringBuilder(); builder.Append(anyColoredStrings); builder.ShouldProduce(anyColoredStrings); }
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"); }
public void TestTruncationTrimsContentFromLastPiece() { var anyFirstCs = AnyColoredString("ab"); var anySecondCs = AnyColoredString("cde"); var builder = new ColoredMultistringBuilder(); builder.Append(new[] { anyFirstCs, anySecondCs }); builder.Truncate(3); builder.ShouldProduce( anyFirstCs, anySecondCs.WithContent("c")); }
private ParameterEntry GetEnumValueInfo(IArgumentValue value) { var syntaxBuilder = new ColoredMultistringBuilder(); if (_options.Arguments.ShortName == ArgumentShortNameHelpMode.IncludeWithLongName && !string.IsNullOrEmpty(value.ShortName)) { syntaxBuilder.Append(new ColoredString(value.ShortName, _options.Arguments?.ArgumentNameColor)); syntaxBuilder.Append(", "); } syntaxBuilder.Append(new ColoredString(value.DisplayName, _options.Arguments?.ArgumentNameColor)); var descBuilder = new ColoredMultistringBuilder(); if (!string.IsNullOrEmpty(value.Description)) { descBuilder.Append(value.Description); } if (_options.Arguments.ShortName == ArgumentShortNameHelpMode.AppendToDescription && !string.IsNullOrEmpty(value.ShortName)) { descBuilder.Append(" ["); descBuilder.Append(new ColoredString(Strings.UsageInfoShortForm, _options.Arguments.MetadataColor)); descBuilder.Append(" "); descBuilder.Append(new ColoredString(value.ShortName, _options.Arguments?.ArgumentNameColor)); descBuilder.Append("]"); } return(new ParameterEntry { Syntax = syntaxBuilder.ToMultistring(), Description = descBuilder.ToMultistring(), InlineEnumEntries = null }); }
private IEnumerable <IEnumerable <ColoredMultistring> > FormatParameterEntriesInOneColumn( IReadOnlyList <ParameterEntry> entries) => entries.Select(e => { var builder = new ColoredMultistringBuilder(); builder.Append(e.Syntax); if (!e.Description.IsEmpty()) { builder.Append(" - "); builder.Append(e.Description); } IEnumerable <ColoredMultistring> composed = new[] { builder.ToMultistring() }; if (e.InlineEnumEntries != null) { if (_options.Arguments.BlankLinesBetweenArguments > 0) { var insertion = new[] { new ColoredMultistring( Enumerable.Repeat(new ColoredString(Environment.NewLine), _options.Arguments.BlankLinesBetweenArguments)) }; composed = composed.Concat(insertion); } // TODO: Let section hanging indent override. var indent = new string(' ', _options.SectionEntryHangingIndentWidth); composed = composed.Concat(e.InlineEnumEntries.Select(iee => indent + iee)); } return(composed); });
public void TestCopyToExtractsCorrectCharacters() { var builder = new ColoredMultistringBuilder(); builder.Append(anyArrayOfMultipleColoredStrings); char[] buffer = new char[8]; for (var i = 0; i < buffer.Length; ++i) { buffer[i] = ' '; } builder.CopyTo(1, buffer, 3, 5); buffer.Should().Equal(new[] { ' ', ' ', ' ', 'e', 'l', 'l', 'o', ':', }); }
public void TestStringInsertionInMiddleOfPieceWithDifferentColor() { var cs = AnyColoredString("abc"); var builder = new ColoredMultistringBuilder(); builder.Append(cs); builder.Insert(1, "de"); builder.ShouldProduce( cs.Transform(_ => "a"), "de", cs.Transform(_ => "bc")); }
public void TestCharInsertionInMiddleOfPieceWithDifferentColor() { var cs = AnyColoredString("abc"); var builder = new ColoredMultistringBuilder(); builder.Append(cs); builder.Insert(1, 'x'); builder.ShouldProduce( cs.WithContent("a"), new ColoredString("x"), cs.WithContent("bc")); }
public void TestRemoveThrowsOnNegativeIndexOrCount() { const int anyNegativeIndex = -1; const int anyCount = 1; const int anyValidStartIndex = 0; var builder = new ColoredMultistringBuilder(); builder.Append(anyArrayOfMultipleColoredStrings); builder.Invoking(b => b.Remove(anyNegativeIndex, anyCount)) .Should().Throw <ArgumentOutOfRangeException>(); builder.Invoking(b => b.Remove(anyValidStartIndex, anyNegativeIndex)) .Should().Throw <ArgumentOutOfRangeException>(); }
public void TestIterativelyAppendingMultiplePiecesWithSameColorMergesStrings() { var anyStrings = anyArrayOfMultipleStrings; var mergedString = string.Join(string.Empty, anyStrings); var anyColoredStrings = anyArrayOfMultipleColoredStrings; var builder = new ColoredMultistringBuilder(); foreach (var cs in anyColoredStrings) { builder.Append(cs); } builder.Length.Should().Be(mergedString.Length); builder.ToString().Should().Be(mergedString); builder.ShouldProduce(anyColoredStrings); }