public static void ToStringMemoryOverFullStringReturnsOriginal() { string original = MemoryTestHelpers.BuildString(10, 42); ReadOnlyMemory <char> readOnlyMemory = original.AsMemory(); Memory <char> memory = MemoryMarshal.AsMemory(readOnlyMemory); string returnedString = memory.ToString(); string returnedStringUsingSlice = memory.Slice(0, original.Length).ToString(); string subString1 = memory.Slice(1).ToString(); string subString2 = memory.Slice(0, 2).ToString(); string subString3 = memory.Slice(1, 2).ToString(); Assert.Equal(original, returnedString); Assert.Equal(original, returnedStringUsingSlice); Assert.Equal(original.Substring(1), subString1); Assert.Equal(original.Substring(0, 2), subString2); Assert.Equal(original.Substring(1, 2), subString3); Assert.Same(original, returnedString); Assert.Same(original, returnedStringUsingSlice); Assert.NotSame(original, subString1); Assert.NotSame(original, subString2); Assert.NotSame(original, subString3); Assert.NotSame(subString1, subString2); Assert.NotSame(subString1, subString3); Assert.NotSame(subString2, subString3); }
public static void ToStringSpanOverSubstringDoesNotReturnOriginal() { string original = MemoryTestHelpers.BuildString(10, 42); ReadOnlySpan <char> span = original.AsSpan(); string returnedString = span.ToString(); string returnedStringUsingSlice = span.Slice(0, original.Length).ToString(); string subString1 = span.Slice(1).ToString(); string subString2 = span.Slice(0, 2).ToString(); string subString3 = span.Slice(1, 2).ToString(); Assert.Equal(original, returnedString); Assert.Equal(original, returnedStringUsingSlice); Assert.Equal(original.Substring(1), subString1); Assert.Equal(original.Substring(0, 2), subString2); Assert.Equal(original.Substring(1, 2), subString3); Assert.NotSame(original, subString1); Assert.NotSame(original, subString2); Assert.NotSame(original, subString3); Assert.NotSame(subString1, subString2); Assert.NotSame(subString1, subString3); Assert.NotSame(subString2, subString3); }