public void AppendFormatted_BufferTooSmall_CustomFormatter() { var buffer = new char[100]; var provider = new ConstFormatter(" "); { MemoryExtensions.TryWriteInterpolatedStringHandler b = new MemoryExtensions.TryWriteInterpolatedStringHandler(0, 0, buffer.AsSpan(0, 0), provider, out bool shouldAppend); Assert.True(shouldAppend); // don't use custom formatter Assert.True(b.AppendLiteral("")); Assert.True(b.AppendFormatted("".AsSpan())); Assert.True(b.AppendFormatted("".AsSpan(), alignment: 0, format: "X2")); // do use custom formatter Assert.False(b.AppendFormatted((object)"", alignment: 0, format: "X2")); Assert.False(b.AppendFormatted(null)); Assert.False(b.AppendFormatted("")); Assert.False(b.AppendFormatted("", alignment: 0, format: "X2")); Assert.False(b.AppendFormatted <string>("")); Assert.False(b.AppendFormatted <string>("", alignment: 0)); Assert.False(b.AppendFormatted <string>("", format: "X2")); Assert.False(b.AppendFormatted <string>("", alignment: 0, format: "X2")); Assert.False(MemoryExtensions.TryWrite(buffer.AsSpan(0, 0), ref b, out int charsWritten)); Assert.Equal(0, charsWritten); } }
public void AppendFormatted_BufferTooSmall(int bufferLength) { var buffer = new char[bufferLength]; for (int i = 0; i <= 29; i++) { MemoryExtensions.TryWriteInterpolatedStringHandler b = new MemoryExtensions.TryWriteInterpolatedStringHandler(0, 0, buffer, out bool shouldAppend); Assert.True(shouldAppend); Assert.True(b.AppendLiteral(new string('s', bufferLength))); bool result = i switch { 0 => b.AppendLiteral(" "), 1 => b.AppendFormatted((object)" ", alignment: 0, format: "X2"), 2 => b.AppendFormatted(" "), 3 => b.AppendFormatted(" ", alignment: 0, format: "X2"), 4 => b.AppendFormatted <string>(" "), 5 => b.AppendFormatted <string>(" ", alignment: 0), 6 => b.AppendFormatted <string>(" ", format: "X2"), 7 => b.AppendFormatted <string>(" ", alignment: 0, format: "X2"), 8 => b.AppendFormatted(" ".AsSpan()), 9 => b.AppendFormatted(" ".AsSpan(), alignment: 0, format: "X2"), 10 => b.AppendFormatted(new FormattableStringWrapper(" ")), 11 => b.AppendFormatted(new FormattableStringWrapper(" "), alignment: 0), 12 => b.AppendFormatted(new FormattableStringWrapper(" "), format: "X2"), 13 => b.AppendFormatted(new FormattableStringWrapper(" "), alignment: 0, format: "X2"), 14 => b.AppendFormatted(new SpanFormattableStringWrapper(" ")), 15 => b.AppendFormatted(new SpanFormattableStringWrapper(" "), alignment: 0), 16 => b.AppendFormatted(new SpanFormattableStringWrapper(" "), format: "X2"), 17 => b.AppendFormatted(new SpanFormattableStringWrapper(" "), alignment: 0, format: "X2"), 18 => b.AppendFormatted(new FormattableInt32Wrapper(1)), 19 => b.AppendFormatted(new FormattableInt32Wrapper(1), alignment: 0), 20 => b.AppendFormatted(new FormattableInt32Wrapper(1), format: "X2"), 21 => b.AppendFormatted(new FormattableInt32Wrapper(1), alignment: 0, format: "X2"), 22 => b.AppendFormatted(new SpanFormattableInt32Wrapper(1)), 23 => b.AppendFormatted(new SpanFormattableInt32Wrapper(1), alignment: 0), 24 => b.AppendFormatted(new SpanFormattableInt32Wrapper(1), format: "X2"), 25 => b.AppendFormatted(new SpanFormattableInt32Wrapper(1), alignment: 0, format: "X2"), 26 => b.AppendFormatted <string>("", alignment: 1), 27 => b.AppendFormatted <string>("", alignment: -1), 28 => b.AppendFormatted <string>(" ", alignment: 1, format: "X2"), 29 => b.AppendFormatted <string>(" ", alignment: -1, format: "X2"), _ => throw new Exception(), }; Assert.False(result); Assert.False(MemoryExtensions.TryWrite(buffer.AsSpan(0, 0), ref b, out int charsWritten)); Assert.Equal(0, charsWritten); } }
public void AppendFormatted_EmptyBuffer_ZeroLengthWritesSuccessful() { var buffer = new char[100]; MemoryExtensions.TryWriteInterpolatedStringHandler b = new MemoryExtensions.TryWriteInterpolatedStringHandler(0, 0, buffer.AsSpan(0, 0), out bool shouldAppend); Assert.True(shouldAppend); Assert.True(b.AppendLiteral("")); Assert.True(b.AppendFormatted((object)"", alignment: 0, format: "X2")); Assert.True(b.AppendFormatted(null)); Assert.True(b.AppendFormatted("")); Assert.True(b.AppendFormatted("", alignment: 0, format: "X2")); Assert.True(b.AppendFormatted <string>("")); Assert.True(b.AppendFormatted <string>("", alignment: 0)); Assert.True(b.AppendFormatted <string>("", format: "X2")); Assert.True(b.AppendFormatted <string>("", alignment: 0, format: "X2")); Assert.True(b.AppendFormatted("".AsSpan())); Assert.True(b.AppendFormatted("".AsSpan(), alignment: 0, format: "X2")); Assert.True(MemoryExtensions.TryWrite(buffer.AsSpan(0, 0), ref b, out int charsWritten)); Assert.Equal(0, charsWritten); }