public string BuildFilenameWithStringCreate(DataContext dataContext) { var length = DateFormat.Length + dataContext.Title.Length + 1 + // includes separator dataContext.Key.Length + Suffix.Length; return(string.Create(length, dataContext, (span, state) => { var position = 0; state.EventDateUtc.TryFormat(span, out var bytesWritten, DateFormatSpan, CultureInfo.InvariantCulture); position += bytesWritten; MemoryExtensions.ToUpperInvariant(state.Title, span.Slice(position)); position += state.Title.Length; span[position++] = Separator; state.Key.AsSpan().CopyTo(span.Slice(position)); position += state.Key.Length; SuffixSpan.CopyTo(span.Slice(position)); }));
public static IEnumerable <object[]> MemoryExtensionsToUpperLowerOverlapping() { // full overlap, overlap in the middle, overlap at start, overlap at the end yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => ((ReadOnlySpan <char>)buffer).ToLower(buffer, null) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => ((ReadOnlySpan <char>)buffer).ToLower(buffer.Slice(1, 1), null) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => ((ReadOnlySpan <char>)buffer).ToLower(buffer.Slice(0, 1), null) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => ((ReadOnlySpan <char>)buffer).ToLower(buffer.Slice(2, 1), null) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => MemoryExtensions.ToLower(buffer, buffer, null) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => MemoryExtensions.ToLower(buffer, buffer.Slice(1, 1), null) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => MemoryExtensions.ToLower(buffer, buffer.Slice(0, 1), null) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => MemoryExtensions.ToLower(buffer, buffer.Slice(2, 1), null) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => ((ReadOnlySpan <char>)buffer).ToLowerInvariant(buffer) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => ((ReadOnlySpan <char>)buffer).ToLowerInvariant(buffer.Slice(1, 1)) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => ((ReadOnlySpan <char>)buffer).ToLowerInvariant(buffer.Slice(0, 1)) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => ((ReadOnlySpan <char>)buffer).ToLowerInvariant(buffer.Slice(2, 1)) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => MemoryExtensions.ToLowerInvariant(buffer, buffer) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => MemoryExtensions.ToLowerInvariant(buffer, buffer.Slice(1, 1)) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => MemoryExtensions.ToLowerInvariant(buffer, buffer.Slice(0, 1)) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => MemoryExtensions.ToLowerInvariant(buffer, buffer.Slice(2, 1)) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => ((ReadOnlySpan <char>)buffer).ToUpper(buffer, null) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => ((ReadOnlySpan <char>)buffer).ToUpper(buffer.Slice(1, 1), null) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => ((ReadOnlySpan <char>)buffer).ToUpper(buffer.Slice(0, 1), null) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => ((ReadOnlySpan <char>)buffer).ToUpper(buffer.Slice(2, 1), null) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => MemoryExtensions.ToUpper(buffer, buffer, null) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => MemoryExtensions.ToUpper(buffer, buffer.Slice(1, 1), null) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => MemoryExtensions.ToUpper(buffer, buffer.Slice(0, 1), null) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => MemoryExtensions.ToUpper(buffer, buffer.Slice(2, 1), null) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => ((ReadOnlySpan <char>)buffer).ToUpperInvariant(buffer) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => ((ReadOnlySpan <char>)buffer).ToUpperInvariant(buffer.Slice(1, 1)) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => ((ReadOnlySpan <char>)buffer).ToUpperInvariant(buffer.Slice(0, 1)) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => ((ReadOnlySpan <char>)buffer).ToUpperInvariant(buffer.Slice(2, 1)) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => MemoryExtensions.ToUpperInvariant(buffer, buffer) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => MemoryExtensions.ToUpperInvariant(buffer, buffer.Slice(1, 1)) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => MemoryExtensions.ToUpperInvariant(buffer, buffer.Slice(0, 1)) }); yield return(new TestHelpers.AssertThrowsAction <char>[] { (Span <char> buffer) => MemoryExtensions.ToUpperInvariant(buffer, buffer.Slice(2, 1)) }); }