public void AppendFormatted_String_ICustomFormatter() { var provider = new ConcatFormatter(); var expected = new StringBuilder(); var actual = new StringBuilder(); StringBuilder.AppendInterpolatedStringHandler iab = new StringBuilder.AppendInterpolatedStringHandler(0, 0, actual, provider); foreach (string s in new[] { null, "", "a" }) { // string expected.AppendFormat(provider, "{0}", s); iab.AppendFormatted(s); // string, format expected.AppendFormat(provider, "{0:X2}", s); iab.AppendFormatted(s, "X2"); // string, alignment expected.AppendFormat(provider, "{0,3}", s); iab.AppendFormatted(s, 3); // string, alignment, format expected.AppendFormat(provider, "{0,-3:X2}", s); iab.AppendFormatted(s, -3, "X2"); } actual.Append(provider, ref iab); Assert.Equal(expected.ToString(), actual.ToString()); }
public void AppendFormatted_String_ICustomFormatter() { var provider = new ConcatFormatter(); var expected = new StringBuilder(); InterpolatedStringBuilder actual = InterpolatedStringBuilder.Create(0, 0, provider); foreach (string s in new[] { null, "", "a" }) { // string expected.AppendFormat(provider, "{0}", s); actual.AppendFormatted(s); // string, format expected.AppendFormat(provider, "{0:X2}", s); actual.AppendFormatted(s, "X2"); // string, alignment expected.AppendFormat(provider, "{0,3}", s); actual.AppendFormatted(s, 3); // string, alignment, format expected.AppendFormat(provider, "{0,-3:X2}", s); actual.AppendFormatted(s, -3, "X2"); } Assert.Equal(expected.ToString(), actual.ToStringAndClear()); }
public void AppendFormatted_String_ICustomFormatter() { var provider = new ConcatFormatter(); var expected = new StringBuilder(); MemoryExtensions.TryWriteInterpolatedStringHandler actual = new MemoryExtensions.TryWriteInterpolatedStringHandler(0, 0, _largeBuffer, provider, out _); foreach (string s in new[] { null, "", "a" }) { // string expected.AppendFormat(provider, "{0}", s); actual.AppendFormatted(s); // string, format expected.AppendFormat(provider, "{0:X2}", s); actual.AppendFormatted(s, "X2"); // string, alignment expected.AppendFormat(provider, "{0,3}", s); actual.AppendFormatted(s, 3); // string, alignment, format expected.AppendFormat(provider, "{0,-3:X2}", s); actual.AppendFormatted(s, -3, "X2"); } Assert.True(MemoryExtensions.TryWrite(_largeBuffer, ref actual, out int charsWritten)); Assert.Equal(expected.ToString(), _largeBuffer.AsSpan(0, charsWritten).ToString()); }
public void AppendFormatted_ValueTypes_ICustomFormatter() { var provider = new ConcatFormatter(); void Test <T>(T t) { void AssertTss(T tss, string format) { Assert.Equal(format, ((IHasToStringState)tss).ToStringState.LastFormat); Assert.Same(provider, ((IHasToStringState)tss).ToStringState.LastProvider); Assert.Equal(ToStringMode.ICustomFormatterFormat, ((IHasToStringState)tss).ToStringState.ToStringMode); } var expected = new StringBuilder(); var actual = new StringBuilder(); StringBuilder.AppendInterpolatedStringHandler iab = new StringBuilder.AppendInterpolatedStringHandler(0, 0, actual, provider); // struct expected.AppendFormat(provider, "{0}", t); iab.AppendFormatted(t); AssertTss(t, null); // struct, format expected.AppendFormat(provider, "{0:X2}", t); iab.AppendFormatted(t, "X2"); AssertTss(t, "X2"); // struct, alignment expected.AppendFormat(provider, "{0,3}", t); iab.AppendFormatted(t, 3); AssertTss(t, null); // struct, alignment, format expected.AppendFormat(provider, "{0,-3:X2}", t); iab.AppendFormatted(t, -3, "X2"); AssertTss(t, "X2"); Assert.Equal(expected.ToString(), actual.ToString()); actual.Append(ref iab); } Test(new FormattableInt32Wrapper(42)); Test(new SpanFormattableInt32Wrapper(84)); Test((FormattableInt32Wrapper?)new FormattableInt32Wrapper(42)); Test((SpanFormattableInt32Wrapper?)new SpanFormattableInt32Wrapper(84)); }
public void AppendFormatted_ReferenceTypes_ICustomFormatter() { var provider = new ConcatFormatter(); var expected = new StringBuilder(); var actual = new StringBuilder(); StringBuilder.AppendInterpolatedStringHandler iab = new StringBuilder.AppendInterpolatedStringHandler(0, 0, actual, provider); foreach (string s in new[] { null, "", "a" }) { foreach (IHasToStringState tss in new IHasToStringState[] { new FormattableStringWrapper(s), new SpanFormattableStringWrapper(s) }) { void AssertTss(IHasToStringState tss, string format) { Assert.Equal(format, tss.ToStringState.LastFormat); Assert.Same(provider, tss.ToStringState.LastProvider); Assert.Equal(ToStringMode.ICustomFormatterFormat, tss.ToStringState.ToStringMode); } // object expected.AppendFormat(provider, "{0}", tss); iab.AppendFormatted(tss); AssertTss(tss, null); // object, format expected.AppendFormat(provider, "{0:X2}", tss); iab.AppendFormatted(tss, "X2"); AssertTss(tss, "X2"); // object, alignment expected.AppendFormat(provider, "{0,3}", tss); iab.AppendFormatted(tss, 3); AssertTss(tss, null); // object, alignment, format expected.AppendFormat(provider, "{0,-3:X2}", tss); iab.AppendFormatted(tss, -3, "X2"); AssertTss(tss, "X2"); } } actual.Append(provider, ref iab); Assert.Equal(expected.ToString(), actual.ToString()); }
public void AppendFormatted_ValueTypes_ICustomFormatter() { var provider = new ConcatFormatter(); void Test <T>(T t) { void AssertTss(T tss, string format) { Assert.Equal(format, ((IHasToStringState)tss).ToStringState.LastFormat); Assert.Same(provider, ((IHasToStringState)tss).ToStringState.LastProvider); Assert.Equal(ToStringMode.ICustomFormatterFormat, ((IHasToStringState)tss).ToStringState.ToStringMode); } var expected = new StringBuilder(); MemoryExtensions.TryWriteInterpolatedStringHandler actual = new MemoryExtensions.TryWriteInterpolatedStringHandler(0, 0, _largeBuffer, provider, out _); // struct expected.AppendFormat(provider, "{0}", t); actual.AppendFormatted(t); AssertTss(t, null); // struct, format expected.AppendFormat(provider, "{0:X2}", t); actual.AppendFormatted(t, "X2"); AssertTss(t, "X2"); // struct, alignment expected.AppendFormat(provider, "{0,3}", t); actual.AppendFormatted(t, 3); AssertTss(t, null); // struct, alignment, format expected.AppendFormat(provider, "{0,-3:X2}", t); actual.AppendFormatted(t, -3, "X2"); AssertTss(t, "X2"); Assert.True(MemoryExtensions.TryWrite(_largeBuffer, ref actual, out int charsWritten)); Assert.Equal(expected.ToString(), _largeBuffer.AsSpan(0, charsWritten).ToString()); } Test(new FormattableInt32Wrapper(42)); Test(new SpanFormattableInt32Wrapper(84)); Test((FormattableInt32Wrapper?)new FormattableInt32Wrapper(42)); Test((SpanFormattableInt32Wrapper?)new SpanFormattableInt32Wrapper(84)); }
public void AppendFormatted_ReferenceTypes_ICustomFormatter() { var provider = new ConcatFormatter(); var expected = new StringBuilder(); MemoryExtensions.TryWriteInterpolatedStringHandler actual = new MemoryExtensions.TryWriteInterpolatedStringHandler(0, 0, _largeBuffer, provider, out _); foreach (string s in new[] { null, "", "a" }) { foreach (IHasToStringState tss in new IHasToStringState[] { new FormattableStringWrapper(s), new SpanFormattableStringWrapper(s) }) { void AssertTss(IHasToStringState tss, string format) { Assert.Equal(format, tss.ToStringState.LastFormat); Assert.Same(provider, tss.ToStringState.LastProvider); Assert.Equal(ToStringMode.ICustomFormatterFormat, tss.ToStringState.ToStringMode); } // object expected.AppendFormat(provider, "{0}", tss); actual.AppendFormatted(tss); AssertTss(tss, null); // object, format expected.AppendFormat(provider, "{0:X2}", tss); actual.AppendFormatted(tss, "X2"); AssertTss(tss, "X2"); // object, alignment expected.AppendFormat(provider, "{0,3}", tss); actual.AppendFormatted(tss, 3); AssertTss(tss, null); // object, alignment, format expected.AppendFormat(provider, "{0,-3:X2}", tss); actual.AppendFormatted(tss, -3, "X2"); AssertTss(tss, "X2"); } } Assert.True(MemoryExtensions.TryWrite(_largeBuffer, ref actual, out int charsWritten)); Assert.Equal(expected.ToString(), _largeBuffer.AsSpan(0, charsWritten).ToString()); }